elecnix-workling 0.4.2 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.markdown +10 -0
- data/README.markdown +161 -4
- data/bin/workling_client +28 -0
- metadata +3 -75
- data/lib/rude_q/client.rb +0 -11
- data/lib/workling.rb +0 -150
- data/lib/workling/base.rb +0 -71
- data/lib/workling/clients/amqp_client.rb +0 -56
- data/lib/workling/clients/base.rb +0 -57
- data/lib/workling/clients/memcache_queue_client.rb +0 -83
- data/lib/workling/discovery.rb +0 -14
- data/lib/workling/remote.rb +0 -42
- data/lib/workling/remote/invokers/base.rb +0 -124
- data/lib/workling/remote/invokers/basic_poller.rb +0 -41
- data/lib/workling/remote/invokers/eventmachine_subscriber.rb +0 -41
- data/lib/workling/remote/invokers/threaded_poller.rb +0 -140
- data/lib/workling/remote/runners/backgroundjob_runner.rb +0 -35
- data/lib/workling/remote/runners/base.rb +0 -42
- data/lib/workling/remote/runners/client_runner.rb +0 -45
- data/lib/workling/remote/runners/not_remote_runner.rb +0 -23
- data/lib/workling/remote/runners/rudeq_runner.rb +0 -23
- data/lib/workling/remote/runners/spawn_runner.rb +0 -38
- data/lib/workling/remote/runners/starling_runner.rb +0 -13
- data/lib/workling/return/store/base.rb +0 -42
- data/lib/workling/return/store/iterator.rb +0 -24
- data/lib/workling/return/store/memory_return_store.rb +0 -26
- data/lib/workling/return/store/rudeq_return_store.rb +0 -24
- data/lib/workling/return/store/starling_return_store.rb +0 -31
- data/lib/workling/routing/base.rb +0 -13
- data/lib/workling/routing/class_and_method_routing.rb +0 -55
- data/lib/workling/rudeq.rb +0 -7
- data/lib/workling/rudeq/client.rb +0 -17
- data/lib/workling/rudeq/poller.rb +0 -116
- data/test/class_and_method_routing_test.rb +0 -18
- data/test/clients/memory_queue_client.rb +0 -36
- data/test/discovery_test.rb +0 -13
- data/test/invoker_basic_poller_test.rb +0 -29
- data/test/invoker_eventmachine_subscription_test.rb +0 -26
- data/test/invoker_threaded_poller_test.rb +0 -34
- data/test/memcachequeue_client_test.rb +0 -36
- data/test/memory_return_store_test.rb +0 -32
- data/test/mocks/client.rb +0 -9
- data/test/mocks/logger.rb +0 -5
- data/test/mocks/rude_queue.rb +0 -9
- data/test/mocks/spawn.rb +0 -5
- data/test/not_remote_runner_test.rb +0 -11
- data/test/remote_runner_test.rb +0 -58
- data/test/rescue_test.rb +0 -24
- data/test/return_store_test.rb +0 -24
- data/test/rudeq_client_test.rb +0 -30
- data/test/rudeq_poller_test.rb +0 -14
- data/test/rudeq_return_store_test.rb +0 -20
- data/test/rudeq_runner_test.rb +0 -22
- data/test/runners/thread_runner.rb +0 -22
- data/test/spawn_runner_test.rb +0 -10
- data/test/starling_return_store_test.rb +0 -29
- data/test/starling_runner_test.rb +0 -8
- data/test/test_helper.rb +0 -50
- data/test/workers/analytics/invites.rb +0 -10
- data/test/workers/util.rb +0 -25
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the invoker 'eventmachine subscription'" do
|
|
4
|
-
setup do
|
|
5
|
-
routing = Workling::Routing::ClassAndMethodRouting.new
|
|
6
|
-
@client_class = Workling::Clients::MemoryQueueClient
|
|
7
|
-
@client = @client_class.new
|
|
8
|
-
@client.connect
|
|
9
|
-
@invoker = Workling::Remote::Invokers::EventmachineSubscriber.new(routing, @client_class)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
specify "should invoke Util.echo with the arg 'hello' if the string 'hello' is set onto the queue utils__echo" do
|
|
13
|
-
|
|
14
|
-
# make sure all new instances point to the same client. that way, state is shared
|
|
15
|
-
Workling::Clients::MemoryQueueClient.expects(:new).at_least_once.returns @client
|
|
16
|
-
Util.any_instance.expects(:echo).once.with({ :message => "hello" })
|
|
17
|
-
|
|
18
|
-
# Don't take longer than 10 seconds to shut this down.
|
|
19
|
-
Timeout::timeout(10) do
|
|
20
|
-
listener = Thread.new { @invoker.listen }
|
|
21
|
-
@client.request("utils__echo", { :message => "hello" })
|
|
22
|
-
@invoker.stop
|
|
23
|
-
listener.join
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the invoker 'threaded poller'" do
|
|
4
|
-
setup do
|
|
5
|
-
routing = Workling::Routing::ClassAndMethodRouting.new
|
|
6
|
-
@client = Workling::Clients::MemoryQueueClient.new
|
|
7
|
-
@client.connect
|
|
8
|
-
@invoker = Workling::Remote::Invokers::ThreadedPoller.new(routing, @client.class)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
specify "should invoke Util.echo with the arg 'hello' if the string 'hello' is set onto the queue utils__echo" do
|
|
12
|
-
Util.any_instance.stubs(:echo).with("hello")
|
|
13
|
-
@client.request("utils__echo", "hello")
|
|
14
|
-
@invoker.dispatch!(@client, Util)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
specify "should not explode when listen is called, and stop nicely when stop is called. " do
|
|
18
|
-
connection = mock()
|
|
19
|
-
connection.expects(:active?).at_least_once.returns(true)
|
|
20
|
-
ActiveRecord::Base.expects(:connection).at_least_once.returns(connection)
|
|
21
|
-
|
|
22
|
-
client = mock()
|
|
23
|
-
client.expects(:retrieve).at_least_once.returns("hi")
|
|
24
|
-
client.expects(:connect).at_least_once.returns(true)
|
|
25
|
-
Workling::Clients::MemoryQueueClient.expects(:new).at_least_once.returns(client)
|
|
26
|
-
|
|
27
|
-
# Don't take longer than 10 seconds to shut this down.
|
|
28
|
-
Timeout::timeout(10) do
|
|
29
|
-
listener = Thread.new { @invoker.listen }
|
|
30
|
-
@invoker.stop
|
|
31
|
-
listener.join
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "The memcachequeue client" do
|
|
4
|
-
specify "should be able to connect to multiple queue instances" do
|
|
5
|
-
Workling.send :class_variable_set, "@@config", { :listens_on => "localhost:12345, 127.0.0.1:12346", :memcache_options => { :namespace => "myapp_development" } }
|
|
6
|
-
client = Workling::Clients::MemcacheQueueClient.new
|
|
7
|
-
client.connect
|
|
8
|
-
|
|
9
|
-
client.queueserver_urls.should.equal ["localhost:12345", "127.0.0.1:12346"]
|
|
10
|
-
client.connection.servers.first.host.should == "localhost"
|
|
11
|
-
client.connection.servers.first.port.should == 12345
|
|
12
|
-
client.connection.servers[1].host.should == "127.0.0.1"
|
|
13
|
-
client.connection.servers[1].port.should == 12346
|
|
14
|
-
client.connection.namespace.should.equal "myapp_development"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
specify "should load it's config as well as any given MemCache options from RAILS_ENV/config/workling.yml" do
|
|
18
|
-
Workling.send :class_variable_set, "@@config", { :listens_on => "localhost:12345", :memcache_options => { :namespace => "myapp_development" } }
|
|
19
|
-
client = Workling::Clients::MemcacheQueueClient.new
|
|
20
|
-
client.connect
|
|
21
|
-
|
|
22
|
-
client.queueserver_urls.should.equal ["localhost:12345"]
|
|
23
|
-
client.connection.servers.first.host.should == "localhost"
|
|
24
|
-
client.connection.servers.first.port.should == 12345
|
|
25
|
-
client.connection.namespace.should.equal "myapp_development"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
specify "should load it's config correctly if no memcache options are given" do
|
|
30
|
-
Workling.send :class_variable_set, "@@config", { :listens_on => "localhost:12345" }
|
|
31
|
-
client = Workling::Clients::MemcacheQueueClient.new
|
|
32
|
-
client.connect
|
|
33
|
-
|
|
34
|
-
client.queueserver_urls.should.equal ["localhost:12345"]
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the memory return store" do
|
|
4
|
-
specify "should be able to store a value with a key, and then retrieve that same value with the same key." do
|
|
5
|
-
store = Workling::Return::Store::MemoryReturnStore.new
|
|
6
|
-
key, value = :gender, :undecided
|
|
7
|
-
store.set(key, value)
|
|
8
|
-
store.get(key).should.equal(value)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
specify "should delete values in the store once they have been get()tted." do
|
|
12
|
-
store = Workling::Return::Store::MemoryReturnStore.new
|
|
13
|
-
key, value = :gender, :undecided
|
|
14
|
-
store.set(key, value)
|
|
15
|
-
store.get(key)
|
|
16
|
-
store.get(key).should.equal nil
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify "should return nothing for a key that is not in the store" do
|
|
20
|
-
store = Workling::Return::Store::MemoryReturnStore.new
|
|
21
|
-
store.get(:bollocks).should.equal nil
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
specify "should be able to set and get two items into the same store" do
|
|
25
|
-
store = Workling::Return::Store::MemoryReturnStore.new
|
|
26
|
-
store.set(:gender, :male)
|
|
27
|
-
store.set(:gender, :female)
|
|
28
|
-
store.get(:key)
|
|
29
|
-
store.get(:key).should.equal :female
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
end
|
data/test/mocks/client.rb
DELETED
data/test/mocks/logger.rb
DELETED
data/test/mocks/rude_queue.rb
DELETED
data/test/mocks/spawn.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "The not remote runner" do
|
|
4
|
-
specify "should swallow exceptions raised in the workling" do
|
|
5
|
-
old_dispatcher = Workling::Remote.dispatcher
|
|
6
|
-
|
|
7
|
-
Workling::Remote.dispatcher = Workling::Remote::Runners::NotRemoteRunner.new
|
|
8
|
-
Workling::Remote.run(:util, :faulty)
|
|
9
|
-
Workling::Remote.dispatcher = old_dispatcher # set back to whence we came
|
|
10
|
-
end
|
|
11
|
-
end
|
data/test/remote_runner_test.rb
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the remote runner" do
|
|
4
|
-
specify "should be able to invoke a task on a worker" do
|
|
5
|
-
Util.any_instance.stubs(:echo).with("hello")
|
|
6
|
-
Workling::Remote.run(:util, :echo, "hello")
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
specify "should invoke the dispatcher set up in Workling::Remote.dispatcher" do
|
|
10
|
-
clazz, method, options = :util, :echo, { :message => "somebody_came@along.com" }
|
|
11
|
-
old_dispatcher = Workling::Remote.dispatcher
|
|
12
|
-
dispatcher = mock
|
|
13
|
-
dispatcher.expects(:run).with(clazz, method, options)
|
|
14
|
-
Workling::Remote.dispatcher = dispatcher
|
|
15
|
-
Workling::Remote.run(clazz, method, options)
|
|
16
|
-
Workling::Remote.dispatcher = old_dispatcher # set back to whence we came
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify "should, when being tested, use the default remote runner by when no runner was explicitly set. " do
|
|
20
|
-
Workling::Remote.dispatcher.class.should.equal Workling.default_runner.class
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
specify "should raise a Workling::WorklingNotFoundError if it is invoked with a worker key that cannot be constantized" do
|
|
24
|
-
should.raise Workling::WorklingNotFoundError do
|
|
25
|
-
Workling::Remote.run(:quatsch_mit_sosse, :fiddle_di_liddle)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
specify "should raise a Workling::WorklingNotFoundError if it is invoked with a valid worker key but the method is not defined on that worker" do
|
|
30
|
-
dispatcher = Workling::Remote.dispatcher
|
|
31
|
-
Workling::Remote.dispatcher = Workling::Remote::Runners::ThreadRunner.new # simulates a remote runner (workling in another context)
|
|
32
|
-
|
|
33
|
-
should.raise Workling::WorklingNotFoundError do
|
|
34
|
-
Workling::Remote.run(:util, :sau_sack)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
Workling::Remote.dispatcher = dispatcher
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
specify "should invoke work when called in this way: YourWorkling.asynch_your_method(options)" do
|
|
41
|
-
Util.any_instance.expects(:echo).once
|
|
42
|
-
Util.asynch_echo
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
specify "should invoke work with the arguments intact when called in this way: YourWorkling.asynch_your_method(options)" do
|
|
46
|
-
stuffing = { :description => "toasted breadcrumbs with dill" }
|
|
47
|
-
Util.any_instance.expects(:stuffing).with(stuffing).once
|
|
48
|
-
Util.asynch_stuffing(stuffing)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
specify "should use default arguments if they exist" do
|
|
52
|
-
default_options = { :flavor => 'purple' }
|
|
53
|
-
custom_options = { :color => 'purple' }
|
|
54
|
-
Util.any_instance.expects(:default_options).returns(default_options)
|
|
55
|
-
Util.any_instance.expects(:stuffing).with(all_of(has_entry(:flavor => 'purple'), has_entry(:color => 'purple'))).once
|
|
56
|
-
Util.asynch_stuffing(custom_options)
|
|
57
|
-
end
|
|
58
|
-
end
|
data/test/rescue_test.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "Exceptions raised by worker" do
|
|
4
|
-
before do
|
|
5
|
-
@old_dispatcher = Workling::Remote.dispatcher
|
|
6
|
-
Workling::Remote.dispatcher = Workling::Remote::Runners::NotRemoteRunner.new
|
|
7
|
-
end
|
|
8
|
-
after do
|
|
9
|
-
Workling::Remote.dispatcher = @old_dispatcher # set back to whence we came
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
specify "should not escape dispatcher" do
|
|
13
|
-
lambda {
|
|
14
|
-
Workling::Remote.run(:util, :broken)
|
|
15
|
-
}.should.not.raise
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
specify "should call on_error method" do
|
|
19
|
-
count = Util.on_error_call_count
|
|
20
|
-
Workling::Remote.run(:util, :broken)
|
|
21
|
-
|
|
22
|
-
Util.on_error_call_count.should.equal(count + 1)
|
|
23
|
-
end
|
|
24
|
-
end
|
data/test/return_store_test.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "The return store" do
|
|
4
|
-
specify "should set a value on the current store when invoked like this: Workling::Return::Store.set(:key, 'value')" do
|
|
5
|
-
Workling::Return::Store.set(:key, :value)
|
|
6
|
-
Workling::Return::Store.get(:key).should.equal :value
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
specify "should get a value on the current store when invoked like this: Workling::Return::Store.get(:key)" do
|
|
10
|
-
Workling::Return::Store.set(:key, :value)
|
|
11
|
-
Workling::Return::Store.get(:key).should.equal :value
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
specify "should set a value on the current store when invoked like this: Workling.return.set(:key, 'value')" do
|
|
15
|
-
Workling.return.set(:key, :value)
|
|
16
|
-
Workling.return.get(:key).should.equal :value
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify "should return an iterator for a specific key when invoked like this: Workling.return.iterator(key)" do
|
|
20
|
-
Workling::Return::Store.set(:key, 1)
|
|
21
|
-
Workling::Return::Store.set(:key, 2)
|
|
22
|
-
Workling.return.iterator(:key).collect{ |item| item }.should.equal [1, 2]
|
|
23
|
-
end
|
|
24
|
-
end
|
data/test/rudeq_client_test.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "The Rudeq client" do
|
|
4
|
-
specify "should by default set a RudeQueue as its :queue" do
|
|
5
|
-
client = Workling::Rudeq::Client.new
|
|
6
|
-
client.queue.should == RudeQueue
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
specify "should user Rudeq.config[:queue_class] as the class" do
|
|
10
|
-
before = Workling::Rudeq.config[:queue_class]
|
|
11
|
-
|
|
12
|
-
Workling::Rudeq.config[:queue_class] = "String"
|
|
13
|
-
client = Workling::Rudeq::Client.new
|
|
14
|
-
client.queue.should == String
|
|
15
|
-
|
|
16
|
-
Workling::Rudeq.config[:queue_class] = before
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify "should defer :get to the RudeQueue" do
|
|
20
|
-
RudeQueue.expects(:get).with(:abc)
|
|
21
|
-
client = Workling::Rudeq::Client.new
|
|
22
|
-
client.get(:abc)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
specify "should defer :set to the RudeQueue" do
|
|
26
|
-
RudeQueue.expects(:set).with(:abc, "some value")
|
|
27
|
-
client = Workling::Rudeq::Client.new
|
|
28
|
-
client.set(:abc, "some value")
|
|
29
|
-
end
|
|
30
|
-
end
|
data/test/rudeq_poller_test.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the RudeQ poller" do
|
|
4
|
-
setup do
|
|
5
|
-
routing = Workling::Starling::Routing::ClassAndMethodRouting.new
|
|
6
|
-
@client = Workling::Rudeq::Poller.new(routing)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
specify "should invoke Util.echo with the arg 'hello' if the string 'hello' is set onto the queue utils__echo" do
|
|
10
|
-
Util.any_instance.expects(:echo).with("hello")
|
|
11
|
-
RudeQueue.set("utils__echo", "hello")
|
|
12
|
-
@client.dispatch!(RudeQueue, Util)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "the RudeQ return store" do
|
|
4
|
-
|
|
5
|
-
def get_store
|
|
6
|
-
Workling::Return::Store::RudeqReturnStore.new
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
specify "should defer :get to the RudeQueue" do
|
|
10
|
-
RudeQueue.expects(:get).with(:abc)
|
|
11
|
-
store = get_store
|
|
12
|
-
store.get(:abc)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
specify "should defer :set to the RudeQueue" do
|
|
16
|
-
RudeQueue.expects(:set).with(:abc, "some value")
|
|
17
|
-
store = get_store
|
|
18
|
-
store.set(:abc, "some value")
|
|
19
|
-
end
|
|
20
|
-
end
|
data/test/rudeq_runner_test.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the RudeQ runner" do
|
|
4
|
-
setup do
|
|
5
|
-
@before = Workling::Remote.dispatcher
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
specify "should set up a RudeQ client" do
|
|
9
|
-
Workling::Remote.dispatcher = Workling::Remote::Runners::RudeqRunner.new
|
|
10
|
-
Workling::Remote.dispatcher.client.should.not.equal nil
|
|
11
|
-
Workling::Remote.dispatcher.client.queue.should.equal RudeQueue
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
specify ":run should use Starling routing" do
|
|
15
|
-
RudeQueue.expects(:set).with("utils__echo", "hello")
|
|
16
|
-
Workling::Remote::Runners::RudeqRunner.new.run(Util, :echo, "hello")
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
teardown do
|
|
20
|
-
Workling::Remote.dispatcher = @before
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require 'workling/remote/runners/base'
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
# Spawns a Thread. Used for Tests only, to simulate a remote runner more realistically.
|
|
5
|
-
#
|
|
6
|
-
module Workling
|
|
7
|
-
module Remote
|
|
8
|
-
module Runners
|
|
9
|
-
class ThreadRunner < Workling::Remote::Runners::Base
|
|
10
|
-
|
|
11
|
-
# spawns a thread.
|
|
12
|
-
def run(clazz, method, options = {})
|
|
13
|
-
Thread.new {
|
|
14
|
-
dispatch!(clazz, method, options)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return nil
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
data/test/spawn_runner_test.rb
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
-
|
|
3
|
-
context "the spawn runner" do
|
|
4
|
-
specify "should invoke work that is delegated to it" do
|
|
5
|
-
old_dispatcher = Workling::Remote.dispatcher
|
|
6
|
-
Workling::Remote.dispatcher = Workling::Remote::Runners::SpawnRunner.new
|
|
7
|
-
Workling::Remote.run(:util, :echo)
|
|
8
|
-
Workling::Remote.dispatcher = old_dispatcher
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
|
2
|
-
|
|
3
|
-
context "the starling return store" do
|
|
4
|
-
setup do
|
|
5
|
-
# the memoryreturnstore behaves exactly like memcache.
|
|
6
|
-
MemCache.expects(:new).at_least(0).returns Workling::Return::Store::MemoryReturnStore.new
|
|
7
|
-
Workling::Clients::MemcacheQueueClient.expects(:connection).at_least(0).returns Workling::Return::Store::MemoryReturnStore.new
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
specify "should be able to store a value with a key, and then retrieve that same value with the same key." do
|
|
11
|
-
store = Workling::Return::Store::StarlingReturnStore.new
|
|
12
|
-
key, value = :gender, :undecided
|
|
13
|
-
store.set(key, value)
|
|
14
|
-
store.get(key).should.equal(value)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
specify "should delete values in the store once they have been get()tted." do
|
|
18
|
-
store = Workling::Return::Store::StarlingReturnStore.new
|
|
19
|
-
key, value = :gender, :undecided
|
|
20
|
-
store.set(key, value)
|
|
21
|
-
store.get(key)
|
|
22
|
-
store.get(key).should.equal nil
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
specify "should return nothing for a key that is not in the store" do
|
|
26
|
-
store = Workling::Return::Store::StarlingReturnStore.new
|
|
27
|
-
store.get(:bollocks).should.equal nil
|
|
28
|
-
end
|
|
29
|
-
end
|