diff options
-rw-r--r-- | test/fresh.rb | 21 | ||||
-rw-r--r-- | test/setup.rb | 8 | ||||
-rw-r--r-- | test/test_mogilefs.rb | 54 | ||||
-rw-r--r-- | test/test_mogilefs_integration_large_pipe.rb | 2 | ||||
-rw-r--r-- | test/test_mogilefs_integration_list_keys.rb | 2 | ||||
-rw-r--r-- | 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 <<EOF conf_port #@tracker_port listen #@test_host @@ -109,6 +107,7 @@ EOF end def teardown_mogilefs + return if $$ != @teardown_pid if @mogstored_pid pid = File.read(@mogstored_pid.path).to_i Process.kill(:TERM, pid) if pid > 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 <<EOF pidfile = #{@mogstored_pid.path} maxconns = 1000 diff --git a/test/setup.rb b/test/setup.rb index 8fda7f1..3c64c2b 100644 --- a/test/setup.rb +++ b/test/setup.rb @@ -58,13 +58,8 @@ require 'socket' class TempServer attr_reader :port, :pid - def self.destroy_all! - ObjectSpace.each_object(TempServer) { |t| t.destroy! } - end - - at_exit { TempServer.destroy_all! } - def initialize(server_proc, port = nil) + @destroy_pid = $$ @pid = @sock = nil @port = port retries = 10 @@ -85,6 +80,7 @@ class TempServer end def destroy! + return if @destroy_pid != $$ @sock.close rescue nil Process.kill('KILL', @pid) rescue nil end diff --git a/test/test_mogilefs.rb b/test/test_mogilefs.rb index a6bcf35..186e88a 100644 --- a/test/test_mogilefs.rb +++ b/test/test_mogilefs.rb @@ -6,10 +6,17 @@ require 'fileutils' class TestMogileFS__MogileFS < TestMogileFS def setup + @tmpsrv = [] @klass = MogileFS::MogileFS super end + def tmpsrv(blk) + t = TempServer.new(blk) + @tmpsrv << t + t + end + def read_headers(client) headers = "" while line = client.gets @@ -40,8 +47,8 @@ class TestMogileFS__MogileFS < TestMogileFS client.send("HTTP/1.0 200 OK\r\nContent-Length: 5\r\n\r\ndata!", 0) client.close 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" @@ -49,8 +56,6 @@ class TestMogileFS__MogileFS < TestMogileFS assert_equal 'data!', @client.get_file_data('key') assert_equal 1, accept.stat.size - ensure - TempServer.destroy_all! end def test_get_file_data_http_not_found_failover @@ -80,16 +85,14 @@ class TestMogileFS__MogileFS < TestMogileFS client.close end - t1 = TempServer.new(svr1) - t2 = TempServer.new(svr2) + t1 = tmpsrv(svr1) + t2 = tmpsrv(svr2) 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" @backend.get_paths = { 'paths' => 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) |