taskinator 0.2.0 → 0.3.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.
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