Sha256: 4f8499437ac5810c439c05dec97d2e939d9ed41bc8e1197a1876f2b09c313653

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

require "spec/helper/all"

URL = "http://localhost:8081/"
DELAY = 0.25

describe EventMachine::HttpRequest do
  it "should fire sequential requests" do
    EventMachine.run do
      @s = StubServer.new("HTTP/1.0 200 OK\r\nConnection: close\r\n\r\nFoo", DELAY)

      Fiber.new {
        start = now
        order = []
        order.push :get  if EventMachine::HttpRequest.new(URL).get
        order.push :post if EventMachine::HttpRequest.new(URL).post
        order.push :head if EventMachine::HttpRequest.new(URL).head
        order.push :post if EventMachine::HttpRequest.new(URL).delete
        order.push :put  if EventMachine::HttpRequest.new(URL).put

        (now - start.to_f).should be_within(DELAY * order.size * 0.15).of(DELAY * order.size)
        order.should == [:get, :post, :head, :post, :put]

        EventMachine.stop
      }.resume
    end
  end

  it "should fire simultaneous requests via Multi interface" do
    EventMachine.run do
      @s = StubServer.new("HTTP/1.0 200 OK\r\nConnection: close\r\n\r\nFoo", DELAY)

      Fiber.new {
        start = now

        multi = EventMachine::Synchrony::Multi.new
        multi.add :a, EventMachine::HttpRequest.new(URL).aget
        multi.add :b, EventMachine::HttpRequest.new(URL).apost
        multi.add :c, EventMachine::HttpRequest.new(URL).ahead
        multi.add :d, EventMachine::HttpRequest.new(URL).adelete
        multi.add :e, EventMachine::HttpRequest.new(URL).aput
        res = multi.perform
        
        (now - start.to_f).should be_within(DELAY * 0.15).of(DELAY)
        res.responses[:callback].size.should == 5
        res.responses[:errback].size.should == 0

        EventMachine.stop
      }.resume
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
em-synchrony-0.1.2 spec/http_spec.rb
em-synchrony-0.1.1 spec/http_spec.rb