background_queue 0.3.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|