rocketjob 3.5.2 → 4.0.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -1
  3. data/bin/rocketjob +1 -0
  4. data/bin/rocketjob_batch_perf +11 -0
  5. data/lib/rocket_job/batch.rb +32 -0
  6. data/lib/rocket_job/batch/callbacks.rb +40 -0
  7. data/lib/rocket_job/batch/io.rb +154 -0
  8. data/lib/rocket_job/batch/logger.rb +57 -0
  9. data/lib/rocket_job/batch/lower_priority.rb +54 -0
  10. data/lib/rocket_job/batch/model.rb +157 -0
  11. data/lib/rocket_job/batch/performance.rb +99 -0
  12. data/lib/rocket_job/batch/result.rb +8 -0
  13. data/lib/rocket_job/batch/results.rb +9 -0
  14. data/lib/rocket_job/batch/state_machine.rb +102 -0
  15. data/lib/rocket_job/batch/statistics.rb +88 -0
  16. data/lib/rocket_job/batch/tabular.rb +56 -0
  17. data/lib/rocket_job/batch/tabular/input.rb +123 -0
  18. data/lib/rocket_job/batch/tabular/output.rb +59 -0
  19. data/lib/rocket_job/batch/throttle.rb +91 -0
  20. data/lib/rocket_job/batch/throttle_running_slices.rb +53 -0
  21. data/lib/rocket_job/batch/worker.rb +288 -0
  22. data/lib/rocket_job/cli.rb +29 -7
  23. data/lib/rocket_job/config.rb +1 -1
  24. data/lib/rocket_job/extensions/mongoid/clients/options.rb +37 -0
  25. data/lib/rocket_job/extensions/mongoid/contextual/mongo.rb +17 -0
  26. data/lib/rocket_job/extensions/mongoid/factory.rb +4 -4
  27. data/lib/rocket_job/extensions/mongoid_5/clients/options.rb +38 -0
  28. data/lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb +64 -0
  29. data/lib/rocket_job/extensions/mongoid_5/factory.rb +13 -0
  30. data/lib/rocket_job/jobs/on_demand_batch_job.rb +127 -0
  31. data/lib/rocket_job/jobs/performance_job.rb +18 -0
  32. data/lib/rocket_job/jobs/upload_file_job.rb +2 -5
  33. data/lib/rocket_job/plugins/document.rb +2 -8
  34. data/lib/rocket_job/plugins/job/persistence.rb +6 -4
  35. data/lib/rocket_job/plugins/job/throttle.rb +3 -6
  36. data/lib/rocket_job/plugins/job/worker.rb +2 -2
  37. data/lib/rocket_job/server.rb +14 -3
  38. data/lib/rocket_job/sliced/input.rb +336 -0
  39. data/lib/rocket_job/sliced/output.rb +99 -0
  40. data/lib/rocket_job/sliced/slice.rb +166 -0
  41. data/lib/rocket_job/sliced/slices.rb +166 -0
  42. data/lib/rocket_job/sliced/writer/input.rb +60 -0
  43. data/lib/rocket_job/sliced/writer/output.rb +82 -0
  44. data/lib/rocket_job/version.rb +1 -1
  45. data/lib/rocket_job/worker.rb +2 -2
  46. data/lib/rocketjob.rb +28 -0
  47. metadata +51 -62
  48. data/test/config/database.yml +0 -5
  49. data/test/config/mongoid.yml +0 -88
  50. data/test/config_test.rb +0 -10
  51. data/test/dirmon_entry_test.rb +0 -313
  52. data/test/dirmon_job_test.rb +0 -216
  53. data/test/files/text.txt +0 -3
  54. data/test/job_test.rb +0 -71
  55. data/test/jobs/housekeeping_job_test.rb +0 -102
  56. data/test/jobs/on_demand_job_test.rb +0 -59
  57. data/test/jobs/upload_file_job_test.rb +0 -107
  58. data/test/plugins/cron_test.rb +0 -166
  59. data/test/plugins/job/callbacks_test.rb +0 -166
  60. data/test/plugins/job/defaults_test.rb +0 -53
  61. data/test/plugins/job/logger_test.rb +0 -56
  62. data/test/plugins/job/model_test.rb +0 -94
  63. data/test/plugins/job/persistence_test.rb +0 -94
  64. data/test/plugins/job/state_machine_test.rb +0 -116
  65. data/test/plugins/job/throttle_test.rb +0 -111
  66. data/test/plugins/job/worker_test.rb +0 -199
  67. data/test/plugins/processing_window_test.rb +0 -109
  68. data/test/plugins/restart_test.rb +0 -193
  69. data/test/plugins/retry_test.rb +0 -88
  70. data/test/plugins/singleton_test.rb +0 -92
  71. data/test/plugins/state_machine_event_callbacks_test.rb +0 -102
  72. data/test/plugins/state_machine_test.rb +0 -67
  73. data/test/plugins/transaction_test.rb +0 -84
  74. data/test/test_db.sqlite3 +0 -0
  75. data/test/test_helper.rb +0 -17
@@ -1,67 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- module Plugins
4
- # Unit Test for RocketJob::Job
5
- class StateMachineTest < Minitest::Test
6
- class Test
7
- include RocketJob::Plugins::Document
8
- include RocketJob::Plugins::StateMachine
9
-
10
- field :name, type: String
11
- field :state, type: String
12
- validates_presence_of :name, :state
13
-
14
- aasm column: :state, whiny_persistence: true do
15
- state :pending, initial: true
16
- state :enabled
17
-
18
- event :enable do
19
- transitions from: :pending, to: :enabled
20
- end
21
- end
22
- end
23
-
24
- describe RocketJob::Plugins::StateMachine do
25
- before do
26
- @doc = Test.new
27
- end
28
-
29
- after do
30
- @doc.destroy if @doc && !@doc.new_record?
31
- end
32
-
33
- describe '#create!' do
34
- it 'raises an exception when a validation fails on create!' do
35
- assert_raises Mongoid::Errors::Validations do
36
- @doc = Test.create!
37
- end
38
- end
39
- end
40
-
41
- describe '#save!' do
42
- it 'raises an exception when a validation fails on save' do
43
- assert_raises Mongoid::Errors::Validations do
44
- @doc.save!
45
- end
46
- end
47
- end
48
-
49
- describe '#transition!' do
50
- it 'raises an exception when a validation fails on state transition with save' do
51
- assert_raises Mongoid::Errors::Validations do
52
- @doc.enable!
53
- end
54
- assert @doc.pending?
55
- refute @doc.valid?
56
- end
57
- end
58
-
59
- describe '#transition' do
60
- it 'does not raise an exception when a validation fails on state transition without save' do
61
- @doc.enable
62
- assert @doc.enabled?
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,84 +0,0 @@
1
- require_relative '../test_helper'
2
- require 'active_record'
3
-
4
- ActiveRecord::Base.configurations = YAML.safe_load(ERB.new(IO.read('test/config/database.yml')).result)
5
- ActiveRecord::Base.establish_connection(:test)
6
-
7
- ActiveRecord::Schema.define version: 0 do
8
- create_table :users, force: true do |t|
9
- t.string :login
10
- end
11
- end
12
-
13
- class User < ActiveRecord::Base
14
- end
15
-
16
- module Plugins
17
- module Job
18
- class TransactionTest < Minitest::Test
19
- class CommitTransactionJob < RocketJob::Job
20
- # Wrap perform with a transaction, so that it is rolled back on exception.
21
- include RocketJob::Plugins::Transaction
22
-
23
- field :login, type: String
24
-
25
- def perform
26
- User.create!(login: login)
27
- end
28
- end
29
-
30
- class RollbackTransactionJob < RocketJob::Job
31
- # Wrap perform with a transaction, so that it is rolled back on exception.
32
- include RocketJob::Plugins::Transaction
33
-
34
- field :login, type: String
35
-
36
- def perform
37
- User.create!(login: login)
38
- raise 'This must fail and rollback the transaction'
39
- end
40
- end
41
-
42
- describe RocketJob::Plugins::Job::Logger do
43
- before do
44
- User.delete_all
45
- CommitTransactionJob.delete_all
46
- RollbackTransactionJob.delete_all
47
- end
48
-
49
- after do
50
- @job.destroy if @job && !@job.new_record?
51
- end
52
-
53
- describe '#rocket_job_transaction' do
54
- it 'is registered' do
55
- assert(CommitTransactionJob.send(:get_callbacks, :perform).find { |c| c.filter == :rocket_job_transaction })
56
- assert(RollbackTransactionJob.send(:get_callbacks, :perform).find { |c| c.filter == :rocket_job_transaction })
57
- refute(RocketJob::Job.send(:get_callbacks, :perform).find { |c| c.filter == :rocket_job_transaction })
58
- end
59
- end
60
-
61
- describe '#perform' do
62
- it 'commits on success' do
63
- assert_equal 0, User.count
64
- job = CommitTransactionJob.new(login: 'Success')
65
- job.perform_now
66
- assert job.completed?
67
- assert_equal 1, User.count
68
- assert_equal 'Success', User.first.login
69
- end
70
-
71
- it 'rolls back on exception' do
72
- assert_equal 0, User.count
73
- job = RollbackTransactionJob.new(login: 'Bad')
74
- assert_raises RuntimeError do
75
- job.perform_now
76
- end
77
- assert job.failed?
78
- assert_equal 0, User.count
79
- end
80
- end
81
- end
82
- end
83
- end
84
- end
Binary file
@@ -1,17 +0,0 @@
1
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
- ENV['TZ'] = 'America/New_York'
3
-
4
- require 'yaml'
5
- require 'minitest/autorun'
6
- require 'minitest/stub_any_instance'
7
- require 'awesome_print'
8
- require 'rocketjob'
9
-
10
- SemanticLogger.add_appender(file_name: 'test.log', formatter: :color)
11
- SemanticLogger.default_level = :debug
12
-
13
- RocketJob::Config.load!('test', 'test/config/mongoid.yml')
14
- Mongoid.logger = SemanticLogger[Mongoid]
15
- Mongo::Logger.logger = SemanticLogger[Mongo]
16
-
17
- # RocketJob::Job.collection.database.command(dropDatabase: 1)