libis-workflow-mongoid 2.0.beta.13-java

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.
@@ -0,0 +1,201 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rspec'
4
+ require 'stringio'
5
+
6
+ require 'libis-workflow-mongoid'
7
+
8
+ require_relative 'spec_helper'
9
+ require_relative 'test_job'
10
+ require_relative 'test_workflow'
11
+ require_relative 'items'
12
+
13
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
14
+
15
+ describe 'TestWorkflow' do
16
+
17
+ before(:context) do
18
+ @dirname = File.absolute_path(File.join(File.dirname(__FILE__), 'items'))
19
+ @logoutput = StringIO.new
20
+
21
+ # noinspection RubyResolve
22
+ ::Libis::Workflow::Mongoid.configure do |cfg|
23
+ cfg.itemdir = File.join(File.dirname(__FILE__), 'items')
24
+ cfg.taskdir = File.join(File.dirname(__FILE__), 'tasks')
25
+ cfg.workdir = File.join(File.dirname(__FILE__), 'work')
26
+ cfg.logger = Logger.new logoutput
27
+ cfg.set_log_formatter
28
+ cfg.logger.level = Logger::DEBUG
29
+ cfg.database_connect 'mongoid.yml', :test
30
+ end
31
+
32
+ TestWorkflow.create_indexes
33
+ TestRun.create_indexes
34
+ TestFileItem.create_indexes
35
+ TestDirItem.create_indexes
36
+
37
+ @workflow = TestWorkflow.find_or_initialize_by(name: 'TestWorkflow')
38
+ @workflow.configure(
39
+ name: 'TestWorkflow',
40
+ description: 'Workflow for testing',
41
+ tasks: [
42
+ {class: 'CollectFiles', recursive: true},
43
+ {
44
+ name: 'ProcessFiles',
45
+ subitems: true,
46
+ tasks: [
47
+ {class: 'ChecksumTester', recursive: true},
48
+ {class: 'CamelizeName', recursive: true}
49
+ ]
50
+ }
51
+ ],
52
+ input: {
53
+ dirname: {default: '.', propagate_to: 'CollectFiles#location'},
54
+ checksum_type: {default: 'SHA1', propagate_to: 'ProcessFiles/ChecksumTester'}
55
+ }
56
+ )
57
+ @workflow.save
58
+
59
+ @job = TestJob.find_or_initialize_by(name: 'TestJob')
60
+ @job.configure(
61
+ name: 'TestJob',
62
+ description: 'Job for testing',
63
+ workflow: @workflow,
64
+ run_object: 'TestRun',
65
+ input: {dirname: dirname, checksum_type: 'SHA256'},
66
+ )
67
+
68
+ # noinspection RubyResolve
69
+ @job.runs.each { |run| run.destroy! }
70
+ @job.save
71
+ @run = @job.execute
72
+
73
+ end
74
+
75
+ def dirname; @dirname; end
76
+ def logoutput; @logoutput; end
77
+ def workflow; @workflow; end
78
+ def job; @job; end
79
+ def run; @run; end
80
+
81
+ it 'should contain three tasks' do
82
+
83
+ expect(workflow.config[:tasks].size).to eq 3
84
+ expect(workflow.config[:tasks].first[:class]).to eq 'CollectFiles'
85
+ expect(workflow.config[:tasks].last[:class]).to eq '::Libis::Workflow::Tasks::Analyzer'
86
+
87
+ end
88
+
89
+ it 'should camelize the workitem name' do
90
+
91
+ expect(run.options['CollectFiles'][:location]).to eq dirname
92
+
93
+ def print_item(item, indent = 0)
94
+ puts "#{' ' * indent * 2} - #{item.name}"
95
+ item.get_items.each do |i|
96
+ print_item(i, indent + 1)
97
+ end
98
+ end
99
+ print_item(run)
100
+
101
+ expect(run.count).to eq 1
102
+ expect(run.first.class).to eq TestDirItem
103
+ expect(run.first.count).to eq 4
104
+ expect(run.first.first.class).to eq TestFileItem
105
+
106
+ # the following tests do not work on Travis. Tried for days to find out why, but I give up.
107
+ # expect(run.get_items.count).to eq 1
108
+ # expect(run.get_items.first.class).to eq TestDirItem
109
+ # expect(run.get_items.first.count).to eq 4
110
+ # expect(run.get_items.first.get_items.first.class).to eq TestFileItem
111
+
112
+ run.items.first.each_with_index do |x, i|
113
+ expect(x.name).to eq %w'TestDirItem.rb TestFileItem.rb TestItem.rb TestRun.rb'[i]
114
+ end
115
+ end
116
+
117
+ it 'should return expected debug output' do
118
+
119
+ expect(run.summary[:DEBUG]).to eq 23
120
+ expect(run.log_history.count).to eq 8
121
+ expect(run.status_log.count).to eq 8
122
+ item = run.items.first
123
+ expect(item.log_history.count).to eq 15
124
+ expect(item.status_log.count).to eq 6
125
+ expect(item.summary[:DEBUG]).to eq 15
126
+
127
+ sample_out = <<STR
128
+ DEBUG -- CollectFiles - TestRun : Processing subitem (1/1): items
129
+ DEBUG -- CollectFiles - items : Processing subitem (1/4): test_dir_item.rb
130
+ DEBUG -- CollectFiles - items : Processing subitem (2/4): test_file_item.rb
131
+ DEBUG -- CollectFiles - items : Processing subitem (3/4): test_item.rb
132
+ DEBUG -- CollectFiles - items : Processing subitem (4/4): test_run.rb
133
+ DEBUG -- CollectFiles - items : 4 of 4 subitems passed
134
+ DEBUG -- CollectFiles - TestRun : 1 of 1 subitems passed
135
+ DEBUG -- ProcessFiles - TestRun : Running subtask (1/2): ChecksumTester
136
+ DEBUG -- ProcessFiles/ChecksumTester - TestRun : Processing subitem (1/1): items
137
+ DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (1/4): test_dir_item.rb
138
+ DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (2/4): test_file_item.rb
139
+ DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (3/4): test_item.rb
140
+ DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (4/4): test_run.rb
141
+ DEBUG -- ProcessFiles/ChecksumTester - items : 4 of 4 subitems passed
142
+ DEBUG -- ProcessFiles/ChecksumTester - TestRun : 1 of 1 subitems passed
143
+ DEBUG -- ProcessFiles - TestRun : Running subtask (2/2): CamelizeName
144
+ DEBUG -- ProcessFiles/CamelizeName - TestRun : Processing subitem (1/1): items
145
+ DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (1/4): test_dir_item.rb
146
+ DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (2/4): test_file_item.rb
147
+ DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (3/4): test_item.rb
148
+ DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (4/4): test_run.rb
149
+ DEBUG -- ProcessFiles/CamelizeName - Items : 4 of 4 subitems passed
150
+ DEBUG -- ProcessFiles/CamelizeName - TestRun : 1 of 1 subitems passed
151
+ STR
152
+ sample_out = sample_out.lines.to_a
153
+ output = logoutput.string.lines
154
+
155
+ expect(output.count).to eq sample_out.count
156
+ output.each_with_index do |o, i|
157
+ expect(o.strip).to match(/#{Regexp.escape sample_out[i].strip}$/)
158
+ end
159
+
160
+ end
161
+
162
+ it 'find workflow' do
163
+ workflow
164
+ wf = TestWorkflow.first
165
+ expect(wf.nil?).to eq false
166
+ expect(wf.name).to eq 'TestWorkflow'
167
+ expect(wf.description).to eq 'Workflow for testing'
168
+ expect(wf.input.count).to eq 2
169
+ expect(wf.input[:dirname][:default]).to eq '.'
170
+ expect(wf.config[:tasks].count).to eq 3
171
+ expect(wf.config[:tasks][0][:class]).to eq 'CollectFiles'
172
+ expect(wf.config[:tasks][0][:recursive]).to eq true
173
+ expect(wf.config[:tasks][1][:name]).to eq 'ProcessFiles'
174
+ expect(wf.config[:tasks][1][:subitems]).to eq true
175
+ expect(wf.config[:tasks][1][:tasks].count).to eq 2
176
+ expect(wf.config[:tasks][1][:tasks][0][:class]).to eq 'ChecksumTester'
177
+ expect(wf.config[:tasks][1][:tasks][0][:recursive]).to eq true
178
+ expect(wf.config[:tasks][1][:tasks][1][:class]).to eq 'CamelizeName'
179
+ expect(wf.config[:tasks][1][:tasks][1][:recursive]).to eq true
180
+ expect(wf.config[:tasks][2][:class]).to eq '::Libis::Workflow::Tasks::Analyzer'
181
+ end
182
+
183
+ # noinspection RubyResolve
184
+ it 'find run' do
185
+ my_job = TestJob.first
186
+ expect(my_job).to eq job
187
+ expect(my_job.runs.all.count).to eq 1
188
+ my_run = my_job.runs.all.first
189
+ expect(my_run).to eq run
190
+ end
191
+
192
+ # noinspection RubyResolve
193
+ it 'find first item' do
194
+ item = run.items.first
195
+ expect(item.nil?).to eq false
196
+ expect(item.is_a? TestDirItem).to eq true
197
+ expect(item.properties[:name]).to eq 'Items'
198
+ expect(item.properties[:ingest_failed]).to eq false
199
+ end
200
+
201
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libis-workflow-mongoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.beta.13
5
+ platform: java
6
+ authors:
7
+ - Kris Dekeyser
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 2.0.beta
19
+ name: libis-workflow
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.beta
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ name: mongoid
34
+ prerelease: false
35
+ type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ name: sidekiq
48
+ prerelease: false
49
+ type: :runtime
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.6'
61
+ name: bundler
62
+ prerelease: false
63
+ type: :development
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ name: rake
76
+ prerelease: false
77
+ type: :development
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ name: rspec
90
+ prerelease: false
91
+ type: :development
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ name: coveralls
104
+ prerelease: false
105
+ type: :development
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Class implementations that use Mongoid storage for the LIBIS Workflow framework.
112
+ email: kris.dekeyser@libis.be
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - ".gitignore"
118
+ - ".travis.yml"
119
+ - ".travis/create_users.js"
120
+ - ".travis/db_prepare.sh"
121
+ - Gemfile
122
+ - LICENSE
123
+ - README.md
124
+ - Rakefile
125
+ - lib/libis-workflow-mongoid.rb
126
+ - lib/libis/workflow/mongoid.rb
127
+ - lib/libis/workflow/mongoid/base.rb
128
+ - lib/libis/workflow/mongoid/config.rb
129
+ - lib/libis/workflow/mongoid/dynamic.rb
130
+ - lib/libis/workflow/mongoid/job.rb
131
+ - lib/libis/workflow/mongoid/log_entry.rb
132
+ - lib/libis/workflow/mongoid/run.rb
133
+ - lib/libis/workflow/mongoid/sequence.rb
134
+ - lib/libis/workflow/mongoid/version.rb
135
+ - lib/libis/workflow/mongoid/work_item.rb
136
+ - lib/libis/workflow/mongoid/work_item_base.rb
137
+ - lib/libis/workflow/mongoid/worker.rb
138
+ - lib/libis/workflow/mongoid/workflow.rb
139
+ - libis-workflow-mongoid.gemspec
140
+ - mongoid.yml
141
+ - spec/db_env.sh
142
+ - spec/db_start.sh
143
+ - spec/items.rb
144
+ - spec/items/test_dir_item.rb
145
+ - spec/items/test_file_item.rb
146
+ - spec/items/test_item.rb
147
+ - spec/items/test_run.rb
148
+ - spec/spec_helper.rb
149
+ - spec/tasks/camelize_name.rb
150
+ - spec/tasks/checksum_tester.rb
151
+ - spec/tasks/collect_files.rb
152
+ - spec/test_job.rb
153
+ - spec/test_workflow.rb
154
+ - spec/workflow_spec.rb
155
+ homepage: https://github.com/libis/workflow-mongoid
156
+ licenses:
157
+ - MIT
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">"
171
+ - !ruby/object:Gem::Version
172
+ version: 1.3.1
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.4.8
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: Mongoid persistence for the LIBIS Workflow framework.
179
+ test_files:
180
+ - spec/db_env.sh
181
+ - spec/db_start.sh
182
+ - spec/items.rb
183
+ - spec/items/test_dir_item.rb
184
+ - spec/items/test_file_item.rb
185
+ - spec/items/test_item.rb
186
+ - spec/items/test_run.rb
187
+ - spec/spec_helper.rb
188
+ - spec/tasks/camelize_name.rb
189
+ - spec/tasks/checksum_tester.rb
190
+ - spec/tasks/collect_files.rb
191
+ - spec/test_job.rb
192
+ - spec/test_workflow.rb
193
+ - spec/workflow_spec.rb