canvas_sync 0.16.5 → 0.17.0.beta5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +49 -137
- data/app/models/canvas_sync/sync_batch.rb +5 -0
- data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +11 -0
- data/lib/canvas_sync.rb +35 -97
- data/lib/canvas_sync/importers/bulk_importer.rb +4 -7
- data/lib/canvas_sync/job.rb +4 -10
- data/lib/canvas_sync/job_batches/batch.rb +403 -0
- data/lib/canvas_sync/job_batches/batch_aware_job.rb +62 -0
- data/lib/canvas_sync/job_batches/callback.rb +152 -0
- data/lib/canvas_sync/job_batches/chain_builder.rb +220 -0
- data/lib/canvas_sync/job_batches/context_hash.rb +147 -0
- data/lib/canvas_sync/job_batches/jobs/base_job.rb +7 -0
- data/lib/canvas_sync/job_batches/jobs/concurrent_batch_job.rb +19 -0
- data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +75 -0
- data/lib/canvas_sync/job_batches/sidekiq.rb +93 -0
- data/lib/canvas_sync/job_batches/status.rb +83 -0
- data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +35 -0
- data/lib/canvas_sync/jobs/report_checker.rb +3 -6
- data/lib/canvas_sync/jobs/report_processor_job.rb +2 -5
- data/lib/canvas_sync/jobs/report_starter.rb +28 -20
- data/lib/canvas_sync/jobs/sync_accounts_job.rb +3 -5
- data/lib/canvas_sync/jobs/sync_admins_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_assignments_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_context_modules_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +4 -34
- data/lib/canvas_sync/jobs/sync_roles_job.rb +2 -5
- data/lib/canvas_sync/jobs/sync_simple_table_job.rb +11 -32
- data/lib/canvas_sync/jobs/sync_submissions_job.rb +2 -4
- data/lib/canvas_sync/jobs/sync_terms_job.rb +25 -8
- data/lib/canvas_sync/processors/assignment_groups_processor.rb +2 -3
- data/lib/canvas_sync/processors/assignments_processor.rb +2 -3
- data/lib/canvas_sync/processors/context_module_items_processor.rb +2 -3
- data/lib/canvas_sync/processors/context_modules_processor.rb +2 -3
- data/lib/canvas_sync/processors/normal_processor.rb +1 -2
- data/lib/canvas_sync/processors/provisioning_report_processor.rb +2 -10
- data/lib/canvas_sync/processors/submissions_processor.rb +2 -3
- data/lib/canvas_sync/version.rb +1 -1
- data/spec/canvas_sync/canvas_sync_spec.rb +136 -153
- data/spec/canvas_sync/jobs/job_spec.rb +9 -17
- data/spec/canvas_sync/jobs/report_checker_spec.rb +1 -3
- data/spec/canvas_sync/jobs/report_processor_job_spec.rb +0 -3
- data/spec/canvas_sync/jobs/report_starter_spec.rb +19 -28
- data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +1 -4
- data/spec/canvas_sync/jobs/sync_assignment_groups_job_spec.rb +2 -1
- data/spec/canvas_sync/jobs/sync_assignments_job_spec.rb +3 -2
- data/spec/canvas_sync/jobs/sync_context_module_items_job_spec.rb +3 -2
- data/spec/canvas_sync/jobs/sync_context_modules_job_spec.rb +3 -2
- data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +3 -35
- data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +1 -4
- data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +5 -12
- data/spec/canvas_sync/jobs/sync_submissions_job_spec.rb +2 -1
- data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +1 -4
- data/spec/dummy/config/environments/test.rb +2 -0
- data/spec/dummy/db/schema.rb +9 -1
- data/spec/job_batching/batch_aware_job_spec.rb +100 -0
- data/spec/job_batching/batch_spec.rb +372 -0
- data/spec/job_batching/callback_spec.rb +38 -0
- data/spec/job_batching/flow_spec.rb +88 -0
- data/spec/job_batching/integration/integration.rb +57 -0
- data/spec/job_batching/integration/nested.rb +88 -0
- data/spec/job_batching/integration/simple.rb +47 -0
- data/spec/job_batching/integration/workflow.rb +134 -0
- data/spec/job_batching/integration_helper.rb +48 -0
- data/spec/job_batching/sidekiq_spec.rb +124 -0
- data/spec/job_batching/status_spec.rb +92 -0
- data/spec/job_batching/support/base_job.rb +14 -0
- data/spec/job_batching/support/sample_callback.rb +2 -0
- data/spec/spec_helper.rb +17 -0
- metadata +85 -8
- data/lib/canvas_sync/job_chain.rb +0 -102
- data/lib/canvas_sync/jobs/fork_gather.rb +0 -74
- data/spec/canvas_sync/jobs/fork_gather_spec.rb +0 -73
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe CanvasSync::Jobs::ForkGather do
|
4
|
-
describe '#perform' do
|
5
|
-
let!(:job_log) { CanvasSync::JobLog.create!(job_id: 'BLAH', fork_count: 3) }
|
6
|
-
let(:job_chain) { {jobs: [], fork_state: { forking_path: ['BLAH'], pre_fork_globals: [{}] }} }
|
7
|
-
|
8
|
-
it 'decrements fork_count' do
|
9
|
-
CanvasSync::Jobs::ForkGather.perform_now(job_chain, {})
|
10
|
-
expect(job_log.reload.fork_count).to eq 2
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'does not continue chain if fork_count > 0' do
|
14
|
-
expect(CanvasSync).not_to receive(:invoke_next)
|
15
|
-
CanvasSync::Jobs::ForkGather.perform_now(job_chain, {})
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'continues the chain if fork_count <= 0' do
|
19
|
-
job_log.update!(fork_count: 1)
|
20
|
-
expect(CanvasSync).to receive(:invoke_next)
|
21
|
-
CanvasSync::Jobs::ForkGather.perform_now(job_chain, {})
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'continues if no forking_path is specified' do
|
25
|
-
job_chain[:fork_state].delete(:forking_path)
|
26
|
-
expect(CanvasSync).to receive(:invoke_next)
|
27
|
-
CanvasSync::Jobs::ForkGather.perform_now(job_chain, {})
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'pops the most-recent forking_path enrty' do
|
31
|
-
job_log.update!(fork_count: 1)
|
32
|
-
expect(CanvasSync).to receive(:invoke_next) do |*args|
|
33
|
-
expect(args[0][:fork_state][:forking_path]).to eq []
|
34
|
-
end
|
35
|
-
CanvasSync::Jobs::ForkGather.perform_now(job_chain, {})
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe 'handle_branch_error' do
|
40
|
-
let(:error) { StandardError.new }
|
41
|
-
|
42
|
-
let(:job_chain) {
|
43
|
-
{
|
44
|
-
jobs: [
|
45
|
-
{ job: 'CanvasSync::Jobs::ReportChecker' },
|
46
|
-
{ job: 'CanvasSync::Jobs::ReportChecker' },
|
47
|
-
{ job: 'CanvasSync::Jobs::ForkGather' },
|
48
|
-
{ job: 'CanvasSync::Jobs::ReportChecker' },
|
49
|
-
],
|
50
|
-
fork_state: {
|
51
|
-
forking_path: ['BLAH'],
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
it 'skips to and performs the next ForkGatherJob' do
|
57
|
-
expect(CanvasSync).to receive(:invoke_next) do |*args|
|
58
|
-
expect(args[0][:jobs][0][:job]).to eq 'CanvasSync::Jobs::ForkGather'
|
59
|
-
end
|
60
|
-
expect(CanvasSync::Jobs::ForkGather.handle_branch_error(error, job_chain: job_chain)).to be true
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'does nothing if no ForkGather is in the chain' do
|
64
|
-
job_chain[:jobs].delete_at(2)
|
65
|
-
expect(CanvasSync::Jobs::ForkGather.handle_branch_error(error, job_chain: job_chain)).to be nil
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'does nothing if no forking_path is present' do
|
69
|
-
job_chain[:fork_state][:forking_path] = []
|
70
|
-
expect(CanvasSync::Jobs::ForkGather.handle_branch_error(error, job_chain: job_chain)).to be nil
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|