asynchronic 2.0.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +7 -10
  3. data/README.md +1 -2
  4. data/asynchronic.gemspec +3 -2
  5. data/lib/asynchronic.rb +13 -3
  6. data/lib/asynchronic/data_store/in_memory.rb +17 -15
  7. data/lib/asynchronic/data_store/key.rb +3 -3
  8. data/lib/asynchronic/data_store/lazy_value.rb +5 -3
  9. data/lib/asynchronic/data_store/redis.rb +22 -14
  10. data/lib/asynchronic/data_store/scoped_store.rb +18 -19
  11. data/lib/asynchronic/environment.rb +6 -6
  12. data/lib/asynchronic/error.rb +2 -3
  13. data/lib/asynchronic/garbage_collector.rb +2 -0
  14. data/lib/asynchronic/job.rb +12 -12
  15. data/lib/asynchronic/notifier/broadcaster.rb +34 -0
  16. data/lib/asynchronic/notifier/in_memory.rb +33 -0
  17. data/lib/asynchronic/process.rb +52 -38
  18. data/lib/asynchronic/queue_engine/in_memory.rb +17 -11
  19. data/lib/asynchronic/queue_engine/ost.rb +15 -12
  20. data/lib/asynchronic/queue_engine/synchronic.rb +19 -7
  21. data/lib/asynchronic/version.rb +1 -1
  22. data/lib/asynchronic/worker.rb +7 -10
  23. data/spec/data_store/data_store_examples.rb +17 -9
  24. data/spec/data_store/in_memory_spec.rb +0 -2
  25. data/spec/data_store/key_spec.rb +1 -1
  26. data/spec/data_store/lazy_value_examples.rb +7 -6
  27. data/spec/data_store/redis_spec.rb +4 -10
  28. data/spec/expectations.rb +2 -2
  29. data/spec/facade_spec.rb +5 -5
  30. data/spec/jobs.rb +12 -12
  31. data/spec/minitest_helper.rb +6 -12
  32. data/spec/process/life_cycle_examples.rb +111 -64
  33. data/spec/process/life_cycle_in_memory_spec.rb +1 -1
  34. data/spec/process/life_cycle_redis_spec.rb +1 -1
  35. data/spec/queue_engine/in_memory_spec.rb +1 -3
  36. data/spec/queue_engine/ost_spec.rb +1 -7
  37. data/spec/queue_engine/queue_engine_examples.rb +17 -9
  38. data/spec/queue_engine/synchronic_spec.rb +1 -1
  39. data/spec/worker/in_memory_spec.rb +2 -2
  40. data/spec/worker/redis_spec.rb +1 -6
  41. data/spec/worker/worker_examples.rb +7 -5
  42. metadata +38 -17
@@ -1,10 +1,10 @@
1
1
  require 'minitest_helper'
2
- require_relative './life_cycle_examples.rb'
3
2
 
4
3
  describe Asynchronic::Process, 'Life cycle - InMemory' do
5
4
 
6
5
  let(:queue_engine) { Asynchronic::QueueEngine::InMemory.new }
7
6
  let(:data_store) { Asynchronic::DataStore::InMemory.new }
7
+ let(:notifier) { Asynchronic::Notifier::InMemory.new }
8
8
 
9
9
  include LifeCycleExamples
10
10
 
@@ -1,10 +1,10 @@
1
1
  require 'minitest_helper'
2
- require_relative './life_cycle_examples.rb'
3
2
 
4
3
  describe Asynchronic::Process, 'Life cycle - Redis' do
5
4
 
6
5
  let(:queue_engine) { Asynchronic::QueueEngine::Ost.new }
7
6
  let(:data_store) { Asynchronic::DataStore::Redis.new :asynchronic_test }
7
+ let(:notifier) { Asynchronic::Notifier::Broadcaster.new }
8
8
 
9
9
  include LifeCycleExamples
10
10
 
@@ -1,11 +1,9 @@
1
1
  require 'minitest_helper'
2
- require_relative './queue_engine_examples'
3
2
 
4
3
  describe Asynchronic::QueueEngine::InMemory do
5
4
 
6
5
  let(:engine) { Asynchronic::QueueEngine::InMemory.new }
7
- let(:listener) { Asynchronic::QueueEngine::InMemory::Listener.new }
8
6
 
9
7
  include QueueEngineExamples
10
-
8
+
11
9
  end
@@ -1,19 +1,13 @@
1
1
  require 'minitest_helper'
2
- require_relative './queue_engine_examples'
3
2
 
4
3
  describe Asynchronic::QueueEngine::Ost do
5
4
 
6
5
  let(:engine) { Asynchronic::QueueEngine::Ost.new }
7
- let(:listener) { Asynchronic::QueueEngine::Ost::Listener.new }
8
6
 
9
- before do
10
- engine.clear
11
- end
12
-
13
7
  include QueueEngineExamples
14
8
 
15
9
  it 'Engine and queues use same redis connection' do
16
10
  engine.redis.must_equal queue.redis
17
11
  end
18
-
12
+
19
13
  end
@@ -1,26 +1,34 @@
1
1
  module QueueEngineExamples
2
-
2
+
3
+ extend Minitest::Spec::DSL
4
+
3
5
  let(:queue) { engine[:test_queue] }
4
6
 
7
+ let(:listener) { engine.listener }
8
+
9
+ after do
10
+ engine.clear
11
+ end
12
+
5
13
  it 'Engine' do
6
- engine.queues.must_be_empty
7
-
14
+ engine.queue_names.must_be_empty
15
+
8
16
  queue = engine[:test_engine]
9
17
  queue.must_be_instance_of engine.class.const_get(:Queue)
10
- engine.queues.must_equal [:test_engine]
11
-
18
+ engine.queue_names.must_equal [:test_engine]
19
+
12
20
  engine[:test_engine].must_equal queue
13
-
21
+
14
22
  engine.clear
15
- engine.queues.must_be_empty
23
+ engine.queue_names.must_be_empty
16
24
  end
17
25
 
18
26
  it 'Queue (push/pop)' do
19
27
  queue.must_be_empty
20
-
28
+
21
29
  queue.push 'msg_1'
22
30
  queue.push 'msg_2'
23
-
31
+
24
32
  queue.size.must_equal 2
25
33
  queue.to_a.must_equal %w(msg_1 msg_2)
26
34
 
@@ -22,7 +22,7 @@ describe Asynchronic::QueueEngine::Synchronic do
22
22
  Asynchronic.queue_engine.stub BasicJob do |process|
23
23
  process.params[:input] + 19
24
24
  end
25
-
25
+
26
26
  pid = BasicJob.enqueue input: 1
27
27
  process = Asynchronic[pid]
28
28
  process.result.must_equal 20
@@ -1,11 +1,11 @@
1
1
  require 'minitest_helper'
2
- require_relative './worker_examples'
3
2
 
4
3
  describe Asynchronic::Worker, 'InMemory' do
5
4
 
6
5
  let(:queue_engine) { Asynchronic::QueueEngine::InMemory.new }
7
6
  let(:data_store) { Asynchronic::DataStore::InMemory.new }
7
+ let(:notifier) { Asynchronic::Notifier::InMemory.new }
8
8
 
9
9
  include WorkerExamples
10
-
10
+
11
11
  end
@@ -1,15 +1,10 @@
1
1
  require 'minitest_helper'
2
- require_relative './worker_examples'
3
2
 
4
3
  describe Asynchronic::Worker, 'Redis' do
5
4
 
6
5
  let(:queue_engine) { Asynchronic::QueueEngine::Ost.new }
7
6
  let(:data_store) { Asynchronic::DataStore::Redis.new :asynchronic_test}
8
-
9
- after do
10
- data_store.clear
11
- queue_engine.clear
12
- end
7
+ let(:notifier) { Asynchronic::Notifier::Broadcaster.new }
13
8
 
14
9
  include WorkerExamples
15
10
 
@@ -1,6 +1,8 @@
1
1
  module WorkerExamples
2
2
 
3
- let(:env) { Asynchronic::Environment.new queue_engine, data_store }
3
+ extend Minitest::Spec::DSL
4
+
5
+ let(:env) { Asynchronic::Environment.new queue_engine, data_store, notifier }
4
6
  let(:queue_name) { :test_worker }
5
7
  let(:queue) { env.queue queue_name }
6
8
 
@@ -27,7 +29,7 @@ module WorkerExamples
27
29
 
28
30
  Thread.new do
29
31
  loop { break if queue.empty? }
30
- worker.stop
32
+ worker.stop
31
33
  end
32
34
 
33
35
  worker.start
@@ -45,10 +47,10 @@ module WorkerExamples
45
47
 
46
48
  Asynchronic::Worker.start :test_worker do |worker|
47
49
  loop { break if worker.queue.empty? }
48
- worker.stop
50
+ worker.stop
49
51
  end
50
-
51
- processes.each { |p| p.must_be :completed? }
52
+
53
+ processes.each { |p| p.must_be :completed? }
52
54
  end
53
55
 
54
56
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asynchronic
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-20 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ost
@@ -25,21 +25,27 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: class_config
28
+ name: broadcaster
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.0'
33
+ version: '1.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.0.2
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: '0.0'
43
+ version: '1.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.2
41
47
  - !ruby/object:Gem::Dependency
42
- name: transparent_proxy
48
+ name: class_config
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
@@ -53,47 +59,47 @@ dependencies:
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0.0'
55
61
  - !ruby/object:Gem::Dependency
56
- name: multi_require
62
+ name: transparent_proxy
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '1.0'
67
+ version: '0.0'
62
68
  type: :runtime
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '1.0'
74
+ version: '0.0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: bundler
76
+ name: multi_require
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '1.12'
76
- type: :development
81
+ version: '1.0'
82
+ type: :runtime
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '1.12'
88
+ version: '1.0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: rake
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '11.0'
95
+ version: '12.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '11.0'
102
+ version: '12.0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: minitest
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +134,20 @@ dependencies:
128
134
  - - "~>"
129
135
  - !ruby/object:Gem::Version
130
136
  version: '0.0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: minitest-stub_any_instance
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '1.0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.0'
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: minitest-colorin
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -229,6 +249,8 @@ files:
229
249
  - lib/asynchronic/error.rb
230
250
  - lib/asynchronic/garbage_collector.rb
231
251
  - lib/asynchronic/job.rb
252
+ - lib/asynchronic/notifier/broadcaster.rb
253
+ - lib/asynchronic/notifier/in_memory.rb
232
254
  - lib/asynchronic/process.rb
233
255
  - lib/asynchronic/queue_engine/in_memory.rb
234
256
  - lib/asynchronic/queue_engine/ost.rb
@@ -275,8 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
297
  - !ruby/object:Gem::Version
276
298
  version: '0'
277
299
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.6.8
300
+ rubygems_version: 3.0.8
280
301
  signing_key:
281
302
  specification_version: 4
282
303
  summary: DSL for asynchronic pipeline using queues over Redis