scout-gear 10.11.6 → 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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/.vimproject +16 -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 +78 -3
  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 +2 -2
  48. data/lib/scout/work_queue/worker.rb +4 -4
  49. data/lib/scout/work_queue.rb +5 -5
  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 +19 -17
  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 +3 -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/info +1 -1
  104. data/scout_commands/workflow/install +1 -1
  105. data/scout_commands/workflow/list +2 -2
  106. data/scout_commands/workflow/process +2 -2
  107. data/scout_commands/workflow/prov +3 -3
  108. data/scout_commands/workflow/task +36 -11
  109. data/scout_commands/workflow/trace +1 -1
  110. data/scout_commands/workflow/write_info +2 -2
  111. data/share/templates/command +1 -1
  112. data/test/scout/association/test_item.rb +5 -0
  113. data/test/scout/entity/test_property.rb +3 -3
  114. data/test/scout/knowledge_base/test_description.rb +1 -1
  115. data/test/scout/knowledge_base/test_traverse.rb +2 -2
  116. data/test/scout/persist/engine/test_packed_index.rb +6 -6
  117. data/test/scout/persist/test_tsv.rb +4 -4
  118. data/test/scout/persist/tsv/adapter/test_packed_index.rb +4 -4
  119. data/test/scout/persist/tsv/adapter/test_sharder.rb +23 -23
  120. data/test/scout/persist/tsv/adapter/test_tokyocabinet.rb +1 -1
  121. data/test/scout/persist/tsv/test_serialize.rb +1 -1
  122. data/test/scout/test_association.rb +1 -1
  123. data/test/scout/test_tsv.rb +2 -2
  124. data/test/scout/test_workflow.rb +2 -2
  125. data/test/scout/tsv/test_annotation.rb +4 -4
  126. data/test/scout/tsv/test_index.rb +1 -1
  127. data/test/scout/tsv/test_open.rb +2 -2
  128. data/test/scout/tsv/test_parser.rb +2 -2
  129. data/test/scout/tsv/test_stream.rb +1 -1
  130. data/test/scout/tsv/test_transformer.rb +1 -1
  131. data/test/scout/tsv/util/test_filter.rb +1 -1
  132. data/test/scout/tsv/util/test_melt.rb +1 -1
  133. data/test/scout/tsv/util/test_reorder.rb +1 -1
  134. data/test/scout/work_queue/test_socket.rb +3 -3
  135. data/test/scout/work_queue/test_worker.rb +2 -2
  136. data/test/scout/workflow/deployment/orchestrator/test_batches.rb +13 -3
  137. data/test/scout/workflow/deployment/orchestrator/test_chains.rb +15 -13
  138. data/test/scout/workflow/deployment/orchestrator/test_workload.rb +1 -1
  139. data/test/scout/workflow/deployment/test_local.rb +2 -2
  140. data/test/scout/workflow/deployment/test_scheduler.rb +1 -2
  141. data/test/scout/workflow/step/test_children.rb +1 -1
  142. data/test/scout/workflow/step/test_dependencies.rb +36 -1
  143. data/test/scout/workflow/step/test_info.rb +3 -35
  144. data/test/scout/workflow/step/test_load.rb +1 -1
  145. data/test/scout/workflow/step/test_provenance.rb +1 -1
  146. data/test/scout/workflow/step/test_status.rb +33 -1
  147. data/test/scout/workflow/task/test_dependencies.rb +9 -7
  148. data/test/scout/workflow/task/test_inputs.rb +1 -1
  149. data/test/scout/workflow/test_definition.rb +1 -1
  150. data/test/scout/workflow/test_documentation.rb +1 -1
  151. data/test/scout/workflow/test_entity.rb +2 -2
  152. data/test/scout/workflow/test_step.rb +13 -13
  153. data/test/scout/workflow/test_usage.rb +1 -1
  154. data/test/test_helper.rb +1 -1
  155. metadata +2 -2
@@ -89,7 +89,7 @@ job = workflow.job(task_name, jobname, job_inputs)
89
89
  job.recursive_clean if recursive_clean
90
90
  job.clean if clean
91
91
 
92
- if clean_task
92
+ if clean_task
93
93
  ENV["SCOUT_UPDATE"] = 'true'
94
94
  clean_task.split(",").each do |clean_task|
95
95
  if clean_task.include? "#"
@@ -99,12 +99,13 @@ if clean_task
99
99
  job.rec_dependencies.each do |dep|
100
100
  next unless dep.task_name.to_s == clean_task.to_s
101
101
  next unless clean_workflow.nil? || clean_workflow == dep.workflow.to_s
102
- dep.clean
102
+ dep.clean
103
103
  dep.set_info :status, :cleaned
104
104
  end
105
105
 
106
106
  job.clean if (job.task_name.to_s == clean_task.to_s) || ! job.updated?
107
107
  end
108
+
108
109
  end
109
110
 
110
111
  if provenance
@@ -123,6 +124,8 @@ elsif save_inputs
123
124
  else
124
125
  require 'scout/workflow/deployment'
125
126
 
127
+ Workflow::Orchestrator.prepare_for_execution(job)
128
+
126
129
  if deploy_rules.nil?
127
130
  rules = Workflow::Orchestrator.load_rules_for_job(job)
128
131
  else
@@ -138,32 +141,54 @@ else
138
141
  puts save_inputs
139
142
  exit
140
143
  end
141
- when 'dry', 'dryrun', 'debug'
144
+ when 'very_dry', 'vdry'
142
145
  batches = Workflow::Orchestrator.job_batches rules, job
146
+ batches = Workflow::Orchestrator.clean_batches batches
147
+ batches = Workflow::Orchestrator.sort_batches batches
148
+ batches.each do |batch|
149
+ top = batch[:top_level]
150
+ puts top.short_path
151
+ end
152
+ puts
153
+ puts "#{batches.length} batches"
154
+ exit 0
155
+ when 'dry', 'dryrun', 'dry_run', 'debug'
156
+ batches = Workflow::Orchestrator.job_batches rules, job
157
+ batches = Workflow::Orchestrator.sort_batches batches
143
158
  batches.each do |batch|
144
159
  top = batch[:top_level]
145
160
  jobs = batch[:jobs]
146
- puts Log.color :title, Log.fingerprint(top)
147
- puts batch[:rules].to_yaml
148
161
  deps = batch[:deps].collect{|dep| dep[:top_level] }
162
+ other = jobs - [top]
163
+ overriden = top.overriden?
149
164
  provided_inputs = jobs.inject({}){|acc,j| acc = IndiferentHash.add_defaults acc, j.provided_inputs }
165
+
166
+ puts Log.color :title, top.short_path
167
+ puts Log.color :subtitle, 'Other jobs: ' + Log.color(:blue, other.collect{|d| d.short_path}.uniq * ', ' ) if other.any?
168
+ puts Log.color :subtitle, 'Dependencies: ' + Log.color(:blue, deps.collect{|d| d.short_path}.uniq * ', ' ) if deps.any?
169
+ puts Log.color :subtitle, 'Overriden: ' + 'true' if overriden
170
+ batch[:rules].each do |k,v|
171
+ puts Log.color(:cyan, k + ": ") + v.to_json
172
+ end
150
173
  provided_inputs.each do |i,v|
151
174
  puts Log.color :green, "#{i}: " + Log.color(:blue, Log.fingerprint(v))
152
175
  end
153
- other = jobs - [top]
154
- puts Log.color :subtitle, 'Other jobs: ' + Log.color(:blue, other.collect{|d| d.short_path}.uniq * ', ' ) if other.any?
155
- puts Log.color :subtitle, 'Dependencies: ' + Log.color(:blue, deps.collect{|d| d.short_path}.uniq * ', ' ) if deps.any?
156
176
  end
177
+ puts
178
+ puts "#{batches.length} batches"
157
179
  exit 0
158
180
  when "serial"
159
- job.run(true)
160
- when "local"
181
+ job.run(true)
182
+ when "local", "workers"
161
183
  Workflow::LocalExecutor.produce job, rules
162
184
  when 'batch', 'sched', 'cluster', "slurm", 'pbs', 'lsf'
163
185
  Workflow::Scheduler.produce job, rules
164
186
  exit 0
187
+ when 'single_batch', 'single'
188
+ Workflow::Scheduler.produce_single_batch job, rules
189
+ exit 0
165
190
  else
166
- raise 'Use scout-camp instead of scout' unless defined? OffsiteStep
191
+ raise "Deploy '#{deploy}' not standard, assumed to be a server name; use scout-camp instead of scout" unless defined? OffsiteStep
167
192
  if deploy.end_with?('-batch')
168
193
  server = deploy.sub('-batch','')
169
194
  OffsiteStep.setup(job, server: server, batch: true)
@@ -21,7 +21,7 @@ $ #{$0} [<options>] <job-result>
21
21
  EOF
22
22
  if options[:help]
23
23
  if defined? scout_usage
24
- scout_usage
24
+ scout_usage
25
25
  else
26
26
  puts SOPT.doc
27
27
  end
@@ -16,7 +16,7 @@ $ #{$0} <job-result> <key> <value>
16
16
  EOF
17
17
  if options[:help]
18
18
  if defined? scout_usage
19
- scout_usage
19
+ scout_usage
20
20
  else
21
21
  puts SOPT.doc
22
22
  end
@@ -63,7 +63,7 @@ if recursive && step.info[:archived_info]
63
63
  info[key] = value if (force || ! info.include?(key)) && (!check_pid || info[:pid].to_s == pid and info[:pid_hostname] == host)
64
64
  rescue
65
65
  Log.warn "Could no set info #{key} for archived_dep #{info[:path]}: #{$!.message}"
66
- end
66
+ end
67
67
  end
68
68
  step.set_info :archived_info, ad
69
69
  end
@@ -14,7 +14,7 @@ $ #{$0} [<options>] <filename> [<other|->]*
14
14
  EOF
15
15
  if options[:help]
16
16
  if defined? scout_usage
17
- scout_usage
17
+ scout_usage
18
18
  else
19
19
  puts SOPT.doc
20
20
  end
@@ -9,6 +9,11 @@ class TestAssociationItem < Test::Unit::TestCase
9
9
  assert TSV === AssociationItem.incidence(pairs)
10
10
  assert_equal 2, AssociationItem.incidence(pairs).length
11
11
  assert_equal 2, AssociationItem.incidence(pairs).fields.length
12
+
13
+ associations = AssociationItem.setup(pairs)
14
+ associations.extend AnnotatedArray
15
+
16
+ assert_equal 2, associations.incidence.fields.length
12
17
  end
13
18
 
14
19
  def test_brothers
@@ -70,7 +70,7 @@ class TestEntityProperty < Test::Unit::TestCase
70
70
  end
71
71
 
72
72
  property :annotation_list => :single do
73
- self.chars.to_a.collect{|c|
73
+ self.chars.to_a.collect{|c|
74
74
  ReversableString.setup(c)
75
75
  }
76
76
  end
@@ -80,11 +80,11 @@ class TestEntityProperty < Test::Unit::TestCase
80
80
  end
81
81
 
82
82
  $processed_multiple = []
83
- property :multiple_annotation_list => :multiple do
83
+ property :multiple_annotation_list => :multiple do
84
84
  $processed_multiple.concat self
85
85
  res = {}
86
86
  self.collect do |e|
87
- e.chars.to_a.collect{|c|
87
+ e.chars.to_a.collect{|c|
88
88
  ReversableString.setup(c)
89
89
  }
90
90
  end
@@ -46,7 +46,7 @@ Sibling relationships.
46
46
  assert_include kb.description(:brothers), "Sibling relationships."
47
47
  end
48
48
  end
49
-
49
+
50
50
  def test_full_description
51
51
  TmpFile.with_dir do |dir|
52
52
  brothers = datafile_test(:person).brothers
@@ -126,8 +126,8 @@ end
126
126
  #
127
127
  # kb.register :gene_ages, datadir_test.gene_ages, :source => "=>Associated Gene Name"
128
128
  #
129
- # kb.register :CollecTRI, datadir_test.CollecTRI,
130
- # :source => "Transcription Factor=~Associated Gene Name",
129
+ # kb.register :CollecTRI, datadir_test.CollecTRI,
130
+ # :source => "Transcription Factor=~Associated Gene Name",
131
131
  # :target => "Target Gene=~Associated Gene Name",
132
132
  # :fields => ["[ExTRI] Confidence", "[ExTRI] PMID"]
133
133
  #
@@ -14,8 +14,8 @@ class TestClass < Test::Unit::TestCase
14
14
  pi.close
15
15
  pi = PackedIndex.new(tmpfile, false)
16
16
  100.times do |i|
17
- assert_equal i, pi[i][0]
18
- assert_equal i+2, pi[i][1]
17
+ assert_equal i, pi[i][0]
18
+ assert_equal i+2, pi[i][1]
19
19
  end
20
20
  assert_equal nil, pi[100]
21
21
  assert_equal nil, pi[101]
@@ -75,8 +75,8 @@ class TestClass < Test::Unit::TestCase
75
75
  pi = PackedIndex.new(tmpfile, false)
76
76
  Misc.benchmark(1000) do
77
77
  100.times do |i|
78
- assert_equal i, pi[i][0]
79
- assert_equal i+2, pi[i][1]
78
+ assert_equal i, pi[i][0]
79
+ assert_equal i+2, pi[i][1]
80
80
  end
81
81
  end
82
82
 
@@ -87,8 +87,8 @@ class TestClass < Test::Unit::TestCase
87
87
  end
88
88
  Misc.benchmark(1000) do
89
89
  100.times do |i|
90
- assert_equal i, tk[i][0]
91
- assert_equal i+2, tk[i][1]
90
+ assert_equal i, tk[i][0]
91
+ assert_equal i+2, tk[i][1]
92
92
  end
93
93
  end
94
94
  end
@@ -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