taskinator 0.4.7 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +1 -1
- data/lib/taskinator/process.rb +4 -0
- data/lib/taskinator/queues/active_job.rb +0 -12
- data/lib/taskinator/queues/delayed_job.rb +0 -11
- data/lib/taskinator/queues/resque.rb +0 -15
- data/lib/taskinator/queues/sidekiq.rb +0 -13
- data/lib/taskinator/queues.rb +0 -5
- data/lib/taskinator/version.rb +1 -1
- data/lib/taskinator.rb +0 -1
- data/spec/support/test_queue.rb +21 -15
- data/spec/taskinator/definition_spec.rb +1 -1
- data/spec/taskinator/queues/active_job_spec.rb +0 -21
- data/spec/taskinator/queues/delayed_job_spec.rb +0 -18
- data/spec/taskinator/queues/resque_spec.rb +0 -21
- data/spec/taskinator/queues/sidekiq_spec.rb +0 -19
- data/spec/taskinator/queues/test_queue_adapter_spec.rb +9 -0
- data/spec/taskinator/test_flows_spec.rb +16 -8
- metadata +4 -5
- data/lib/taskinator/process_worker.rb +0 -13
- data/spec/taskinator/process_worker_spec.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae9476e48721568bd268135aac66ccf70f0b1f9f5737e2db7c25ab22033e6e3b
|
4
|
+
data.tar.gz: bba571d2cc60c017636187a88cd770889c5ac644726ac4094134d6ea48a9decd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d2912f45a9200d3f2abce1cc4fd651b2369d0663cbad219e0e16fe08990ad0f9ecdbf49402d5d2774581dd111fd0b3141f2bbe939214114094de13f3eae7d8e
|
7
|
+
data.tar.gz: dd35c73baf37a5ba20bc43faebeb855fa5445c0559f331c7f8c144d0d5fcb27c05b0e72b8030d31a42b985d5322a8e539db8113c0b43341b41bbde2a8c8cfb2f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
v0.5.0 - 18 Feb 2022
|
2
|
+
---
|
3
|
+
Removed unused `ProcessWorker` class and related queue methods.
|
4
|
+
Refactored `TestQueueAdapter` to correctly implement queue adapter for use in specs.
|
5
|
+
Added deprecation for `Taskinator::Process::Concurrent#concurrency_method` option.
|
6
|
+
|
7
|
+
v0.4.7 - 17 Feb 2022
|
8
|
+
---
|
9
|
+
Use newer format for `pipelined` and `multi` requests in Redis.
|
10
|
+
|
11
|
+
v0.4.6 - 12 Feb 2022
|
12
|
+
---
|
13
|
+
Upgrade actionpack for [information vulnerability fix](https://github.com/virtualstaticvoid/taskinator/security/dependabot/3).
|
14
|
+
|
15
|
+
v0.4.5 - 30 Jan 2022
|
16
|
+
---
|
17
|
+
Upgrade sidekiq dependency for [CVE-2022-23837](https://github.com/advisories/GHSA-jrfj-98qg-qjgv).
|
18
|
+
|
1
19
|
v0.4.4 - 17 Jan 2022
|
2
20
|
---
|
3
21
|
Add support for `ActiveJob`.
|
data/Gemfile.lock
CHANGED
data/lib/taskinator/process.rb
CHANGED
@@ -222,12 +222,15 @@ module Taskinator
|
|
222
222
|
|
223
223
|
class Concurrent < Process
|
224
224
|
attr_reader :complete_on
|
225
|
+
|
226
|
+
# <b>DEPRECATED:</b> concurrency_method will be removed in a future version.
|
225
227
|
attr_reader :concurrency_method
|
226
228
|
|
227
229
|
def initialize(definition, complete_on=CompleteOn::Default, options={})
|
228
230
|
super(definition, options)
|
229
231
|
@complete_on = complete_on
|
230
232
|
@concurrency_method = options.delete(:concurrency_method) || :thread
|
233
|
+
warn("[DEPRECATED]: concurrency_method will be removed in a future version.") if @concurrency_method == :fork
|
231
234
|
end
|
232
235
|
|
233
236
|
def enqueue
|
@@ -246,6 +249,7 @@ module Taskinator
|
|
246
249
|
complete! # weren't any tasks to start with
|
247
250
|
else
|
248
251
|
if concurrency_method == :fork
|
252
|
+
warn("[DEPRECATED]: concurrency_method will be removed in a future version.")
|
249
253
|
tasks.each do |task|
|
250
254
|
fork do
|
251
255
|
task.start!
|
@@ -18,12 +18,6 @@ module Taskinator
|
|
18
18
|
.perform_later(definition.name, uuid, Taskinator::Persistence.serialize(args))
|
19
19
|
end
|
20
20
|
|
21
|
-
def enqueue_process(process)
|
22
|
-
queue = process.queue || @config[:process_queue]
|
23
|
-
ProcessWorker.set(:queue => queue)
|
24
|
-
.perform_later(process.uuid)
|
25
|
-
end
|
26
|
-
|
27
21
|
def enqueue_task(task)
|
28
22
|
queue = task.queue || @config[:task_queue]
|
29
23
|
TaskWorker.set(:queue => queue)
|
@@ -36,12 +30,6 @@ module Taskinator
|
|
36
30
|
end
|
37
31
|
end
|
38
32
|
|
39
|
-
class ProcessWorker < ApplicationJob
|
40
|
-
def perform(process_uuid)
|
41
|
-
Taskinator::ProcessWorker.new(process_uuid).perform
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
33
|
class TaskWorker < ApplicationJob
|
46
34
|
def perform(task_uuid)
|
47
35
|
Taskinator::TaskWorker.new(task_uuid).perform
|
@@ -17,11 +17,6 @@ module Taskinator
|
|
17
17
|
::Delayed::Job.enqueue CreateProcessWorker.new(definition.name, uuid, Taskinator::Persistence.serialize(args)), :queue => queue
|
18
18
|
end
|
19
19
|
|
20
|
-
def enqueue_process(process)
|
21
|
-
queue = process.queue || @config[:process_queue]
|
22
|
-
::Delayed::Job.enqueue ProcessWorker.new(process.uuid), :queue => queue
|
23
|
-
end
|
24
|
-
|
25
20
|
def enqueue_task(task)
|
26
21
|
queue = task.queue || @config[:task_queue]
|
27
22
|
::Delayed::Job.enqueue TaskWorker.new(task.uuid), :queue => queue
|
@@ -33,12 +28,6 @@ module Taskinator
|
|
33
28
|
end
|
34
29
|
end
|
35
30
|
|
36
|
-
ProcessWorker = Struct.new(:process_uuid) do
|
37
|
-
def perform
|
38
|
-
Taskinator::ProcessWorker.new(process_uuid).perform
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
31
|
TaskWorker = Struct.new(:task_uuid) do
|
43
32
|
def perform
|
44
33
|
Taskinator::TaskWorker.new(task_uuid).perform
|
@@ -15,10 +15,6 @@ module Taskinator
|
|
15
15
|
@queue = config[:definition_queue]
|
16
16
|
end
|
17
17
|
|
18
|
-
ProcessWorker.class_eval do
|
19
|
-
@queue = config[:process_queue]
|
20
|
-
end
|
21
|
-
|
22
18
|
TaskWorker.class_eval do
|
23
19
|
@queue = config[:task_queue]
|
24
20
|
end
|
@@ -30,11 +26,6 @@ module Taskinator
|
|
30
26
|
Resque.enqueue_to(queue, CreateProcessWorker, definition.name, uuid, Taskinator::Persistence.serialize(args))
|
31
27
|
end
|
32
28
|
|
33
|
-
def enqueue_process(process)
|
34
|
-
queue = process.queue || Resque.queue_from_class(ProcessWorker)
|
35
|
-
Resque.enqueue_to(queue, ProcessWorker, process.uuid)
|
36
|
-
end
|
37
|
-
|
38
29
|
def enqueue_task(task)
|
39
30
|
queue = task.queue || Resque.queue_from_class(TaskWorker)
|
40
31
|
Resque.enqueue_to(queue, TaskWorker, task.uuid)
|
@@ -46,12 +37,6 @@ module Taskinator
|
|
46
37
|
end
|
47
38
|
end
|
48
39
|
|
49
|
-
class ProcessWorker
|
50
|
-
def self.perform(process_uuid)
|
51
|
-
Taskinator::ProcessWorker.new(process_uuid).perform
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
40
|
class TaskWorker
|
56
41
|
def self.perform(task_uuid)
|
57
42
|
Taskinator::TaskWorker.new(task_uuid).perform
|
@@ -17,11 +17,6 @@ module Taskinator
|
|
17
17
|
CreateProcessWorker.client_push('class' => CreateProcessWorker, 'args' => [definition.name, uuid, Taskinator::Persistence.serialize(args)], 'queue' => queue)
|
18
18
|
end
|
19
19
|
|
20
|
-
def enqueue_process(process)
|
21
|
-
queue = process.queue || @config[:process_queue]
|
22
|
-
TaskWorker.client_push('class' => ProcessWorker, 'args' => [process.uuid], 'queue' => queue)
|
23
|
-
end
|
24
|
-
|
25
20
|
def enqueue_task(task)
|
26
21
|
queue = task.queue || @config[:task_queue]
|
27
22
|
TaskWorker.client_push('class' => TaskWorker, 'args' => [task.uuid], 'queue' => queue)
|
@@ -35,14 +30,6 @@ module Taskinator
|
|
35
30
|
end
|
36
31
|
end
|
37
32
|
|
38
|
-
class ProcessWorker
|
39
|
-
include ::Sidekiq::Worker
|
40
|
-
|
41
|
-
def perform(process_uuid)
|
42
|
-
Taskinator::ProcessWorker.new(process_uuid).perform
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
33
|
class TaskWorker
|
47
34
|
include ::Sidekiq::Worker
|
48
35
|
|
data/lib/taskinator/queues.rb
CHANGED
@@ -33,11 +33,6 @@ module Taskinator
|
|
33
33
|
adapter.enqueue_create_process(definition, uuid, args)
|
34
34
|
end
|
35
35
|
|
36
|
-
def enqueue_process(process)
|
37
|
-
Taskinator.logger.info("Enqueuing process #{process}")
|
38
|
-
adapter.enqueue_process(process)
|
39
|
-
end
|
40
|
-
|
41
36
|
def enqueue_task(task)
|
42
37
|
Taskinator.logger.info("Enqueuing task #{task}")
|
43
38
|
adapter.enqueue_task(task)
|
data/lib/taskinator/version.rb
CHANGED
data/lib/taskinator.rb
CHANGED
data/spec/support/test_queue.rb
CHANGED
@@ -2,38 +2,42 @@ module Taskinator
|
|
2
2
|
module Queues
|
3
3
|
|
4
4
|
def self.create_test_queue_adapter(config={})
|
5
|
-
TestQueueAdapter.new
|
5
|
+
TestQueueAdapter.new(config)
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.create_test_queue_worker_adapter(config={})
|
9
|
-
|
9
|
+
TestQueueWorkerAdapter.new(config)
|
10
10
|
end
|
11
11
|
|
12
|
+
#
|
13
|
+
# this is a no-op adapter, it tracks enqueued processes and tasks
|
14
|
+
#
|
12
15
|
class TestQueueAdapter
|
13
16
|
|
14
|
-
|
15
|
-
attr_reader :tasks
|
16
|
-
|
17
|
-
def initialize
|
17
|
+
def initialize(config={})
|
18
18
|
clear
|
19
19
|
end
|
20
20
|
|
21
|
-
def clear
|
22
|
-
@creates = []
|
23
|
-
@tasks = []
|
24
|
-
@jobs = []
|
25
|
-
end
|
26
|
-
|
27
21
|
def enqueue_create_process(definition, uuid, args)
|
28
|
-
@
|
22
|
+
@processes << [definition, uuid, args]
|
29
23
|
end
|
30
24
|
|
31
25
|
def enqueue_task(task)
|
32
26
|
@tasks << task
|
33
27
|
end
|
34
28
|
|
29
|
+
# helpers
|
30
|
+
|
31
|
+
attr_reader :processes
|
32
|
+
attr_reader :tasks
|
33
|
+
|
34
|
+
def clear
|
35
|
+
@processes = []
|
36
|
+
@tasks = []
|
37
|
+
end
|
38
|
+
|
35
39
|
def empty?
|
36
|
-
@
|
40
|
+
@processes.empty? && @tasks.empty?
|
37
41
|
end
|
38
42
|
|
39
43
|
end
|
@@ -41,7 +45,7 @@ module Taskinator
|
|
41
45
|
#
|
42
46
|
# this is a "synchronous" implementation for use in testing
|
43
47
|
#
|
44
|
-
class
|
48
|
+
class TestQueueWorkerAdapter < TestQueueAdapter
|
45
49
|
|
46
50
|
def enqueue_create_process(definition, uuid, args)
|
47
51
|
super
|
@@ -57,6 +61,8 @@ module Taskinator
|
|
57
61
|
end
|
58
62
|
end
|
59
63
|
|
64
|
+
private
|
65
|
+
|
60
66
|
def invoke(&block)
|
61
67
|
block.call
|
62
68
|
end
|
@@ -35,27 +35,6 @@ describe Taskinator::Queues::ActiveJobAdapter, :active_job do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
describe "ProcessWorker" do
|
39
|
-
it "enqueues processes" do
|
40
|
-
worker = adapter::ProcessWorker
|
41
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => nil))
|
42
|
-
|
43
|
-
expect(worker).to have_been_enqueued.with(uuid)
|
44
|
-
end
|
45
|
-
|
46
|
-
it "enqueues process to specified queue" do
|
47
|
-
worker = adapter::ProcessWorker
|
48
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => :other))
|
49
|
-
|
50
|
-
expect(worker).to have_been_enqueued.with(uuid).on_queue(:other)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "calls process worker" do
|
54
|
-
expect_any_instance_of(Taskinator::ProcessWorker).to receive(:perform)
|
55
|
-
adapter::ProcessWorker.new.perform(uuid)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
38
|
describe "TaskWorker" do
|
60
39
|
it "enqueues tasks" do
|
61
40
|
worker = adapter::TaskWorker
|
@@ -30,24 +30,6 @@ describe Taskinator::Queues::DelayedJobAdapter, :delayed_job do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "ProcessWorker" do
|
34
|
-
it "enqueues processes" do
|
35
|
-
expect {
|
36
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => nil))
|
37
|
-
}.to change(Delayed::Job.queue, :size).by(1)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "enqueues process to specified queue" do
|
41
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => :other))
|
42
|
-
expect(Delayed::Job.contains?(adapter::ProcessWorker, uuid, :other)).to be
|
43
|
-
end
|
44
|
-
|
45
|
-
it "calls process worker" do
|
46
|
-
expect_any_instance_of(Taskinator::ProcessWorker).to receive(:perform)
|
47
|
-
adapter::ProcessWorker.new(uuid).perform
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
33
|
describe "TaskWorker" do
|
52
34
|
it "enqueues tasks" do
|
53
35
|
expect {
|
@@ -34,27 +34,6 @@ describe Taskinator::Queues::ResqueAdapter, :resque do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
describe "ProcessWorker" do
|
38
|
-
it "enqueues processes" do
|
39
|
-
worker = adapter::ProcessWorker
|
40
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => nil))
|
41
|
-
|
42
|
-
expect(worker).to have_queued(uuid)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "enqueues process to specified queue" do
|
46
|
-
worker = adapter::ProcessWorker
|
47
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => :other))
|
48
|
-
|
49
|
-
expect(worker).to have_queued(uuid).in(:other)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "calls process worker" do
|
53
|
-
expect_any_instance_of(Taskinator::ProcessWorker).to receive(:perform)
|
54
|
-
adapter::ProcessWorker.perform(uuid)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
37
|
describe "TaskWorker" do
|
59
38
|
it "enqueues tasks" do
|
60
39
|
worker = adapter::TaskWorker
|
@@ -33,25 +33,6 @@ describe Taskinator::Queues::SidekiqAdapter, :sidekiq do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
describe "ProcessWorker" do
|
37
|
-
it "enqueues processes" do
|
38
|
-
worker = adapter::ProcessWorker
|
39
|
-
process = double('process', :uuid => uuid, :queue => nil)
|
40
|
-
subject.enqueue_process(process)
|
41
|
-
expect(worker).to have_enqueued_sidekiq_job(process.uuid)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "enqueues process to specified queue" do
|
45
|
-
subject.enqueue_process(double('process', :uuid => uuid, :queue => :other))
|
46
|
-
expect(adapter::ProcessWorker).to be_processed_in_x(:other)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "calls process worker" do
|
50
|
-
expect_any_instance_of(Taskinator::ProcessWorker).to receive(:perform)
|
51
|
-
adapter::ProcessWorker.new.perform(uuid)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
36
|
describe "TaskWorker" do
|
56
37
|
it "enqueues tasks" do
|
57
38
|
worker = adapter::TaskWorker
|
@@ -98,10 +98,14 @@ describe TestFlows do
|
|
98
98
|
let(:definition) { TestFlows::EmptySequentialProcessTest }
|
99
99
|
subject { definition.create_process }
|
100
100
|
|
101
|
+
it "contains 3 tasks" do
|
102
|
+
expect(subject.tasks.length).to eq(3)
|
103
|
+
end
|
104
|
+
|
101
105
|
it "invokes each task" do
|
102
|
-
|
103
|
-
|
104
|
-
|
106
|
+
expect_any_instance_of(definition).to receive(:task_0)
|
107
|
+
expect_any_instance_of(definition).to receive(:task_1)
|
108
|
+
expect_any_instance_of(definition).to receive(:task_2)
|
105
109
|
|
106
110
|
expect {
|
107
111
|
subject.enqueue!
|
@@ -113,10 +117,14 @@ describe TestFlows do
|
|
113
117
|
let(:definition) { TestFlows::EmptyConcurrentProcessTest }
|
114
118
|
subject { definition.create_process }
|
115
119
|
|
120
|
+
it "contains 3 tasks" do
|
121
|
+
expect(subject.tasks.length).to eq(3)
|
122
|
+
end
|
123
|
+
|
116
124
|
it "invokes each task" do
|
117
|
-
|
118
|
-
|
119
|
-
|
125
|
+
expect_any_instance_of(definition).to receive(:task_0)
|
126
|
+
expect_any_instance_of(definition).to receive(:task_1)
|
127
|
+
expect_any_instance_of(definition).to receive(:task_2)
|
120
128
|
|
121
129
|
expect {
|
122
130
|
subject.enqueue!
|
@@ -173,11 +181,11 @@ describe TestFlows do
|
|
173
181
|
end
|
174
182
|
|
175
183
|
describe "job" do
|
176
|
-
|
184
|
+
pending
|
177
185
|
end
|
178
186
|
|
179
187
|
describe "subprocess" do
|
180
|
-
|
188
|
+
pending
|
181
189
|
end
|
182
190
|
end
|
183
191
|
|
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.
|
4
|
+
version: 0.5.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: 2022-02-
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -161,7 +161,6 @@ files:
|
|
161
161
|
- lib/taskinator/logger.rb
|
162
162
|
- lib/taskinator/persistence.rb
|
163
163
|
- lib/taskinator/process.rb
|
164
|
-
- lib/taskinator/process_worker.rb
|
165
164
|
- lib/taskinator/queues.rb
|
166
165
|
- lib/taskinator/queues/active_job.rb
|
167
166
|
- lib/taskinator/queues/delayed_job.rb
|
@@ -204,11 +203,11 @@ files:
|
|
204
203
|
- spec/taskinator/instrumentation_spec.rb
|
205
204
|
- spec/taskinator/persistence_spec.rb
|
206
205
|
- spec/taskinator/process_spec.rb
|
207
|
-
- spec/taskinator/process_worker_spec.rb
|
208
206
|
- spec/taskinator/queues/active_job_spec.rb
|
209
207
|
- spec/taskinator/queues/delayed_job_spec.rb
|
210
208
|
- spec/taskinator/queues/resque_spec.rb
|
211
209
|
- spec/taskinator/queues/sidekiq_spec.rb
|
210
|
+
- spec/taskinator/queues/test_queue_adapter_spec.rb
|
212
211
|
- spec/taskinator/queues_spec.rb
|
213
212
|
- spec/taskinator/task_spec.rb
|
214
213
|
- spec/taskinator/task_worker_spec.rb
|
@@ -271,11 +270,11 @@ test_files:
|
|
271
270
|
- spec/taskinator/instrumentation_spec.rb
|
272
271
|
- spec/taskinator/persistence_spec.rb
|
273
272
|
- spec/taskinator/process_spec.rb
|
274
|
-
- spec/taskinator/process_worker_spec.rb
|
275
273
|
- spec/taskinator/queues/active_job_spec.rb
|
276
274
|
- spec/taskinator/queues/delayed_job_spec.rb
|
277
275
|
- spec/taskinator/queues/resque_spec.rb
|
278
276
|
- spec/taskinator/queues/sidekiq_spec.rb
|
277
|
+
- spec/taskinator/queues/test_queue_adapter_spec.rb
|
279
278
|
- spec/taskinator/queues_spec.rb
|
280
279
|
- spec/taskinator/task_spec.rb
|
281
280
|
- spec/taskinator/task_worker_spec.rb
|