File: multi_spec.rb

package info (click to toggle)
ruby-em-http-request 0.3.0-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 424 kB
  • sloc: ruby: 2,381; ansic: 999; makefile: 2
file content (68 lines) | stat: -rw-r--r-- 2,487 bytes parent folder | download
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