1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
require 'helper'
require 'stallion'
describe EventMachine::MultiRequest do
it "should submit multiple requests in parallel and return once all of them are complete" do
EventMachine.run {
# create an instance of multi-request handler, and the requests themselves
multi = EventMachine::MultiRequest.new
# add multiple requests to the multi-handler
multi.add(EventMachine::HttpRequest.new('http://127.0.0.1:8080/').get(:query => {:q => 'test'}))
multi.add(EventMachine::HttpRequest.new('http://0.0.0.0:8083/').get(:timeout => 1))
multi.callback {
# verify successful request
multi.responses[:succeeded].size.should == 1
multi.responses[:succeeded].first.response.should match(/test/)
# verify invalid requests
multi.responses[:failed].size.should == 1
multi.responses[:failed].first.response_header.status.should == 0
EventMachine.stop
}
}
end
it "should accept multiple open connections and return once all of them are complete" do
EventMachine.run {
http1 = EventMachine::HttpRequest.new('http://127.0.0.1:8080/').get(:query => {:q => 'test'})
http2 = EventMachine::HttpRequest.new('http://0.0.0.0:8083/').get(:timeout => 1)
multi = EventMachine::MultiRequest.new([http1, http2]) do
multi.responses[:succeeded].size.should == 1
multi.responses[:succeeded].first.response.should match(/test/)
multi.responses[:failed].size.should == 1
multi.responses[:failed].first.response_header.status.should == 0
EventMachine.stop
end
}
end
it "should handle multiple mock requests" do
EventMachine::MockHttpRequest.register_file('http://127.0.0.1:8080/', :get, {}, File.join(File.dirname(__FILE__), 'fixtures', 'google.ca'))
EventMachine::MockHttpRequest.register_file('http://0.0.0.0:8083/', :get, {}, File.join(File.dirname(__FILE__), 'fixtures', 'google.ca'))
EventMachine.run {
# create an instance of multi-request handler, and the requests themselves
multi = EventMachine::MultiRequest.new
# add multiple requests to the multi-handler
multi.add(EventMachine::MockHttpRequest.new('http://127.0.0.1:8080/').get)
multi.add(EventMachine::MockHttpRequest.new('http://0.0.0.0:8083/').get)
multi.callback {
# verify successful request
multi.responses[:succeeded].size.should == 2
EventMachine.stop
}
}
end
end
|