purzelrakete / workling

easily do background work in rails, without commiting to a particular runner. comes with starling, bj and spawn runners. — Read more

This URL has Read+Write access

rtomayko (author)
Wed Mar 18 07:49:45 -0700 2009
purzelrakete (committer)
Wed Mar 18 11:34:00 -0700 2009
workling / test / invoker_basic_poller_test.rb
100644 29 lines (25 sloc) 1.065 kb
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
require File.dirname(__FILE__) + '/test_helper.rb'
 
context "the invoker 'basic poller'" do
  setup do
    routing = Workling::Routing::ClassAndMethodRouting.new
    @client = Workling::Clients::MemoryQueueClient.new
    @client.connect
    @invoker = Workling::Remote::Invokers::BasicPoller.new(routing, @client.class)
  end
  
  specify "should not explode when listen is called, and stop nicely when stop is called. " do
    connection = mock()
    connection.expects(:active?).at_least_once.returns(true)
    ActiveRecord::Base.expects(:connection).at_least_once.returns(connection)
    
    client = mock()
    client.expects(:retrieve).at_least_once.returns("hi")
    client.expects(:connect).at_least_once.returns(true)
    client.expects(:close).at_least_once.returns(true)
    Workling::Clients::MemoryQueueClient.expects(:new).at_least_once.returns(client)
    
    # Don't take longer than 10 seconds to shut this down.
    Timeout::timeout(10) do
      listener = Thread.new { @invoker.listen }
      @invoker.stop
      listener.join
    end
  end
end