rbbt-util 5.26.134 → 5.26.135
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 +4 -4
- data/lib/rbbt/workflow/remote/client.rb +2 -2
- data/lib/rbbt/workflow/remote/remote_step.rb +23 -16
- data/lib/rbbt/workflow/remote/rest/get.rb +1 -0
- data/lib/rbbt/workflow/util/archive.rb +1 -1
- data/test/rbbt/workflow/remote/test_client.rb +45 -1
- data/test/test_helper.rb +38 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 909dfa474d2b8e4b75c1eef7083175b77f4851af9d73ce08fd133c4113b278d6
|
4
|
+
data.tar.gz: 6090421ae9f31d4aeebab5f830213449417739c715f2f69d441de0fb2ff9c76a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26dfe891c7d16718b1c8ea261c24156ba9c8225646ecddbea77f912f4319070dcfbd18fd02906c1801ede7389817406e74b89d27fb939b1c4bdd33f0a6fc4ffe
|
7
|
+
data.tar.gz: 2db91525e84a01390b190b50b9b9f3ffe7689660266d2909bf319bf42c3bcdceb9d03c49e3e591814be485eba85dbd333045f167f18e9d53424cfd10fdb72f15
|
@@ -29,12 +29,12 @@ class WorkflowRemoteClient
|
|
29
29
|
end
|
30
30
|
init_remote_tasks
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def to_s
|
34
34
|
name
|
35
35
|
end
|
36
36
|
|
37
|
-
def job(task, name, inputs)
|
37
|
+
def job(task, name = nil, inputs = {})
|
38
38
|
task_info = task_info(task)
|
39
39
|
fixed_inputs = {}
|
40
40
|
input_types = IndiferentHash.setup(task_info[:input_types])
|
@@ -22,26 +22,33 @@ class WorkflowRemoteClient
|
|
22
22
|
@base_name
|
23
23
|
end
|
24
24
|
|
25
|
+
def cache_file
|
26
|
+
digest = Misc.obj2digest([url, task, base_name, inputs])
|
27
|
+
Rbbt.var.cache.REST[digest].find
|
28
|
+
end
|
29
|
+
|
25
30
|
def run(no_load = false)
|
26
31
|
no_load = @is_stream ? :stream : true if no_load
|
27
32
|
|
28
33
|
@mutex.synchronize do
|
29
|
-
@result ||=
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
@result ||= Persist.persist("REST persist", result_type, :file => cache_file) do
|
35
|
+
begin
|
36
|
+
if @is_exec
|
37
|
+
exec(no_load)
|
38
|
+
elsif no_load == :stream
|
39
|
+
_run_job(:stream)
|
40
|
+
elsif no_load
|
41
|
+
init_job
|
42
|
+
nil
|
43
|
+
else
|
44
|
+
init_job
|
45
|
+
join
|
46
|
+
self.load
|
47
|
+
end
|
48
|
+
ensure
|
49
|
+
@started = true
|
50
|
+
end
|
51
|
+
end
|
45
52
|
end
|
46
53
|
|
47
54
|
return @result if no_load == :stream
|
@@ -211,7 +211,7 @@ puts resource[path].find(search_path)
|
|
211
211
|
end
|
212
212
|
end
|
213
213
|
|
214
|
-
TmpFile.with_file(files_and_dirs.sort_by{|l| l.length}.to_a * "\n"
|
214
|
+
TmpFile.with_file(files_and_dirs.sort_by{|l| l.length}.to_a * "\n") do |tmp_include_file|
|
215
215
|
test_str = options[:test] ? '-nv' : ''
|
216
216
|
|
217
217
|
cmd = "rsync -avztAXHP --progress #{test_str} --files-from='#{tmp_include_file}' #{source}/ #{target}/ #{other_rsync_args}"
|
@@ -1,13 +1,57 @@
|
|
1
1
|
require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
|
2
|
+
require 'rbbt/workflow'
|
2
3
|
require 'rbbt/workflow/remote/client'
|
3
4
|
|
5
|
+
class TestWFRest
|
6
|
+
extend Workflow
|
7
|
+
|
8
|
+
input :name, :string, "Name to greet", "World"
|
9
|
+
task :hi => :string do |name|
|
10
|
+
"Hello #{name}"
|
11
|
+
end
|
12
|
+
|
13
|
+
dep :hi
|
14
|
+
task :intro => :string do
|
15
|
+
step(:hi).load + ", nice to meet you"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
4
19
|
class TestRemote < Test::Unit::TestCase
|
5
|
-
|
20
|
+
|
21
|
+
def _test_ssh
|
6
22
|
Log.severity = 0
|
7
23
|
client = WorkflowRemoteClient.new "ssh://localhost:Translation", "Translation"
|
8
24
|
job = client.job("translate", "SSH-TEST", :genes => ["TP53","KRAS"])
|
9
25
|
iii job.url
|
10
26
|
puts job.run
|
11
27
|
end
|
28
|
+
|
29
|
+
def test_rest
|
30
|
+
Log.with_severity 0 do
|
31
|
+
|
32
|
+
workflow_server(TestWFRest) do |client|
|
33
|
+
assert_equal "Hello World", client.job(:hi, nil, {}).run
|
34
|
+
assert_equal "Hello Miguel", client.job(:hi, nil, {:name => :Miguel}).run
|
35
|
+
assert_equal "Hello Miguel, nice to meet you", client.job(:intro, nil, {:name => :Miguel}).run
|
36
|
+
end
|
37
|
+
|
38
|
+
workflow_server(TestWFRest, :Port => 1902) do |client|
|
39
|
+
assert_equal "Hello World", client.job(:hi, nil, {}).run
|
40
|
+
assert_equal "Hello Miguel", client.job(:hi, nil, {:name => :Miguel}).run
|
41
|
+
assert_equal "Hello Miguel, nice to meet you", client.job(:intro, nil, {:name => :Miguel}).run
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_rest_clean
|
47
|
+
real_job = TestWFRest.job(:hi)
|
48
|
+
real_job.run
|
49
|
+
first_time = File.ctime(real_job.path)
|
50
|
+
workflow_server(TestWFRest) do |client|
|
51
|
+
assert File.ctime(real_job.path) == first_time
|
52
|
+
assert_equal "Hello World", client.job(:hi, nil, {}).clean.run
|
53
|
+
assert File.ctime(real_job.path) > first_time
|
54
|
+
end
|
55
|
+
end
|
12
56
|
end
|
13
57
|
|
data/test/test_helper.rb
CHANGED
@@ -12,6 +12,8 @@ require 'rbbt'
|
|
12
12
|
require 'rbbt/resource/path'
|
13
13
|
|
14
14
|
|
15
|
+
class TestServerLoaded < Exception; end
|
16
|
+
|
15
17
|
class Test::Unit::TestCase
|
16
18
|
include FileUtils
|
17
19
|
|
@@ -44,4 +46,40 @@ class Test::Unit::TestCase
|
|
44
46
|
def datafile_test(file)
|
45
47
|
Test::Unit::TestCase.datafile_test(file)
|
46
48
|
end
|
49
|
+
|
50
|
+
def workflow_server(workflow, options = {}, &block)
|
51
|
+
trap(:USR1){ raise TestServerLoaded}
|
52
|
+
|
53
|
+
pid = Process.fork do
|
54
|
+
TmpFile.with_file do |app_dir|
|
55
|
+
Misc.in_dir(app_dir) do
|
56
|
+
require 'rack'
|
57
|
+
ENV["RBBT_WORKFLOW_EXPORT_ALL"] = 'true'
|
58
|
+
|
59
|
+
app_dir = Path.setup(app_dir.dup)
|
60
|
+
Open.write(app_dir.etc.target_workflow.find, workflow.to_s)
|
61
|
+
|
62
|
+
config_ru_file = File.exist?('./workflow_config.ru') ? './workflow_config.ru' : Rbbt.share['workflow_config.ru'].find
|
63
|
+
options[:config] = config_ru_file
|
64
|
+
app = Rack::Server.new(options)
|
65
|
+
app.start do
|
66
|
+
Process.kill :USR1, Process.ppid
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
begin
|
73
|
+
sleep 1 while true
|
74
|
+
rescue TestServerLoaded
|
75
|
+
end
|
76
|
+
|
77
|
+
client = WorkflowRemoteClient.new "http://localhost:#{options[:Port] || 9292}/#{workflow.to_s}", workflow.to_s
|
78
|
+
|
79
|
+
yield client
|
80
|
+
|
81
|
+
Process.kill :INT, pid
|
82
|
+
Process.wait pid
|
83
|
+
end
|
84
|
+
|
47
85
|
end
|