libis-workflow-mongoid 2.0.beta.12 → 2.0.beta.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +18 -8
- data/lib/libis/workflow/mongoid/base.rb +2 -2
- data/lib/libis/workflow/mongoid/dynamic.rb +32 -0
- data/lib/libis/workflow/mongoid/run.rb +14 -9
- data/lib/libis/workflow/mongoid/version.rb +1 -1
- data/lib/libis/workflow/mongoid/work_item.rb +0 -8
- data/lib/libis/workflow/mongoid/work_item_base.rb +39 -22
- data/lib/libis/workflow/mongoid/worker.rb +6 -6
- data/libis-workflow-mongoid.gemspec +30 -28
- data/spec/tasks/camelize_name.rb +1 -0
- data/spec/tasks/collect_files.rb +3 -1
- data/spec/workflow_spec.rb +31 -15
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48543f046e7d13eb9d5e5af4a6de97224754065d
|
4
|
+
data.tar.gz: 1f3bbcafe393565b1cfca3218fa3cb55fc27370c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe180a58e46b9de4b980a97d568ad44c4103bfb5c9a6c3c2d6178364e576475f745aef568107a46766f3edca9cfb1923167d4981bed62cb989691e5b8bf3eb97
|
7
|
+
data.tar.gz: 153a1197055568023304c2a03613c7e834194238e7b2e680256485562e370180b022a7d7a0471f127b2fe8d0604b6447fb8b9d6624176aa290f311f2f225b5d8
|
data/.travis.yml
CHANGED
@@ -2,9 +2,10 @@ language: ruby
|
|
2
2
|
sudo: false
|
3
3
|
bundler_args: --without development
|
4
4
|
cache: bundler
|
5
|
+
|
5
6
|
rvm:
|
6
|
-
- 2.1.
|
7
|
-
- 2.2.
|
7
|
+
- 2.1.7
|
8
|
+
- 2.2.3
|
8
9
|
- ruby-head
|
9
10
|
- jruby-9.0.1.0
|
10
11
|
jdk:
|
@@ -13,13 +14,13 @@ jdk:
|
|
13
14
|
- oraclejdk8
|
14
15
|
matrix:
|
15
16
|
exclude:
|
16
|
-
- rvm: 2.1.
|
17
|
+
- rvm: 2.1.7
|
17
18
|
jdk: oraclejdk7
|
18
|
-
- rvm: 2.1.
|
19
|
+
- rvm: 2.1.7
|
19
20
|
jdk: oraclejdk8
|
20
|
-
- rvm: 2.2.
|
21
|
+
- rvm: 2.2.3
|
21
22
|
jdk: oraclejdk7
|
22
|
-
- rvm: 2.2.
|
23
|
+
- rvm: 2.2.3
|
23
24
|
jdk: oraclejdk8
|
24
25
|
- rvm: ruby-head
|
25
26
|
jdk: oraclejdk7
|
@@ -30,6 +31,15 @@ matrix:
|
|
30
31
|
branches:
|
31
32
|
only:
|
32
33
|
- master
|
33
|
-
|
34
|
-
|
34
|
+
env:
|
35
|
+
global:
|
36
|
+
- MONGODB_VERSION=3.2.0
|
37
|
+
- JRUBY_OPTS="-Xcli.debug=true --debug"
|
38
|
+
before_install:
|
39
|
+
- wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGODB_VERSION.tgz
|
40
|
+
- tar xfz mongodb-linux-x86_64-$MONGODB_VERSION.tgz
|
41
|
+
- export PATH=`pwd`/mongodb-linux-x86_64-$MONGODB_VERSION/bin:$PATH
|
42
|
+
- mkdir -p data/db
|
43
|
+
- mongod --dbpath=data/db &> /dev/null &
|
44
|
+
- sleep 3
|
35
45
|
before_script: ./.travis/db_prepare.sh
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'mongoid'
|
3
3
|
require 'mongoid/document'
|
4
|
-
require 'mongoid_indifferent_access'
|
4
|
+
# require 'mongoid_indifferent_access'
|
5
5
|
require_relative 'sequence'
|
6
6
|
|
7
7
|
require 'active_support/core_ext/object/deep_dup'
|
@@ -16,7 +16,7 @@ module Libis
|
|
16
16
|
klass.class_eval do
|
17
17
|
include ::Mongoid::Document
|
18
18
|
include ::Mongoid::Timestamps::Created::Short
|
19
|
-
include ::Mongoid::Extensions::Hash::IndifferentAccess
|
19
|
+
# include ::Mongoid::Extensions::Hash::IndifferentAccess
|
20
20
|
include ::Libis::Workflow::Mongoid::Sequence
|
21
21
|
field :_id, type: Integer, overwrite: true
|
22
22
|
sequence :_id
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'mongoid'
|
2
|
+
require 'mongoid/document'
|
3
|
+
|
4
|
+
module Libis
|
5
|
+
module Workflow
|
6
|
+
module Mongoid
|
7
|
+
module Dynamic
|
8
|
+
def self.included(klass)
|
9
|
+
klass.class_eval do
|
10
|
+
include ::Mongoid::Document
|
11
|
+
include ::Mongoid::Attributes::Dynamic
|
12
|
+
include ::Libis::Workflow::Mongoid::Sequence
|
13
|
+
field :_id, type: Integer, overwrite: true
|
14
|
+
sequence :_id
|
15
|
+
index _id: 1
|
16
|
+
|
17
|
+
def has_key?(key)
|
18
|
+
self.attributes.has_key?(key.to_s) || self.attributes.has_key?(key.to_sym)
|
19
|
+
end
|
20
|
+
|
21
|
+
def each(&block)
|
22
|
+
self.attributes.reject { |k,_| k == '_id' }.each(&block)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -42,24 +42,29 @@ module Libis
|
|
42
42
|
def run
|
43
43
|
self.tasks = []
|
44
44
|
self.items = []
|
45
|
+
# noinspection RubySuperCallWithoutSuperclassInspection
|
45
46
|
super
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
task.run self
|
56
|
-
end
|
49
|
+
# Add a child work item
|
50
|
+
#
|
51
|
+
# @param [Libis::Workflow::Mongoid::WorkItem] item to be added to the child list :items
|
52
|
+
def add_item(item)
|
53
|
+
# noinspection RubyResolve
|
54
|
+
item.run = self
|
55
|
+
super
|
57
56
|
end
|
58
57
|
|
58
|
+
alias_method :<<, :add_item
|
59
|
+
|
59
60
|
def parent
|
60
61
|
nil
|
61
62
|
end
|
62
63
|
|
64
|
+
def parent=(_)
|
65
|
+
nil
|
66
|
+
end
|
67
|
+
|
63
68
|
end
|
64
69
|
|
65
70
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Libis
|
4
4
|
module Workflow
|
5
5
|
module Mongoid
|
6
|
-
VERSION = '2.0.beta.
|
6
|
+
VERSION = '2.0.beta.13' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'libis-workflow'
|
3
|
+
require_relative 'dynamic'
|
3
4
|
|
4
5
|
module Libis
|
5
6
|
module Workflow
|
@@ -7,15 +8,31 @@ module Libis
|
|
7
8
|
|
8
9
|
module WorkItemBase
|
9
10
|
|
11
|
+
class Options
|
12
|
+
include Libis::Workflow::Mongoid::Dynamic
|
13
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
class Properties
|
17
|
+
include Libis::Workflow::Mongoid::Dynamic
|
18
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
class Summary
|
22
|
+
include Libis::Workflow::Mongoid::Dynamic
|
23
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
24
|
+
end
|
25
|
+
|
10
26
|
def self.included(klass)
|
11
27
|
klass.class_eval do
|
12
|
-
include
|
28
|
+
include Libis::Workflow::Base::WorkItem
|
13
29
|
include Libis::Workflow::Mongoid::Base
|
14
30
|
|
15
|
-
|
16
|
-
|
31
|
+
embeds_one :options, class_name: Libis::Workflow::Mongoid::WorkItemBase::Options.to_s
|
32
|
+
embeds_one :properties, class_name: Libis::Workflow::Mongoid::WorkItemBase::Properties.to_s
|
33
|
+
embeds_one :summary, class_name: Libis::Workflow::Mongoid::WorkItemBase::Summary.to_s
|
17
34
|
|
18
|
-
has_many :logs, as: :logger, class_name:
|
35
|
+
has_many :logs, as: :logger, class_name: Libis::Workflow::Mongoid::LogEntry.to_s,
|
19
36
|
dependent: :destroy, autosave: true, order: :_id.asc do
|
20
37
|
def log_history
|
21
38
|
where(:status.exists => false)
|
@@ -36,23 +53,30 @@ module Libis
|
|
36
53
|
document.logs.each { |log| log.destroy! }
|
37
54
|
end
|
38
55
|
|
39
|
-
|
56
|
+
set_callback(:initialize, :after) do |document|
|
57
|
+
document.options = {}
|
58
|
+
document.properties = {}
|
59
|
+
document.summary = {}
|
60
|
+
end
|
61
|
+
|
40
62
|
end
|
41
63
|
|
42
64
|
end
|
43
65
|
|
44
|
-
def
|
45
|
-
self.items.
|
66
|
+
def each
|
67
|
+
self.items.each { |item| yield item }
|
46
68
|
end
|
47
69
|
|
48
|
-
def
|
49
|
-
|
50
|
-
self.items << item
|
51
|
-
self.save!
|
52
|
-
self
|
70
|
+
def get_items
|
71
|
+
self.items.to_a
|
53
72
|
end
|
54
73
|
|
55
|
-
|
74
|
+
def item_count
|
75
|
+
self.items.count
|
76
|
+
end
|
77
|
+
|
78
|
+
alias_method :count, :item_count
|
79
|
+
alias_method :size, :item_count
|
56
80
|
|
57
81
|
def log_history
|
58
82
|
# noinspection RubyResolve
|
@@ -71,16 +95,9 @@ module Libis
|
|
71
95
|
self.logs.build(msg)
|
72
96
|
end
|
73
97
|
|
74
|
-
def add_status_log(
|
98
|
+
def add_status_log(info)
|
75
99
|
# noinspection RubyResolve
|
76
|
-
self.logs.build(
|
77
|
-
task: (tasklist.join('/') rescue nil),
|
78
|
-
status: message
|
79
|
-
)
|
80
|
-
end
|
81
|
-
|
82
|
-
def status_label(status_entry)
|
83
|
-
"#{status_entry[:task].split('/').last rescue nil}#{status_entry[:status] rescue nil}"
|
100
|
+
self.logs.build(info)
|
84
101
|
end
|
85
102
|
|
86
103
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'libis/workflow/worker'
|
4
|
+
require 'sidekiq'
|
4
5
|
|
5
6
|
module Libis
|
6
7
|
module Workflow
|
@@ -8,12 +9,11 @@ module Libis
|
|
8
9
|
|
9
10
|
class Worker < Libis::Workflow::Worker
|
10
11
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
workflow
|
12
|
+
def get_job(job_config)
|
13
|
+
job_name = job_config.delete(:name)
|
14
|
+
job = ::Libis::Workflow::Mongoid::Job.find(name: job_name).first
|
15
|
+
raise RuntimeError.new "Workflow #{job_name} not found" unless job.is_a? ::Libis::Workflow::Mongoid::Job
|
16
|
+
job
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -5,33 +5,35 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
|
6
6
|
require 'libis/workflow/mongoid/version'
|
7
7
|
|
8
|
-
Gem::Specification.new do |
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = 'libis-workflow-mongoid'
|
10
|
+
spec.version = ::Libis::Workflow::Mongoid::VERSION
|
11
|
+
spec.date = Date.today.to_s
|
12
|
+
|
13
|
+
spec.summary = %q{Mongoid persistence for the LIBIS Workflow framework.}
|
14
|
+
spec.description = %q{Class implementations that use Mongoid storage for the LIBIS Workflow framework.}
|
15
|
+
|
16
|
+
spec.author = 'Kris Dekeyser'
|
17
|
+
spec.email = 'kris.dekeyser@libis.be'
|
18
|
+
spec.homepage = 'https://github.com/libis/workflow-mongoid'
|
19
|
+
spec.license = 'MIT'
|
20
|
+
|
21
|
+
spec.platform = Gem::Platform::JAVA if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
22
|
+
|
23
|
+
spec.files = `git ls-files -z`.split("\0")
|
24
|
+
spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
25
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
|
+
|
27
|
+
spec.require_paths = ['lib']
|
28
|
+
|
29
|
+
spec.add_runtime_dependency 'libis-workflow', '~> 2.0.beta'
|
30
|
+
|
31
|
+
spec.add_runtime_dependency 'mongoid', '~> 5.0'
|
32
|
+
spec.add_runtime_dependency 'sidekiq'
|
33
|
+
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
35
|
+
spec.add_development_dependency 'rake'
|
36
|
+
spec.add_development_dependency 'rspec'
|
37
|
+
spec.add_development_dependency 'coveralls'
|
36
38
|
|
37
39
|
end
|
data/spec/tasks/camelize_name.rb
CHANGED
data/spec/tasks/collect_files.rb
CHANGED
data/spec/workflow_spec.rb
CHANGED
@@ -89,10 +89,25 @@ describe 'TestWorkflow' do
|
|
89
89
|
it 'should camelize the workitem name' do
|
90
90
|
|
91
91
|
expect(run.options['CollectFiles'][:location]).to eq dirname
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
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
|
96
111
|
|
97
112
|
run.items.first.each_with_index do |x, i|
|
98
113
|
expect(x.name).to eq %w'TestDirItem.rb TestFileItem.rb TestItem.rb TestRun.rb'[i]
|
@@ -101,14 +116,13 @@ describe 'TestWorkflow' do
|
|
101
116
|
|
102
117
|
it 'should return expected debug output' do
|
103
118
|
|
104
|
-
expect(run.summary[:DEBUG]).to eq
|
105
|
-
expect(run.log_history.count).to eq
|
106
|
-
expect(run.status_log.count).to eq
|
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
|
107
122
|
item = run.items.first
|
108
|
-
expect(item.log_history.count).to eq
|
109
|
-
expect(item.status_log.count).to eq
|
110
|
-
expect(item.summary[:DEBUG]).to eq
|
111
|
-
|
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
|
112
126
|
|
113
127
|
sample_out = <<STR
|
114
128
|
DEBUG -- CollectFiles - TestRun : Processing subitem (1/1): items
|
@@ -118,20 +132,22 @@ DEBUG -- CollectFiles - items : Processing subitem (3/4): test_item.rb
|
|
118
132
|
DEBUG -- CollectFiles - items : Processing subitem (4/4): test_run.rb
|
119
133
|
DEBUG -- CollectFiles - items : 4 of 4 subitems passed
|
120
134
|
DEBUG -- CollectFiles - TestRun : 1 of 1 subitems passed
|
121
|
-
DEBUG -- ProcessFiles - TestRun :
|
122
|
-
DEBUG -- ProcessFiles -
|
135
|
+
DEBUG -- ProcessFiles - TestRun : Running subtask (1/2): ChecksumTester
|
136
|
+
DEBUG -- ProcessFiles/ChecksumTester - TestRun : Processing subitem (1/1): items
|
123
137
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (1/4): test_dir_item.rb
|
124
138
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (2/4): test_file_item.rb
|
125
139
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (3/4): test_item.rb
|
126
140
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (4/4): test_run.rb
|
127
141
|
DEBUG -- ProcessFiles/ChecksumTester - items : 4 of 4 subitems passed
|
128
|
-
DEBUG -- ProcessFiles -
|
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
|
129
145
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (1/4): test_dir_item.rb
|
130
146
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (2/4): test_file_item.rb
|
131
147
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (3/4): test_item.rb
|
132
148
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (4/4): test_run.rb
|
133
149
|
DEBUG -- ProcessFiles/CamelizeName - Items : 4 of 4 subitems passed
|
134
|
-
DEBUG -- ProcessFiles - TestRun : 1 of 1 subitems passed
|
150
|
+
DEBUG -- ProcessFiles/CamelizeName - TestRun : 1 of 1 subitems passed
|
135
151
|
STR
|
136
152
|
sample_out = sample_out.lines.to_a
|
137
153
|
output = logoutput.string.lines
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-workflow-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.beta.
|
4
|
+
version: 2.0.beta.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libis-workflow
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mongoid-indifferent-access
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: sidekiq
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +127,7 @@ files:
|
|
141
127
|
- lib/libis/workflow/mongoid.rb
|
142
128
|
- lib/libis/workflow/mongoid/base.rb
|
143
129
|
- lib/libis/workflow/mongoid/config.rb
|
130
|
+
- lib/libis/workflow/mongoid/dynamic.rb
|
144
131
|
- lib/libis/workflow/mongoid/job.rb
|
145
132
|
- lib/libis/workflow/mongoid/log_entry.rb
|
146
133
|
- lib/libis/workflow/mongoid/run.rb
|