scout-gear 10.11.4 → 10.11.7

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 (157) hide show
  1. checksums.yaml +4 -4
  2. data/.vimproject +17 -2
  3. data/VERSION +1 -1
  4. data/bin/scout +10 -10
  5. data/lib/scout/association/fields.rb +15 -15
  6. data/lib/scout/association/index.rb +6 -6
  7. data/lib/scout/association/item.rb +18 -8
  8. data/lib/scout/association.rb +4 -4
  9. data/lib/scout/entity/identifiers.rb +5 -5
  10. data/lib/scout/entity/property.rb +2 -2
  11. data/lib/scout/entity.rb +1 -1
  12. data/lib/scout/knowledge_base/description.rb +10 -10
  13. data/lib/scout/knowledge_base/entity.rb +6 -6
  14. data/lib/scout/knowledge_base/list.rb +1 -1
  15. data/lib/scout/knowledge_base/query.rb +4 -4
  16. data/lib/scout/knowledge_base/registry.rb +6 -6
  17. data/lib/scout/knowledge_base/traverse.rb +7 -40
  18. data/lib/scout/persist/engine/fix_width_table.rb +6 -6
  19. data/lib/scout/persist/engine/packed_index.rb +2 -2
  20. data/lib/scout/persist/engine/sharder.rb +4 -4
  21. data/lib/scout/persist/engine/tkrzw.rb +1 -1
  22. data/lib/scout/persist/engine/tokyocabinet.rb +2 -2
  23. data/lib/scout/persist/tsv/adapter/fix_width_table.rb +1 -1
  24. data/lib/scout/persist/tsv/adapter/packed_index.rb +1 -1
  25. data/lib/scout/persist/tsv/adapter/tkrzw.rb +1 -1
  26. data/lib/scout/persist/tsv/adapter/tokyocabinet.rb +3 -3
  27. data/lib/scout/persist/tsv/serialize.rb +3 -3
  28. data/lib/scout/persist/tsv.rb +1 -1
  29. data/lib/scout/semaphore.rb +100 -17
  30. data/lib/scout/tsv/annotation/repo.rb +4 -4
  31. data/lib/scout/tsv/annotation.rb +2 -2
  32. data/lib/scout/tsv/attach.rb +7 -7
  33. data/lib/scout/tsv/change_id/translate.rb +1 -1
  34. data/lib/scout/tsv/csv.rb +3 -3
  35. data/lib/scout/tsv/dumper.rb +8 -8
  36. data/lib/scout/tsv/index.rb +1 -1
  37. data/lib/scout/tsv/open.rb +3 -3
  38. data/lib/scout/tsv/stream.rb +2 -2
  39. data/lib/scout/tsv/traverse.rb +4 -4
  40. data/lib/scout/tsv/util/filter.rb +9 -9
  41. data/lib/scout/tsv/util/process.rb +2 -2
  42. data/lib/scout/tsv/util/reorder.rb +2 -2
  43. data/lib/scout/tsv/util/select.rb +3 -3
  44. data/lib/scout/tsv/util/unzip.rb +2 -2
  45. data/lib/scout/tsv/util.rb +1 -1
  46. data/lib/scout/tsv.rb +2 -2
  47. data/lib/scout/work_queue/socket.rb +3 -2
  48. data/lib/scout/work_queue/worker.rb +4 -4
  49. data/lib/scout/work_queue.rb +7 -7
  50. data/lib/scout/workflow/definition.rb +18 -16
  51. data/lib/scout/workflow/deployment/local.rb +81 -62
  52. data/lib/scout/workflow/deployment/orchestrator/batches.rb +66 -5
  53. data/lib/scout/workflow/deployment/orchestrator/chains.rb +47 -30
  54. data/lib/scout/workflow/deployment/orchestrator/rules.rb +3 -3
  55. data/lib/scout/workflow/deployment/orchestrator/workload.rb +11 -22
  56. data/lib/scout/workflow/deployment/scheduler/job.rb +34 -36
  57. data/lib/scout/workflow/deployment/scheduler/lfs.rb +1 -1
  58. data/lib/scout/workflow/deployment/scheduler/pbs.rb +4 -4
  59. data/lib/scout/workflow/deployment/scheduler/slurm.rb +2 -2
  60. data/lib/scout/workflow/deployment/scheduler.rb +23 -12
  61. data/lib/scout/workflow/deployment/trace.rb +2 -2
  62. data/lib/scout/workflow/documentation.rb +4 -4
  63. data/lib/scout/workflow/export.rb +1 -1
  64. data/lib/scout/workflow/path.rb +2 -2
  65. data/lib/scout/workflow/step/children.rb +1 -1
  66. data/lib/scout/workflow/step/dependencies.rb +36 -3
  67. data/lib/scout/workflow/step/info.rb +5 -19
  68. data/lib/scout/workflow/step/inputs.rb +1 -1
  69. data/lib/scout/workflow/step/progress.rb +2 -2
  70. data/lib/scout/workflow/step/provenance.rb +4 -4
  71. data/lib/scout/workflow/step/status.rb +23 -9
  72. data/lib/scout/workflow/step.rb +21 -19
  73. data/lib/scout/workflow/task/dependencies.rb +10 -3
  74. data/lib/scout/workflow/task/info.rb +3 -3
  75. data/lib/scout/workflow/task/inputs.rb +8 -8
  76. data/lib/scout/workflow/task.rb +37 -22
  77. data/lib/scout/workflow/usage.rb +13 -13
  78. data/lib/scout/workflow/util.rb +1 -1
  79. data/lib/scout/workflow.rb +6 -6
  80. data/scout-gear.gemspec +4 -3
  81. data/scout_commands/alias +1 -1
  82. data/scout_commands/batch/clean +12 -12
  83. data/scout_commands/batch/list +26 -25
  84. data/scout_commands/batch/tail +9 -5
  85. data/scout_commands/cat +1 -1
  86. data/scout_commands/doc +2 -2
  87. data/scout_commands/entity +4 -4
  88. data/scout_commands/find +1 -1
  89. data/scout_commands/kb/config +1 -1
  90. data/scout_commands/kb/entities +1 -1
  91. data/scout_commands/kb/list +1 -1
  92. data/scout_commands/kb/query +2 -2
  93. data/scout_commands/kb/register +1 -1
  94. data/scout_commands/kb/show +1 -1
  95. data/scout_commands/kb/traverse +1 -1
  96. data/scout_commands/log +6 -6
  97. data/scout_commands/resource/produce +2 -2
  98. data/scout_commands/resource/sync +1 -1
  99. data/scout_commands/system/clean +7 -7
  100. data/scout_commands/system/status +4 -4
  101. data/scout_commands/template +1 -1
  102. data/scout_commands/update +1 -1
  103. data/scout_commands/workflow/cmd +2 -1
  104. data/scout_commands/workflow/example +123 -0
  105. data/scout_commands/workflow/info +10 -1
  106. data/scout_commands/workflow/install +1 -1
  107. data/scout_commands/workflow/list +2 -2
  108. data/scout_commands/workflow/process +2 -2
  109. data/scout_commands/workflow/prov +3 -3
  110. data/scout_commands/workflow/task +36 -11
  111. data/scout_commands/workflow/trace +1 -1
  112. data/scout_commands/workflow/write_info +2 -2
  113. data/share/templates/command +1 -1
  114. data/test/scout/association/test_item.rb +5 -0
  115. data/test/scout/entity/test_property.rb +3 -3
  116. data/test/scout/knowledge_base/test_description.rb +1 -1
  117. data/test/scout/knowledge_base/test_traverse.rb +2 -2
  118. data/test/scout/persist/engine/test_packed_index.rb +6 -6
  119. data/test/scout/persist/test_tsv.rb +4 -4
  120. data/test/scout/persist/tsv/adapter/test_packed_index.rb +4 -4
  121. data/test/scout/persist/tsv/adapter/test_sharder.rb +23 -23
  122. data/test/scout/persist/tsv/adapter/test_tokyocabinet.rb +1 -1
  123. data/test/scout/persist/tsv/test_serialize.rb +1 -1
  124. data/test/scout/test_association.rb +1 -1
  125. data/test/scout/test_tsv.rb +2 -2
  126. data/test/scout/test_workflow.rb +2 -2
  127. data/test/scout/tsv/test_annotation.rb +4 -4
  128. data/test/scout/tsv/test_index.rb +1 -1
  129. data/test/scout/tsv/test_open.rb +2 -2
  130. data/test/scout/tsv/test_parser.rb +2 -2
  131. data/test/scout/tsv/test_stream.rb +1 -1
  132. data/test/scout/tsv/test_transformer.rb +1 -1
  133. data/test/scout/tsv/util/test_filter.rb +1 -1
  134. data/test/scout/tsv/util/test_melt.rb +1 -1
  135. data/test/scout/tsv/util/test_reorder.rb +1 -1
  136. data/test/scout/work_queue/test_socket.rb +3 -3
  137. data/test/scout/work_queue/test_worker.rb +2 -2
  138. data/test/scout/workflow/deployment/orchestrator/test_batches.rb +13 -3
  139. data/test/scout/workflow/deployment/orchestrator/test_chains.rb +15 -13
  140. data/test/scout/workflow/deployment/orchestrator/test_workload.rb +1 -1
  141. data/test/scout/workflow/deployment/test_local.rb +2 -2
  142. data/test/scout/workflow/deployment/test_scheduler.rb +1 -2
  143. data/test/scout/workflow/step/test_children.rb +1 -1
  144. data/test/scout/workflow/step/test_dependencies.rb +36 -1
  145. data/test/scout/workflow/step/test_info.rb +3 -35
  146. data/test/scout/workflow/step/test_load.rb +1 -1
  147. data/test/scout/workflow/step/test_provenance.rb +1 -1
  148. data/test/scout/workflow/step/test_status.rb +33 -1
  149. data/test/scout/workflow/task/test_dependencies.rb +9 -7
  150. data/test/scout/workflow/task/test_inputs.rb +1 -1
  151. data/test/scout/workflow/test_definition.rb +1 -1
  152. data/test/scout/workflow/test_documentation.rb +1 -1
  153. data/test/scout/workflow/test_entity.rb +2 -2
  154. data/test/scout/workflow/test_step.rb +13 -13
  155. data/test/scout/workflow/test_usage.rb +1 -1
  156. data/test/test_helper.rb +1 -1
  157. metadata +3 -2
@@ -14,7 +14,7 @@ row2 a a id3
14
14
  EOF
15
15
 
16
16
 
17
- tsv = Persist.persist("TEST Persist TSV", :tsv) do
17
+ tsv = Persist.persist("TEST Persist TSV", :tsv) do
18
18
  TmpFile.with_file(content) do |filename|
19
19
  TSV.open(filename)
20
20
  end
@@ -25,7 +25,7 @@ row2 a a id3
25
25
  assert_include tsv.keys, 'row1'
26
26
  assert_include tsv.keys, 'row2'
27
27
 
28
- tsv = Persist.persist("TEST Persist TSV", :tsv) do
28
+ tsv = Persist.persist("TEST Persist TSV", :tsv) do
29
29
  TmpFile.with_file(content) do |filename|
30
30
  TSV.open(filename)
31
31
  end
@@ -35,7 +35,7 @@ row2 a a id3
35
35
  assert_include tsv.keys, 'row2'
36
36
 
37
37
  assert_nothing_raised do
38
- tsv = Persist.persist("TEST Persist TSV", :tsv) do
38
+ tsv = Persist.persist("TEST Persist TSV", :tsv) do
39
39
  raise
40
40
  end
41
41
  end
@@ -76,7 +76,7 @@ row2 a a id3
76
76
 
77
77
  tsv.close
78
78
  assert_nothing_raised do
79
- tsv = Persist.persist("TEST Persist TSV", :HDB) do
79
+ tsv = Persist.persist("TEST Persist TSV", :HDB) do
80
80
  raise
81
81
  end
82
82
  end
@@ -16,16 +16,16 @@ class TestClass < Test::Unit::TestCase
16
16
 
17
17
  pi = PackedIndex.new(tmpfile, false)
18
18
  100.times do |i|
19
- assert_equal i, pi[i][0]
20
- assert_equal i+2, pi[i][1]
19
+ assert_equal i, pi[i][0]
20
+ assert_equal i+2, pi[i][1]
21
21
  end
22
22
  assert_equal nil, pi[100]
23
23
  assert_equal nil, pi[101]
24
24
 
25
25
  pi = Persist.open_pki tmpfile, false, %w(i i 23s f f f f f)
26
26
  100.times do |i|
27
- assert_equal i, pi[i][0]
28
- assert_equal i+2, pi[i][1]
27
+ assert_equal i, pi[i][0]
28
+ assert_equal i+2, pi[i][1]
29
29
  end
30
30
  assert_equal nil, pi[100]
31
31
  assert_equal nil, pi[101]
@@ -11,7 +11,7 @@ class TestSharder < Test::Unit::TestCase
11
11
 
12
12
  size = 10
13
13
  sharder = Persist.open_sharder(dir, true, :HDB, :path => dir, :shard_function => shard_function, :persist => true, :serializer => :float_array)
14
- size.times do |v|
14
+ size.times do |v|
15
15
  sharder[v.to_s] = [v, v*2]
16
16
  end
17
17
  assert_equal dir, sharder.persistence_path
@@ -97,15 +97,15 @@ id11,a11,b11
97
97
  size = 10
98
98
  sharder = Persist.tsv(dir,
99
99
  persist_options: {
100
- :engine => 'fwt',
101
- :path => dir,
100
+ :engine => 'fwt',
101
+ :path => dir,
102
102
  :serializer => :float,
103
- :range => false, :value_size => 64,
104
- :shard_function => shard_function,
103
+ :range => false, :value_size => 64,
104
+ :shard_function => shard_function,
105
105
  :pos_function => pos_function
106
106
  }
107
107
  ) do |db|
108
- size.times do |v|
108
+ size.times do |v|
109
109
  v = v + 1
110
110
  chr = "chr" << (v % 5).to_s
111
111
  key = chr + ":" << v.to_s
@@ -131,7 +131,7 @@ id11,a11,b11
131
131
 
132
132
  assert_equal 4.0, sharder["chr2:2"]
133
133
 
134
- assert_equal size, sharder.size
134
+ assert_equal size, sharder.size
135
135
  end
136
136
  end
137
137
 
@@ -147,19 +147,19 @@ id11,a11,b11
147
147
 
148
148
  size = 10
149
149
  chrs = (1..10).to_a
150
- sharder = Persist.tsv(dir,
151
- engine: 'pki',
152
- :persist_options => {
150
+ sharder = Persist.tsv(dir,
151
+ engine: 'pki',
152
+ :persist_options => {
153
153
  :pattern => %w(f f),
154
- :range => false,
155
- :value_size => 64,
156
- :file => dir,
154
+ :range => false,
155
+ :value_size => 64,
156
+ :file => dir,
157
157
  :shard_function => shard_function,
158
158
  :pos_function => pos_function
159
159
  }) do |db|
160
160
  chrs.each do |c|
161
- size.times do |v|
162
- v = v
161
+ size.times do |v|
162
+ v = v
163
163
  chr = "chr" << c.to_s
164
164
  key = chr + ":" << v.to_s
165
165
  db[key] = [v, v*2]
@@ -184,7 +184,7 @@ id11,a11,b11
184
184
  assert_equal count, size*chrs.length
185
185
 
186
186
  sharder = Persist.open_sharder(
187
- dir, false, 'pki',
187
+ dir, false, 'pki',
188
188
  {:pattern => %w(f f), :file => dir, :range => false, :value_size => 64, :pos_function => pos_function}, &shard_function
189
189
  )
190
190
 
@@ -209,7 +209,7 @@ id11,a11,b11
209
209
  chrs = (1..10).to_a
210
210
  sharder = Persist.tsv(dir, persist_options: {:pattern => %w(f), :range => false, :value_size => 64, :engine => 'pki', :file => dir, :shard_function => shard_function, :pos_function => pos_function}) do |db|
211
211
  chrs.each do |c|
212
- size.times do |v|
212
+ size.times do |v|
213
213
  v = v + 1
214
214
  chr = "chr" << c.to_s
215
215
  key = chr + ":" << (v*2).to_s
@@ -249,15 +249,15 @@ id11,a11,b11
249
249
 
250
250
  size = 10
251
251
  sharder = Persist.persist_tsv("ShardTSV_FWT", nil, {}, {
252
- :engine => 'fwt',
253
- :path => dir,
252
+ :engine => 'fwt',
253
+ :path => dir,
254
254
  :serializer => :float,
255
- :range => false, :value_size => 64,
256
- :shard_function => shard_function,
255
+ :range => false, :value_size => 64,
256
+ :shard_function => shard_function,
257
257
  :pos_function => pos_function
258
258
  }
259
259
  ) do |db|
260
- size.times do |v|
260
+ size.times do |v|
261
261
  v = v + 1
262
262
  chr = "chr" << (v % 5).to_s
263
263
  key = chr + ":" << v.to_s
@@ -282,7 +282,7 @@ id11,a11,b11
282
282
 
283
283
  assert_equal 4.0, sharder["chr2:2"]
284
284
 
285
- assert_equal size, sharder.size
285
+ assert_equal size, sharder.size
286
286
  end
287
287
  end
288
288
 
@@ -112,7 +112,7 @@ row2 0.1 4.5 0
112
112
  assert_equal [0.2, 0.3, 0], tsv2["row1"]
113
113
  assert_equal TSVAdapter::FloatArraySerializer, tsv2.serializer
114
114
  end
115
-
115
+
116
116
  end
117
117
 
118
118
  def test_float_double
@@ -6,7 +6,7 @@ class TestClass < Test::Unit::TestCase
6
6
  m = TSVAdapter.serializer_module :marshal
7
7
  v = [1, :a]
8
8
  d = m.dump(v)
9
- assert_equal v, m.load(d)
9
+ assert_equal v, m.load(d)
10
10
  end
11
11
  end
12
12
 
@@ -40,7 +40,7 @@ class TestAssociation < Test::Unit::TestCase
40
40
  assert_equal "2021", database["Clei"]["Date"]
41
41
  assert_include database.key_field, "Alias"
42
42
  end
43
-
43
+
44
44
  def test_brothers_id
45
45
  database = Association.database(datadir_test.person.brothers, :source => "Older=~Older (Alias)=>Name", :target => "Younger=~Younger (Alias)=>ID")
46
46
  assert_equal '001', database["Isabel"]["Younger"]
@@ -27,7 +27,7 @@ row4 a a id3
27
27
  tsv = TmpFile.with_file(content) do |filename|
28
28
  TSV.open(filename)
29
29
  end
30
-
30
+
31
31
  TmpFile.with_file(content2) do |filename|
32
32
  TSV.open(filename, :data => tsv)
33
33
  end
@@ -228,7 +228,7 @@ row2 A AA AAA
228
228
 
229
229
  def test_flat_key
230
230
  content =<<-EOF
231
- #Id ValueA
231
+ #Id ValueA
232
232
  row1 a aa aaa
233
233
  row2 b bbb bbbb bb aa
234
234
  EOF
@@ -42,7 +42,7 @@ class TestWorkflow < Test::Unit::TestCase
42
42
  end
43
43
 
44
44
  dep :prepare_batter
45
- task :bake_muffin_tray => :string do
45
+ task :bake_muffin_tray => :string do
46
46
  bake(step(:prepare_batter).load)
47
47
  end
48
48
 
@@ -53,7 +53,7 @@ class TestWorkflow < Test::Unit::TestCase
53
53
  batter = mix(whisked_eggs, Pantry.flour.produce)
54
54
 
55
55
  if add_bluberries
56
- batter = mix(batter, Pantry.blueberries.produce)
56
+ batter = mix(batter, Pantry.blueberries.produce)
57
57
  end
58
58
 
59
59
  batter
@@ -15,10 +15,10 @@ class TestAnnotationTSV < Test::Unit::TestCase
15
15
  AnnotationClass.setup(str1, :c11, :c12)
16
16
  AnnotationClass.setup(str2, :c21, :c22)
17
17
 
18
- assert_equal str1, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str1.annotation_id + "#0"]["literal"]
19
- assert_equal :c11, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str1.annotation_id + "#0"]["code"]
20
- assert_equal str2, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str2.annotation_id + "#1"]["literal"]
21
- assert_equal :c21, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str2.annotation_id + "#1"]["code"]
18
+ assert_equal str1, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str1.annotation_id + "#0"]["literal"]
19
+ assert_equal :c11, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str1.annotation_id + "#0"]["code"]
20
+ assert_equal str2, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str2.annotation_id + "#1"]["literal"]
21
+ assert_equal :c21, Annotation.tsv([str1, str2], :all).tap{|t| t.unnamed = false}[str2.annotation_id + "#1"]["code"]
22
22
  assert_equal "c11", JSON.parse(Annotation.tsv([str1, str2], :code, :JSON).tap{|t| t.unnamed = false}[str1.annotation_id + "#0"]["JSON"])["code"]
23
23
  end
24
24
 
@@ -15,7 +15,7 @@ class TestTSVIndex < Test::Unit::TestCase
15
15
  end
16
16
 
17
17
  tsv = tsv.slice ["Start", "End"]
18
-
18
+
19
19
  tsv
20
20
  end
21
21
 
@@ -78,7 +78,7 @@ class TestOpenTraverse < Test::Unit::TestCase
78
78
  num_lines = 100
79
79
  lines = num_lines.times.collect{|i| "line-#{i}" }
80
80
 
81
- assert_raise ScoutException do
81
+ assert_raise ScoutException do
82
82
  i = 0
83
83
  Log.with_severity 7 do
84
84
  dumper = TSV::Dumper.new :key_field => "Key", :fields => ["Value"], :type => :single
@@ -125,7 +125,7 @@ row2 aa bb cc
125
125
 
126
126
  s = StringIO.new text
127
127
  collapsed = TSV.collapse_stream(s)
128
- tsv = TSV.open collapsed
128
+ tsv = TSV.open collapsed
129
129
  assert_equal ["A", "a"], tsv["row1"][0]
130
130
  assert_equal ["BB", "bb"], tsv["row2"][1]
131
131
  end
@@ -15,7 +15,7 @@ class TestTSVParser < Test::Unit::TestCase
15
15
  def test_parse_line_key
16
16
  line = (0..10).to_a * "\t"
17
17
  key, values = TSV.parse_line(line, key: 2)
18
-
18
+
19
19
  assert_equal "2", key
20
20
  assert_equal %w(0 1 3 4 5 6 7 8 9 10), values
21
21
  end
@@ -33,7 +33,7 @@ class TestTSVParser < Test::Unit::TestCase
33
33
  num = 10_000
34
34
  txt = num.times.inject(nil) do |acc,i|
35
35
  (acc.nil? ? "" : acc << "\n") << (0..10).collect{|v| v == 0 ? i : [v,v] * "|" } * "\t"
36
- end
36
+ end
37
37
 
38
38
  txt = StringIO.new(([txt] * (10))*"\n")
39
39
  Misc.benchmark 5 do
@@ -14,7 +14,7 @@ row3 AAA BBB CCC
14
14
 
15
15
  text2=<<-EOF
16
16
  #: :sep=" "
17
- #Row Labela Labelb
17
+ #Row Labela Labelb
18
18
  row1 a b
19
19
  row2 aa bb
20
20
  row3 aaa bbb
@@ -26,7 +26,7 @@ row2 A2|A22 B2|B22
26
26
 
27
27
  assert_equal %w(A1 A11 B1 B11), tsv['row1']
28
28
  end
29
-
29
+
30
30
  end
31
31
 
32
32
  def test_traverse
@@ -182,7 +182,7 @@ row2 A B
182
182
  tsv.pop_filter
183
183
  assert tsv.filename !~ /ValueA/
184
184
  end
185
-
185
+
186
186
  end
187
187
  end
188
188
 
@@ -11,7 +11,7 @@ class TestClass < Test::Unit::TestCase
11
11
  10,20,30
12
12
  20,40,60
13
13
  EOF
14
-
14
+
15
15
  target =<<-EOF
16
16
  #: :sep=,#:type=:list
17
17
  #ID,Size,Time,System
@@ -83,7 +83,7 @@ row1 a b Id1
83
83
  row2 A B Id3
84
84
  row3 a C Id4
85
85
  EOF
86
-
86
+
87
87
  TmpFile.with_file(content) do |filename|
88
88
  tsv = TSV.open(filename, :sep => /\s+/)
89
89
 
@@ -6,7 +6,7 @@ class TestSocket < Test::Unit::TestCase
6
6
  class DoneProcessing end
7
7
 
8
8
  def test_simple
9
- socket = WorkQueue::Socket.new
9
+ socket = WorkQueue::Socket.new
10
10
 
11
11
  socket.write 1
12
12
  socket.write 2
@@ -25,7 +25,7 @@ class TestSocket < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def __test_speed
28
- socket = WorkQueue::Socket.new
28
+ socket = WorkQueue::Socket.new
29
29
 
30
30
  num = 50_000
31
31
 
@@ -33,7 +33,7 @@ class TestSocket < Test::Unit::TestCase
33
33
  num.times do |i|
34
34
  socket.write nil
35
35
  end
36
- socket.write DoneProcessing.new
36
+ socket.write DoneProcessing.new
37
37
  end
38
38
 
39
39
  bar = Log::ProgressBar.new num
@@ -46,7 +46,7 @@ class TestQueueWorker < Test::Unit::TestCase
46
46
  Open.consume_stream(sout, false, outfile)
47
47
  txt = Open.read(outfile)
48
48
  pid_list = txt.split("\n")
49
-
49
+
50
50
  assert_equal (num_lines + 2) * num_workers, pid_list.length
51
51
 
52
52
  assert_nothing_raised do
@@ -122,7 +122,7 @@ class TestQueueWorker < Test::Unit::TestCase
122
122
  end
123
123
  end
124
124
 
125
- read = Thread.new do
125
+ read = Thread.new do
126
126
  begin
127
127
  while obj = output.read
128
128
  if DoneProcessing === obj
@@ -35,7 +35,7 @@ module TestWFC
35
35
  dep :c1
36
36
  dep :c2
37
37
  task :c3 => :string do self.task_name.to_s end
38
-
38
+
39
39
  dep_task :c4, TestWFC, :c3
40
40
  end
41
41
 
@@ -99,15 +99,25 @@ TestWFC:
99
99
  skip: true
100
100
  log: 4
101
101
  time: 10s
102
+ c4:
103
+ skip: true
102
104
  EOF
103
105
 
104
106
  def test_chain_batches
105
107
  job = TestWFD.job(:d1, nil)
106
108
  job.recursive_clean
107
109
 
108
- job_chains_map = Workflow::Orchestrator.job_chains(RULES, job)
110
+ job_chain_list = []
111
+
112
+ job_chains = Workflow::Orchestrator.job_chains(RULES, job)
113
+ job_chains.each do |chain,list|
114
+ list.each do |info|
115
+ job_chain_list << [chain,info]
116
+ end
117
+ end
118
+
109
119
  workload = Workflow::Orchestrator.job_workload(job)
110
- batches = Workflow::Orchestrator.chain_batches(RULES, job_chains_map, workload)
120
+ batches = Workflow::Orchestrator.chain_batches(RULES, job_chain_list, workload)
111
121
  assert_equal 3, batches.length
112
122
  end
113
123
 
@@ -36,7 +36,7 @@ module TestWFC
36
36
  dep :c1
37
37
  dep :c2
38
38
  task :c3 => :string do self.task_name.to_s end
39
-
39
+
40
40
  dep_task :c4, TestWFC, :c3
41
41
  end
42
42
 
@@ -110,11 +110,10 @@ TestWFC:
110
110
  job.recursive_clean
111
111
 
112
112
  job_chains = Workflow::Orchestrator.job_chains(RULES, job)
113
- job_chains = NamedArray.setup(job_chains, job_chains.collect{|n,i| n })
114
113
 
115
- assert_equal %w(chain_a_b chain_a), job_chains.fields
116
- assert_equal 3, job_chains["chain_a"].last[:jobs].length
117
- assert_equal job, job_chains["chain_a"].last[:top_level]
114
+ assert_equal %w(chain_a_b chain_a), job_chains.keys
115
+ assert_equal 3, job_chains["chain_a"].first[:jobs].length
116
+ assert_equal job, job_chains["chain_a"].first[:top_level]
118
117
  end
119
118
 
120
119
  def test_job_chain_b
@@ -122,9 +121,7 @@ TestWFC:
122
121
  job.recursive_clean
123
122
 
124
123
  job_chains = Workflow::Orchestrator.job_chains(RULES, job)
125
- job_chains = NamedArray.setup(job_chains, job_chains.collect{|n,i| n })
126
124
 
127
- assert_equal %w(chain_a chain_b chain_b2 chain_a_b).sort, job_chains.fields.sort
128
125
 
129
126
  assert_equal 2, job_chains["chain_a"].last[:jobs].length
130
127
  assert_equal job.step("a2"), job_chains["chain_a"].last[:top_level]
@@ -138,18 +135,23 @@ TestWFC:
138
135
  assert_equal 4, job_chains["chain_a_b"].last[:jobs].length
139
136
  assert_equal job, job_chains["chain_a_b"].last[:top_level]
140
137
  end
141
-
138
+
142
139
  def test_job_chains_double
143
140
  job = TestWFD.job(:d1, nil)
144
141
  job.recursive_clean
145
142
 
143
+ rules = YAML.load <<-EOF
144
+ chains:
145
+ chain_a:
146
+ workflow: TestWFA
147
+ tasks: a1, a2, a3
148
+ EOF
149
+
146
150
  job_chains = Workflow::Orchestrator.job_chains(RULES, job)
147
- job_chains = NamedArray.setup(job_chains, job_chains.collect{|n,i| n })
148
151
 
149
- assert_equal 2, job_chains.select{|n,i| n == 'chain_a' }.length
150
- assert_equal ["First c3", "Second c3"].sort, job_chains.
151
- select{|n,i| n == 'chain_a' }.
152
- collect{|n,i| i[:top_level].name }.sort
152
+ assert_equal 2, job_chains['chain_a'].length
153
+ assert_equal ["First c3", "Second c3"].sort, job_chains['chain_a'].
154
+ collect{|i| i[:top_level].name }.flatten.sort
153
155
 
154
156
  assert_equal 1, job_chains.select{|n,i| n == 'chain_d' }.length
155
157
  end
@@ -34,7 +34,7 @@ module TestWFC
34
34
  dep :c1
35
35
  dep :c2
36
36
  task :c3 => :string do self.task_name.to_s end
37
-
37
+
38
38
  dep_task :c4, TestWFC, :c3
39
39
  end
40
40
 
@@ -3,7 +3,7 @@ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1
3
3
 
4
4
  require 'scout/workflow/deployment/trace'
5
5
  module TestWF
6
- extend Workflow
6
+ extend Workflow
7
7
  self.name = "TestWF"
8
8
 
9
9
  MULT = 0.1
@@ -83,7 +83,7 @@ TestWF:
83
83
  second_cpus[second] = cpus
84
84
  end
85
85
 
86
- assert Misc.mean(second_cpus.values) > 15
86
+ assert Misc.mean(second_cpus.values) > 15
87
87
  assert Misc.mean(second_cpus.values) < 30
88
88
  end
89
89
 
@@ -6,7 +6,7 @@ require 'scout/workflow/deployment/scheduler/slurm'
6
6
  class TestScheduler < Test::Unit::TestCase
7
7
  setup do
8
8
  module TestWF
9
- extend Workflow
9
+ extend Workflow
10
10
  self.name = "TestWF"
11
11
 
12
12
  MULT ||= 0.1
@@ -69,7 +69,6 @@ TestWF:
69
69
 
70
70
  batches = Workflow::Orchestrator.job_batches(rules, jobs)
71
71
  dirs = Workflow::Scheduler.process_batches(batches, dry_run: true)
72
- iii dirs
73
72
  end
74
73
  end
75
74
 
@@ -7,7 +7,7 @@ class TestStepChildren < Test::Unit::TestCase
7
7
  def test_child
8
8
  TmpFile.with_file do |tmpfile|
9
9
  step = Step.new tmpfile, ["12"] do |s|
10
- pid = child do
10
+ pid = child do
11
11
  Open.write(self.file(:somefile), 'TEST')
12
12
  end
13
13
  Process.waitpid pid
@@ -60,7 +60,7 @@ class TestStepDependencies < Test::Unit::TestCase
60
60
  end
61
61
  step1.type = :array
62
62
 
63
- step2 = Step.new tmpfile.step2 do
63
+ step2 = Step.new tmpfile.step2 do
64
64
  step1 = dependencies.first
65
65
  raise ScoutException unless step1.streaming?
66
66
  stream = step1.stream
@@ -115,5 +115,40 @@ class TestStepDependencies < Test::Unit::TestCase
115
115
  assert_equal "2", step2.recursive_inputs["input1"]
116
116
  assert_equal "1", step3.recursive_inputs["input1"]
117
117
  end
118
+
119
+ def test_overriden_fixed
120
+ TmpFile.with_file("HELLO") do |file|
121
+ wf = Module.new do
122
+ extend Workflow
123
+
124
+ self.name = "TestWF"
125
+
126
+ task :message => :string do
127
+ "HI"
128
+ end
129
+
130
+ dep :message
131
+ task :say => :string do
132
+ "I say #{step(:message).load}"
133
+ end
134
+
135
+ task_alias :say_hello, self, :say, "TestWF#message" => file, :not_overriden => true
136
+ end
137
+
138
+ assert_equal "I say HI", wf.job(:say).run
139
+
140
+ job1 = wf.job(:say, "TestWF#message" => file)
141
+ assert_equal "I say HELLO", job1.run
142
+
143
+ job2 = wf.job(:say_hello)
144
+ assert_equal "I say HELLO", job2.run
145
+
146
+ assert job1.overriden?
147
+ refute job2.overriden?
148
+
149
+ assert job1.overrider_deps.any?
150
+ refute job2.overrider_deps.any?
151
+ end
152
+ end
118
153
  end
119
154
 
@@ -25,7 +25,7 @@ class TestStepInfo < Test::Unit::TestCase
25
25
  assert_equal 2, step1.exec
26
26
  assert_equal 2, step1.run
27
27
 
28
- step2 = Step.new tmpfile.step2 do
28
+ step2 = Step.new tmpfile.step2 do
29
29
  step1 = dependencies.first
30
30
  step1.inputs.first + " has " + step1.load.to_s + " characters"
31
31
  end
@@ -49,6 +49,8 @@ class TestStepInfo < Test::Unit::TestCase
49
49
 
50
50
  step1.run
51
51
 
52
+ step1 = Step.new tmpfile.step1
53
+
52
54
  refute Path === step1.info[:inputs][0]
53
55
 
54
56
  end
@@ -70,38 +72,4 @@ class TestStepInfo < Test::Unit::TestCase
70
72
  end
71
73
  end
72
74
 
73
- def test_overriden_fixed
74
- TmpFile.with_file("HELLO") do |file|
75
- wf = Module.new do
76
- extend Workflow
77
-
78
- self.name = "TestWF"
79
-
80
- task :message => :string do
81
- "HI"
82
- end
83
-
84
- dep :message
85
- task :say => :string do
86
- "I say #{step(:message).load}"
87
- end
88
-
89
- task_alias :say_hello, self, :say, "TestWF#message" => file, :not_overriden => true
90
- end
91
-
92
- assert_equal "I say HI", wf.job(:say).run
93
-
94
- job1 = wf.job(:say, "TestWF#message" => file)
95
- assert_equal "I say HELLO", job1.run
96
-
97
- job2 = wf.job(:say_hello)
98
- assert_equal "I say HELLO", job2.run
99
-
100
- assert job1.overriden?
101
- refute job2.overriden?
102
-
103
- assert job1.overriden_deps.any?
104
- refute job2.overriden_deps.any?
105
- end
106
- end
107
75
  end
@@ -10,7 +10,7 @@ class TestStepLoad < Test::Unit::TestCase
10
10
  s.length
11
11
  end
12
12
 
13
- step2 = Step.new tmpfile.step2 do
13
+ step2 = Step.new tmpfile.step2 do
14
14
  step1 = dependencies.first
15
15
  step1.inputs.first + " has " + step1.load.to_s + " characters"
16
16
  end