From 9738138e9266b1c8f955bc92eabd27313a0e853f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 22 Jan 2015 04:08:34 +0000 Subject: test: fixup object lifetimes and teardown This should prevent stray processes from being leftover after tests are run as well as cleaning up tmpdirs more thoroughly. --- test/fresh.rb | 21 ++++++----- test/setup.rb | 8 ++--- test/test_mogilefs.rb | 54 +++++++++++++--------------- test/test_mogilefs_integration_large_pipe.rb | 2 ++ test/test_mogilefs_integration_list_keys.rb | 2 ++ test/test_mogtool_bigfile.rb | 2 ++ 6 files changed, 43 insertions(+), 46 deletions(-) diff --git a/test/fresh.rb b/test/fresh.rb index 6afacde..8d452c7 100644 --- a/test/fresh.rb +++ b/test/fresh.rb @@ -7,24 +7,22 @@ require "net/http" module TestFreshSetup include TestExec - def setup - setup_mogilefs - end - def setup_mogilefs(plugins = nil) + @teardown_pid = $$ @test_host = "127.0.0.1" setup_mogstored @tracker = TCPServer.new(@test_host, 0) @tracker_port = @tracker.addr[1] - @dbname = Tempfile.new(["mogfresh", ".sqlite3"]) - @mogilefsd_conf = Tempfile.new(["mogilefsd", "conf"]) - @mogilefsd_pid = Tempfile.new(["mogilefsd", "pid"]) + @dbname = Tempfile.new(["mogfresh", ".sqlite3"], @docroot) + @mogilefsd_conf = Tempfile.new(["mogilefsd", "conf"], @docroot) + @mogilefsd_pid = Tempfile.new(["mogilefsd", "pid"], @docroot) + @dbpath = @dbname.path - cmd = %w(mogdbsetup --yes --type=SQLite --dbname) << @dbname.path + cmd = %w(mogdbsetup --yes --type=SQLite --dbname) << @dbpath x!(*cmd) - @mogilefsd_conf.puts "db_dsn DBI:SQLite:#{@dbname.path}" + @mogilefsd_conf.puts "db_dsn DBI:SQLite:#@dbpath" @mogilefsd_conf.write < 0 @@ -144,8 +143,8 @@ EOF @mogstored_http = TCPServer.new(@test_host, 0) @mogstored_mgmt_port = @mogstored_mgmt.addr[1] @mogstored_http_port = @mogstored_http.addr[1] - @mogstored_conf = Tempfile.new(["mogstored", "conf"]) - @mogstored_pid = Tempfile.new(["mogstored", "pid"]) + @mogstored_conf = Tempfile.new(["mogstored", "conf"], @docroot) + @mogstored_pid = Tempfile.new(["mogstored", "pid"], @docroot) @mogstored_conf.write < 2, 'path1' => path1, 'path2' => path2 } assert_equal 'data!', @client.get_file_data('key') assert_equal 2, accept.stat.size - ensure - TempServer.destroy_all! end def test_get_file_data_http_block @@ -117,8 +120,8 @@ class TestMogileFS__MogileFS < TestMogileFS client.close exit 0 end - t1 = TempServer.new(svr) - t2 = TempServer.new(svr) + t1 = tmpsrv(svr) + t2 = tmpsrv(svr) path1 = "http://127.0.0.1:#{t1.port}/dev1/0/000/000/0000000062.fid" path2 = "http://127.0.0.1:#{t2.port}/dev2/0/000/000/0000000062.fid" @@ -237,7 +240,7 @@ class TestMogileFS__MogileFS < TestMogileFS to_store = Tempfile.new('small') to_store.syswrite('data') - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept while buf = client.readpartial(666) received.syswrite(buf) @@ -260,14 +263,12 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal("data", a[-1]) assert_equal("", a[-2]) assert a.grep(%r{\AContent-Length: 4\z})[0] - ensure - TempServer.destroy_all! end def test_store_content_http received = Tempfile.new('received') - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept client.sync = true seen = "" @@ -295,8 +296,6 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal("data", a[-1]) assert_equal("", a[-2]) assert a.grep(%r{\AContent-Length: 4\z})[0] - ensure - TempServer.destroy_all! end @@ -306,7 +305,7 @@ class TestMogileFS__MogileFS < TestMogileFS 10.times do expected += "data" end - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept client.sync = true nr = 0 @@ -343,8 +342,6 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal("data" * 10, a[-1]) assert_equal("", a[-2]) assert a.grep(%r{\AContent-Length: 40\z})[0] - ensure - TempServer.destroy_all! end def test_store_content_multi_dest_failover_path @@ -355,7 +352,7 @@ class TestMogileFS__MogileFS < TestMogileFS received1 = Tempfile.new('received') received2 = Tempfile.new('received') - t1 = TempServer.new(Proc.new do |serv, accept| + t1 = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept seen = "" while seen !~ /\r\n\r\ndata/ @@ -367,7 +364,7 @@ class TestMogileFS__MogileFS < TestMogileFS client.close end) - t2 = TempServer.new(Proc.new do |serv, accept| + t2 = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept seen = "" while seen !~ /\r\n\r\ndata/ @@ -410,12 +407,10 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal("", b[-2]) assert a.grep(%r{\AContent-Length: 4\z})[0] assert b.grep(%r{\AContent-Length: 4\z})[0] - ensure - TempServer.destroy_all! end def test_store_content_http_fail - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept client.sync = true read_headers(client) @@ -435,7 +430,7 @@ class TestMogileFS__MogileFS < TestMogileFS def test_store_content_http_empty received = Tempfile.new('received') - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept client.sync = true received.syswrite(client.recv(4096, 0)) @@ -487,7 +482,7 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal expect_size, to_put.stat.size readed = Tempfile.new('readed') - t = TempServer.new(Proc.new do |serv, accept| + t = tmpsrv(Proc.new do |serv, accept| client, _ = serv.accept client.sync = true nr = 0 @@ -523,9 +518,6 @@ class TestMogileFS__MogileFS < TestMogileFS assert( system(cmp_bin, expect.path, received.path) ) break end - - ensure - TempServer.destroy_all! end def test_store_content_readonly @@ -868,6 +860,10 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal({}, @client.sleep(2)) end + def teardown + @tmpsrv.each { |t| t.destroy! } + end + private # tested with 1000, though it takes a while diff --git a/test/test_mogilefs_integration_large_pipe.rb b/test/test_mogilefs_integration_large_pipe.rb index 16f6d58..f6b7dc9 100644 --- a/test/test_mogilefs_integration_large_pipe.rb +++ b/test/test_mogilefs_integration_large_pipe.rb @@ -10,6 +10,8 @@ class TestMogileFSLargePipe < Test::Unit::TestCase @client = MogileFS::MogileFS.new(:hosts => @trackers, :domain => @domain) end + alias teardown teardown_mogilefs + def test_large_pipe_test junk = File.open("/dev/urandom") { |fp| fp.read(1024) } junk *= 32 diff --git a/test/test_mogilefs_integration_list_keys.rb b/test/test_mogilefs_integration_list_keys.rb index 8492a2a..6f56548 100644 --- a/test/test_mogilefs_integration_list_keys.rb +++ b/test/test_mogilefs_integration_list_keys.rb @@ -10,6 +10,8 @@ class TestMogileFSIntegrationListKeys < Test::Unit::TestCase @client = MogileFS::MogileFS.new(:hosts => @trackers, :domain => @domain) end + alias teardown teardown_mogilefs + def test_list_keys k = %w(a b c d e f g) k.each { |x| @client.store_content("lk_#{x}", nil, x) } diff --git a/test/test_mogtool_bigfile.rb b/test/test_mogtool_bigfile.rb index 01de78e..f5dc473 100644 --- a/test/test_mogtool_bigfile.rb +++ b/test/test_mogtool_bigfile.rb @@ -26,6 +26,8 @@ class TestMogtoolBigfile < Test::Unit::TestCase @client = MogileFS::MogileFS.new(:hosts => @trackers, :domain => @domain) end + alias teardown teardown_mogilefs + def mogtool!(*args) x!("mogtool", "--trackers=#{@trackers.join(',')}", "--domain=#@domain", *args) -- cgit v1.2.3-24-ge0c7