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 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