From 1d211fb406d58d12b9cdaad7134dd8c3dd6a7f2b Mon Sep 17 00:00:00 2001 From: zedshaw Date: Fri, 15 Dec 2006 09:02:34 +0000 Subject: Patch to allow multiple request progress listeners, needs to be tested for speed. Also added a small change to allow retarded requests with full host in GET line that are really only for proxy servers. git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@466 19e92222-5c0b-0410-8929-a290d50e31e9 --- test/test_request_progress.rb | 47 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/test_request_progress.rb b/test/test_request_progress.rb index 5e45cea..dc87579 100644 --- a/test/test_request_progress.rb +++ b/test/test_request_progress.rb @@ -17,6 +17,12 @@ class UploadBeginHandler < Mongrel::HttpHandler @request_notify = true end + def reset + @request_began = + @request_progressed = + @request_processed = false + end + def request_begins(params) @request_began = true end @@ -34,9 +40,7 @@ class UploadBeginHandler < Mongrel::HttpHandler end - class RequestProgressTest < Test::Unit::TestCase - def setup @server = Mongrel::HttpServer.new("127.0.0.1", 9998) @handler = UploadBeginHandler.new @@ -55,4 +59,43 @@ class RequestProgressTest < Test::Unit::TestCase assert @handler.request_processed end + def call_and_assert_handlers_in_turn(handlers) + # reset all handlers + handlers.each { |h| h.reset } + + # make the call + Net::HTTP.get("localhost", "/upload", 9998) + + # assert that each one was fired + handlers.each { |h| + assert h.request_began && h.request_progressed && h.request_processed, + "Callbacks NOT fired for #{h}" + } + end + + def test_more_than_one_begin_end_progress + handlers = [@handler] + + second = UploadBeginHandler.new + @server.register("/upload", second) + handlers << second + call_and_assert_handlers_in_turn(handlers) + + # check three handlers + third = UploadBeginHandler.new + @server.register("/upload", third) + handlers << third + call_and_assert_handlers_in_turn(handlers) + + # remove handlers to make sure they've all gone away + @server.unregister("/upload") + handlers.each { |h| h.reset } + Net::HTTP.get("localhost", "/upload", 9998) + handlers.each { |h| + assert !h.request_began && !h.request_progressed && !h.request_processed + } + + # re-register upload to the state before this test + @server.register("/upload", @handler) + end end -- cgit v1.2.3-24-ge0c7