rbbt-util 5.26.87 → 5.26.88

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 658585f6a78ccc8f2a4579b1b512a9470030edbd1e724addb2b5f1ef3b71c218
4
- data.tar.gz: cb64eb69d269a924b585745f6fa4be0aad88c4ed62a9510e9a85ddc3f243caf3
3
+ metadata.gz: 9ea3940c476d54994086edb928a7f3bd8e0f9106cf702fc5383c10dbf43df2f8
4
+ data.tar.gz: 842453f1c75c7d67307a9d7196273a233cc00d4a4adb27d4cb62d8c41111f748
5
5
  SHA512:
6
- metadata.gz: 58458df66b0881d89894db3c526dd21b5490de6e0e55c403ef44c09827b36c3da90509d3158d8cc5438a1d3f235a6f0650eb470d0b79c3919e216879341d87aa
7
- data.tar.gz: c5e2964e08101856061dd68103b2a970518d1542c163cb17d2c4f0bbe40b92a3cf225ec0859d2b97d2138d6cdf08ada9f69020555c11acafbe6bcd2bbcdb809b
6
+ metadata.gz: 5d679b8414ef4ed9463e2a214edf51375f417c8f6c5b5b576619efda32fd100f9d3fc623164b3e685b6bee31136a1219cf78a4d0955f5c3661c305598addeab8
7
+ data.tar.gz: 88e3ad03874491db2536aad2c64269fb165a92aa944101c98d59013b91eb2f05c47bf0680931f849a2a1de4422fe7bde7b7c261e915604141b8c31ee5026fbeb
data/lib/rbbt/hpc.rb CHANGED
@@ -473,11 +473,21 @@ EOF
473
473
  end
474
474
  end
475
475
  end
476
- end
477
476
 
478
- if __FILE__ == $0
479
- Log.severity = 0
480
- iii Marenostrum::SLURM.run('ls', nil, nil, :qos => "debug", :user => 'bsc26892') if __FILE__ == $0
481
- end
477
+ def relay(job, options={})
478
+ options = Misc.add_defaults options, :target => 'mn1', :search_path => 'user'
479
+ done_deps = job.dependencies.select do |dep|
480
+ dep.done?
481
+ end
482
+
483
+ error_deps = job.dependencies.select do |dep|
484
+ dep.error? && ! dep.recoverable_error?
485
+ end
482
486
 
487
+ (done_deps + error_deps).each do |dep|
488
+ Step.migrate(dep.path, options[:search_path], options)
489
+ end
490
+
491
+ end
492
+ end
483
493
 
@@ -73,8 +73,7 @@ module Workflow
73
73
  set_info :result_type, dep.info[:result_type]
74
74
  forget = config :forget_dep_tasks, :forget_dep_tasks, :default => FORGET_DEP_TASKS
75
75
  if forget
76
- self.set_info :archived_info, archived_info
77
- self.set_info :archived_dependencies, info[:dependencies]
76
+ self.archive
78
77
  self.dependencies = self.dependencies - [dep]
79
78
  Open.rm_rf self.files_dir if Open.exist? self.files_dir
80
79
  FileUtils.cp_r dep.files_dir, self.files_dir if Open.exist? dep.files_dir
@@ -1,20 +1,6 @@
1
- module WorkflowSSHClient
2
- def self.__prepare_inputs_for_restclient(inputs)
3
- inputs.each do |k,v|
4
- if v.respond_to? :path and not v.respond_to? :original_filename
5
- class << v
6
- def original_filename
7
- File.expand_path(path)
8
- end
9
- end
10
- end
11
-
12
- if Array === v and v.empty?
13
- inputs[k] = "EMPTY_ARRAY"
14
- end
15
- end
16
- end
1
+ require 'rbbt/workflow/remote/ssh/driver'
17
2
 
3
+ module WorkflowSSHClient
18
4
  def workflow_description
19
5
  WorkflowSSHClient.get_raw(File.join(url, 'description'))
20
6
  end
@@ -26,20 +12,20 @@ module WorkflowSSHClient
26
12
 
27
13
  def task_info(task)
28
14
  @task_info ||= IndiferentHash.setup({})
29
- @task_info[task]
30
15
 
31
16
  if @task_info[task].nil?
32
- task_info = WorkflowSSHClient.get_json(File.join(url, task.to_s, 'info'))
17
+ task_info = WorkflowSSHClient.get_json(File.join(@base_url, task.to_s))
33
18
  task_info = WorkflowSSHClient.fix_hash(task_info)
34
19
 
35
- task_info[:result_type] = task_info[:result_type].to_sym
36
- task_info[:export] = task_info[:export].to_sym
20
+ task_info[:result_type] = task_info[:result_type].to_sym if task_info[:result_type]
21
+ task_info[:export] = task_info[:export].to_sym if task_info[:export]
37
22
  task_info[:input_types] = WorkflowSSHClient.fix_hash(task_info[:input_types], true)
38
23
  task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }
39
24
 
40
- @task_info[task] = task_info
25
+ @task_info[task] = IndiferentHash.setup(task_info)
41
26
  end
42
- @task_info[task]
27
+
28
+ IndiferentHash.setup(@task_info[task])
43
29
  end
44
30
 
45
31
  def tasks
@@ -72,7 +58,4 @@ module WorkflowSSHClient
72
58
  @exec_exports = @stream_exports = @synchronous_exports = []
73
59
  @asynchronous_exports = @task_info.keys
74
60
  end
75
-
76
- def self.execute_job(base_url, task, task_params, cache_type)
77
- end
78
61
  end
@@ -0,0 +1,147 @@
1
+ module SSHDriver
2
+ def self.run(server, script)
3
+ Log.debug "Run ssh script in #{server}:\n#{script}"
4
+ CMD.cmd("ssh '#{server}' 'shopt -s expand_aliases; bash -ic \"ruby\"' ", :in => script, :log => true).read
5
+ end
6
+
7
+ #def self.run_log(server, script)
8
+ # Log.debug "Run and monitor ssh script in #{server}:\n#{script}"
9
+ # CMD.cmd("ssh '#{server}' 'shopt -s expand_aliases; bash -ic \"ruby\"' ", :in => script, :log => true)
10
+ #end
11
+
12
+ def self.parse_url(url)
13
+ m = url.match(/ssh:\/\/([^:]+):(.*)/)
14
+ server = m.captures[0]
15
+ path = m.captures[1]
16
+ [server, path]
17
+ end
18
+
19
+ def self.path_script(path)
20
+
21
+ workflow, task, job, *rest = path.split("/")
22
+
23
+ script =<<-EOF
24
+ require 'rbbt/workflow'
25
+ wf = Workflow.require_workflow "#{workflow}"
26
+ EOF
27
+
28
+ case task
29
+ when nil
30
+ script +=<<-EOF
31
+ task_info = {}
32
+ wf.tasks.keys.each do |task|
33
+ task_info[task] = wf.task_info(task)
34
+ end
35
+ res = task_info
36
+ EOF
37
+ when 'documentation'
38
+ script +=<<-EOF
39
+ res = documentation = wf.documentation
40
+ EOF
41
+ else
42
+ if job.nil?
43
+ script +=<<-EOF
44
+ task = '#{task}'
45
+ res = task_info = wf.task_info(task)
46
+ EOF
47
+ else
48
+ case rest.first
49
+ when nil
50
+ script +=<<-EOF
51
+ task = '#{task}'
52
+ jobname = '#{job}'
53
+ res = job = wf.fast_load_id(File.join(task, jobname))
54
+ EOF
55
+ when "info"
56
+ script +=<<-EOF
57
+ task = '#{task}'
58
+ jobname = '#{job}'
59
+ job = wf.fast_load_id(File.join(task, jobname))
60
+ res = job_info = job.info
61
+ EOF
62
+ else
63
+ raise "Unkown path: #{[path, rest].inspect}"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def self.job_script(inputs_id, jobname = nil)
70
+ script =<<-EOF
71
+ jobname = #{jobname.nil? ? 'nil' : "'#{jobname}'"}
72
+ path = File.join(ENV["HOME"], '.rbbt/tmp/tmp-ssh_job_inputs/#{inputs_id}')
73
+ job_inputs = Workflow.load_inputs(path, task_info[:inputs], task_info[:input_types])
74
+ job = wf.job(task, jobname, job_inputs)
75
+ EOF
76
+ script
77
+ end
78
+
79
+ def self.get_json(url, params)
80
+ server, path = parse_url(url)
81
+ script = path_script(path)
82
+
83
+ script +=<<-EOF
84
+ STDOUT.write res.to_json
85
+ EOF
86
+
87
+ JSON.parse(self.run(server, script))
88
+ end
89
+
90
+ def self.get_raw(url, params)
91
+ server, path = parse_url(url)
92
+ script = path_script(path)
93
+
94
+ script +=<<-EOF
95
+ STDOUT.write res
96
+ EOF
97
+
98
+ self.run(server, script)
99
+ end
100
+
101
+ def self.post_job(url, inputs_id, jobname = nil)
102
+ server, path = parse_url(url)
103
+
104
+ script = path_script(path)
105
+ script += job_script(inputs_id, jobname)
106
+ script +=<<-EOF
107
+ job.init_info
108
+ STDOUT.write job.name
109
+ EOF
110
+ @name = self.run(server, script)
111
+ end
112
+
113
+ def self.run_job(url, input_id, jobname = nil)
114
+ server, path = parse_url(url)
115
+
116
+ script = path_script(path)
117
+ script += job_script(input_id, jobname)
118
+ script +=<<-EOF
119
+ job.produce
120
+ STDOUT.write job.path
121
+ EOF
122
+ self.run(server, script)
123
+ end
124
+
125
+ def self.run_slurm_job(url, input_id, jobname = nil)
126
+ server, path = parse_url(url)
127
+
128
+ script = path_script(path)
129
+ script += job_script(input_id, jobname)
130
+ script +=<<-EOF
131
+ job.produce
132
+ STDOUT.write job.path
133
+ EOF
134
+ self.run(server, script)
135
+ end
136
+
137
+ def self.clean(url, input_id, jobname = nil)
138
+ server, path = parse_url(url)
139
+
140
+ script = path_script(path)
141
+ script +=<<-EOF
142
+ job.clean
143
+ EOF
144
+ self.run(server, script)
145
+ end
146
+
147
+ end
@@ -1,150 +1,3 @@
1
- module SSHClient
2
- def self.run(server, script)
3
- Log.debug "Run ssh script in #{server}:\n#{script}"
4
- CMD.cmd("ssh '#{server}' ruby ", :in => script).read.strip
5
- end
6
-
7
- def self.run_log(server, script)
8
- Log.debug "Run and monitor ssh script in #{server}:\n#{script}"
9
- CMD.cmd_log("ssh '#{server}' ruby ", :in => script)
10
- end
11
-
12
- def self.parse_url(url)
13
- m = url.match(/ssh:\/\/([^:]+):(.*)/)
14
- server = m.captures[0]
15
- path = m.captures[1]
16
- [server, path]
17
- end
18
-
19
- def self.path_script(path)
20
-
21
- workflow, task, job, *rest = path.split("/")
22
-
23
- script =<<-EOF
24
- require 'rbbt/workflow'
25
- wf = Workflow.require_workflow "#{workflow}"
26
- EOF
27
- case task
28
- when nil
29
- script +=<<-EOF
30
- task_info = {}
31
- wf.tasks.keys.each do |task|
32
- task_info[task] = wf.task_info(task)
33
- end
34
- res = task_info
35
- EOF
36
- when 'documentation'
37
- script +=<<-EOF
38
- res = documentation = wf.documentation
39
- EOF
40
- else
41
- if job.nil?
42
- script +=<<-EOF
43
- task = '#{task}'
44
- res = task_info = wf.task_info(task)
45
- EOF
46
- else
47
- case rest.first
48
- when nil
49
- script +=<<-EOF
50
- task = '#{task}'
51
- jobname = '#{job}'
52
- res = job = wf.fast_load_id(File.join(task, jobname))
53
- EOF
54
- when "info"
55
- script +=<<-EOF
56
- task = '#{task}'
57
- jobname = '#{job}'
58
- job = wf.fast_load_id(File.join(task, jobname))
59
- res = job_info = job.info
60
- EOF
61
- else
62
- raise "Unkown path: #{[path, rest].inspect}"
63
- end
64
- end
65
- end
66
- end
67
-
68
- def self.get_json(url, params)
69
- server, path = parse_url(url)
70
- script = path_script(path)
71
-
72
- script +=<<-EOF
73
- puts res.to_json
74
- EOF
75
-
76
- JSON.parse(self.run(server, script))
77
- end
78
-
79
- def self.get_raw(url, params)
80
- server, path = parse_url(url)
81
- script = path_script(path)
82
-
83
- script +=<<-EOF
84
- puts res
85
- EOF
86
-
87
- self.run(server, script)
88
- end
89
-
90
- def self.post_job(url, inputs, input_types, jobname = nil)
91
- server, path = parse_url(url)
92
- script = path_script(path)
93
-
94
- id = "inputs-" << rand(100000).to_s
95
- CMD.cmd("ssh '#{server}' mkdir -p .rbbt/tmp/tmp-ssh_job_inputs/ ", :in => script).read
96
- TmpFile.with_file do |dir|
97
- if Step.save_inputs(inputs, input_types, dir)
98
- CMD.cmd("scp -r '#{dir}' .rbbt/tmp/tmp-ssh_job_inputs/#{id}")
99
- end
100
- end
101
-
102
- script +=<<-EOF
103
- jobname = #{jobname.nil? ? 'nil' : "'#{jobname}'"}
104
- path = '.rbbt/tmp/tmp-ssh_job_inputs/#{id}'
105
- job_inputs = Workflow.load_inputs(path, task_info[:inputs], task_info[:input_types])
106
- job = wf.job(task, jobname, job_inputs)
107
- Log.severity = 10
108
- job.fork
109
- puts job.name
110
- EOF
111
- self.run(server, script)
112
- end
113
-
114
- def self.run_job(url, inputs, input_types, jobname = nil)
115
- server, path = parse_url(url)
116
- script = path_script(path)
117
-
118
- id = "inputs-" << rand(100000).to_s
119
- CMD.cmd("ssh '#{server}' mkdir -p .rbbt/tmp/tmp-ssh_job_inputs/ ", :in => script).read
120
- TmpFile.with_file do |dir|
121
- if Step.save_inputs(inputs, input_types, dir)
122
- CMD.cmd("scp -r '#{dir}' .rbbt/tmp/tmp-ssh_job_inputs/#{id}")
123
- end
124
- end
125
-
126
- script +=<<-EOF
127
- jobname = #{jobname.nil? ? 'nil' : "'#{jobname}'"}
128
- path = '.rbbt/tmp/tmp-ssh_job_inputs/#{id}'
129
- job_inputs = Workflow.load_inputs(path, task_info[:inputs], task_info[:input_types])
130
- job = wf.job(task, jobname, job_inputs)
131
- job.run
132
- EOF
133
- self.run_log(server, script)
134
- end
135
-
136
- def self.clean(url)
137
- server, path = parse_url(url)
138
- script = path_script(path)
139
-
140
- script +=<<-EOF
141
- job.clean
142
- EOF
143
- self.run(server, script)
144
- end
145
-
146
- end
147
-
148
1
  module WorkflowSSHClient
149
2
  def self.fix_hash(hash, fix_values = false)
150
3
  fixed = {}
@@ -223,7 +76,7 @@ module WorkflowSSHClient
223
76
 
224
77
  res = capture_exception do
225
78
  Misc.insist(2, 0.5) do
226
- SSHClient.get_json(url, :params => params)
79
+ SSHDriver.get_json(url, :params => params)
227
80
  end
228
81
  end
229
82
 
@@ -234,22 +87,32 @@ module WorkflowSSHClient
234
87
  end
235
88
  end
236
89
 
237
-
238
- def self.post_jobname(url, inputs, input_types)
239
- SSHClient.post_job(url, inputs, input_types)
90
+ def self.upload_inputs(server, inputs, input_types, input_id)
91
+ TmpFile.with_file do |dir|
92
+ if Step.save_inputs(inputs, input_types, dir)
93
+ CMD.cmd("ssh '#{server}' mkdir -p .rbbt/tmp/tmp-ssh_job_inputs/; scp -r '#{dir}' #{server}:.rbbt/tmp/tmp-ssh_job_inputs/#{input_id}")
94
+ end
95
+ end
240
96
  end
241
97
 
98
+ #{{{ RUN
99
+
100
+
242
101
  def init_job(cache_type = nil, other_params = {})
243
102
  cache_type = :asynchronous if cache_type.nil? and not @is_exec
244
103
  cache_type = :exec if cache_type.nil?
245
104
  @last_info_time = nil
246
105
  @done = false
247
- get_streams
106
+ @server, @server_path = SSHDriver.parse_url base_url
107
+ @input_id ||= "inputs-" << rand(100000).to_s
108
+ @input_types = task_info(task)[:input_types]
109
+
110
+ WorkflowSSHClient.upload_inputs(@server, inputs, @input_types, @input_id)
111
+
248
112
  @name ||= Persist.memory("RemoteSteps", :workflow => self, :task => task, :jobname => @name, :inputs => inputs, :cache_type => cache_type) do
249
113
  Misc.insist do
250
- #@adaptor.post_jobname(File.join(base_url, task.to_s), inputs.merge(other_params).merge(:jobname => @name||@base_name, :_cache_type => cache_type))
251
114
  input_types = {}
252
- @adaptor.post_jobname(File.join(base_url, task.to_s), inputs, input_types)
115
+ SSHDriver.post_job(File.join(base_url, task.to_s), @input_id, @base_name)
253
116
  end
254
117
  end
255
118
  if Open.remote? @name
@@ -262,19 +125,26 @@ module WorkflowSSHClient
262
125
  end
263
126
 
264
127
  def path
265
- server, path = SSHClient.parse_url(url)
266
- "ssh://" + server + ":" + info[:path]
128
+ @server, @server_path = SSHDriver.parse_url @base_url
129
+ "ssh://" + @server + ":" + @remote_path
267
130
  end
268
131
 
269
- def run(*args)
132
+ def produce(*args)
270
133
  input_types = {}
271
- SSHClient.run_job(File.join(base_url, task.to_s), inputs, input_types)
134
+ init_job
135
+ @remote_path = SSHDriver.run_job(File.join(base_url, task.to_s), @input_id, @base_name)
136
+ while ! done?
137
+ sleep 1
138
+ end
272
139
  end
273
140
 
141
+ def run(*args)
142
+ produce(*args)
143
+ end
274
144
 
275
145
  def clean
276
146
  init_job
277
- SSHClient.clean(@url) if done?
147
+ SSHDriver.clean(@url, @input_id, @base_name) if done?
278
148
  _restart
279
149
  end
280
150
 
@@ -108,6 +108,11 @@ class Step
108
108
  @inputs || []
109
109
  end
110
110
 
111
+ def archive
112
+ self.set_info :archived_info, archived_info
113
+ self.set_info :archived_dependencies, info[:dependencies]
114
+ end
115
+
111
116
  def archived_info
112
117
  return info[:archived_info] if info[:archived_info]
113
118
 
@@ -223,7 +228,7 @@ class Step
223
228
 
224
229
  def result_type
225
230
  @result_type ||= if @task.nil?
226
- info[:result_type]
231
+ info[:result_type] || :binary
227
232
  else
228
233
  @task.result_type || info[:result_type] || :string
229
234
  end
@@ -39,6 +39,7 @@ test_str = options[:test] ? '-nv' : ''
39
39
 
40
40
  path, search_path, _sep, *other = ARGV
41
41
 
42
+ search_path = 'user' if search_path.nil?
42
43
  resource = Rbbt
43
44
 
44
45
  path, real_paths = if options[:source]
@@ -0,0 +1,14 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'test_helper.rb')
2
+ require 'rbbt/hpc'
3
+ require 'rbbt/workflow'
4
+
5
+ class TestHPC < Test::Unit::TestSuite
6
+ def test_relay
7
+ Log.severity = 0
8
+ Workflow.require_workflow "Translation"
9
+ job = Translation.job(:translate, nil, :genes => %w(TP53 KRAS))
10
+ Marenostrum.relay job
11
+
12
+ end
13
+ end
14
+
@@ -205,21 +205,23 @@ class TestWorkflow < Test::Unit::TestCase
205
205
  def test_update_on_input_dependency_update
206
206
  Open.repository_dirs << File.join(ENV["HOME"],".rbbt/tmp/test/workflow")
207
207
  Log.severity = 0
208
- send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
209
- send_input_dep_to_reverse_job.clean
210
- send_input_dep_to_reverse_job.run
211
-
212
- input_dep_job = send_input_dep_to_reverse_job.step(:input_dep)
213
- mtime_orig = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
214
-
215
- sleep 2
216
- input_dep_job.clean
217
- input_dep_job.run
218
- send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
219
-
220
- send_input_dep_to_reverse_job.run
221
- mtime_new = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
222
- assert mtime_orig < mtime_new
208
+ Misc.with_env "RBBT_UPDATE", "true" do
209
+ send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
210
+ send_input_dep_to_reverse_job.clean
211
+ send_input_dep_to_reverse_job.run
212
+
213
+ input_dep_job = send_input_dep_to_reverse_job.step(:input_dep)
214
+ mtime_orig = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
215
+
216
+ sleep 2
217
+ input_dep_job.clean
218
+ input_dep_job.run
219
+ send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
220
+
221
+ send_input_dep_to_reverse_job.run
222
+ mtime_new = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
223
+ assert mtime_orig < mtime_new
224
+ end
223
225
  end
224
226
 
225
227
  def test_helper
@@ -252,9 +254,12 @@ class TestWorkflow < Test::Unit::TestCase
252
254
 
253
255
  def test_search
254
256
  str = "TEST"
255
- job1 = TestWF.job(:repeat2, "subdir/Default", :number => 3).fork
256
- job2 = TestWF.job(:repeat2, "subdir/Other", :number => 3).fork
257
- job3 = TestWF.job(:repeat2, "Default", :number => 3).fork
257
+ TestWF.jobs(:repeat2).each do |name|
258
+ TestWF.load_name(:repeat2, name).clean
259
+ end
260
+ job1 = TestWF.job(:repeat2, "subdir/Default", :number => 3).clean.fork
261
+ job2 = TestWF.job(:repeat2, "subdir/Other", :number => 3).clean.fork
262
+ job3 = TestWF.job(:repeat2, "Default", :number => 3).clean.fork
258
263
 
259
264
  while not job1.done? and not job2.done? and not job3.done?
260
265
  sleep 1
@@ -379,10 +384,13 @@ class TestWorkflow < Test::Unit::TestCase
379
384
  job.run
380
385
  assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
381
386
  job = TestWF.job(:t3)
382
- job.step(:t1).clean
383
- Misc.with_env "RBBT_UPDATE_ALL_JOBS", "true" do
384
- job = TestWF.job(:t3)
385
- assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
387
+ sleep 1
388
+ Open.touch job.step(:t1).path
389
+ Misc.with_env "RBBT_UPDATE", "false" do
390
+ assert job.updated?
391
+ end
392
+ Misc.with_env "RBBT_UPDATE", "true" do
393
+ assert ! job.updated?
386
394
  end
387
395
  end
388
396
 
@@ -0,0 +1,13 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
+ require 'rbbt/workflow/remote/client'
3
+
4
+ class TestRemote < Test::Unit::TestCase
5
+ def test_ssh
6
+ Log.severity = 0
7
+ client = WorkflowRemoteClient.new "ssh://localhost:Translation", "Translation"
8
+ job = client.job("translate", "SSH-TEST", :genes => ["TP53","KRAS"])
9
+ iii job.url
10
+ puts job.run
11
+ end
12
+ end
13
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.26.87
4
+ version: 5.26.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-22 00:00:00.000000000 Z
11
+ date: 2019-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -328,6 +328,7 @@ files:
328
328
  - lib/rbbt/workflow/remote/rest/adaptor.rb
329
329
  - lib/rbbt/workflow/remote/rest/get.rb
330
330
  - lib/rbbt/workflow/remote/ssh/adaptor.rb
331
+ - lib/rbbt/workflow/remote/ssh/driver.rb
331
332
  - lib/rbbt/workflow/remote/ssh/get.rb
332
333
  - lib/rbbt/workflow/schedule.rb
333
334
  - lib/rbbt/workflow/soap.rb
@@ -454,6 +455,7 @@ files:
454
455
  - test/rbbt/test_association.rb
455
456
  - test/rbbt/test_entity.rb
456
457
  - test/rbbt/test_fix_width_table.rb
458
+ - test/rbbt/test_hpc.rb
457
459
  - test/rbbt/test_knowledge_base.rb
458
460
  - test/rbbt/test_monitor.rb
459
461
  - test/rbbt/test_packed_index.rb
@@ -507,6 +509,7 @@ files:
507
509
  - test/rbbt/util/test_simpleDSL.rb
508
510
  - test/rbbt/util/test_simpleopt.rb
509
511
  - test/rbbt/util/test_tmpfile.rb
512
+ - test/rbbt/workflow/remote/test_client.rb
510
513
  - test/rbbt/workflow/step/test_dependencies.rb
511
514
  - test/rbbt/workflow/test_doc.rb
512
515
  - test/rbbt/workflow/test_step.rb
@@ -531,91 +534,93 @@ required_rubygems_version: !ruby/object:Gem::Requirement
531
534
  - !ruby/object:Gem::Version
532
535
  version: '0'
533
536
  requirements: []
534
- rubygems_version: 3.0.4
537
+ rubygems_version: 3.0.6
535
538
  signing_key:
536
539
  specification_version: 4
537
540
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
538
541
  test_files:
539
- - test/test_helper.rb
540
- - test/rbbt/test_annotations.rb
541
- - test/rbbt/association/test_database.rb
542
- - test/rbbt/association/test_item.rb
543
- - test/rbbt/association/test_index.rb
544
- - test/rbbt/association/test_open.rb
545
- - test/rbbt/association/test_util.rb
546
- - test/rbbt/test_association.rb
547
- - test/rbbt/knowledge_base/test_syndicate.rb
548
- - test/rbbt/knowledge_base/test_enrichment.rb
549
- - test/rbbt/knowledge_base/test_query.rb
550
- - test/rbbt/knowledge_base/test_entity.rb
551
- - test/rbbt/knowledge_base/test_registry.rb
552
- - test/rbbt/knowledge_base/test_traverse.rb
542
+ - test/rbbt/test_entity.rb
543
+ - test/rbbt/workflow/test_doc.rb
544
+ - test/rbbt/workflow/test_step.rb
545
+ - test/rbbt/workflow/remote/test_client.rb
546
+ - test/rbbt/workflow/step/test_dependencies.rb
547
+ - test/rbbt/workflow/test_task.rb
548
+ - test/rbbt/resource/test_path.rb
549
+ - test/rbbt/util/test_colorize.rb
550
+ - test/rbbt/util/misc/test_omics.rb
551
+ - test/rbbt/util/misc/test_pipes.rb
552
+ - test/rbbt/util/misc/test_lock.rb
553
+ - test/rbbt/util/misc/test_multipart_payload.rb
554
+ - test/rbbt/util/misc/test_bgzf.rb
555
+ - test/rbbt/util/test_concurrency.rb
556
+ - test/rbbt/util/test_cmd.rb
557
+ - test/rbbt/util/R/test_plot.rb
558
+ - test/rbbt/util/R/test_eval.rb
559
+ - test/rbbt/util/R/test_model.rb
553
560
  - test/rbbt/util/test_config.rb
554
- - test/rbbt/util/test_R.rb
561
+ - test/rbbt/util/test_log.rb
562
+ - test/rbbt/util/test_simpleDSL.rb
563
+ - test/rbbt/util/log/test_progress.rb
555
564
  - test/rbbt/util/test_tmpfile.rb
556
- - test/rbbt/util/test_filecache.rb
557
- - test/rbbt/util/test_misc.rb
565
+ - test/rbbt/util/test_R.rb
558
566
  - test/rbbt/util/test_excel2tsv.rb
559
- - test/rbbt/util/log/test_progress.rb
560
- - test/rbbt/util/misc/test_multipart_payload.rb
561
- - test/rbbt/util/misc/test_pipes.rb
562
- - test/rbbt/util/misc/test_bgzf.rb
563
- - test/rbbt/util/misc/test_lock.rb
564
- - test/rbbt/util/misc/test_omics.rb
565
- - test/rbbt/util/test_semaphore.rb
566
- - test/rbbt/util/simpleopt/test_get.rb
567
+ - test/rbbt/util/test_misc.rb
568
+ - test/rbbt/util/test_open.rb
569
+ - test/rbbt/util/test_simpleopt.rb
567
570
  - test/rbbt/util/simpleopt/test_parse.rb
568
571
  - test/rbbt/util/simpleopt/test_setup.rb
569
- - test/rbbt/util/test_open.rb
572
+ - test/rbbt/util/simpleopt/test_get.rb
573
+ - test/rbbt/util/test_python.rb
574
+ - test/rbbt/util/test_filecache.rb
570
575
  - test/rbbt/util/concurrency/test_processes.rb
571
576
  - test/rbbt/util/concurrency/test_threads.rb
572
577
  - test/rbbt/util/concurrency/processes/test_socket.rb
573
- - test/rbbt/util/test_log.rb
574
- - test/rbbt/util/test_colorize.rb
575
- - test/rbbt/util/test_cmd.rb
576
- - test/rbbt/util/test_concurrency.rb
577
- - test/rbbt/util/R/test_eval.rb
578
- - test/rbbt/util/R/test_plot.rb
579
- - test/rbbt/util/R/test_model.rb
580
- - test/rbbt/util/test_simpleopt.rb
578
+ - test/rbbt/util/test_semaphore.rb
581
579
  - test/rbbt/util/test_chain_methods.rb
582
- - test/rbbt/util/test_simpleDSL.rb
583
- - test/rbbt/util/test_python.rb
584
- - test/rbbt/tsv/test_index.rb
585
- - test/rbbt/tsv/test_parser.rb
586
- - test/rbbt/tsv/test_field_index.rb
587
- - test/rbbt/tsv/test_stream.rb
588
- - test/rbbt/tsv/test_accessor.rb
580
+ - test/rbbt/test_resource.rb
581
+ - test/rbbt/test_packed_index.rb
589
582
  - test/rbbt/tsv/test_change_id.rb
590
- - test/rbbt/tsv/test_parallel.rb
591
- - test/rbbt/tsv/parallel/test_through.rb
592
- - test/rbbt/tsv/parallel/test_traverse.rb
593
- - test/rbbt/tsv/test_manipulate.rb
583
+ - test/rbbt/tsv/test_attach.rb
594
584
  - test/rbbt/tsv/test_filter.rb
585
+ - test/rbbt/tsv/test_parser.rb
586
+ - test/rbbt/tsv/test_accessor.rb
595
587
  - test/rbbt/tsv/test_matrix.rb
588
+ - test/rbbt/tsv/test_field_index.rb
596
589
  - test/rbbt/tsv/test_util.rb
597
- - test/rbbt/tsv/test_attach.rb
590
+ - test/rbbt/tsv/test_index.rb
591
+ - test/rbbt/tsv/test_parallel.rb
592
+ - test/rbbt/tsv/test_manipulate.rb
598
593
  - test/rbbt/tsv/test_excel.rb
599
- - test/rbbt/test_monitor.rb
600
- - test/rbbt/test_workflow.rb
601
- - test/rbbt/annotations/test_util.rb
602
- - test/rbbt/test_packed_index.rb
603
- - test/rbbt/workflow/test_task.rb
604
- - test/rbbt/workflow/test_doc.rb
605
- - test/rbbt/workflow/test_step.rb
606
- - test/rbbt/workflow/step/test_dependencies.rb
607
- - test/rbbt/entity/test_identifiers.rb
608
- - test/rbbt/test_entity.rb
609
- - test/rbbt/test_resource.rb
610
- - test/rbbt/test_persist.rb
611
- - test/rbbt/persist/tsv/test_tokyocabinet.rb
612
- - test/rbbt/persist/tsv/test_cdb.rb
613
- - test/rbbt/persist/tsv/test_leveldb.rb
594
+ - test/rbbt/tsv/parallel/test_through.rb
595
+ - test/rbbt/tsv/parallel/test_traverse.rb
596
+ - test/rbbt/tsv/test_stream.rb
597
+ - test/rbbt/test_association.rb
598
+ - test/rbbt/association/test_database.rb
599
+ - test/rbbt/association/test_item.rb
600
+ - test/rbbt/association/test_open.rb
601
+ - test/rbbt/association/test_util.rb
602
+ - test/rbbt/association/test_index.rb
603
+ - test/rbbt/test_knowledge_base.rb
614
604
  - test/rbbt/persist/tsv/test_kyotocabinet.rb
615
- - test/rbbt/persist/tsv/test_sharder.rb
605
+ - test/rbbt/persist/tsv/test_cdb.rb
616
606
  - test/rbbt/persist/tsv/test_lmdb.rb
607
+ - test/rbbt/persist/tsv/test_sharder.rb
608
+ - test/rbbt/persist/tsv/test_leveldb.rb
609
+ - test/rbbt/persist/tsv/test_tokyocabinet.rb
617
610
  - test/rbbt/persist/test_tsv.rb
618
611
  - test/rbbt/test_tsv.rb
612
+ - test/rbbt/test_annotations.rb
619
613
  - test/rbbt/test_fix_width_table.rb
620
- - test/rbbt/test_knowledge_base.rb
621
- - test/rbbt/resource/test_path.rb
614
+ - test/rbbt/test_workflow.rb
615
+ - test/rbbt/entity/test_identifiers.rb
616
+ - test/rbbt/annotations/test_util.rb
617
+ - test/rbbt/test_hpc.rb
618
+ - test/rbbt/test_monitor.rb
619
+ - test/rbbt/test_persist.rb
620
+ - test/rbbt/knowledge_base/test_entity.rb
621
+ - test/rbbt/knowledge_base/test_registry.rb
622
+ - test/rbbt/knowledge_base/test_syndicate.rb
623
+ - test/rbbt/knowledge_base/test_query.rb
624
+ - test/rbbt/knowledge_base/test_enrichment.rb
625
+ - test/rbbt/knowledge_base/test_traverse.rb
626
+ - test/test_helper.rb