asynchronic 0.1.0 → 0.2.0
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/lib/asynchronic.rb +0 -2
- data/lib/asynchronic/data_store/helper.rb +42 -0
- data/lib/asynchronic/data_store/in_memory.rb +18 -22
- data/lib/asynchronic/data_store/key.rb +19 -1
- data/lib/asynchronic/data_store/lazy_store.rb +17 -0
- data/lib/asynchronic/data_store/lazy_value.rb +34 -0
- data/lib/asynchronic/data_store/readonly_store.rb +17 -0
- data/lib/asynchronic/data_store/redis.rb +16 -27
- data/lib/asynchronic/data_store/scoped_store.rb +52 -0
- data/lib/asynchronic/environment.rb +7 -27
- data/lib/asynchronic/job.rb +15 -27
- data/lib/asynchronic/process.rb +105 -76
- data/lib/asynchronic/queue_engine/in_memory.rb +5 -1
- data/lib/asynchronic/queue_engine/ost.rb +5 -1
- data/lib/asynchronic/queue_engine/synchronic.rb +68 -0
- data/lib/asynchronic/transparent_proxy.rb +52 -0
- data/lib/asynchronic/version.rb +1 -1
- data/spec/data_store/data_store_examples.rb +48 -32
- data/spec/data_store/in_memory_spec.rb +5 -0
- data/spec/data_store/key_spec.rb +36 -12
- data/spec/data_store/lazy_value_examples.rb +38 -0
- data/spec/data_store/redis_spec.rb +17 -0
- data/spec/data_store/scoped_store_spec.rb +60 -0
- data/spec/expectations.rb +7 -7
- data/spec/facade_spec.rb +15 -13
- data/spec/jobs.rb +70 -49
- data/spec/minitest_helper.rb +11 -1
- data/spec/process/life_cycle_examples.rb +149 -135
- data/spec/queue_engine/synchronic_spec.rb +27 -0
- data/spec/transparent_proxy_spec.rb +36 -0
- data/spec/worker/worker_examples.rb +1 -1
- metadata +117 -79
- checksums.yaml +0 -7
- data/lib/asynchronic/data_store/lookup.rb +0 -27
- data/lib/asynchronic/hash.rb +0 -31
- data/lib/asynchronic/runtime.rb +0 -40
- data/spec/data_store/lookup_spec.rb +0 -92
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Asynchronic::QueueEngine::Synchronic do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Asynchronic.configure do |config|
|
7
|
+
config.queue_engine = Asynchronic::QueueEngine::Synchronic.new
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'Original job' do
|
12
|
+
pid = BasicJob.enqueue input: 1
|
13
|
+
process = Asynchronic[pid]
|
14
|
+
process.result.must_equal 2
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'Stub job' do
|
18
|
+
Asynchronic.queue_engine.stub BasicJob do |process|
|
19
|
+
process.params[:input] + 19
|
20
|
+
end
|
21
|
+
|
22
|
+
pid = BasicJob.enqueue input: 1
|
23
|
+
process = Asynchronic[pid]
|
24
|
+
process.result.must_equal 20
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Asynchronic::TransparentProxy do
|
4
|
+
|
5
|
+
it 'Transparent' do
|
6
|
+
proxy = Asynchronic::TransparentProxy.new 1
|
7
|
+
|
8
|
+
proxy.must_equal 1
|
9
|
+
(proxy + 1).must_equal 2
|
10
|
+
proxy.class.must_equal Fixnum
|
11
|
+
proxy.inspect.must_equal 1.inspect
|
12
|
+
proxy.methods.must_equal proxy.proxy_methods | 1.methods
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'Proxy methods' do
|
16
|
+
proxy = Asynchronic::TransparentProxy.new 1
|
17
|
+
|
18
|
+
proxy.must_be :proxy?
|
19
|
+
proxy.proxy_class.must_equal Asynchronic::TransparentProxy
|
20
|
+
proxy.proxy_inspect.must_match /#<Asynchronic::TransparentProxy @object=1>/
|
21
|
+
proxy.proxy_methods.must_include_all [:__send__, :object_id, :tap]
|
22
|
+
proxy.must_respond_to :proxy_respond_to?
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'Subclass' do
|
26
|
+
class NumberProxy < Asynchronic::TransparentProxy
|
27
|
+
def to_letters
|
28
|
+
'one'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
proxy = NumberProxy.new 1
|
33
|
+
proxy.to_letters.must_equal 'one'
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -1,155 +1,176 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asynchronic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.2.0
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Gabriel Naiman
|
8
|
-
autorequire:
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-04-09 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: redis
|
15
|
-
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - ~>
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '3.0'
|
20
|
-
|
21
|
-
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
|
+
none: false
|
28
|
+
prerelease: false
|
29
|
+
type: :runtime
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: ost
|
29
|
-
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
33
|
requirements:
|
31
|
-
- -
|
34
|
+
- - ~>
|
32
35
|
- !ruby/object:Gem::Version
|
33
36
|
version: '0.1'
|
34
|
-
|
35
|
-
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
37
39
|
requirements:
|
38
|
-
- -
|
40
|
+
- - ~>
|
39
41
|
- !ruby/object:Gem::Version
|
40
42
|
version: '0.1'
|
43
|
+
none: false
|
44
|
+
prerelease: false
|
45
|
+
type: :runtime
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: class_config
|
43
|
-
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
49
|
requirements:
|
45
|
-
- -
|
50
|
+
- - ~>
|
46
51
|
- !ruby/object:Gem::Version
|
47
52
|
version: '0.0'
|
48
|
-
|
49
|
-
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
51
55
|
requirements:
|
52
|
-
- -
|
56
|
+
- - ~>
|
53
57
|
- !ruby/object:Gem::Version
|
54
58
|
version: '0.0'
|
59
|
+
none: false
|
60
|
+
prerelease: false
|
61
|
+
type: :runtime
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: bundler
|
57
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ~>
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '1.3'
|
62
|
-
|
63
|
-
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- -
|
72
|
+
- - ~>
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: '1.3'
|
75
|
+
none: false
|
76
|
+
prerelease: false
|
77
|
+
type: :development
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rake
|
71
|
-
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
81
|
requirements:
|
73
|
-
- -
|
82
|
+
- - '>='
|
74
83
|
- !ruby/object:Gem::Version
|
75
84
|
version: '0'
|
76
|
-
|
77
|
-
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
79
87
|
requirements:
|
80
|
-
- -
|
88
|
+
- - '>='
|
81
89
|
- !ruby/object:Gem::Version
|
82
90
|
version: '0'
|
91
|
+
none: false
|
92
|
+
prerelease: false
|
93
|
+
type: :development
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: minitest
|
85
|
-
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
97
|
requirements:
|
87
|
-
- -
|
98
|
+
- - ~>
|
88
99
|
- !ruby/object:Gem::Version
|
89
100
|
version: '4.7'
|
90
|
-
|
91
|
-
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
93
103
|
requirements:
|
94
|
-
- -
|
104
|
+
- - ~>
|
95
105
|
- !ruby/object:Gem::Version
|
96
106
|
version: '4.7'
|
107
|
+
none: false
|
108
|
+
prerelease: false
|
109
|
+
type: :development
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: minitest-great_expectations
|
99
|
-
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
113
|
requirements:
|
101
|
-
- -
|
114
|
+
- - ~>
|
102
115
|
- !ruby/object:Gem::Version
|
103
116
|
version: '0.0'
|
104
|
-
|
105
|
-
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
107
119
|
requirements:
|
108
|
-
- -
|
120
|
+
- - ~>
|
109
121
|
- !ruby/object:Gem::Version
|
110
122
|
version: '0.0'
|
123
|
+
none: false
|
124
|
+
prerelease: false
|
125
|
+
type: :development
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: turn
|
113
|
-
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
114
129
|
requirements:
|
115
|
-
- -
|
130
|
+
- - ~>
|
116
131
|
- !ruby/object:Gem::Version
|
117
132
|
version: '0.9'
|
118
|
-
|
119
|
-
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
|
-
- -
|
136
|
+
- - ~>
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0.9'
|
139
|
+
none: false
|
140
|
+
prerelease: false
|
141
|
+
type: :development
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: simplecov
|
127
|
-
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
128
145
|
requirements:
|
129
|
-
- -
|
146
|
+
- - '>='
|
130
147
|
- !ruby/object:Gem::Version
|
131
148
|
version: '0'
|
132
|
-
|
133
|
-
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirement: !ruby/object:Gem::Requirement
|
135
151
|
requirements:
|
136
|
-
- -
|
152
|
+
- - '>='
|
137
153
|
- !ruby/object:Gem::Version
|
138
154
|
version: '0'
|
155
|
+
none: false
|
156
|
+
prerelease: false
|
157
|
+
type: :development
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: pry
|
141
|
-
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
142
161
|
requirements:
|
143
|
-
- -
|
162
|
+
- - '>='
|
144
163
|
- !ruby/object:Gem::Version
|
145
164
|
version: '0'
|
146
|
-
|
147
|
-
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
166
|
+
requirement: !ruby/object:Gem::Requirement
|
149
167
|
requirements:
|
150
|
-
- -
|
168
|
+
- - '>='
|
151
169
|
- !ruby/object:Gem::Version
|
152
170
|
version: '0'
|
171
|
+
none: false
|
172
|
+
prerelease: false
|
173
|
+
type: :development
|
153
174
|
description: DSL for asynchronic pipeline
|
154
175
|
email:
|
155
176
|
- gabynaiman@gmail.com
|
@@ -157,35 +178,40 @@ executables: []
|
|
157
178
|
extensions: []
|
158
179
|
extra_rdoc_files: []
|
159
180
|
files:
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
181
|
+
- .coveralls.yml
|
182
|
+
- .gitignore
|
183
|
+
- .travis.yml
|
163
184
|
- Gemfile
|
164
185
|
- LICENSE.txt
|
165
186
|
- README.md
|
166
187
|
- Rakefile
|
167
188
|
- asynchronic.gemspec
|
168
189
|
- lib/asynchronic.rb
|
190
|
+
- lib/asynchronic/data_store/helper.rb
|
169
191
|
- lib/asynchronic/data_store/in_memory.rb
|
170
192
|
- lib/asynchronic/data_store/key.rb
|
171
|
-
- lib/asynchronic/data_store/
|
193
|
+
- lib/asynchronic/data_store/lazy_store.rb
|
194
|
+
- lib/asynchronic/data_store/lazy_value.rb
|
195
|
+
- lib/asynchronic/data_store/readonly_store.rb
|
172
196
|
- lib/asynchronic/data_store/redis.rb
|
197
|
+
- lib/asynchronic/data_store/scoped_store.rb
|
173
198
|
- lib/asynchronic/environment.rb
|
174
199
|
- lib/asynchronic/error.rb
|
175
|
-
- lib/asynchronic/hash.rb
|
176
200
|
- lib/asynchronic/job.rb
|
177
201
|
- lib/asynchronic/process.rb
|
178
202
|
- lib/asynchronic/queue_engine/in_memory.rb
|
179
203
|
- lib/asynchronic/queue_engine/ost.rb
|
180
|
-
- lib/asynchronic/
|
204
|
+
- lib/asynchronic/queue_engine/synchronic.rb
|
205
|
+
- lib/asynchronic/transparent_proxy.rb
|
181
206
|
- lib/asynchronic/version.rb
|
182
207
|
- lib/asynchronic/worker.rb
|
183
208
|
- spec/coverage_helper.rb
|
184
209
|
- spec/data_store/data_store_examples.rb
|
185
210
|
- spec/data_store/in_memory_spec.rb
|
186
211
|
- spec/data_store/key_spec.rb
|
187
|
-
- spec/data_store/
|
212
|
+
- spec/data_store/lazy_value_examples.rb
|
188
213
|
- spec/data_store/redis_spec.rb
|
214
|
+
- spec/data_store/scoped_store_spec.rb
|
189
215
|
- spec/expectations.rb
|
190
216
|
- spec/facade_spec.rb
|
191
217
|
- spec/jobs.rb
|
@@ -196,40 +222,50 @@ files:
|
|
196
222
|
- spec/queue_engine/in_memory_spec.rb
|
197
223
|
- spec/queue_engine/ost_spec.rb
|
198
224
|
- spec/queue_engine/queue_engine_examples.rb
|
225
|
+
- spec/queue_engine/synchronic_spec.rb
|
226
|
+
- spec/transparent_proxy_spec.rb
|
199
227
|
- spec/worker/in_memory_spec.rb
|
200
228
|
- spec/worker/redis_spec.rb
|
201
229
|
- spec/worker/worker_examples.rb
|
202
230
|
homepage: https://github.com/gabynaiman/asynchronic
|
203
231
|
licenses:
|
204
232
|
- MIT
|
205
|
-
|
206
|
-
post_install_message:
|
233
|
+
post_install_message:
|
207
234
|
rdoc_options: []
|
208
235
|
require_paths:
|
209
236
|
- lib
|
210
237
|
required_ruby_version: !ruby/object:Gem::Requirement
|
211
238
|
requirements:
|
212
|
-
- -
|
239
|
+
- - '>='
|
213
240
|
- !ruby/object:Gem::Version
|
241
|
+
segments:
|
242
|
+
- 0
|
243
|
+
hash: 2
|
214
244
|
version: '0'
|
245
|
+
none: false
|
215
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
247
|
requirements:
|
217
|
-
- -
|
248
|
+
- - '>='
|
218
249
|
- !ruby/object:Gem::Version
|
250
|
+
segments:
|
251
|
+
- 0
|
252
|
+
hash: 2
|
219
253
|
version: '0'
|
254
|
+
none: false
|
220
255
|
requirements: []
|
221
|
-
rubyforge_project:
|
222
|
-
rubygems_version:
|
223
|
-
signing_key:
|
224
|
-
specification_version:
|
256
|
+
rubyforge_project:
|
257
|
+
rubygems_version: 1.8.24
|
258
|
+
signing_key:
|
259
|
+
specification_version: 3
|
225
260
|
summary: DSL for asynchronic pipeline using queues over Redis
|
226
261
|
test_files:
|
227
262
|
- spec/coverage_helper.rb
|
228
263
|
- spec/data_store/data_store_examples.rb
|
229
264
|
- spec/data_store/in_memory_spec.rb
|
230
265
|
- spec/data_store/key_spec.rb
|
231
|
-
- spec/data_store/
|
266
|
+
- spec/data_store/lazy_value_examples.rb
|
232
267
|
- spec/data_store/redis_spec.rb
|
268
|
+
- spec/data_store/scoped_store_spec.rb
|
233
269
|
- spec/expectations.rb
|
234
270
|
- spec/facade_spec.rb
|
235
271
|
- spec/jobs.rb
|
@@ -240,6 +276,8 @@ test_files:
|
|
240
276
|
- spec/queue_engine/in_memory_spec.rb
|
241
277
|
- spec/queue_engine/ost_spec.rb
|
242
278
|
- spec/queue_engine/queue_engine_examples.rb
|
279
|
+
- spec/queue_engine/synchronic_spec.rb
|
280
|
+
- spec/transparent_proxy_spec.rb
|
243
281
|
- spec/worker/in_memory_spec.rb
|
244
282
|
- spec/worker/redis_spec.rb
|
245
283
|
- spec/worker/worker_examples.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 15caa715564ca133dd45cad9dce01db2de3cf7a6
|
4
|
-
data.tar.gz: 006fe0ebb38821c8cd1842e4b8060e14779d71c5
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: c41cf2f761f07c3b17a0c05099361bbe90f2f33506bb29a349074f079827bd1ee588e12319158a1c59e399bbd0f641c616579b401f4aac2a82175be59916e73e
|
7
|
-
data.tar.gz: a64a7b0e1a5422bee3fa8a465d166ef37342ef5294865c24208a211423aed838f9f031b0320755cfde35788c2e6d34691b1fc762173af33bd3ed430359ffa112
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Asynchronic
|
2
|
-
module DataStore
|
3
|
-
class Lookup
|
4
|
-
|
5
|
-
KEYS = [:status, :data, :jobs, :error, :created_at, :queued_at, :started_at, :finalized_at]
|
6
|
-
|
7
|
-
def initialize(job)
|
8
|
-
@job = job
|
9
|
-
end
|
10
|
-
|
11
|
-
def id
|
12
|
-
if @job.parent
|
13
|
-
DataStore::Key.new(@job.parent)[:jobs][@job.id]
|
14
|
-
else
|
15
|
-
DataStore::Key.new(:job)[@job.id]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
KEYS.each do |key|
|
20
|
-
define_method key do
|
21
|
-
id[key]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|