canvas_sync 0.16.1 → 0.17.0.beta2
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.
- checksums.yaml +4 -4
- data/README.md +49 -137
- data/app/models/canvas_sync/sync_batch.rb +5 -0
- data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +12 -31
- data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +4 -13
- data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +3 -11
- data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +11 -0
- data/lib/canvas_sync.rb +35 -118
- data/lib/canvas_sync/concerns/api_syncable.rb +27 -0
- data/lib/canvas_sync/concerns/legacy_columns.rb +5 -4
- data/lib/canvas_sync/job.rb +5 -5
- data/lib/canvas_sync/job_batches/batch.rb +399 -0
- data/lib/canvas_sync/job_batches/batch_aware_job.rb +62 -0
- data/lib/canvas_sync/job_batches/callback.rb +153 -0
- data/lib/canvas_sync/job_batches/chain_builder.rb +203 -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 +18 -0
- data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +73 -0
- data/lib/canvas_sync/job_batches/sidekiq.rb +91 -0
- data/lib/canvas_sync/job_batches/status.rb +63 -0
- data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +34 -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 +27 -19
- 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 +5 -32
- 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 +22 -7
- data/lib/canvas_sync/misc_helper.rb +15 -0
- data/lib/canvas_sync/version.rb +1 -1
- data/spec/canvas_sync/canvas_sync_spec.rb +126 -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/app/models/account.rb +3 -0
- data/spec/dummy/app/models/pseudonym.rb +14 -0
- data/spec/dummy/app/models/submission.rb +1 -0
- data/spec/dummy/app/models/user.rb +1 -0
- data/spec/dummy/config/environments/test.rb +2 -0
- data/spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb +24 -0
- data/spec/dummy/db/schema.rb +24 -4
- data/spec/job_batching/batch_aware_job_spec.rb +100 -0
- data/spec/job_batching/batch_spec.rb +363 -0
- data/spec/job_batching/callback_spec.rb +38 -0
- data/spec/job_batching/flow_spec.rb +91 -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 +94 -22
- data/lib/canvas_sync/job_chain.rb +0 -57
- data/lib/canvas_sync/jobs/fork_gather.rb +0 -59
- data/spec/canvas_sync/jobs/fork_gather_spec.rb +0 -73
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -1248
- data/spec/dummy/log/test.log +0 -43258
- data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -3
- data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -4
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sidekiq/batch'
|
3
|
+
require 'sidekiq/testing'
|
4
|
+
|
5
|
+
Sidekiq::Testing.server_middleware do |chain|
|
6
|
+
chain.add CanvasSync::JobBatches::Batch::Middleware::ServerMiddleware
|
7
|
+
end
|
8
|
+
|
9
|
+
Sidekiq.redis { |r| r.flushdb }
|
10
|
+
|
11
|
+
def redis_keys
|
12
|
+
Sidekiq.redis { |r| r.keys('BID-*') }
|
13
|
+
end
|
14
|
+
|
15
|
+
def dump_redis_keys
|
16
|
+
puts redis_keys.inspect
|
17
|
+
end
|
18
|
+
|
19
|
+
def process_tests
|
20
|
+
out_buf = StringIO.new
|
21
|
+
Sidekiq.logger = Logger.new out_buf
|
22
|
+
|
23
|
+
# Sidekiq.logger.level = :info
|
24
|
+
|
25
|
+
Sidekiq::Worker.drain_all
|
26
|
+
|
27
|
+
output = out_buf.string
|
28
|
+
keys = redis_keys
|
29
|
+
puts out_buf.string
|
30
|
+
|
31
|
+
[output, keys]
|
32
|
+
end
|
33
|
+
|
34
|
+
def overall_tests output, keys
|
35
|
+
describe "sidekiq batch" do
|
36
|
+
it "runs overall complete callback" do
|
37
|
+
expect(output).to include "Overall Complete"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "runs overall success callback" do
|
41
|
+
expect(output).to include "Overall Success"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "cleans redis keys" do
|
45
|
+
expect(keys).to eq([])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CanvasSync::JobBatches::Sidekiq do
|
4
|
+
describe CanvasSync::JobBatches::Sidekiq::ServerMiddleware do
|
5
|
+
context 'when without batch' do
|
6
|
+
it 'just yields' do
|
7
|
+
yielded = false
|
8
|
+
expect(CanvasSync::JobBatches::Batch).not_to receive(:process_successful_job)
|
9
|
+
expect(CanvasSync::JobBatches::Batch).not_to receive(:process_failed_job)
|
10
|
+
subject.call(nil, {}, nil) { yielded = true }
|
11
|
+
expect(yielded).to be_truthy
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when in batch' do
|
16
|
+
let(:bid) { 'SAMPLEBID' }
|
17
|
+
let(:jid) { 'SAMPLEJID' }
|
18
|
+
|
19
|
+
context 'when successful' do
|
20
|
+
it 'yields' do
|
21
|
+
yielded = false
|
22
|
+
subject.call(nil, { 'bid' => bid, 'jid' => jid }, nil) { yielded = true }
|
23
|
+
expect(yielded).to be_truthy
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'calls process_successful_job' do
|
27
|
+
expect(CanvasSync::JobBatches::Batch).to receive(:process_successful_job).with(bid, nil)
|
28
|
+
subject.call(nil, { 'bid' => bid }, nil) {}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when failed' do
|
33
|
+
it 'calls process_failed_job and reraises exception' do
|
34
|
+
reraised = false
|
35
|
+
expect(CanvasSync::JobBatches::Batch).to receive(:process_failed_job)
|
36
|
+
begin
|
37
|
+
subject.call(nil, { 'bid' => bid }, nil) { raise 'ERR' }
|
38
|
+
rescue
|
39
|
+
reraised = true
|
40
|
+
end
|
41
|
+
expect(reraised).to be_truthy
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe CanvasSync::JobBatches::Sidekiq::ClientMiddleware do
|
48
|
+
context 'when without batch' do
|
49
|
+
it 'just yields' do
|
50
|
+
yielded = false
|
51
|
+
expect(CanvasSync::JobBatches::Batch).not_to receive(:increment_job_queue)
|
52
|
+
subject.call(nil, {}, nil) { yielded = true }
|
53
|
+
expect(yielded).to be_truthy
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when in batch' do
|
58
|
+
let(:bid) { 'SAMPLEBID' }
|
59
|
+
let(:jid) { 'SAMPLEJID' }
|
60
|
+
before { Thread.current[:batch] = CanvasSync::JobBatches::Batch.new(bid) }
|
61
|
+
|
62
|
+
it 'yields' do
|
63
|
+
yielded = false
|
64
|
+
subject.call(nil, { 'jid' => jid }, nil) { yielded = true }
|
65
|
+
expect(yielded).to be_truthy
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'increments job queue' do
|
69
|
+
# expect(CanvasSync::JobBatches::Batch).to receive(:increment_job_queue).with(bid)
|
70
|
+
# subject.call(nil, { 'jid' => jid }, nil) {}
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'assigns bid to msg' do
|
74
|
+
msg = { 'jid' => jid }
|
75
|
+
subject.call(nil, msg, nil) {}
|
76
|
+
expect(msg[:bid]).to eq(bid)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
RSpec.describe CanvasSync::JobBatches::Sidekiq do
|
83
|
+
let(:config) { class_double(Sidekiq) }
|
84
|
+
let(:client_middleware) { double(Sidekiq::Middleware::Chain) }
|
85
|
+
|
86
|
+
context 'client' do
|
87
|
+
it 'adds client middleware' do
|
88
|
+
expect(Sidekiq).to receive(:configure_client).and_yield(config)
|
89
|
+
expect(config).to receive(:client_middleware).and_yield(client_middleware)
|
90
|
+
expect(client_middleware).to receive(:add).with(CanvasSync::JobBatches::Sidekiq::ClientMiddleware)
|
91
|
+
CanvasSync::JobBatches::Sidekiq.configure
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'server' do
|
96
|
+
let(:server_middleware) { double(Sidekiq::Middleware::Chain) }
|
97
|
+
let(:death_handlers) { double(Array) }
|
98
|
+
|
99
|
+
it 'adds client and server middleware' do
|
100
|
+
expect(Sidekiq).to receive(:configure_server).and_yield(config)
|
101
|
+
expect(config).to receive(:client_middleware).and_yield(client_middleware)
|
102
|
+
expect(config).to receive(:server_middleware).and_yield(server_middleware)
|
103
|
+
expect(config).to receive(:death_handlers).and_return(death_handlers)
|
104
|
+
expect(client_middleware).to receive(:add).with(CanvasSync::JobBatches::Sidekiq::ClientMiddleware)
|
105
|
+
expect(server_middleware).to receive(:add).with(CanvasSync::JobBatches::Sidekiq::ServerMiddleware)
|
106
|
+
expect(death_handlers).to receive(:<<)
|
107
|
+
CanvasSync::JobBatches::Sidekiq.configure
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'worker' do
|
112
|
+
it 'defines method bid' do
|
113
|
+
expect(Sidekiq::Worker.instance_methods).to include(:bid)
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'defines method batch' do
|
117
|
+
expect(Sidekiq::Worker.instance_methods).to include(:batch)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'defines method valid_within_batch?' do
|
121
|
+
expect(Sidekiq::Worker.instance_methods).to include(:valid_within_batch?)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CanvasSync::JobBatches::Batch::Status do
|
4
|
+
let(:bid) { 'BID' }
|
5
|
+
let(:batch) { CanvasSync::JobBatches::Batch.new(bid) }
|
6
|
+
subject { described_class.new(bid) }
|
7
|
+
|
8
|
+
describe '#join' do
|
9
|
+
it 'raises info' do
|
10
|
+
expect { subject.join }.to raise_error('Not supported')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#pending' do
|
15
|
+
context 'when not initalized' do
|
16
|
+
it 'returns 0 pending jobs' do
|
17
|
+
expect(subject.pending).to eq(0)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when more than 0' do
|
22
|
+
before { batch.jobs do TestWorker.perform_async end }
|
23
|
+
it 'returns pending jobs' do
|
24
|
+
expect(subject.pending).to eq(1)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#failures' do
|
30
|
+
context 'when not initalized' do
|
31
|
+
it 'returns 0 failed jobs' do
|
32
|
+
expect(subject.failures).to eq(0)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when more than 0' do
|
37
|
+
before { batch.increment_job_queue(bid) }
|
38
|
+
before { CanvasSync::JobBatches::Batch.process_failed_job(bid, 'FAILEDID') }
|
39
|
+
|
40
|
+
it 'returns failed jobs' do
|
41
|
+
expect(subject.failures).to eq(1)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#failure_info' do
|
47
|
+
context 'when not initalized' do
|
48
|
+
it 'returns empty array' do
|
49
|
+
expect(subject.failure_info).to eq([])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when with error' do
|
54
|
+
before { CanvasSync::JobBatches::Batch.process_failed_job(bid, 'jid123') }
|
55
|
+
|
56
|
+
it 'returns array with failed jids' do
|
57
|
+
expect(subject.failure_info).to eq(['jid123'])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#total' do
|
63
|
+
context 'when not initalized' do
|
64
|
+
it 'returns 0 failed jobs' do
|
65
|
+
expect(subject.total).to eq(0)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when more than 0' do
|
70
|
+
before { batch.jobs do TestWorker.perform_async end }
|
71
|
+
|
72
|
+
it 'returns failed jobs' do
|
73
|
+
expect(subject.total).to eq(1)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#data' do
|
79
|
+
it 'returns batch description' do
|
80
|
+
expect(subject.data).to include(total: 0, failures: 0, pending: 0, created_at: nil, complete: false, failure_info: [], parent_bid: nil)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#created_at' do
|
85
|
+
it 'returns time' do
|
86
|
+
batch = CanvasSync::JobBatches::Batch.new
|
87
|
+
batch.jobs do TestWorker.perform_async end
|
88
|
+
status = described_class.new(batch.bid)
|
89
|
+
expect(status.created_at).not_to be_nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -13,6 +13,19 @@ require 'shoulda/matchers'
|
|
13
13
|
require 'pry'
|
14
14
|
require 'pry-nav'
|
15
15
|
|
16
|
+
require 'sidekiq/testing'
|
17
|
+
Sidekiq::Testing.fake!
|
18
|
+
|
19
|
+
require 'fakeredis/rspec'
|
20
|
+
Dir[File.dirname(__FILE__) + "/job_batching/support/**/*.rb"].each {|f| require f }
|
21
|
+
|
22
|
+
# Fix an issue with fakeredis with Redis >=4.2
|
23
|
+
class Redis::Connection::Memory
|
24
|
+
def exists(*keys)
|
25
|
+
keys.count { |key| data.key?(key) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
16
29
|
ActiveRecord::Migration.maintain_test_schema!
|
17
30
|
|
18
31
|
RSpec.configure do |config|
|
@@ -51,3 +64,7 @@ end
|
|
51
64
|
def canvas_sync_client
|
52
65
|
Bearcat::Client.new(token: 'cool-token', prefix: 'http://test.instructure.com')
|
53
66
|
end
|
67
|
+
|
68
|
+
def set_batch_context(ctx)
|
69
|
+
allow_any_instance_of(ActiveJob::Base).to receive(:batch_context).and_return(ctx.with_indifferent_access)
|
70
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Collings
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -234,6 +234,34 @@ dependencies:
|
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: fakeredis
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: sidekiq
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
237
265
|
- !ruby/object:Gem::Dependency
|
238
266
|
name: activejob
|
239
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +276,20 @@ dependencies:
|
|
248
276
|
- - ">="
|
249
277
|
- !ruby/object:Gem::Version
|
250
278
|
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: redis
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '4.2'
|
286
|
+
type: :runtime
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '4.2'
|
251
293
|
- !ruby/object:Gem::Dependency
|
252
294
|
name: rails
|
253
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -304,7 +346,7 @@ dependencies:
|
|
304
346
|
- - ">="
|
305
347
|
- !ruby/object:Gem::Version
|
306
348
|
version: '0'
|
307
|
-
description:
|
349
|
+
description:
|
308
350
|
email:
|
309
351
|
- ncollings@instructure.com
|
310
352
|
executables: []
|
@@ -316,10 +358,12 @@ files:
|
|
316
358
|
- app/controllers/api/v1/health_check_controller.rb
|
317
359
|
- app/controllers/api/v1/live_events_controller.rb
|
318
360
|
- app/models/canvas_sync/job_log.rb
|
361
|
+
- app/models/canvas_sync/sync_batch.rb
|
319
362
|
- config/initializers/apartment.rb
|
320
363
|
- db/migrate/20170915210836_create_canvas_sync_job_log.rb
|
321
364
|
- db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb
|
322
365
|
- db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb
|
366
|
+
- db/migrate/20201018210836_create_canvas_sync_sync_batches.rb
|
323
367
|
- lib/canvas_sync.rb
|
324
368
|
- lib/canvas_sync/api_syncable.rb
|
325
369
|
- lib/canvas_sync/class_callback_executor.rb
|
@@ -377,8 +421,17 @@ files:
|
|
377
421
|
- lib/canvas_sync/importers/bulk_importer.rb
|
378
422
|
- lib/canvas_sync/importers/legacy_importer.rb
|
379
423
|
- lib/canvas_sync/job.rb
|
380
|
-
- lib/canvas_sync/
|
381
|
-
- lib/canvas_sync/
|
424
|
+
- lib/canvas_sync/job_batches/batch.rb
|
425
|
+
- lib/canvas_sync/job_batches/batch_aware_job.rb
|
426
|
+
- lib/canvas_sync/job_batches/callback.rb
|
427
|
+
- lib/canvas_sync/job_batches/chain_builder.rb
|
428
|
+
- lib/canvas_sync/job_batches/context_hash.rb
|
429
|
+
- lib/canvas_sync/job_batches/jobs/base_job.rb
|
430
|
+
- lib/canvas_sync/job_batches/jobs/concurrent_batch_job.rb
|
431
|
+
- lib/canvas_sync/job_batches/jobs/serial_batch_job.rb
|
432
|
+
- lib/canvas_sync/job_batches/sidekiq.rb
|
433
|
+
- lib/canvas_sync/job_batches/status.rb
|
434
|
+
- lib/canvas_sync/jobs/begin_sync_chain_job.rb
|
382
435
|
- lib/canvas_sync/jobs/report_checker.rb
|
383
436
|
- lib/canvas_sync/jobs/report_processor_job.rb
|
384
437
|
- lib/canvas_sync/jobs/report_starter.rb
|
@@ -393,6 +446,7 @@ files:
|
|
393
446
|
- lib/canvas_sync/jobs/sync_simple_table_job.rb
|
394
447
|
- lib/canvas_sync/jobs/sync_submissions_job.rb
|
395
448
|
- lib/canvas_sync/jobs/sync_terms_job.rb
|
449
|
+
- lib/canvas_sync/misc_helper.rb
|
396
450
|
- lib/canvas_sync/processors/assignment_groups_processor.rb
|
397
451
|
- lib/canvas_sync/processors/assignments_processor.rb
|
398
452
|
- lib/canvas_sync/processors/context_module_items_processor.rb
|
@@ -406,7 +460,6 @@ files:
|
|
406
460
|
- lib/canvas_sync/sidekiq_job.rb
|
407
461
|
- lib/canvas_sync/version.rb
|
408
462
|
- spec/canvas_sync/canvas_sync_spec.rb
|
409
|
-
- spec/canvas_sync/jobs/fork_gather_spec.rb
|
410
463
|
- spec/canvas_sync/jobs/job_spec.rb
|
411
464
|
- spec/canvas_sync/jobs/report_checker_spec.rb
|
412
465
|
- spec/canvas_sync/jobs/report_processor_job_spec.rb
|
@@ -458,6 +511,7 @@ files:
|
|
458
511
|
- spec/dummy/app/models/enrollment.rb
|
459
512
|
- spec/dummy/app/models/group.rb
|
460
513
|
- spec/dummy/app/models/group_membership.rb
|
514
|
+
- spec/dummy/app/models/pseudonym.rb
|
461
515
|
- spec/dummy/app/models/role.rb
|
462
516
|
- spec/dummy/app/models/section.rb
|
463
517
|
- spec/dummy/app/models/submission.rb
|
@@ -520,10 +574,8 @@ files:
|
|
520
574
|
- spec/dummy/db/migrate/20190927204546_create_admins.rb
|
521
575
|
- spec/dummy/db/migrate/20200415171620_create_groups.rb
|
522
576
|
- spec/dummy/db/migrate/20200416214248_create_group_memberships.rb
|
577
|
+
- spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb
|
523
578
|
- spec/dummy/db/schema.rb
|
524
|
-
- spec/dummy/db/test.sqlite3
|
525
|
-
- spec/dummy/log/development.log
|
526
|
-
- spec/dummy/log/test.log
|
527
579
|
- spec/factories/account_factory.rb
|
528
580
|
- spec/factories/admin_factory.rb
|
529
581
|
- spec/factories/assignment_factory.rb
|
@@ -539,6 +591,19 @@ files:
|
|
539
591
|
- spec/factories/submission_factory.rb
|
540
592
|
- spec/factories/term_factory.rb
|
541
593
|
- spec/factories/user_factory.rb
|
594
|
+
- spec/job_batching/batch_aware_job_spec.rb
|
595
|
+
- spec/job_batching/batch_spec.rb
|
596
|
+
- spec/job_batching/callback_spec.rb
|
597
|
+
- spec/job_batching/flow_spec.rb
|
598
|
+
- spec/job_batching/integration/integration.rb
|
599
|
+
- spec/job_batching/integration/nested.rb
|
600
|
+
- spec/job_batching/integration/simple.rb
|
601
|
+
- spec/job_batching/integration/workflow.rb
|
602
|
+
- spec/job_batching/integration_helper.rb
|
603
|
+
- spec/job_batching/sidekiq_spec.rb
|
604
|
+
- spec/job_batching/status_spec.rb
|
605
|
+
- spec/job_batching/support/base_job.rb
|
606
|
+
- spec/job_batching/support/sample_callback.rb
|
542
607
|
- spec/spec_helper.rb
|
543
608
|
- spec/support/fake_canvas.rb
|
544
609
|
- spec/support/fixtures/canvas_responses/admins.json
|
@@ -555,8 +620,6 @@ files:
|
|
555
620
|
- spec/support/fixtures/reports/group_memberships.csv
|
556
621
|
- spec/support/fixtures/reports/groups.csv
|
557
622
|
- spec/support/fixtures/reports/provisioning_csv
|
558
|
-
- spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
|
559
|
-
- spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
|
560
623
|
- spec/support/fixtures/reports/sections.csv
|
561
624
|
- spec/support/fixtures/reports/submissions.csv
|
562
625
|
- spec/support/fixtures/reports/users.csv
|
@@ -564,7 +627,7 @@ files:
|
|
564
627
|
homepage: https://instructure.com
|
565
628
|
licenses: []
|
566
629
|
metadata: {}
|
567
|
-
post_install_message:
|
630
|
+
post_install_message:
|
568
631
|
rdoc_options: []
|
569
632
|
require_paths:
|
570
633
|
- lib
|
@@ -575,17 +638,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
575
638
|
version: '0'
|
576
639
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
577
640
|
requirements:
|
578
|
-
- - "
|
641
|
+
- - ">"
|
579
642
|
- !ruby/object:Gem::Version
|
580
|
-
version:
|
643
|
+
version: 1.3.1
|
581
644
|
requirements: []
|
582
645
|
rubygems_version: 3.1.2
|
583
|
-
signing_key:
|
646
|
+
signing_key:
|
584
647
|
specification_version: 4
|
585
648
|
summary: Gem for generating Canvas models and migrations and syncing data from Canvas
|
586
649
|
test_files:
|
587
650
|
- spec/canvas_sync/canvas_sync_spec.rb
|
588
|
-
- spec/canvas_sync/jobs/fork_gather_spec.rb
|
589
651
|
- spec/canvas_sync/jobs/job_spec.rb
|
590
652
|
- spec/canvas_sync/jobs/report_checker_spec.rb
|
591
653
|
- spec/canvas_sync/jobs/report_processor_job_spec.rb
|
@@ -637,6 +699,7 @@ test_files:
|
|
637
699
|
- spec/dummy/app/models/enrollment.rb
|
638
700
|
- spec/dummy/app/models/group.rb
|
639
701
|
- spec/dummy/app/models/group_membership.rb
|
702
|
+
- spec/dummy/app/models/pseudonym.rb
|
640
703
|
- spec/dummy/app/models/role.rb
|
641
704
|
- spec/dummy/app/models/section.rb
|
642
705
|
- spec/dummy/app/models/submission.rb
|
@@ -699,10 +762,8 @@ test_files:
|
|
699
762
|
- spec/dummy/db/migrate/20190927204546_create_admins.rb
|
700
763
|
- spec/dummy/db/migrate/20200415171620_create_groups.rb
|
701
764
|
- spec/dummy/db/migrate/20200416214248_create_group_memberships.rb
|
765
|
+
- spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb
|
702
766
|
- spec/dummy/db/schema.rb
|
703
|
-
- spec/dummy/db/test.sqlite3
|
704
|
-
- spec/dummy/log/development.log
|
705
|
-
- spec/dummy/log/test.log
|
706
767
|
- spec/factories/account_factory.rb
|
707
768
|
- spec/factories/admin_factory.rb
|
708
769
|
- spec/factories/assignment_factory.rb
|
@@ -718,6 +779,19 @@ test_files:
|
|
718
779
|
- spec/factories/submission_factory.rb
|
719
780
|
- spec/factories/term_factory.rb
|
720
781
|
- spec/factories/user_factory.rb
|
782
|
+
- spec/job_batching/batch_aware_job_spec.rb
|
783
|
+
- spec/job_batching/batch_spec.rb
|
784
|
+
- spec/job_batching/callback_spec.rb
|
785
|
+
- spec/job_batching/flow_spec.rb
|
786
|
+
- spec/job_batching/integration/integration.rb
|
787
|
+
- spec/job_batching/integration/nested.rb
|
788
|
+
- spec/job_batching/integration/simple.rb
|
789
|
+
- spec/job_batching/integration/workflow.rb
|
790
|
+
- spec/job_batching/integration_helper.rb
|
791
|
+
- spec/job_batching/sidekiq_spec.rb
|
792
|
+
- spec/job_batching/status_spec.rb
|
793
|
+
- spec/job_batching/support/base_job.rb
|
794
|
+
- spec/job_batching/support/sample_callback.rb
|
721
795
|
- spec/spec_helper.rb
|
722
796
|
- spec/support/fake_canvas.rb
|
723
797
|
- spec/support/fixtures/canvas_responses/admins.json
|
@@ -734,8 +808,6 @@ test_files:
|
|
734
808
|
- spec/support/fixtures/reports/group_memberships.csv
|
735
809
|
- spec/support/fixtures/reports/groups.csv
|
736
810
|
- spec/support/fixtures/reports/provisioning_csv
|
737
|
-
- spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
|
738
|
-
- spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
|
739
811
|
- spec/support/fixtures/reports/sections.csv
|
740
812
|
- spec/support/fixtures/reports/submissions.csv
|
741
813
|
- spec/support/fixtures/reports/users.csv
|