did_workling 0.0.1
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/README.markdown +382 -0
- data/lib/rude_q/client.rb +11 -0
- data/lib/workling.rb +150 -0
- data/lib/workling/base.rb +59 -0
- data/lib/workling/clients/amqp_client.rb +40 -0
- data/lib/workling/clients/base.rb +54 -0
- data/lib/workling/clients/memcache_queue_client.rb +82 -0
- data/lib/workling/discovery.rb +14 -0
- data/lib/workling/remote.rb +42 -0
- data/lib/workling/remote/invokers/base.rb +124 -0
- data/lib/workling/remote/invokers/basic_poller.rb +41 -0
- data/lib/workling/remote/invokers/eventmachine_subscriber.rb +37 -0
- data/lib/workling/remote/invokers/threaded_poller.rb +149 -0
- data/lib/workling/remote/runners/backgroundjob_runner.rb +35 -0
- data/lib/workling/remote/runners/base.rb +42 -0
- data/lib/workling/remote/runners/client_runner.rb +45 -0
- data/lib/workling/remote/runners/not_remote_runner.rb +23 -0
- data/lib/workling/remote/runners/spawn_runner.rb +38 -0
- data/lib/workling/remote/runners/starling_runner.rb +13 -0
- data/lib/workling/return/store/base.rb +37 -0
- data/lib/workling/return/store/memory_return_store.rb +26 -0
- data/lib/workling/return/store/starling_return_store.rb +31 -0
- data/lib/workling/routing/base.rb +13 -0
- data/lib/workling/routing/class_and_method_routing.rb +55 -0
- data/test/class_and_method_routing_test.rb +18 -0
- data/test/clients/memory_queue_client.rb +36 -0
- data/test/discovery_test.rb +13 -0
- data/test/invoker_basic_poller_test.rb +29 -0
- data/test/invoker_eventmachine_subscription_test.rb +26 -0
- data/test/invoker_threaded_poller_test.rb +34 -0
- data/test/memcachequeue_client_test.rb +36 -0
- data/test/memory_return_store_test.rb +23 -0
- data/test/mocks/client.rb +9 -0
- data/test/mocks/logger.rb +5 -0
- data/test/mocks/spawn.rb +5 -0
- data/test/not_remote_runner_test.rb +11 -0
- data/test/remote_runner_test.rb +50 -0
- data/test/return_store_test.rb +18 -0
- data/test/runners/thread_runner.rb +22 -0
- data/test/spawn_runner_test.rb +10 -0
- data/test/starling_return_store_test.rb +29 -0
- data/test/starling_runner_test.rb +8 -0
- data/test/test_helper.rb +48 -0
- data/test/workers/analytics/invites.rb +10 -0
- data/test/workers/util.rb +15 -0
- metadata +132 -0
@@ -0,0 +1,10 @@
|
|
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
|
@@ -0,0 +1,29 @@
|
|
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
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
context "the starling runner" do
|
4
|
+
specify "should set up a starling client" do
|
5
|
+
Workling::Remote.dispatcher = Workling::Remote::Runners::StarlingRunner.new
|
6
|
+
Workling::Remote.dispatcher.client.should.not.equal nil
|
7
|
+
end
|
8
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
plugin_test = File.dirname(__FILE__)
|
2
|
+
plugin_root = File.join plugin_test, '..'
|
3
|
+
plugin_lib = File.join plugin_root, 'lib'
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'active_support'
|
7
|
+
require 'active_record'
|
8
|
+
require 'test/spec'
|
9
|
+
require 'mocha'
|
10
|
+
|
11
|
+
$:.unshift plugin_lib, plugin_test
|
12
|
+
|
13
|
+
RAILS_ENV = "test"
|
14
|
+
RAILS_ROOT = File.dirname(__FILE__) + "/.." # fake the rails root directory.
|
15
|
+
RAILS_DEFAULT_LOGGER = Logger.new(STDOUT)
|
16
|
+
RAILS_DEFAULT_LOGGER.level = Logger::WARN
|
17
|
+
|
18
|
+
require "mocks/spawn"
|
19
|
+
require "mocks/logger"
|
20
|
+
require "workling"
|
21
|
+
require "workling/base"
|
22
|
+
|
23
|
+
Workling.try_load_a_memcache_client
|
24
|
+
|
25
|
+
require "workling/discovery"
|
26
|
+
require "workling/routing/class_and_method_routing"
|
27
|
+
require "workling/remote/invokers/basic_poller"
|
28
|
+
require "workling/remote/invokers/threaded_poller"
|
29
|
+
require "workling/remote/invokers/eventmachine_subscriber"
|
30
|
+
require "workling/remote"
|
31
|
+
require "workling/remote/runners/not_remote_runner"
|
32
|
+
require "workling/remote/runners/spawn_runner"
|
33
|
+
require "workling/remote/runners/starling_runner"
|
34
|
+
require "workling/remote/runners/client_runner"
|
35
|
+
require "workling/remote/runners/backgroundjob_runner"
|
36
|
+
require "workling/return/store/memory_return_store"
|
37
|
+
require "workling/return/store/starling_return_store"
|
38
|
+
require "mocks/client"
|
39
|
+
require "clients/memory_queue_client"
|
40
|
+
require "runners/thread_runner"
|
41
|
+
|
42
|
+
# worklings are in here.
|
43
|
+
Workling.load_path = ["#{ plugin_root }/test/workers"]
|
44
|
+
Workling::Return::Store.instance = Workling::Return::Store::MemoryReturnStore.new
|
45
|
+
Workling::Discovery.discover!
|
46
|
+
|
47
|
+
# make this behave like production code
|
48
|
+
Workling.raise_exceptions = false
|
metadata
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: did_workling
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Rany Keddo
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-02-14 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: Workling gives your Rails App a simple API that you can use to make code run in the background, outside of the your request.
|
23
|
+
email:
|
24
|
+
- didier@nocoffee.fr
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files:
|
30
|
+
- README.markdown
|
31
|
+
files:
|
32
|
+
- lib/rude_q/client.rb
|
33
|
+
- lib/workling.rb
|
34
|
+
- lib/workling/base.rb
|
35
|
+
- lib/workling/clients/amqp_client.rb
|
36
|
+
- lib/workling/clients/base.rb
|
37
|
+
- lib/workling/clients/memcache_queue_client.rb
|
38
|
+
- lib/workling/discovery.rb
|
39
|
+
- lib/workling/remote.rb
|
40
|
+
- lib/workling/remote/invokers/base.rb
|
41
|
+
- lib/workling/remote/invokers/basic_poller.rb
|
42
|
+
- lib/workling/remote/invokers/eventmachine_subscriber.rb
|
43
|
+
- lib/workling/remote/invokers/threaded_poller.rb
|
44
|
+
- lib/workling/remote/runners/backgroundjob_runner.rb
|
45
|
+
- lib/workling/remote/runners/base.rb
|
46
|
+
- lib/workling/remote/runners/client_runner.rb
|
47
|
+
- lib/workling/remote/runners/not_remote_runner.rb
|
48
|
+
- lib/workling/remote/runners/spawn_runner.rb
|
49
|
+
- lib/workling/remote/runners/starling_runner.rb
|
50
|
+
- lib/workling/return/store/base.rb
|
51
|
+
- lib/workling/return/store/memory_return_store.rb
|
52
|
+
- lib/workling/return/store/starling_return_store.rb
|
53
|
+
- lib/workling/routing/base.rb
|
54
|
+
- lib/workling/routing/class_and_method_routing.rb
|
55
|
+
- README.markdown
|
56
|
+
- test/class_and_method_routing_test.rb
|
57
|
+
- test/clients/memory_queue_client.rb
|
58
|
+
- test/discovery_test.rb
|
59
|
+
- test/invoker_basic_poller_test.rb
|
60
|
+
- test/invoker_eventmachine_subscription_test.rb
|
61
|
+
- test/invoker_threaded_poller_test.rb
|
62
|
+
- test/memcachequeue_client_test.rb
|
63
|
+
- test/memory_return_store_test.rb
|
64
|
+
- test/mocks/client.rb
|
65
|
+
- test/mocks/logger.rb
|
66
|
+
- test/mocks/spawn.rb
|
67
|
+
- test/not_remote_runner_test.rb
|
68
|
+
- test/remote_runner_test.rb
|
69
|
+
- test/return_store_test.rb
|
70
|
+
- test/runners/thread_runner.rb
|
71
|
+
- test/spawn_runner_test.rb
|
72
|
+
- test/starling_return_store_test.rb
|
73
|
+
- test/starling_runner_test.rb
|
74
|
+
- test/test_helper.rb
|
75
|
+
- test/workers/analytics/invites.rb
|
76
|
+
- test/workers/util.rb
|
77
|
+
has_rdoc: true
|
78
|
+
homepage: https://github.com/purzelrakete/workling
|
79
|
+
licenses: []
|
80
|
+
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options:
|
83
|
+
- --charset=UTF-8
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
version: "0"
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
requirements: []
|
105
|
+
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 1.4.2
|
108
|
+
signing_key:
|
109
|
+
specification_version: 3
|
110
|
+
summary: easily do background work in rails, without commiting to a particular runner. comes with starling, bj and spawn runners.
|
111
|
+
test_files:
|
112
|
+
- test/class_and_method_routing_test.rb
|
113
|
+
- test/clients/memory_queue_client.rb
|
114
|
+
- test/discovery_test.rb
|
115
|
+
- test/invoker_basic_poller_test.rb
|
116
|
+
- test/invoker_eventmachine_subscription_test.rb
|
117
|
+
- test/invoker_threaded_poller_test.rb
|
118
|
+
- test/memcachequeue_client_test.rb
|
119
|
+
- test/memory_return_store_test.rb
|
120
|
+
- test/mocks/client.rb
|
121
|
+
- test/mocks/logger.rb
|
122
|
+
- test/mocks/spawn.rb
|
123
|
+
- test/not_remote_runner_test.rb
|
124
|
+
- test/remote_runner_test.rb
|
125
|
+
- test/return_store_test.rb
|
126
|
+
- test/runners/thread_runner.rb
|
127
|
+
- test/spawn_runner_test.rb
|
128
|
+
- test/starling_return_store_test.rb
|
129
|
+
- test/starling_runner_test.rb
|
130
|
+
- test/test_helper.rb
|
131
|
+
- test/workers/analytics/invites.rb
|
132
|
+
- test/workers/util.rb
|