background_queue 0.3.0 → 0.6.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/TODO +13 -0
- data/VERSION +1 -1
- data/background_queue.gemspec +8 -2
- data/lib/background_queue/client.rb +31 -3
- data/lib/background_queue/client_lib/connection.rb +9 -0
- data/lib/background_queue/client_lib/job_handle.rb +34 -1
- data/lib/background_queue/config.rb +1 -11
- data/lib/background_queue/server_lib/balanced_queue.rb +22 -0
- data/lib/background_queue/server_lib/event_connection.rb +7 -1
- data/lib/background_queue/server_lib/job.rb +46 -7
- data/lib/background_queue/server_lib/priority_queue.rb +7 -0
- data/lib/background_queue/server_lib/queue_registry.rb +20 -5
- data/lib/background_queue/server_lib/task.rb +28 -0
- data/lib/background_queue/server_lib/task_registry.rb +7 -0
- data/lib/background_queue/server_lib/worker_client.rb +5 -2
- data/lib/background_queue/server_lib/worker_thread.rb +1 -1
- data/lib/background_queue/utils.rb +25 -1
- data/lib/background_queue/worker/base.rb +41 -0
- data/lib/background_queue/worker/calling.rb +24 -1
- data/lib/background_queue/worker/config.rb +20 -0
- data/lib/background_queue/worker/environment.rb +25 -1
- data/lib/background_queue/worker/logger.rb +114 -0
- data/lib/background_queue/worker/progress.rb +152 -0
- data/lib/background_queue/worker/worker_loader.rb +1 -1
- data/lib/background_queue_worker.rb +2 -0
- data/spec/background_queue/client_lib/connection_spec.rb +7 -1
- data/spec/background_queue/client_spec.rb +2 -1
- data/spec/background_queue/config_spec.rb +11 -23
- data/spec/background_queue/server_lib/integration/error_handling_spec.rb +85 -0
- data/spec/background_queue/server_lib/integration/full_test_spec.rb +76 -3
- data/spec/background_queue/server_lib/integration/queue_integration_spec.rb +6 -3
- data/spec/background_queue/server_lib/job_spec.rb +44 -3
- data/spec/background_queue/server_lib/worker_thread_spec.rb +2 -2
- data/spec/background_queue/utils_spec.rb +30 -0
- data/spec/background_queue/worker/calling_spec.rb +3 -1
- data/spec/background_queue/worker/environment_spec.rb +3 -1
- data/spec/background_queue/worker/logger_spec.rb +58 -0
- data/spec/background_queue/worker/progress_spec.rb +82 -0
- data/spec/background_queue/worker/worker_loader_spec.rb +1 -1
- data/spec/resources/summary_worker.rb +18 -0
- data/spec/shared/queue_registry_shared.rb +4 -3
- data/spec/support/simple_task.rb +24 -0
- metadata +33 -27
@@ -88,9 +88,9 @@ describe "Queue Integration" do
|
|
88
88
|
|
89
89
|
task2.get_job.total_tasks.should eq(2)
|
90
90
|
|
91
|
-
subject.next_item.should be_nil
|
92
|
-
subject.finish_item(task)
|
93
91
|
subject.next_item.id.should eq(:task_id2)
|
92
|
+
subject.finish_item(task)
|
93
|
+
#subject.next_item.id.should eq(:task_id2)
|
94
94
|
|
95
95
|
end
|
96
96
|
end
|
@@ -103,6 +103,7 @@ describe "Queue Integration" do
|
|
103
103
|
subject.add_task(SimpleTask.new(:owner_id, :job_id, :task_id, 3, {:synchronous=>true}))
|
104
104
|
task = subject.next_item
|
105
105
|
task.id.should be(:task_id)
|
106
|
+
subject.finish_item(task)
|
106
107
|
subject.next_item.should be_nil
|
107
108
|
end
|
108
109
|
|
@@ -110,10 +111,12 @@ describe "Queue Integration" do
|
|
110
111
|
subject.add_task(SimpleTask.new(:owner_id, :job_id, :task_id, 3, {:synchronous=>true}))
|
111
112
|
task = subject.next_item
|
112
113
|
task.id.should be(:task_id)
|
114
|
+
task.running = true
|
113
115
|
subject.next_item.should be_nil
|
114
116
|
subject.add_task(SimpleTask.new(:owner_id, :job_id, :task_id, 3, {:synchronous=>true}))
|
115
117
|
subject.next_item.should be_nil
|
116
|
-
|
118
|
+
task.running = false
|
119
|
+
subject.finish_task(task)
|
117
120
|
task = subject.next_item
|
118
121
|
task.id.should be(:task_id)
|
119
122
|
end
|
@@ -9,14 +9,14 @@ describe BackgroundQueue::ServerLib::Job do
|
|
9
9
|
|
10
10
|
it "#add_item uses normal priority queue" do
|
11
11
|
task.should_receive(:set_job).with(subject)
|
12
|
-
task.should_receive(:synchronous?).and_return(false)
|
12
|
+
#task.should_receive(:synchronous?).and_return(false)
|
13
13
|
BackgroundQueue::ServerLib::Job.any_instance.should_receive(:push).with(task).and_return(nil)
|
14
14
|
subject.add_item(task)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "#next_item uses normal priority queue" do
|
18
|
-
BackgroundQueue::ServerLib::Job.any_instance.should_receive(:pop).and_return(
|
19
|
-
subject.next_item.should eq(
|
18
|
+
BackgroundQueue::ServerLib::Job.any_instance.should_receive(:pop).and_return(task)
|
19
|
+
subject.next_item.should eq(task)
|
20
20
|
end
|
21
21
|
|
22
22
|
context "#add_item" do
|
@@ -320,6 +320,47 @@ describe BackgroundQueue::ServerLib::Job do
|
|
320
320
|
end
|
321
321
|
end
|
322
322
|
|
323
|
+
context "#update_summary_meta" do
|
324
|
+
it "will append data" do
|
325
|
+
subject.update_summary_meta({:summary=>"app", :type=>"test", :data=>1})
|
326
|
+
subject.update_summary_meta({:summary=>"app", :type=>"test", :data=>2})
|
327
|
+
subject.summary[:test].should eq([1,2])
|
328
|
+
end
|
329
|
+
|
330
|
+
it "will set data" do
|
331
|
+
subject.update_summary_meta({:summary=>"set", :type=>"test", :key=>'a', :data=>1})
|
332
|
+
subject.update_summary_meta({:summary=>"set", :type=>"test", :key=>'b', :data=>2})
|
333
|
+
subject.summary[:test].should eq({'a'=>1, 'b'=>2})
|
334
|
+
end
|
335
|
+
|
336
|
+
it "will increment data" do
|
337
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test", :data=>1})
|
338
|
+
subject.summary[:test].should eq(1)
|
339
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test", :data=>2})
|
340
|
+
subject.summary[:test].should eq(3)
|
341
|
+
end
|
342
|
+
|
343
|
+
it "will decrement data" do
|
344
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test", :data=>4})
|
345
|
+
subject.summary[:test].should eq(4)
|
346
|
+
subject.update_summary_meta({:summary=>"dec", :type=>"test", :data=>2})
|
347
|
+
subject.summary[:test].should eq(2)
|
348
|
+
end
|
349
|
+
|
350
|
+
it "will reset data" do
|
351
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test", :data=>4})
|
352
|
+
subject.summary[:test].should eq(4)
|
353
|
+
subject.update_summary_meta({:summary=>"res", :type=>"test"})
|
354
|
+
subject.summary[:test].should be_nil
|
355
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test", :data=>4})
|
356
|
+
subject.update_summary_meta({:summary=>"inc", :type=>"test2", :data=>4})
|
357
|
+
subject.summary[:test].should eq(4)
|
358
|
+
subject.summary[:test2].should eq(4)
|
359
|
+
subject.update_summary_meta({:summary=>"res", :type=>"all"})
|
360
|
+
subject.summary.should eq({})
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
323
364
|
context "integration" do
|
324
365
|
it "will track progress" do
|
325
366
|
task0 = BackgroundQueue::ServerLib::Task.new(:owner_id, :job_id, :id0, 1, :worker, {}, {:exclude=>true})
|
@@ -64,7 +64,7 @@ describe BackgroundQueue::ServerLib::WorkerThread do
|
|
64
64
|
server.stub('running?'=>true)
|
65
65
|
worker = double("worker")
|
66
66
|
task = DefaultTask.new
|
67
|
-
server.
|
67
|
+
server.task_queue.should_receive(:add_task_to_error_list).with(task)
|
68
68
|
worker_client = double("worker_client")
|
69
69
|
subject.should_receive(:build_client).and_return(worker_client)
|
70
70
|
worker_client.should_receive(:send_request).with(worker, task, :secret).and_return(:fatal_error)
|
@@ -77,7 +77,7 @@ describe BackgroundQueue::ServerLib::WorkerThread do
|
|
77
77
|
server.stub('running?'=>true)
|
78
78
|
worker = double("worker")
|
79
79
|
task = DefaultTask.new
|
80
|
-
server.
|
80
|
+
server.task_queue.should_receive(:add_task_to_error_list).with(task)
|
81
81
|
worker_client = double("worker_client")
|
82
82
|
subject.should_receive(:build_client).and_return(worker_client)
|
83
83
|
worker_client.should_receive(:send_request).with(worker, task, :secret).and_return(:worker_error)
|
@@ -23,5 +23,35 @@ describe "Utils" do
|
|
23
23
|
any_hash["a"].should eq(:b)
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
|
28
|
+
context "#current_environment" do
|
29
|
+
it "gets_the_current environment from env" do
|
30
|
+
ENV.should_receive(:has_key?).with("RAILS_ENV") { true }
|
31
|
+
ENV.should_receive(:[]).with("RAILS_ENV") { :the_env }
|
32
|
+
BackgroundQueue::Utils.current_environment.should eq(:the_env)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "gets_the_current environment from Rails" do
|
36
|
+
ENV.should_receive(:has_key?).with("RAILS_ENV") { false }
|
37
|
+
Rails.should_receive(:env) { :the_env }
|
38
|
+
BackgroundQueue::Utils.current_environment.should eq(:the_env)
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with development environment" do
|
42
|
+
before do
|
43
|
+
BackgroundQueue::Config.stub(:current_environment) { 'development' }
|
44
|
+
end
|
45
|
+
|
46
|
+
it "extracts the correct environment entry from the hash" do
|
47
|
+
BackgroundQueue::Config.__prv__extract_enviroment_entry({:development=>:test}, :path_that_exists).should eq(:test)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "errors if the YAML does not define environment entry" do
|
51
|
+
File.stub(:expand_path) { :expanded_path }
|
52
|
+
expect { BackgroundQueue::Config.__prv__extract_enviroment_entry({:test=>:test}, :path_that_exists).should eq(:test)}.to raise_error(BackgroundQueue::LoadError, "Error loading YAML for background_queue configuration file at 'expanded_path': missing enviroment root entry: development")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
26
56
|
|
27
57
|
end
|
@@ -87,9 +87,11 @@ describe "Calling" do
|
|
87
87
|
|
88
88
|
context "#call_worker" do
|
89
89
|
it "will call worker.run within a render block" do
|
90
|
-
env = double("env")
|
90
|
+
env = double("env", :step=>nil)
|
91
91
|
worker = double("worker")
|
92
92
|
worker.should_receive(:set_environment).with(nil)
|
93
|
+
subject.should_receive(:set_process_name).with(env)
|
94
|
+
subject.should_receive(:revert_process_name)
|
93
95
|
env.should_receive(:set_output).with(:output)
|
94
96
|
worker.should_receive(:run)
|
95
97
|
subject.should_receive(:render) { |opts|
|
@@ -17,7 +17,8 @@ describe BackgroundQueue::Worker::Environment do
|
|
17
17
|
{
|
18
18
|
:auth=>"ABCD",
|
19
19
|
:task=>{:params=>{:a=>"b"}, :owner_id=>'oid', :job_id=>'jid', :id=>'tid', :priority=>1}.to_json,
|
20
|
-
:server_port=>213
|
20
|
+
:server_port=>213,
|
21
|
+
:step=>"start"
|
21
22
|
}
|
22
23
|
}
|
23
24
|
|
@@ -42,6 +43,7 @@ describe BackgroundQueue::Worker::Environment do
|
|
42
43
|
subject.job_id.should eq("jid")
|
43
44
|
subject.task_id.should eq("tid")
|
44
45
|
subject.priority.should eq(1)
|
46
|
+
subject.step.should eq("start")
|
45
47
|
end
|
46
48
|
|
47
49
|
it "will error if the task definition is not valid json" do
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'background_queue_worker'
|
3
|
+
|
4
|
+
|
5
|
+
module ActiveRecord
|
6
|
+
class Base
|
7
|
+
@@logger = :ar_logger
|
8
|
+
|
9
|
+
def self.logger
|
10
|
+
@@logger
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.logger=(other)
|
14
|
+
@@logger = other
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe BackgroundQueue::Worker::Logger do
|
20
|
+
|
21
|
+
let(:faux_logger) {
|
22
|
+
double("logger")
|
23
|
+
}
|
24
|
+
|
25
|
+
context "#build_logger" do
|
26
|
+
it "will init a logger object" do
|
27
|
+
logger = BackgroundQueue::Worker::Logger.build_logger("/tmp/bgq_test1.log", "task_key", Logger::DEBUG)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "#init_logger" do
|
32
|
+
it "will reset the system loggers" do
|
33
|
+
BackgroundQueue::Utils.should_receive(:current_root).and_return("ROOT")
|
34
|
+
BackgroundQueue::Worker::Logger.should_receive(:build_logger).with("ROOT/log/workers/worker_name-owner_key-job_key.log", "task_key", :level).and_return(faux_logger)
|
35
|
+
|
36
|
+
faux_logger.should_receive(:set_previous_state).with({:ar_base=>:ar_logger, :rails_default_logger=>:abc})
|
37
|
+
|
38
|
+
RAILS_DEFAULT_LOGGER = :abc
|
39
|
+
|
40
|
+
logger = BackgroundQueue::Worker::Logger.init_logger("worker_name", "owner_key", "job_key", "task_key", :level)
|
41
|
+
|
42
|
+
RAILS_DEFAULT_LOGGER.should be(logger)
|
43
|
+
ActiveRecord::Base.logger.should be(logger)
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "#revert_to_previous_state" do
|
49
|
+
it "will set the state back" do
|
50
|
+
logger = BackgroundQueue::Worker::Logger.new("/tmp/bgq_test1.log", "task_key")
|
51
|
+
logger.set_previous_state({:ar_base=>:ar_logger1, :rails_default_logger=>:abc1})
|
52
|
+
logger.revert_to_previous_state
|
53
|
+
RAILS_DEFAULT_LOGGER.should be(:abc1)
|
54
|
+
ActiveRecord::Base.logger.should be(:ar_logger1)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'background_queue_worker'
|
3
|
+
|
4
|
+
|
5
|
+
describe BackgroundQueue::Worker::Progress do
|
6
|
+
|
7
|
+
let(:callback_object) {
|
8
|
+
double("callback_object")
|
9
|
+
}
|
10
|
+
|
11
|
+
subject { BackgroundQueue::Worker::Progress.new(callback_object) }
|
12
|
+
|
13
|
+
context "#start" do
|
14
|
+
it "will start at zero with the caption" do
|
15
|
+
callback_object.should_receive(:set_progress).with("test", 0.0, subject)
|
16
|
+
subject.start("test")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "will start at zero with no caption" do
|
20
|
+
callback_object.should_receive(:set_progress).with("", 0.0, subject)
|
21
|
+
subject.start("")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "#set_main_caption" do
|
26
|
+
it "will update the main caption" do
|
27
|
+
callback_object.should_receive(:set_progress).with("test", 0.0, subject)
|
28
|
+
callback_object.should_receive(:set_progress).with("test2", 0.0, subject)
|
29
|
+
subject.start("test")
|
30
|
+
subject.set_main_caption("test2")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "#finish" do
|
35
|
+
it "will set the progress to 100% and reset the caption" do
|
36
|
+
callback_object.should_receive(:set_progress).with("test", 100.0, subject)
|
37
|
+
subject.finish("test")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "#register_task" do
|
42
|
+
it "will store the weight against the key" do
|
43
|
+
subject.register_task(:key, 10)
|
44
|
+
subject.registered_tasks[:key].should eq(10)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "#get_task_size" do
|
49
|
+
it "will get the size of the task" do
|
50
|
+
subject.register_task(:key, 10)
|
51
|
+
subject.register_task(:key2, 10)
|
52
|
+
subject.get_task_size(:key).should eq(50)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
context "#start_task" do
|
58
|
+
it "will finish any existing task" do
|
59
|
+
callback_object.stub(:set_progress)
|
60
|
+
subject.register_task(:key, 10)
|
61
|
+
subject.register_task(:key2, 10)
|
62
|
+
subject.start("main")
|
63
|
+
subject.start_task(:key,"sub")
|
64
|
+
subject.get_percent.should eq(0)
|
65
|
+
subject.get_caption.should eq("main: sub")
|
66
|
+
subject.start_task(:key2, "sub2")
|
67
|
+
subject.get_percent.should eq(50)
|
68
|
+
subject.get_caption.should eq("main: sub2")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "#set_task_steps" do
|
73
|
+
it "will calculate the step size" do
|
74
|
+
callback_object.stub(:set_progress)
|
75
|
+
subject.register_task(:key, 10)
|
76
|
+
subject.start_task(:key,"sub")
|
77
|
+
subject.set_task_steps(50)
|
78
|
+
subject.inc
|
79
|
+
subject.get_percent.should eq(2)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -72,7 +72,7 @@ describe BackgroundQueue::Worker::WorkerLoader do
|
|
72
72
|
it "will reload the worker if the filestamp has changed" do
|
73
73
|
File.should_receive(:mtime).with(:path).and_return(Time.at(11))
|
74
74
|
subject.should_receive(:load_file).with(:path).and_return(true)
|
75
|
-
subject.should_receive(:load_class).with(:worker_name).and_return(:new_worker)
|
75
|
+
subject.should_receive(:load_class).with(:worker_name, :path).and_return(:new_worker)
|
76
76
|
|
77
77
|
subject.reload_if_updated(worker_entry)
|
78
78
|
worker_entry.worker.should eq(:new_worker)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class SummaryWorker < BackgroundQueue::Worker::Base
|
2
|
+
|
3
|
+
def run
|
4
|
+
begin
|
5
|
+
if params[:mode] == "summary"
|
6
|
+
raise "Invalid Summary (#{summary.inspect})" if summary[:test] != [1, 2] && summary[:test] != [2, 1]
|
7
|
+
else
|
8
|
+
raise "Missing TestId" if params[:test_id].nil?
|
9
|
+
add_progress_meta(:meta, {:test_meta=>"something"})
|
10
|
+
append_summary(:test, params[:test_id])
|
11
|
+
end
|
12
|
+
set_progress("Done", 100)
|
13
|
+
rescue Exception=>e
|
14
|
+
puts e.message
|
15
|
+
puts e.backtrace.join("\n")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -99,13 +99,14 @@ shared_examples "a queue registry" do
|
|
99
99
|
bg.add_item(task2)
|
100
100
|
bg
|
101
101
|
}
|
102
|
+
|
102
103
|
|
103
104
|
it "will add to stalled items if no items left for queue" do
|
104
|
-
subject.should_receive(:remove_item_from_queue).with(any_args) { [true, 2,
|
105
|
+
subject.should_receive(:remove_item_from_queue).with(any_args) { [true, 2, task1]}
|
105
106
|
queue_class.any_instance.stub(:empty?) { true }
|
106
107
|
subject.should_receive(:stall_queue)
|
107
108
|
subject.__prv__get_queue_for_priority(2, false)
|
108
|
-
subject.next_item.should eq(
|
109
|
+
subject.next_item.should eq(task1)
|
109
110
|
subject.__prv__get_queues.should have(1).items
|
110
111
|
subject.__prv__get_queues.first.priority.should eq(3)
|
111
112
|
#make sure the owner was removed
|
@@ -115,7 +116,7 @@ shared_examples "a queue registry" do
|
|
115
116
|
|
116
117
|
|
117
118
|
it "will lower priority when items left are lower priority" do
|
118
|
-
subject.should_receive(:remove_item_from_queue).with(any_args) { [true, 2,
|
119
|
+
subject.should_receive(:remove_item_from_queue).with(any_args) { [true, 2, task1]}
|
119
120
|
queue_class.any_instance.stub(:empty?) { false }
|
120
121
|
|
121
122
|
subject.__prv__get_queue(:owner_id2, true).last.set_priority(3)
|
data/spec/support/simple_task.rb
CHANGED
@@ -55,4 +55,28 @@ class SimpleTask
|
|
55
55
|
def initial_progress_caption
|
56
56
|
@options[:initial_progress_caption]
|
57
57
|
end
|
58
|
+
|
59
|
+
def send_summary?
|
60
|
+
@options[:send_summary]
|
61
|
+
end
|
62
|
+
|
63
|
+
def step
|
64
|
+
@options[:step]
|
65
|
+
end
|
66
|
+
|
67
|
+
def set_error_status(e_status)
|
68
|
+
@error_status = e_status
|
69
|
+
end
|
70
|
+
|
71
|
+
def get_error_status
|
72
|
+
@error_status
|
73
|
+
end
|
74
|
+
|
75
|
+
def waiting_to_retry?
|
76
|
+
@error_status == :waiting_to_retry
|
77
|
+
end
|
78
|
+
|
79
|
+
def replaced_while_waiting_to_retry?
|
80
|
+
@error_status == :replaced_while_waiting_to_retry
|
81
|
+
end
|
58
82
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: background_queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &4758140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *4758140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rufus-scheduler
|
27
|
-
requirement: &
|
27
|
+
requirement: &4769420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *4769420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: eventmachine
|
38
|
-
requirement: &
|
38
|
+
requirement: &5013180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.12.10
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *5013180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: ipaddress
|
49
|
-
requirement: &
|
49
|
+
requirement: &5020560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.8.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *5020560
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: ipaddress
|
60
|
-
requirement: &
|
60
|
+
requirement: &5033300 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.8.0
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *5033300
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: algorithms
|
71
|
-
requirement: &
|
71
|
+
requirement: &5030560 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.5.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *5030560
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &5028420 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 2.9.0
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *5028420
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: jeweler
|
93
|
-
requirement: &
|
93
|
+
requirement: &5027080 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 1.8.3
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *5027080
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: yard
|
104
|
-
requirement: &
|
104
|
+
requirement: &5042180 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0.7'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *5042180
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rdoc
|
115
|
-
requirement: &
|
115
|
+
requirement: &5041260 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '3.12'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *5041260
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: bundler
|
126
|
-
requirement: &
|
126
|
+
requirement: &5038300 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 1.0.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *5038300
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: redcarpet
|
137
|
-
requirement: &
|
137
|
+
requirement: &5036560 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
version: 2.1.1
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *5036560
|
146
146
|
description: Organise background tasks so they will not overload the machine(s) running
|
147
147
|
the tasks, while still giving a fair, balanced allocation of running time to members
|
148
148
|
in the queue
|
@@ -199,6 +199,8 @@ files:
|
|
199
199
|
- lib/background_queue/worker/calling.rb
|
200
200
|
- lib/background_queue/worker/config.rb
|
201
201
|
- lib/background_queue/worker/environment.rb
|
202
|
+
- lib/background_queue/worker/logger.rb
|
203
|
+
- lib/background_queue/worker/progress.rb
|
202
204
|
- lib/background_queue/worker/worker_loader.rb
|
203
205
|
- lib/background_queue_server.rb
|
204
206
|
- lib/background_queue_worker.rb
|
@@ -213,6 +215,7 @@ files:
|
|
213
215
|
- spec/background_queue/server_lib/error_task_list_spec.rb
|
214
216
|
- spec/background_queue/server_lib/event_connection_spec.rb
|
215
217
|
- spec/background_queue/server_lib/event_server_spec.rb
|
218
|
+
- spec/background_queue/server_lib/integration/error_handling_spec.rb
|
216
219
|
- spec/background_queue/server_lib/integration/full_test_spec.rb
|
217
220
|
- spec/background_queue/server_lib/integration/queue_integration_spec.rb
|
218
221
|
- spec/background_queue/server_lib/integration/serialize_spec.rb
|
@@ -232,12 +235,15 @@ files:
|
|
232
235
|
- spec/background_queue/worker/base_spec.rb
|
233
236
|
- spec/background_queue/worker/calling_spec.rb
|
234
237
|
- spec/background_queue/worker/environment_spec.rb
|
238
|
+
- spec/background_queue/worker/logger_spec.rb
|
239
|
+
- spec/background_queue/worker/progress_spec.rb
|
235
240
|
- spec/background_queue/worker/worker_loader_spec.rb
|
236
241
|
- spec/resources/config-client.yml
|
237
242
|
- spec/resources/config-serialize.yml
|
238
243
|
- spec/resources/config.yml
|
239
244
|
- spec/resources/example_worker.rb
|
240
245
|
- spec/resources/example_worker_with_error.rb
|
246
|
+
- spec/resources/summary_worker.rb
|
241
247
|
- spec/resources/test_worker.rb
|
242
248
|
- spec/shared/queue_registry_shared.rb
|
243
249
|
- spec/spec_helper.rb
|
@@ -261,7 +267,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
261
267
|
version: '0'
|
262
268
|
segments:
|
263
269
|
- 0
|
264
|
-
hash:
|
270
|
+
hash: 1524954307267393348
|
265
271
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
272
|
none: false
|
267
273
|
requirements:
|