taskinator 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/Gemfile +17 -2
  4. data/Gemfile.lock +57 -18
  5. data/README.md +20 -16
  6. data/lib/taskinator/definition.rb +2 -2
  7. data/lib/taskinator/instrumentation.rb +77 -0
  8. data/lib/taskinator/persistence.rb +72 -61
  9. data/lib/taskinator/process.rb +118 -99
  10. data/lib/taskinator/queues/delayed_job.rb +0 -14
  11. data/lib/taskinator/queues/resque.rb +0 -18
  12. data/lib/taskinator/queues/sidekiq.rb +0 -14
  13. data/lib/taskinator/queues.rb +0 -5
  14. data/lib/taskinator/task.rb +113 -70
  15. data/lib/taskinator/version.rb +1 -1
  16. data/lib/taskinator/visitor.rb +6 -0
  17. data/lib/taskinator/workflow.rb +36 -0
  18. data/lib/taskinator.rb +3 -2
  19. data/spec/examples/process_examples.rb +6 -9
  20. data/spec/examples/queue_adapter_examples.rb +2 -12
  21. data/spec/examples/task_examples.rb +5 -8
  22. data/spec/support/process_methods.rb +25 -0
  23. data/spec/support/task_methods.rb +13 -0
  24. data/spec/support/test_flows.rb +1 -3
  25. data/spec/support/test_instrumenter.rb +39 -0
  26. data/spec/support/test_queue.rb +0 -12
  27. data/spec/taskinator/definition_spec.rb +3 -5
  28. data/spec/taskinator/instrumentation_spec.rb +98 -0
  29. data/spec/taskinator/persistence_spec.rb +3 -41
  30. data/spec/taskinator/process_spec.rb +36 -34
  31. data/spec/taskinator/queues/delayed_job_spec.rb +0 -41
  32. data/spec/taskinator/queues/resque_spec.rb +0 -51
  33. data/spec/taskinator/queues/sidekiq_spec.rb +0 -50
  34. data/spec/taskinator/queues_spec.rb +1 -1
  35. data/spec/taskinator/task_spec.rb +96 -64
  36. data/spec/taskinator/test_flows_spec.rb +266 -1
  37. data/taskinator.gemspec +0 -21
  38. metadata +12 -173
  39. data/lib/taskinator/job_worker.rb +0 -17
  40. data/spec/taskinator/job_worker_spec.rb +0 -62
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taskinator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Stefano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -66,174 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.8.2
69
- - !ruby/object:Gem::Dependency
70
- name: sidekiq
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 3.0.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 3.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: rspec-sidekiq
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 2.0.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 2.0.0
97
- - !ruby/object:Gem::Dependency
98
- name: delayed_job
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: 4.0.0
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: 4.0.0
111
- - !ruby/object:Gem::Dependency
112
- name: resque
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: 1.25.2
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 1.25.2
125
- - !ruby/object:Gem::Dependency
126
- name: resque_spec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: 0.16.0
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: 0.16.0
139
- - !ruby/object:Gem::Dependency
140
- name: bundler
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 1.6.0
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: 1.6.0
153
- - !ruby/object:Gem::Dependency
154
- name: rake
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: 10.3.0
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: 10.3.0
167
- - !ruby/object:Gem::Dependency
168
- name: activesupport
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: 4.0.0
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: 4.0.0
181
- - !ruby/object:Gem::Dependency
182
- name: rspec
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: coveralls
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: 0.7.0
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: 0.7.0
209
- - !ruby/object:Gem::Dependency
210
- name: pry
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: 0.9.0
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: 0.9.0
223
- - !ruby/object:Gem::Dependency
224
- name: pry-byebug
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: 1.3.0
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: 1.3.0
237
69
  description: Simple process orchestration
238
70
  email:
239
71
  - virtualstaticvoid@gmail.com
@@ -264,7 +96,7 @@ files:
264
96
  - lib/taskinator/definition.rb
265
97
  - lib/taskinator/definition/builder.rb
266
98
  - lib/taskinator/executor.rb
267
- - lib/taskinator/job_worker.rb
99
+ - lib/taskinator/instrumentation.rb
268
100
  - lib/taskinator/logger.rb
269
101
  - lib/taskinator/persistence.rb
270
102
  - lib/taskinator/process.rb
@@ -278,6 +110,7 @@ files:
278
110
  - lib/taskinator/tasks.rb
279
111
  - lib/taskinator/version.rb
280
112
  - lib/taskinator/visitor.rb
113
+ - lib/taskinator/workflow.rb
281
114
  - processes_workflow.png
282
115
  - sequence.txt
283
116
  - spec/examples/process_examples.rb
@@ -287,11 +120,14 @@ files:
287
120
  - spec/support/delayed_job.rb
288
121
  - spec/support/mock_definition.rb
289
122
  - spec/support/mock_model.rb
123
+ - spec/support/process_methods.rb
290
124
  - spec/support/sidekiq_matchers.rb
291
125
  - spec/support/spec_support.rb
126
+ - spec/support/task_methods.rb
292
127
  - spec/support/test_definition.rb
293
128
  - spec/support/test_flow.rb
294
129
  - spec/support/test_flows.rb
130
+ - spec/support/test_instrumenter.rb
295
131
  - spec/support/test_process.rb
296
132
  - spec/support/test_queue.rb
297
133
  - spec/support/test_task.rb
@@ -301,7 +137,7 @@ files:
301
137
  - spec/taskinator/definition/builder_spec.rb
302
138
  - spec/taskinator/definition_spec.rb
303
139
  - spec/taskinator/executor_spec.rb
304
- - spec/taskinator/job_worker_spec.rb
140
+ - spec/taskinator/instrumentation_spec.rb
305
141
  - spec/taskinator/persistence_spec.rb
306
142
  - spec/taskinator/process_spec.rb
307
143
  - spec/taskinator/queues/delayed_job_spec.rb
@@ -349,11 +185,14 @@ test_files:
349
185
  - spec/support/delayed_job.rb
350
186
  - spec/support/mock_definition.rb
351
187
  - spec/support/mock_model.rb
188
+ - spec/support/process_methods.rb
352
189
  - spec/support/sidekiq_matchers.rb
353
190
  - spec/support/spec_support.rb
191
+ - spec/support/task_methods.rb
354
192
  - spec/support/test_definition.rb
355
193
  - spec/support/test_flow.rb
356
194
  - spec/support/test_flows.rb
195
+ - spec/support/test_instrumenter.rb
357
196
  - spec/support/test_process.rb
358
197
  - spec/support/test_queue.rb
359
198
  - spec/support/test_task.rb
@@ -363,7 +202,7 @@ test_files:
363
202
  - spec/taskinator/definition/builder_spec.rb
364
203
  - spec/taskinator/definition_spec.rb
365
204
  - spec/taskinator/executor_spec.rb
366
- - spec/taskinator/job_worker_spec.rb
205
+ - spec/taskinator/instrumentation_spec.rb
367
206
  - spec/taskinator/persistence_spec.rb
368
207
  - spec/taskinator/process_spec.rb
369
208
  - spec/taskinator/queues/delayed_job_spec.rb
@@ -1,17 +0,0 @@
1
- module Taskinator
2
- class JobWorker
3
- attr_reader :uuid
4
-
5
- def initialize(uuid)
6
- @uuid = uuid
7
- end
8
-
9
- # NB: must be provided a block for the implementation of the job execution
10
- def perform(&block)
11
- task = Taskinator::Task.fetch(@uuid)
12
- return if task.paused? || task.cancelled?
13
- task.start!
14
- task.perform(&block)
15
- end
16
- end
17
- end
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Taskinator::JobWorker do
4
-
5
- def mock_job(paused=false, cancelled=false)
6
- double('job', :paused? => paused, :cancelled? => cancelled)
7
- end
8
-
9
- let(:uuid) { SecureRandom.uuid }
10
-
11
- subject { Taskinator::JobWorker.new(uuid) }
12
-
13
- it "should fetch the job" do
14
- job = mock_job
15
- expect(Taskinator::Task).to receive(:fetch).with(uuid) { job }
16
- allow(job).to receive(:start!)
17
- allow(job).to receive(:perform)
18
- allow(job).to receive(:complete!)
19
- subject.perform
20
- end
21
-
22
- it "should start the job" do
23
- job = mock_job
24
- allow(Taskinator::Task).to receive(:fetch).with(uuid) { job }
25
- expect(job).to receive(:start!) { }
26
- allow(job).to receive(:perform)
27
- allow(job).to receive(:complete!)
28
- subject.perform
29
- end
30
-
31
- it "should perform the job" do
32
- job = mock_job(false, false)
33
- allow(Taskinator::Task).to receive(:fetch).with(uuid) { job }
34
- allow(job).to receive(:start!)
35
- expect(job).to receive(:perform)
36
- subject.perform
37
- end
38
-
39
- it "should not start if paused" do
40
- job = mock_job(true, false)
41
- allow(Taskinator::Task).to receive(:fetch).with(uuid) { job }
42
- expect(job).to_not receive(:start!)
43
- subject.perform
44
- end
45
-
46
- it "should not start if cancelled" do
47
- job = mock_job(false, true)
48
- allow(Taskinator::Task).to receive(:fetch).with(uuid) { job }
49
- expect(job).to_not receive(:start!)
50
- subject.perform
51
- end
52
-
53
- it "should fail if job raises an error" do
54
- job = mock_job
55
- allow(Taskinator::Task).to receive(:fetch).with(uuid) { job }
56
- allow(job).to receive(:start!) { raise StandardError }
57
- expect {
58
- subject.perform
59
- }.to raise_error(StandardError)
60
- end
61
-
62
- end