diff options
Diffstat (limited to 'test/inherit.rb')
-rw-r--r-- | test/inherit.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/inherit.rb b/test/inherit.rb index b342ab0..34aa52f 100644 --- a/test/inherit.rb +++ b/test/inherit.rb @@ -142,4 +142,36 @@ class TestInherit < Test::Unit::TestCase @err.rewind assert_match(/failed to parse/, @err.read) end + + def test_inherit_systemd + # disabled test on old Rubies: https://bugs.ruby-lang.org/issues/11336 + # [ruby-core:69895] [Bug #11336] fixed by r51576 + return unless RUBY_VERSION.to_f >= 2.3 + + mgmt = TCPServer.new(@host, 0) + @to_close << mgmt + mport = mgmt.addr[1] + cmd = %W(cmogstored --docroot=#@tmpdir --httplisten=#@host:#@port + --mgmtlisten=#@host:#{mport} --maxconns=100) + @pid = fork do + ENV['LISTEN_PID'] = "#$$" + ENV['LISTEN_FDS'] = '2' + exec(*cmd, 3 => mgmt.fileno, 4 => @srv.fileno) + end + + # just ensure HTTP works after being inherited + Net::HTTP.start(@host, @port) do |http| + [ Net::HTTP::Get, Net::HTTP::Head ].each do |meth| + resp = http.request(meth.new("/")) + assert_kind_of Net::HTTPOK, resp + end + end + + # still works since drop is open in _this_ process + c = TCPSocket.new(@host, mport) + assert_instance_of(TCPSocket, c) + @to_close << c + c.write "hello\n" + assert_match /ERROR: unknown command/, c.gets + end end |