From 406234367544a4207141230683dddaccd98fb21a Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 21 Jul 2017 08:19:20 +0200 Subject: fix: filedescriptor leak from http_adapters Now we reuse a single adapter for all requests triggered by an incoming request. Then we .terminate the adapter. Includes a regression test. --- test/support/functional_test.rb | 41 +++++++++++++++++++++++++++++++++++++ test/support/http_adapter_helper.rb | 19 +++++++++++++++++ test/support/http_stub_helper.rb | 4 ++-- 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 test/support/functional_test.rb create mode 100644 test/support/http_adapter_helper.rb (limited to 'test/support') diff --git a/test/support/functional_test.rb b/test/support/functional_test.rb new file mode 100644 index 0000000..4ebc40a --- /dev/null +++ b/test/support/functional_test.rb @@ -0,0 +1,41 @@ +require 'minitest/autorun' +require 'minitest/pride' + +class FunctionalTest < Minitest::Test + + protected + + def nickserver_pid + status = nickserver "status" + /process id (\d*)\./.match(status)[1] + end + + def assert_running + status = nickserver "status" + assert_includes status, "Nickserver running" + end + + def assert_stopped + status = nickserver "status" + assert_includes status, "No nickserver processes are running." + end + + def assert_command_runs(command) + out = nickserver command + assert ($?.exitstatus == 0), + "failed to run 'nickserver #{command}':\n #{out}" + end + + def nickserver(command) + self.class.nickserver command + end + + def self.nickserver(command) + `#{path_to_executable} #{command} 2>&1` + end + + def self.path_to_executable + File.expand_path(File.dirname(__FILE__) + '/../../bin/nickserver') + end + +end diff --git a/test/support/http_adapter_helper.rb b/test/support/http_adapter_helper.rb new file mode 100644 index 0000000..6817e1e --- /dev/null +++ b/test/support/http_adapter_helper.rb @@ -0,0 +1,19 @@ +require 'nickserver/adapters/celluloid_http' + +module HttpAdapterHelper + + def setup + super + @adapter = Nickserver::Adapters::CelluloidHttp.new + end + + def teardown + @adapter.terminate + super + end + + protected + + attr_reader :adapter + +end diff --git a/test/support/http_stub_helper.rb b/test/support/http_stub_helper.rb index dd3d1b2..c9f2bfa 100644 --- a/test/support/http_stub_helper.rb +++ b/test/support/http_stub_helper.rb @@ -1,9 +1,9 @@ -require 'nickserver/source' +require 'nickserver/reel_server' module HttpStubHelper def stubbing_http - Nickserver::Source::DEFAULT_ADAPTER_CLASS.stub :new, adapter do + Nickserver::ReelServer::DEFAULT_ADAPTER_CLASS.stub :new, adapter do yield end adapter.verify -- cgit v1.2.3