rbbt-util 5.26.134 → 5.26.135

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba54901fafef6428fe96583512b3760909f9d0f535575bc26da5bc590ec8d832
4
- data.tar.gz: 7d6468ffda01e175ab48dd0f1a622cc00b9abc01624006c133c26950c1ac7225
3
+ metadata.gz: 909dfa474d2b8e4b75c1eef7083175b77f4851af9d73ce08fd133c4113b278d6
4
+ data.tar.gz: 6090421ae9f31d4aeebab5f830213449417739c715f2f69d441de0fb2ff9c76a
5
5
  SHA512:
6
- metadata.gz: 468dfc192067e76b71c73d73b0d2e6b6fb468a24452054edc791337886366630484a4bd43c8fe045334c1bdf46da3ebd19b3e18c6b1a3f236395336b1bc26ab7
7
- data.tar.gz: ba8710edc5ec1033d5bd0eca18eff9bd36f2443bc4363a2eee1a94a5fa156be4c1a841a10854a1b86c831a7e61df5d13f00feee9812d76662c6dab90a9842cf4
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 ||= begin
30
- if @is_exec
31
- exec(no_load)
32
- elsif no_load == :stream
33
- _run_job(:stream)
34
- elsif no_load
35
- init_job
36
- nil
37
- else
38
- init_job
39
- join
40
- self.load
41
- end
42
- ensure
43
- @started = true
44
- end
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
@@ -231,6 +231,7 @@ module WorkflowRESTClient
231
231
  def _clean
232
232
  begin
233
233
  _restart
234
+ Open.rm cache_file
234
235
  params = {:_update => :clean}
235
236
  @adaptor.clean_url(url, params) if @url
236
237
  rescue Exception
@@ -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", false) do |tmp_include_file|
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
- def test_ssh
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.26.134
4
+ version: 5.26.135
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez