t2-server 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.rdoc +17 -0
- data/README.rdoc +32 -13
- data/bin/t2-run-workflow +10 -7
- data/bin/t2-server-info +4 -4
- data/lib/t2-server.rb +2 -0
- data/lib/t2-server/admin.rb +17 -15
- data/lib/t2-server/exceptions.rb +10 -0
- data/lib/t2-server/net/connection.rb +60 -120
- data/lib/t2-server/net/parameters.rb +4 -0
- data/lib/t2-server/port.rb +3 -3
- data/lib/t2-server/run.rb +125 -151
- data/lib/t2-server/server.rb +130 -161
- data/lib/t2-server/util.rb +39 -0
- data/t2-server.gemspec +1 -1
- data/test/tc_admin.rb +5 -2
- data/test/tc_run.rb +11 -0
- data/test/tc_server.rb +2 -2
- data/test/tc_util.rb +44 -0
- data/test/ts_t2server.rb +1 -0
- data/test/workflows/no-ports.t2flow +76 -0
- data/version.yml +1 -1
- metadata +3 -2
data/t2-server.gemspec
CHANGED
data/test/tc_admin.rb
CHANGED
@@ -37,14 +37,17 @@ class TestAdmin < Test::Unit::TestCase
|
|
37
37
|
def test_admin
|
38
38
|
T2Server::Server.new($uri, $conn_params) do |server|
|
39
39
|
|
40
|
-
#
|
40
|
+
# Test for a user that we know isn't configured on the server.
|
41
41
|
assert_raise(T2Server::AuthorizationError) do
|
42
42
|
server.administrator(T2Server::HttpBasic.new("u", "p"))
|
43
43
|
end
|
44
44
|
|
45
|
+
# Test for a user that is in the system but may or may not be a
|
46
|
+
# superuser. If the user is not a superuser then don't perform any more
|
47
|
+
# tests on the admin resource.
|
45
48
|
begin
|
46
49
|
server.administrator($creds)
|
47
|
-
rescue T2Server::
|
50
|
+
rescue T2Server::AccessForbiddenError => e
|
48
51
|
# ignore, just don't run more tests
|
49
52
|
return
|
50
53
|
end
|
data/test/tc_run.rb
CHANGED
@@ -79,6 +79,17 @@ class TestRun < Test::Unit::TestCase
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
# Test run with no input or output
|
83
|
+
def test_run_no_ports
|
84
|
+
T2Server::Run.create($uri, $wkf_no_io, $creds, $conn_params) do |run|
|
85
|
+
assert_nothing_raised { run.input_ports }
|
86
|
+
assert_nothing_raised { run.start }
|
87
|
+
assert(run.running?)
|
88
|
+
run.wait
|
89
|
+
assert_nothing_raised { run.output_ports }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
82
93
|
# Test run with list inputs
|
83
94
|
def test_run_list_input
|
84
95
|
T2Server::Run.create($uri, $wkf_lists, $creds, $conn_params) do |run|
|
data/test/tc_server.rb
CHANGED
@@ -40,11 +40,11 @@ class TestServer < Test::Unit::TestCase
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
43
|
+
def test_run_creation
|
44
44
|
T2Server::Server.new($uri, $conn_params) do |server|
|
45
45
|
assert_nothing_raised(T2Server::T2ServerError) do
|
46
46
|
run = server.create_run($wkf_pass, $creds)
|
47
|
-
|
47
|
+
run.delete
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
data/test/tc_util.rb
CHANGED
@@ -72,3 +72,47 @@ class TestUriStripping < Test::Unit::TestCase
|
|
72
72
|
assert_equal(username, r_creds.username)
|
73
73
|
end
|
74
74
|
end
|
75
|
+
|
76
|
+
class TestUriPathAppending < Test::Unit::TestCase
|
77
|
+
def test_append
|
78
|
+
original = URI.parse("http://www.example.com:8080/old")
|
79
|
+
original_copy = URI.parse("http://www.example.com:8080/old")
|
80
|
+
extra_path = "new/bit"
|
81
|
+
blank_path = ""
|
82
|
+
appended = URI.parse("http://www.example.com:8080/old/new/bit")
|
83
|
+
|
84
|
+
# Prove it works.
|
85
|
+
assert_equal(appended, T2Server::Util.append_to_uri_path(original, extra_path))
|
86
|
+
assert_equal(original, T2Server::Util.append_to_uri_path(original, blank_path))
|
87
|
+
|
88
|
+
# Make sure the original is not changed!
|
89
|
+
assert_equal(original, original_copy)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class TestUriPathReplacement < Test::Unit::TestCase
|
94
|
+
def test_replace
|
95
|
+
original = URI.parse("http://www.example.com:8080/old/path")
|
96
|
+
original_copy = URI.parse("http://www.example.com:8080/old/path")
|
97
|
+
new_path = "/new/path"
|
98
|
+
replaced = URI.parse("http://www.example.com:8080/new/path")
|
99
|
+
|
100
|
+
# Prove it works.
|
101
|
+
assert_equal(replaced, T2Server::Util.replace_uri_path(original, new_path))
|
102
|
+
|
103
|
+
# Make sure the original is not changed!
|
104
|
+
assert_equal(original, original_copy)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class TestGetUriPathLeaf < Test::Unit::TestCase
|
109
|
+
def test_get_leaf
|
110
|
+
uri1 = URI.parse("http://www.example.com:8080/old/path")
|
111
|
+
uri2 = URI.parse("http://www.example.com:8080/")
|
112
|
+
uri3 = URI.parse("http://www.example.com:8080")
|
113
|
+
|
114
|
+
assert_equal("path", T2Server::Util.get_path_leaf_from_uri(uri1))
|
115
|
+
assert_equal("", T2Server::Util.get_path_leaf_from_uri(uri2))
|
116
|
+
assert_equal("", T2Server::Util.get_path_leaf_from_uri(uri3))
|
117
|
+
end
|
118
|
+
end
|
data/test/ts_t2server.rb
CHANGED
@@ -84,6 +84,7 @@ if address != ""
|
|
84
84
|
$wkf_xml = File.read("test/workflows/xml_xpath.t2flow")
|
85
85
|
$wkf_fail = File.read("test/workflows/always_fail.t2flow")
|
86
86
|
$wkf_errors = File.read("test/workflows/list_with_errors.t2flow")
|
87
|
+
$wkf_no_io = File.read("test/workflows/no-ports.t2flow")
|
87
88
|
$list_input = "test/workflows/empty_list_input.baclava"
|
88
89
|
$file_input = "test/workflows/in.txt"
|
89
90
|
$file_strs = "test/workflows/strings.txt"
|
@@ -0,0 +1,76 @@
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.4.0"><dataflow id="e304f436-2871-4ca7-b03d-bf4aaaddf81e" role="top"><name>Workflow1</name><inputPorts /><outputPorts /><processors><processor><name>Concatenate_two_strings</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
2
|
+
<inputs>
|
3
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
4
|
+
<name>string1</name>
|
5
|
+
<depth>0</depth>
|
6
|
+
<mimeTypes>
|
7
|
+
<string>'text/plain'</string>
|
8
|
+
</mimeTypes>
|
9
|
+
<handledReferenceSchemes />
|
10
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
11
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
12
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
13
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
14
|
+
<name>string2</name>
|
15
|
+
<depth>0</depth>
|
16
|
+
<mimeTypes>
|
17
|
+
<string>'text/plain'</string>
|
18
|
+
</mimeTypes>
|
19
|
+
<handledReferenceSchemes />
|
20
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
21
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
22
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
23
|
+
</inputs>
|
24
|
+
<outputs>
|
25
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
26
|
+
<name>output</name>
|
27
|
+
<depth>0</depth>
|
28
|
+
<mimeTypes>
|
29
|
+
<string>'text/plain'</string>
|
30
|
+
</mimeTypes>
|
31
|
+
<granularDepth>0</granularDepth>
|
32
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
33
|
+
</outputs>
|
34
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
35
|
+
<localDependencies />
|
36
|
+
<artifactDependencies />
|
37
|
+
<script>output = string1 + string2;</script>
|
38
|
+
<dependencies />
|
39
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
|
40
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
41
|
+
<maxJobs>1</maxJobs>
|
42
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
43
|
+
<backoffFactor>1.0</backoffFactor>
|
44
|
+
<initialDelay>1000</initialDelay>
|
45
|
+
<maxDelay>5000</maxDelay>
|
46
|
+
<maxRetries>0</maxRetries>
|
47
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Text_constant</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
|
48
|
+
<value>Test</value>
|
49
|
+
</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
50
|
+
<maxJobs>1</maxJobs>
|
51
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
52
|
+
<backoffFactor>1.0</backoffFactor>
|
53
|
+
<initialDelay>1000</initialDelay>
|
54
|
+
<maxDelay>5000</maxDelay>
|
55
|
+
<maxRetries>0</maxRetries>
|
56
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>string2_value</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
|
57
|
+
<value>silly</value>
|
58
|
+
</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
59
|
+
<maxJobs>1</maxJobs>
|
60
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
61
|
+
<backoffFactor>1.0</backoffFactor>
|
62
|
+
<initialDelay>1000</initialDelay>
|
63
|
+
<maxDelay>5000</maxDelay>
|
64
|
+
<maxRetries>0</maxRetries>
|
65
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string1</port></sink><source type="processor"><processor>Text_constant</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string2</port></sink><source type="processor"><processor>string2_value</processor><port>value</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
66
|
+
<annotationAssertions>
|
67
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
68
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
69
|
+
<identification>e304f436-2871-4ca7-b03d-bf4aaaddf81e</identification>
|
70
|
+
</annotationBean>
|
71
|
+
<date>2012-09-12 09:11:13.768 UTC</date>
|
72
|
+
<creators />
|
73
|
+
<curationEventList />
|
74
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
75
|
+
</annotationAssertions>
|
76
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
|
data/version.yml
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: t2-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -195,6 +195,7 @@ files:
|
|
195
195
|
- test/workflows/in.txt
|
196
196
|
- test/workflows/list_and_value.t2flow
|
197
197
|
- test/workflows/list_with_errors.t2flow
|
198
|
+
- test/workflows/no-ports.t2flow
|
198
199
|
- test/workflows/pass_through.t2flow
|
199
200
|
- test/workflows/secure/basic-http.t2flow
|
200
201
|
- test/workflows/secure/basic-https.t2flow
|