taverna-player 0.1.0
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.
- data/.gitignore +18 -0
- data/Gemfile +18 -0
- data/LICENCE.rdoc +29 -0
- data/README.rdoc +663 -0
- data/Rakefile +65 -0
- data/app/assets/javascripts/taverna_player/application.js +14 -0
- data/app/assets/javascripts/taverna_player/runs.js +42 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/assets/stylesheets/taverna_player/application.css +13 -0
- data/app/assets/stylesheets/taverna_player/coderay.css +120 -0
- data/app/controllers/taverna_player/application_controller.rb +16 -0
- data/app/controllers/taverna_player/runs_controller.rb +18 -0
- data/app/controllers/taverna_player/service_credentials_controller.rb +18 -0
- data/app/helpers/taverna_player/application_helper.rb +55 -0
- data/app/helpers/taverna_player/runs_helper.rb +84 -0
- data/app/models/taverna_player/interaction.rb +25 -0
- data/app/models/taverna_player/run.rb +117 -0
- data/app/models/taverna_player/run_port.rb +148 -0
- data/app/models/taverna_player/service_credential.rb +56 -0
- data/app/views/layouts/taverna_player/embedded.html.erb +27 -0
- data/app/views/taverna_player/runs/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/_info.html.erb +56 -0
- data/app/views/taverna_player/runs/_info.json.jbuilder +2 -0
- data/app/views/taverna_player/runs/_inputs.html.erb +34 -0
- data/app/views/taverna_player/runs/_inputs.json.jbuilder +8 -0
- data/app/views/taverna_player/runs/_interaction.html.erb +68 -0
- data/app/views/taverna_player/runs/_outputs.html.erb +41 -0
- data/app/views/taverna_player/runs/_poll.html.erb +27 -0
- data/app/views/taverna_player/runs/create.json.jbuilder +3 -0
- data/app/views/taverna_player/runs/embedded/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/embedded/_info.html.erb +25 -0
- data/app/views/taverna_player/runs/embedded/_inputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/_outputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/new.html.erb +58 -0
- data/app/views/taverna_player/runs/embedded/show.html.erb +39 -0
- data/app/views/taverna_player/runs/embedded/show.js.erb +35 -0
- data/app/views/taverna_player/runs/index.html.erb +40 -0
- data/app/views/taverna_player/runs/index.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/new.html.erb +56 -0
- data/app/views/taverna_player/runs/new.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/show.html.erb +29 -0
- data/app/views/taverna_player/runs/show.js.erb +25 -0
- data/app/views/taverna_player/runs/show.json.jbuilder +25 -0
- data/app/views/taverna_player/service_credentials/_form.html.erb +53 -0
- data/app/views/taverna_player/service_credentials/edit.html.erb +18 -0
- data/app/views/taverna_player/service_credentials/index.html.erb +41 -0
- data/app/views/taverna_player/service_credentials/new.html.erb +17 -0
- data/app/views/taverna_player/service_credentials/show.html.erb +36 -0
- data/config/routes.rb +34 -0
- data/db/migrate/20130313105546_create_taverna_player_runs.rb +16 -0
- data/db/migrate/20130315163019_create_taverna_player_run_ports.rb +15 -0
- data/db/migrate/20130318170744_add_attachment_file_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130319183634_create_delayed_jobs.rb +22 -0
- data/db/migrate/20130320102600_add_status_message_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130321100110_add_depth_and_metadata_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130704095504_add_attachment_results_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130705142704_add_embedded_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130714140911_create_taverna_player_interactions.rb +13 -0
- data/db/migrate/20130717083653_add_proxy_to_taverna_player_runs.rb +6 -0
- data/db/migrate/20130717155415_add_stop_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811152840_add_attachment_log_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811211725_change_taverna_player_runs_state_column.rb +5 -0
- data/db/migrate/20130812155839_add_name_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130918135348_create_taverna_player_service_credentials.rb +15 -0
- data/db/migrate/20130919154200_add_displayed_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131007153209_add_job_ref_to_taverna_player_runs.rb +13 -0
- data/db/migrate/20131010094537_add_reply_caching_to_taverna_player_interactions.rb +19 -0
- data/db/migrate/20131017141514_add_failure_message_to_taverna_player_run.rb +5 -0
- data/db/migrate/20131018152940_add_serial_number_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131018160715_add_parent_run_id_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20131102113933_add_page_uri_to_taverna_player_interaction.rb +5 -0
- data/db/migrate/20131105115218_remove_proxy_from_taverna_player_runs.rb +11 -0
- data/db/migrate/20131105141934_change_taverna_player_interactions_output_value_column_name.rb +5 -0
- data/db/migrate/20131112165520_add_user_to_taverna_player_run.rb +5 -0
- data/lib/generators/taverna_player/callbacks_generator.rb +25 -0
- data/lib/generators/taverna_player/controllers_generator.rb +30 -0
- data/lib/generators/taverna_player/install_generator.rb +30 -0
- data/lib/generators/taverna_player/job_generator.rb +26 -0
- data/lib/generators/taverna_player/models_generator.rb +27 -0
- data/lib/generators/taverna_player/renderers_generator.rb +26 -0
- data/lib/generators/taverna_player/views_generator.rb +27 -0
- data/lib/generators/templates/ReadMe.txt +118 -0
- data/lib/generators/templates/callbacks/render_callbacks.rb +56 -0
- data/lib/generators/templates/callbacks/worker_callbacks.rb +31 -0
- data/lib/generators/templates/controllers/runs_controller.rb +20 -0
- data/lib/generators/templates/controllers/service_credentials_controller.rb +20 -0
- data/lib/generators/templates/initializer.rb +154 -0
- data/lib/generators/templates/models/run.rb +20 -0
- data/lib/tasks/delete-cancelled-runs.rake +26 -0
- data/lib/tasks/delete-old-embedded-runs.rake +26 -0
- data/lib/taverna-player.rb +139 -0
- data/lib/taverna_player/concerns/controllers/runs_controller.rb +281 -0
- data/lib/taverna_player/concerns/controllers/service_credentials_controller.rb +89 -0
- data/lib/taverna_player/concerns/models/run.rb +205 -0
- data/lib/taverna_player/engine.rb +23 -0
- data/lib/taverna_player/model_proxy.rb +51 -0
- data/lib/taverna_player/output_renderer.rb +96 -0
- data/lib/taverna_player/render_callbacks.rb +41 -0
- data/lib/taverna_player/version.rb +15 -0
- data/lib/taverna_player/worker.rb +325 -0
- data/script/delayed_job +5 -0
- data/script/rails +8 -0
- data/taverna_player.gemspec +46 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +16 -0
- data/test/dummy/app/assets/stylesheets/application.css +14 -0
- data/test/dummy/app/controllers/application_controller.rb +15 -0
- data/test/dummy/app/controllers/home_controller.rb +16 -0
- data/test/dummy/app/controllers/taverna_player/runs_controller.rb +25 -0
- data/test/dummy/app/controllers/taverna_player/service_credentials_controller.rb +25 -0
- data/test/dummy/app/controllers/workflows_controller.rb +17 -0
- data/test/dummy/app/models/user.rb +15 -0
- data/test/dummy/app/models/workflow.rb +32 -0
- data/test/dummy/app/views/home/index.html.erb +18 -0
- data/test/dummy/app/views/layouts/application.html.erb +43 -0
- data/test/dummy/app/views/workflows/index.html.erb +35 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +58 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/taverna_player.example.rb +40 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +22 -0
- data/test/dummy/db/migrate/20130314103555_create_workflows.rb +12 -0
- data/test/dummy/db/migrate/20130318141557_create_taverna_player_runs.taverna_player.rb +17 -0
- data/test/dummy/db/migrate/20130318141558_create_taverna_player_run_ports.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130318173013_add_attachment_file_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130319183816_create_delayed_jobs.taverna_player.rb +23 -0
- data/test/dummy/db/migrate/20130320102635_add_status_message_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130321161859_add_depth_and_metadata_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130704100146_add_attachment_results_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130705142816_add_embedded_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130714142144_create_taverna_player_interactions.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20130717084809_add_proxy_to_taverna_player_runs.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130718102707_add_stop_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811204449_add_attachment_log_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811212709_change_taverna_player_runs_state_column.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130812161152_add_name_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130918155525_create_taverna_player_service_credentials.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130919155202_add_displayed_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131007153659_add_job_ref_to_taverna_player_runs.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20131016123941_add_reply_caching_to_taverna_player_interactions.taverna_player.rb +20 -0
- data/test/dummy/db/migrate/20131017141614_add_failure_message_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018153316_add_serial_number_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018164614_add_parent_run_id_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131102114343_add_page_uri_to_taverna_player_interaction.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131105115724_remove_proxy_from_taverna_player_runs.taverna_player.rb +12 -0
- data/test/dummy/db/migrate/20131105142417_change_taverna_player_interactions_output_value_column_name.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131112165815_add_user_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131114130937_create_users.rb +10 -0
- data/test/dummy/db/schema.rb +123 -0
- data/test/dummy/lib/callbacks.rb +35 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/delayed_job +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/functional/home_controller_test.rb +28 -0
- data/test/dummy/test/functional/workflows_controller_test.rb +21 -0
- data/test/fixtures/files/crassostrea_gigas.csv +737 -0
- data/test/fixtures/taverna_player/interactions.yml +32 -0
- data/test/fixtures/taverna_player/run_ports.yml +54 -0
- data/test/fixtures/taverna_player/runs.yml +69 -0
- data/test/fixtures/taverna_player/service_credentials.yml +25 -0
- data/test/fixtures/users.yml +16 -0
- data/test/fixtures/workflows.yml +32 -0
- data/test/functional/taverna_player/runs_controller_test.rb +316 -0
- data/test/functional/taverna_player/service_credentials_controller_test.rb +99 -0
- data/test/taverna_player_test.rb +25 -0
- data/test/test_helper.rb +33 -0
- data/test/unit/helpers/taverna_player/application_helper_test.rb +70 -0
- data/test/unit/helpers/taverna_player/runs_helper_test.rb +45 -0
- data/test/unit/taverna_player/interaction_test.rb +47 -0
- data/test/unit/taverna_player/run_port_test.rb +309 -0
- data/test/unit/taverna_player/run_test.rb +196 -0
- data/test/unit/taverna_player/service_credential_test.rb +64 -0
- data/test/workflows/hello.t2flow +164 -0
- data/test/workflows/list_with_errors.t2flow +107 -0
- data/test/workflows/pass_through.t2flow +12 -0
- metadata +539 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
|
3
|
+
#
|
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
|
5
|
+
#
|
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
|
8
|
+
# number 283359.
|
|
9
|
+
#
|
|
10
|
+
# Author: Robert Haines
|
|
11
|
+
#------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
require 'test_helper'
|
|
14
|
+
|
|
15
|
+
module TavernaPlayer
|
|
16
|
+
class RunTest < ActiveSupport::TestCase
|
|
17
|
+
test "should not save run with an illegal state" do
|
|
18
|
+
run = Run.new
|
|
19
|
+
run.workflow = workflows(:one)
|
|
20
|
+
run.state = :not_a_state
|
|
21
|
+
assert !run.save, "Saved the run with an illegal state"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "should not save run with no workflow" do
|
|
25
|
+
run = Run.new
|
|
26
|
+
run.state = :pending
|
|
27
|
+
assert !run.save, "Saved the run without a workflow id"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "should not be able to set state to cancelled if run not stopped" do
|
|
31
|
+
run = Run.new
|
|
32
|
+
run.state = :cancelled
|
|
33
|
+
assert_not_equal :cancelled, run.state, "The run status was set to "\
|
|
34
|
+
"cancelled without being marked as stopped first. See the note in "\
|
|
35
|
+
"the run model file for why this is not allowed."
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test "should not save run with cancelled state if not marked as stopped" do
|
|
39
|
+
run = Run.new
|
|
40
|
+
run.workflow = workflows(:one)
|
|
41
|
+
run.saved_state = "cancelled"
|
|
42
|
+
run.stop = false
|
|
43
|
+
refute run.save, "Saved run with cancelled state when not stopped first"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test "should cancel run if run set to stop first" do
|
|
47
|
+
run = Run.new
|
|
48
|
+
run.workflow = workflows(:one)
|
|
49
|
+
refute run.stop, "Run's stop flag was set upon creation"
|
|
50
|
+
run.cancel
|
|
51
|
+
run.state = :cancelled
|
|
52
|
+
assert run.cancelled?, "Run was not cancelled"
|
|
53
|
+
assert run.complete?, "Run not showing as complete when cancelled"
|
|
54
|
+
assert_equal :cancelled, run.state, "Run's state was not cancelled"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test "should not be able to set state to cancelling directly" do
|
|
58
|
+
run = Run.new
|
|
59
|
+
run.workflow = workflows(:one)
|
|
60
|
+
assert run.save, "Could not save run initially"
|
|
61
|
+
|
|
62
|
+
run.state = :cancelling
|
|
63
|
+
refute run.save, "Saved the run with the cancelling state."
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
test "should be in cancelling state after being cancelled" do
|
|
67
|
+
run = Run.new
|
|
68
|
+
run.workflow = workflows(:one)
|
|
69
|
+
run.state = :running
|
|
70
|
+
assert run.save, "Could not save run initially."
|
|
71
|
+
run.delayed_job_id = nil # Remove delayed job to pretend it is running.
|
|
72
|
+
assert_equal :running, run.state, "Run is not in running state."
|
|
73
|
+
|
|
74
|
+
run.cancel
|
|
75
|
+
assert run.stop, "Run was not stopped."
|
|
76
|
+
assert run.cancelling?, "Run did not move into cancelling state"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
test "should create run with a default name" do
|
|
80
|
+
run = Run.new
|
|
81
|
+
assert_not_nil run.name, "Default run name is not set."
|
|
82
|
+
assert_not_equal "", run.name, "Default run name is blank ('')."
|
|
83
|
+
assert_equal "None", run.name, "Default run name is not 'None'."
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
test "should not save run with nil name" do
|
|
87
|
+
run = Run.new
|
|
88
|
+
run.name = nil
|
|
89
|
+
refute run.save, "Saved the run with a nil name."
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
test "should not save run with an empty name" do
|
|
93
|
+
run = Run.new
|
|
94
|
+
run.name = ""
|
|
95
|
+
refute run.save, "Saved the run with an empty name."
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
test "complete run states" do
|
|
99
|
+
refute taverna_player_runs(:one).complete?, "Run not complete"
|
|
100
|
+
refute taverna_player_runs(:two).complete?, "Run not complete"
|
|
101
|
+
assert taverna_player_runs(:three).complete?, "Run is complete"
|
|
102
|
+
refute taverna_player_runs(:four).complete?, "Run not complete"
|
|
103
|
+
refute taverna_player_runs(:five).complete?, "Run not complete"
|
|
104
|
+
assert taverna_player_runs(:six).complete?, "Run is complete"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
test "a parent cannot be younger than its child" do
|
|
108
|
+
older = Run.create(:workflow_id => 1)
|
|
109
|
+
young = Run.create(:workflow_id => 1)
|
|
110
|
+
older.parent = young
|
|
111
|
+
refute older.save, "Run saved with a younger parent"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
test "parent/child graph should be acyclic" do
|
|
115
|
+
parent = Run.create(:workflow_id => 1)
|
|
116
|
+
child = Run.create(:workflow_id => 1)
|
|
117
|
+
parent.children << child
|
|
118
|
+
parent.parent = child
|
|
119
|
+
refute parent.save, "Run saved with child as its parent"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
test "finding root ancestor of a run" do
|
|
123
|
+
one = Run.create(:workflow_id => 1)
|
|
124
|
+
assert_same one, one.root_ancestor, "Single run is not its own root"
|
|
125
|
+
assert_equal 0, one.children.count, "Not a parent, should not have children"
|
|
126
|
+
|
|
127
|
+
two = Run.create(:workflow_id => 1)
|
|
128
|
+
assert_same two, two.root_ancestor, "Single run is not its own root"
|
|
129
|
+
|
|
130
|
+
two.parent = one
|
|
131
|
+
two.save
|
|
132
|
+
assert_same one, one.root_ancestor, "Parent run is not its own root"
|
|
133
|
+
assert_same one, two.root_ancestor, "Child run does not have parent as its root"
|
|
134
|
+
assert_equal 1, one.children.count, "Parent should have one child"
|
|
135
|
+
|
|
136
|
+
three = Run.create(:workflow_id => 1)
|
|
137
|
+
assert_same three, three.root_ancestor, "Single run is not its own root"
|
|
138
|
+
|
|
139
|
+
three.parent = two
|
|
140
|
+
three.save
|
|
141
|
+
assert_same one, one.root_ancestor, "Parent run is not its own root"
|
|
142
|
+
assert_same one, two.root_ancestor, "Child run does not have parent as its root"
|
|
143
|
+
assert_same one, three.root_ancestor, "Grandchild run does not have grandparent as its root"
|
|
144
|
+
assert_equal 1, two.children.count, "Parent should have one child"
|
|
145
|
+
assert_equal 1, one.children.count, "Grandparent should have one child"
|
|
146
|
+
|
|
147
|
+
four = Run.create(:workflow_id => 1)
|
|
148
|
+
assert_same four, four.root_ancestor, "Single run is not its own root"
|
|
149
|
+
|
|
150
|
+
four.parent = one
|
|
151
|
+
four.save
|
|
152
|
+
assert_same one, four.root_ancestor, "Child run does not have parent as its root"
|
|
153
|
+
assert_equal 2, one.children.count, "Parent should have two children"
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
test "create run from another run" do
|
|
157
|
+
assert_difference(["Run.count", "RunPort::Input.count"]) do
|
|
158
|
+
parent = taverna_player_runs(:three)
|
|
159
|
+
run = Run.create(:parent_id => parent.id)
|
|
160
|
+
assert run.valid?, "Run is invalid"
|
|
161
|
+
refute run.new_record?, "Run was not saved"
|
|
162
|
+
assert run.has_parent?, "Run should have a parent"
|
|
163
|
+
assert_equal 1, run.inputs.count, "Run should have 1 input"
|
|
164
|
+
refute_same parent.inputs.first, run.inputs.first, "Input was linked, not copied"
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
test "new run from another run" do
|
|
169
|
+
assert_difference(["Run.count", "RunPort::Input.count"]) do
|
|
170
|
+
parent = taverna_player_runs(:three)
|
|
171
|
+
run = Run.new(:parent_id => parent.id)
|
|
172
|
+
assert run.save, "Run was not saved"
|
|
173
|
+
assert run.has_parent?, "Run should have a parent"
|
|
174
|
+
assert_equal 1, run.inputs.count, "Run should have 1 input"
|
|
175
|
+
refute_same parent.inputs.first, run.inputs.first, "Input was linked, not copied"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
test "killing parent should orphan child" do
|
|
180
|
+
parent = taverna_player_runs(:three)
|
|
181
|
+
run = Run.create(:parent_id => parent.id)
|
|
182
|
+
assert run.valid?, "Child run is invalid"
|
|
183
|
+
assert_not_nil run.parent_id, "Child run has no parent"
|
|
184
|
+
|
|
185
|
+
parent.state = :finished # Fake it.
|
|
186
|
+
parent.save
|
|
187
|
+
assert_difference(["Run.count", "RunPort::Input.count"], -1) do
|
|
188
|
+
parent.destroy
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Reload child state
|
|
192
|
+
run.reload
|
|
193
|
+
assert_nil run.parent_id, "Child run still has a parent"
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
|
3
|
+
#
|
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
|
5
|
+
#
|
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
|
8
|
+
# number 283359.
|
|
9
|
+
#
|
|
10
|
+
# Author: Robert Haines
|
|
11
|
+
#------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
require 'test_helper'
|
|
14
|
+
|
|
15
|
+
module TavernaPlayer
|
|
16
|
+
class ServiceCredentialTest < ActiveSupport::TestCase
|
|
17
|
+
test "should not save credential without a uri" do
|
|
18
|
+
cred = ServiceCredential.new
|
|
19
|
+
cred.login = "test"
|
|
20
|
+
cred.password = "test"
|
|
21
|
+
cred.password_confirmation = "test"
|
|
22
|
+
|
|
23
|
+
refute cred.save, "Saved the credential without a URI"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test "should not save credential without a login" do
|
|
27
|
+
cred = ServiceCredential.new
|
|
28
|
+
cred.uri = "test"
|
|
29
|
+
cred.password = "test"
|
|
30
|
+
cred.password_confirmation = "test"
|
|
31
|
+
|
|
32
|
+
refute cred.save, "Saved the credential without a login"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
test "should not save credential without a password" do
|
|
36
|
+
cred = ServiceCredential.new
|
|
37
|
+
cred.uri = "test"
|
|
38
|
+
cred.login = "test"
|
|
39
|
+
cred.password_confirmation = "test"
|
|
40
|
+
|
|
41
|
+
refute cred.save, "Saved the credential without a password"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
test "should not save credential without a password confirmation" do
|
|
45
|
+
cred = ServiceCredential.new
|
|
46
|
+
cred.uri = "test"
|
|
47
|
+
cred.login = "test"
|
|
48
|
+
cred.password = "test"
|
|
49
|
+
|
|
50
|
+
refute cred.save, "Saved the credential without a password confirmation"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
test "should not save credential without a confirmed password" do
|
|
54
|
+
cred = ServiceCredential.new
|
|
55
|
+
cred.uri = "test"
|
|
56
|
+
cred.login = "test"
|
|
57
|
+
cred.password = "test"
|
|
58
|
+
cred.password_confirmation = "TEST"
|
|
59
|
+
|
|
60
|
+
refute cred.save, "Saved the credential without a confirmed password"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="a9108c6d-85ad-4fc3-9f53-6ef747c2f8ab" role="top"><name>Hello__World_</name><inputPorts /><outputPorts><port><name>Message</name><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
2
|
+
<annotationAssertions>
|
|
3
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
4
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
|
5
|
+
<text>A friendly message.</text>
|
|
6
|
+
</annotationBean>
|
|
7
|
+
<date>2012-03-14 15:13:31.514 GMT</date>
|
|
8
|
+
<creators />
|
|
9
|
+
<curationEventList />
|
|
10
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
11
|
+
</annotationAssertions>
|
|
12
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></port></outputPorts><processors><processor><name>Hello</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
13
|
+
<annotationAssertions>
|
|
14
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
15
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
|
16
|
+
<text>A hard-coded value to output as the message.</text>
|
|
17
|
+
</annotationBean>
|
|
18
|
+
<date>2012-03-14 17:14:31.154 GMT</date>
|
|
19
|
+
<creators />
|
|
20
|
+
<curationEventList />
|
|
21
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
22
|
+
</annotationAssertions>
|
|
23
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.3</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="">
|
|
24
|
+
<value>Hello, World!</value>
|
|
25
|
+
</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.3</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="">
|
|
26
|
+
<maxJobs>1</maxJobs>
|
|
27
|
+
</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.3</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.3</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.3</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="">
|
|
28
|
+
<backoffFactor>1.0</backoffFactor>
|
|
29
|
+
<initialDelay>1000</initialDelay>
|
|
30
|
+
<maxDelay>5000</maxDelay>
|
|
31
|
+
<maxRetries>0</maxRetries>
|
|
32
|
+
</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.3</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="dataflow"><port>Message</port></sink><source type="processor"><processor>Hello</processor><port>value</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
33
|
+
<annotationAssertions>
|
|
34
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
35
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
|
36
|
+
<text>A simple workflow that just says "Hello, World!"</text>
|
|
37
|
+
</annotationBean>
|
|
38
|
+
<date>2012-02-29 16:37:51.43 GMT</date>
|
|
39
|
+
<creators />
|
|
40
|
+
<curationEventList />
|
|
41
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
42
|
+
</annotationAssertions>
|
|
43
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
44
|
+
<annotationAssertions>
|
|
45
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
46
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
47
|
+
<identification>1f0f1c4f-2aff-4918-8659-d0e6dfa6f0d3</identification>
|
|
48
|
+
</annotationBean>
|
|
49
|
+
<date>2012-03-14 13:53:52.624 GMT</date>
|
|
50
|
+
<creators />
|
|
51
|
+
<curationEventList />
|
|
52
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
53
|
+
</annotationAssertions>
|
|
54
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
55
|
+
<annotationAssertions>
|
|
56
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
57
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
58
|
+
<identification>b9556b39-8656-4a17-bf5c-37de30fe7df3</identification>
|
|
59
|
+
</annotationBean>
|
|
60
|
+
<date>2010-07-09 15:01:39.283 BST</date>
|
|
61
|
+
<creators />
|
|
62
|
+
<curationEventList />
|
|
63
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
64
|
+
</annotationAssertions>
|
|
65
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><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>7b430693-1b07-4fb3-a779-0718ac2d2fd5</identification>
|
|
70
|
+
</annotationBean>
|
|
71
|
+
<date>2012-02-29 16:44:22.750 GMT</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><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
77
|
+
<annotationAssertions>
|
|
78
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
79
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
|
|
80
|
+
<text>Robert Haines</text>
|
|
81
|
+
</annotationBean>
|
|
82
|
+
<date>2012-02-29 16:45:13.479 GMT</date>
|
|
83
|
+
<creators />
|
|
84
|
+
<curationEventList />
|
|
85
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
86
|
+
</annotationAssertions>
|
|
87
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
88
|
+
<annotationAssertions>
|
|
89
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
90
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
91
|
+
<identification>8e8d3bab-3125-423d-a6de-4e0e510b00cd</identification>
|
|
92
|
+
</annotationBean>
|
|
93
|
+
<date>2012-02-29 16:45:16.175 GMT</date>
|
|
94
|
+
<creators />
|
|
95
|
+
<curationEventList />
|
|
96
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
97
|
+
</annotationAssertions>
|
|
98
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
99
|
+
<annotationAssertions>
|
|
100
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
101
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
|
|
102
|
+
<text>Hello, World!</text>
|
|
103
|
+
</annotationBean>
|
|
104
|
+
<date>2012-02-29 16:37:10.698 GMT</date>
|
|
105
|
+
<creators />
|
|
106
|
+
<curationEventList />
|
|
107
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
108
|
+
</annotationAssertions>
|
|
109
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
110
|
+
<annotationAssertions>
|
|
111
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
112
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
113
|
+
<identification>a9108c6d-85ad-4fc3-9f53-6ef747c2f8ab</identification>
|
|
114
|
+
</annotationBean>
|
|
115
|
+
<date>2012-03-14 17:14:37.989 GMT</date>
|
|
116
|
+
<creators />
|
|
117
|
+
<curationEventList />
|
|
118
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
119
|
+
</annotationAssertions>
|
|
120
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
121
|
+
<annotationAssertions>
|
|
122
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
123
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
124
|
+
<identification>0d4d84d5-23d7-437c-baf7-167fbb1ddfb1</identification>
|
|
125
|
+
</annotationBean>
|
|
126
|
+
<date>2012-03-14 14:03:09.577 GMT</date>
|
|
127
|
+
<creators />
|
|
128
|
+
<curationEventList />
|
|
129
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
130
|
+
</annotationAssertions>
|
|
131
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
132
|
+
<annotationAssertions>
|
|
133
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
134
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
135
|
+
<identification>3fb92eb6-fb45-41e0-9103-37a93b9e82a6</identification>
|
|
136
|
+
</annotationBean>
|
|
137
|
+
<date>2012-03-14 15:14:13.900 GMT</date>
|
|
138
|
+
<creators />
|
|
139
|
+
<curationEventList />
|
|
140
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
141
|
+
</annotationAssertions>
|
|
142
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
143
|
+
<annotationAssertions>
|
|
144
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
145
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
146
|
+
<identification>db4d63ef-b02e-426d-b5ef-3d62a33aac51</identification>
|
|
147
|
+
</annotationBean>
|
|
148
|
+
<date>2012-02-29 16:38:47.341 GMT</date>
|
|
149
|
+
<creators />
|
|
150
|
+
<curationEventList />
|
|
151
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
152
|
+
</annotationAssertions>
|
|
153
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
154
|
+
<annotationAssertions>
|
|
155
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
156
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
157
|
+
<identification>a2234413-7ae7-4380-8881-b79eb13a3c2a</identification>
|
|
158
|
+
</annotationBean>
|
|
159
|
+
<date>2012-03-14 15:13:36.473 GMT</date>
|
|
160
|
+
<creators />
|
|
161
|
+
<curationEventList />
|
|
162
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
163
|
+
</annotationAssertions>
|
|
164
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="dd8e0c1c-588f-4a11-a2c7-f0415625cd93" role="top"><name>Workflow11</name><inputPorts /><outputPorts><port><name>OUT</name><annotations /></port></outputPorts><processors><processor><name>Sometimes_Fails</name><inputPorts><port><name>in</name><depth>0</depth></port></inputPorts><outputPorts><port><name>out</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="in" to="in" /></inputMap><outputMap><map from="out" to="out" /></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>in</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
|
+
</inputs>
|
|
14
|
+
<outputs>
|
|
15
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
|
16
|
+
<name>out</name>
|
|
17
|
+
<depth>0</depth>
|
|
18
|
+
<mimeTypes>
|
|
19
|
+
<string>'text/plain'</string>
|
|
20
|
+
</mimeTypes>
|
|
21
|
+
<granularDepth>0</granularDepth>
|
|
22
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
|
23
|
+
</outputs>
|
|
24
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
|
25
|
+
<localDependencies />
|
|
26
|
+
<artifactDependencies />
|
|
27
|
+
<script>import java.util.Random;
|
|
28
|
+
|
|
29
|
+
Random r = new Random();
|
|
30
|
+
|
|
31
|
+
if ((r.nextInt() % 4) == 0) {
|
|
32
|
+
throw new RuntimeException("Fails every four runs!");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
out = in;</script>
|
|
36
|
+
<dependencies />
|
|
37
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.TestSometimesFails</localworkerName>
|
|
38
|
+
</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.3</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="">
|
|
39
|
+
<maxJobs>1</maxJobs>
|
|
40
|
+
</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.3</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.3</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.3</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="">
|
|
41
|
+
<backoffFactor>1.0</backoffFactor>
|
|
42
|
+
<initialDelay>1000</initialDelay>
|
|
43
|
+
<maxDelay>5000</maxDelay>
|
|
44
|
+
<maxRetries>0</maxRetries>
|
|
45
|
+
</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.3</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="in" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Create_Lots_Of_Strings</name><inputPorts /><outputPorts><port><name>strings</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="strings" to="strings" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
|
46
|
+
<inputs />
|
|
47
|
+
<outputs>
|
|
48
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
|
49
|
+
<name>strings</name>
|
|
50
|
+
<depth>1</depth>
|
|
51
|
+
<mimeTypes>
|
|
52
|
+
<string>l('text/plain')</string>
|
|
53
|
+
</mimeTypes>
|
|
54
|
+
<granularDepth>1</granularDepth>
|
|
55
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
|
56
|
+
</outputs>
|
|
57
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
|
58
|
+
<localDependencies />
|
|
59
|
+
<artifactDependencies />
|
|
60
|
+
<script>List strings = new ArrayList();
|
|
61
|
+
for (int i = 0; i < 40; i++) {
|
|
62
|
+
strings.add("String" + i);
|
|
63
|
+
}
|
|
64
|
+
</script>
|
|
65
|
+
<dependencies />
|
|
66
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
|
|
67
|
+
</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.3</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="">
|
|
68
|
+
<maxJobs>1</maxJobs>
|
|
69
|
+
</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.3</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.3</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.3</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="">
|
|
70
|
+
<backoffFactor>1.0</backoffFactor>
|
|
71
|
+
<initialDelay>1000</initialDelay>
|
|
72
|
+
<maxDelay>5000</maxDelay>
|
|
73
|
+
<maxRetries>0</maxRetries>
|
|
74
|
+
</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.3</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>Sometimes_Fails</processor><port>in</port></sink><source type="processor"><processor>Create_Lots_Of_Strings</processor><port>strings</port></source></datalink><datalink><sink type="dataflow"><port>OUT</port></sink><source type="processor"><processor>Sometimes_Fails</processor><port>out</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
75
|
+
<annotationAssertions>
|
|
76
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
77
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
78
|
+
<identification>dd8e0c1c-588f-4a11-a2c7-f0415625cd93</identification>
|
|
79
|
+
</annotationBean>
|
|
80
|
+
<date>2011-08-11 17:56:40.226 BST</date>
|
|
81
|
+
<creators />
|
|
82
|
+
<curationEventList />
|
|
83
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
84
|
+
</annotationAssertions>
|
|
85
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
86
|
+
<annotationAssertions>
|
|
87
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
88
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
89
|
+
<identification>22d97b56-800c-4a76-b3ec-c9e26298cda6</identification>
|
|
90
|
+
</annotationBean>
|
|
91
|
+
<date>2011-08-01 14:43:36.713 BST</date>
|
|
92
|
+
<creators />
|
|
93
|
+
<curationEventList />
|
|
94
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
95
|
+
</annotationAssertions>
|
|
96
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
|
97
|
+
<annotationAssertions>
|
|
98
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
99
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
|
100
|
+
<identification>e365424c-f8a1-4ddf-9d00-b7a5e4733c10</identification>
|
|
101
|
+
</annotationBean>
|
|
102
|
+
<date>2011-08-01 14:43:11.545 BST</date>
|
|
103
|
+
<creators />
|
|
104
|
+
<curationEventList />
|
|
105
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
|
106
|
+
</annotationAssertions>
|
|
107
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
|