taverna-player 0.6.0 → 0.7.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.
- checksums.yaml +15 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGES.rdoc +19 -0
- data/README.rdoc +24 -8
- data/app/views/taverna_player/runs/_info.json.jbuilder +1 -2
- data/app/views/taverna_player/runs/_port.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/create.json.jbuilder +3 -1
- data/app/views/taverna_player/runs/new.json.jbuilder +15 -1
- data/app/views/taverna_player/runs/show.json.jbuilder +11 -9
- data/lib/taverna_player/concerns/controllers/runs_controller.rb +10 -3
- data/lib/taverna_player/extras/paperclip-spoofing-fix.rb +25 -0
- data/lib/taverna_player/version.rb +2 -2
- data/lib/taverna_player/worker.rb +30 -7
- data/taverna_player.gemspec +2 -2
- data/test/dummy/app/views/layouts/application.html.erb +2 -1
- data/test/fixtures/files/plain-text.bad-extension +1 -0
- data/test/functional/taverna_player/runs_controller_test.rb +11 -2
- data/test/unit/taverna_player/run_port_test.rb +18 -0
- data/test/unit/taverna_player/worker_test.rb +39 -2
- metadata +14 -47
- data/app/views/taverna_player/runs/_inputs.json.jbuilder +0 -8
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDIzMTk5MTVmNTA4MWMzNDUyYWExMjFjMThiZTcxY2IzNDdmNTM1NA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YzNjZTVjNzBhN2JkYmQxNjBkZWM3NTAwMGU0NmViMDBhYjRiZjc4Ng==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDNmNGNkMTI4MWI5NDJjYTQ5NGFlZWQ4NDYxMmQ2YjBkMjIwY2MyZDhmZGQw
|
10
|
+
MTI5NzExNzE1MzRmMGMzM2UxYjNkYWVmNDcwZTJiYWY4Y2Y5NGU0YzFmZDRi
|
11
|
+
MDRkMmQ4ZmMxYzk2MzIzNmM4MDgxOTY4ZGI0ZDI2ZjI1OTRkYzI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MGVlM2MzNTk5ZDMyNDliYzY2YWJlOTM4YzM1NjAxYzE1Y2VhOWI1NGNjMzZk
|
14
|
+
N2EwMDkxNmQ1YmFlYTYxMmZiMDZhZWY2YzEyMTU0MjFhNzYxNDllNmI5OTA2
|
15
|
+
Y2U3N2RkYWUzZWNiMjA5ZDhkNDI2ZWQ3M2VjYzM5NWI5ODg5OGQ=
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
taverna-player
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p484
|
data/CHANGES.rdoc
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
= Changes log for Taverna Player
|
2
2
|
|
3
|
+
== Version 0.7.0
|
4
|
+
|
5
|
+
* Refactor full run JSON output.
|
6
|
+
* Improve the runs/new JSON output.
|
7
|
+
* Add more interaction fields to the JSON output.
|
8
|
+
* Fix non-ASCII character in gemspec info.
|
9
|
+
* Fix non-ASCII character in README.
|
10
|
+
* [TAV-508] Allow workers to run against different servers.
|
11
|
+
* [TAV-511] Don't save run log if it's an empty file.
|
12
|
+
* Add note about JSON interface to the Readme.
|
13
|
+
* Add a note about the API Docs to the Readme.
|
14
|
+
* Rework the testing of an empty log file for better testing.
|
15
|
+
* Add tests for taverna credentials in env variable.
|
16
|
+
* [TAV-512] Fix overzealous file extension restrictions for inputs.
|
17
|
+
* Add an alert flash to the test layout.
|
18
|
+
* Use flash[:alert] not flash[:error].
|
19
|
+
* Recover from failed run creation more gracefully.
|
20
|
+
* Bump version of t2-server gem we are using.
|
21
|
+
|
3
22
|
== Version 0.6.0
|
4
23
|
|
5
24
|
* [TAV-485] Set up separate worker integration test.
|
data/README.rdoc
CHANGED
@@ -6,9 +6,9 @@ URL:: http://www.taverna.org.uk
|
|
6
6
|
Licence:: BSD (See LICENCE or http://www.opensource.org/licenses/bsd-license.php)
|
7
7
|
Copyright:: (c) 2013, 2014 The University of Manchester, UK
|
8
8
|
|
9
|
-
{<img src="https://badge.fury.io/rb/taverna-player.
|
9
|
+
{<img src="https://badge.fury.io/rb/taverna-player.svg" alt="Gem Version" />}[http://badge.fury.io/rb/taverna-player]
|
10
10
|
{<img src="https://codeclimate.com/github/myGrid/taverna-player.png" />}[https://codeclimate.com/github/myGrid/taverna-player]
|
11
|
-
{<img src="https://travis-ci.org/myGrid/taverna-player.
|
11
|
+
{<img src="https://travis-ci.org/myGrid/taverna-player.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/myGrid/taverna-player]
|
12
12
|
{<img src="https://coveralls.io/repos/myGrid/taverna-player/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/myGrid/taverna-player?branch=master]
|
13
13
|
|
14
14
|
== Synopsis
|
@@ -154,8 +154,8 @@ And everything should be found by the asset pipeline automatically.
|
|
154
154
|
Make sure you have flash messages in your main layout
|
155
155
|
(usually <tt>app/views/layouts/application.html.erb</tt>). For example:
|
156
156
|
|
157
|
-
<p
|
158
|
-
<p
|
157
|
+
<p id="notice"><%= notice %></p>
|
158
|
+
<p id="alert"><%= alert %></p>
|
159
159
|
|
160
160
|
Taverna Player uses delayed_job to run workflows on a Taverna Server. If your
|
161
161
|
application is not already using delayed_job then you can install the
|
@@ -687,7 +687,7 @@ running:
|
|
687
687
|
https://example.com:8443/
|
688
688
|
|
689
689
|
The above example shows a https server running on port 8443. If the service is
|
690
|
-
on port 80 for http or port 443 for https then you don
|
690
|
+
on port 80 for http or port 443 for https then you don't need to specify the
|
691
691
|
port.
|
692
692
|
|
693
693
|
If there are services on the same host that require different credentials then
|
@@ -712,6 +712,25 @@ it is rserve:
|
|
712
712
|
|
713
713
|
rserve://example.com:6311
|
714
714
|
|
715
|
+
== The Taverna Player API
|
716
|
+
|
717
|
+
There is more information about how you can more closely integrate Taverna
|
718
|
+
Player into your host application in the
|
719
|
+
{API Documentation}[http://mygrid.github.io/taverna-player].
|
720
|
+
|
721
|
+
== Embedding a workflow into another Web site
|
722
|
+
|
723
|
+
Workflow runs handled by Taverna Player can be embedded in other Web sites in
|
724
|
+
much the same way that media like YouTube videos can be. Documentation on how
|
725
|
+
to achieve this
|
726
|
+
{is available separately[https://github.com/myGrid/taverna-player/wiki/Embedding].
|
727
|
+
|
728
|
+
== Using Taverna Player as a Web Service
|
729
|
+
|
730
|
+
As well as providing HTML views to the host application, Taverna Player also
|
731
|
+
provides a RESTful Web Service interface. Documentation for this interface
|
732
|
+
{is available separately}[https://github.com/myGrid/taverna-player/wiki/JSON-API-Documentation].
|
733
|
+
|
715
734
|
== Limitations and to-do list
|
716
735
|
|
717
736
|
The most serious limitation is with the Service Credentials. Because Taverna
|
@@ -731,13 +750,10 @@ moment.
|
|
731
750
|
|
732
751
|
In no particular order:
|
733
752
|
|
734
|
-
* Taverna Player as a service. Allow usage of Taverna Player via a fully
|
735
|
-
RESTful interface with JSON and XML support (in progress).
|
736
753
|
* User specific (and therefore private) credentials wallet for secure services.
|
737
754
|
* Comprehensive Taverna Server administration panel. This would allow admin
|
738
755
|
users to view and manage runs directly on the Taverna Server along with
|
739
756
|
other such admin tasks.
|
740
|
-
* I18n support.
|
741
757
|
* oEmbed support (see http://oembed.com/ for more details).
|
742
758
|
|
743
759
|
== Support
|
@@ -1,2 +1 @@
|
|
1
|
-
json.extract! run, :id, :name, :workflow_id, :
|
2
|
-
:start_time, :finish_time
|
1
|
+
json.extract! run, :id, :name, :workflow_id, :state, :start_time, :finish_time
|
@@ -0,0 +1 @@
|
|
1
|
+
json.extract! port, :name, :depth, :value_type, :value_size, :path
|
@@ -1 +1,15 @@
|
|
1
|
-
|
1
|
+
workflow_title = TavernaPlayer.workflow_proxy.title(@workflow) || "None"
|
2
|
+
workflow_inputs = TavernaPlayer.workflow_proxy.inputs(@workflow)
|
3
|
+
|
4
|
+
json.run do
|
5
|
+
json.workflow_id @run.workflow_id
|
6
|
+
json.name workflow_title
|
7
|
+
unless workflow_inputs.empty?
|
8
|
+
json.inputs_attributes do
|
9
|
+
json.array! workflow_inputs do |input|
|
10
|
+
json.name input[:name]
|
11
|
+
json.value input[:example]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
json.partial! "info", :run => @run
|
2
2
|
|
3
|
-
json.
|
3
|
+
json.status_message @run.status_message
|
4
4
|
|
5
|
-
|
6
|
-
json.
|
7
|
-
|
8
|
-
json.depth output.depth
|
9
|
-
json.type output.metadata[:type]
|
10
|
-
json.size output.metadata[:size]
|
11
|
-
json.uri run_path(@run) + "/output/#{output.name}"
|
12
|
-
end
|
5
|
+
json.inputs @run.inputs do |input|
|
6
|
+
json.partial! "port", :port => input
|
7
|
+
end
|
13
8
|
|
9
|
+
json.outputs @run.outputs do |output|
|
10
|
+
json.partial! "port", :port => output
|
11
|
+
end
|
12
|
+
|
13
|
+
if @run.outputs.size > 0
|
14
14
|
json.outputs_zip @run.results.url
|
15
15
|
end
|
16
16
|
|
@@ -22,5 +22,7 @@ unless @interaction.nil?
|
|
22
22
|
json.interaction do
|
23
23
|
json.serial @interaction.serial
|
24
24
|
json.uri interaction_redirect(@interaction)
|
25
|
+
json.data @interaction.data
|
26
|
+
json.reply_uri "#{run_url(@run)}/interaction/#{@interaction.serial}"
|
25
27
|
end
|
26
28
|
end
|
@@ -126,11 +126,18 @@ module TavernaPlayer
|
|
126
126
|
# POST /runs
|
127
127
|
def create
|
128
128
|
@run = Run.new(params[:run])
|
129
|
+
|
130
|
+
# Set workflow, just in case the create fails and needs to redirect
|
131
|
+
# back to the form
|
132
|
+
@workflow = @run.workflow
|
133
|
+
|
129
134
|
if @run.save
|
130
135
|
flash[:notice] = "Run was successfully created."
|
136
|
+
respond_with(@run, :status => :created, :location => @run)
|
137
|
+
else
|
138
|
+
flash[:alert] = "Run was not successfully created."
|
139
|
+
respond_with(@run)
|
131
140
|
end
|
132
|
-
|
133
|
-
respond_with(@run, :status => :created, :location => @run)
|
134
141
|
end
|
135
142
|
|
136
143
|
# PUT /runs/1
|
@@ -146,7 +153,7 @@ module TavernaPlayer
|
|
146
153
|
flash[:notice] = "Run was deleted."
|
147
154
|
respond_with(@run)
|
148
155
|
else
|
149
|
-
flash[:
|
156
|
+
flash[:alert] = "Run must be cancelled before deletion."
|
150
157
|
respond_with(@run, :nothing => true, :status => :forbidden) do |format|
|
151
158
|
format.html { redirect_to :back }
|
152
159
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2014 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
|
+
# We need to override the default Paperclip spoofing detector because it does
|
14
|
+
# not allow us to have arbitrary file extensions on files.
|
15
|
+
#
|
16
|
+
# See https://github.com/thoughtbot/paperclip/issues/1470 and many others.
|
17
|
+
module Paperclip
|
18
|
+
class MediaTypeSpoofDetector
|
19
|
+
alias :original_spoofed? :spoofed?
|
20
|
+
|
21
|
+
def spoofed?
|
22
|
+
original_spoofed? ? !(calculated_content_type == "text/plain") : false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#------------------------------------------------------------------------------
|
2
|
-
# Copyright (c) 2013 The University of Manchester, UK.
|
2
|
+
# Copyright (c) 2013, 2014 The University of Manchester, UK.
|
3
3
|
#
|
4
4
|
# BSD Licenced. See LICENCE.rdoc for details.
|
5
5
|
#
|
@@ -11,5 +11,5 @@
|
|
11
11
|
#------------------------------------------------------------------------------
|
12
12
|
|
13
13
|
module TavernaPlayer
|
14
|
-
VERSION = "0.
|
14
|
+
VERSION = "0.7.0"
|
15
15
|
end
|
@@ -25,6 +25,13 @@ module TavernaPlayer
|
|
25
25
|
def initialize(run, workflow_file = nil)
|
26
26
|
@run = run
|
27
27
|
@workflow = workflow_file || TavernaPlayer.workflow_proxy.file(@run.workflow)
|
28
|
+
@server = "Run not yet initialized"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Return the server address that this worker is using. Used mainly for
|
32
|
+
# testing.
|
33
|
+
def server
|
34
|
+
@server.to_s
|
28
35
|
end
|
29
36
|
|
30
37
|
# This tells delayed_job to only try and complete each run once.
|
@@ -37,13 +44,12 @@ module TavernaPlayer
|
|
37
44
|
|
38
45
|
status_message("connect")
|
39
46
|
|
40
|
-
|
41
|
-
credentials =
|
42
|
-
TavernaPlayer.server_password)
|
47
|
+
@server = URI.parse(ENV["TAVERNA_URI"] || TavernaPlayer.server_address)
|
48
|
+
credentials = server_credentials
|
43
49
|
conn_params = TavernaPlayer.server_connection
|
44
50
|
|
45
51
|
begin
|
46
|
-
server = T2Server::Server.new(
|
52
|
+
server = T2Server::Server.new(@server, conn_params)
|
47
53
|
wkf = File.read(@workflow)
|
48
54
|
|
49
55
|
# Try and create the run bearing in mind that the server might be at
|
@@ -199,6 +205,20 @@ module TavernaPlayer
|
|
199
205
|
|
200
206
|
private
|
201
207
|
|
208
|
+
# Get the credentials for the server
|
209
|
+
def server_credentials
|
210
|
+
creds = ENV["TAVERNA_CREDENTIALS"]
|
211
|
+
|
212
|
+
if creds.nil?
|
213
|
+
user = TavernaPlayer.server_username
|
214
|
+
pass = TavernaPlayer.server_password
|
215
|
+
else
|
216
|
+
user, pass = creds.split(':')
|
217
|
+
end
|
218
|
+
|
219
|
+
T2Server::HttpBasic.new(user, pass)
|
220
|
+
end
|
221
|
+
|
202
222
|
# Run the specified callback and return false on error so that we know to
|
203
223
|
# return out of the worker code completely.
|
204
224
|
def run_callback(cb, message)
|
@@ -220,9 +240,12 @@ module TavernaPlayer
|
|
220
240
|
Dir.mktmpdir(run.id, Rails.root.join("tmp")) do |tmp_dir|
|
221
241
|
tmp_file_name = File.join(tmp_dir, "log.txt")
|
222
242
|
begin
|
223
|
-
|
224
|
-
|
225
|
-
|
243
|
+
# Only save the log file if it's not empty so as not to confuse
|
244
|
+
# Paperclip
|
245
|
+
unless run.log(tmp_file_name) == 0
|
246
|
+
@run.log = File.new(tmp_file_name)
|
247
|
+
@run.save
|
248
|
+
end
|
226
249
|
rescue T2Server::AttributeNotFoundError
|
227
250
|
# We don't care if there's no log but we do want to catch the error!
|
228
251
|
end
|
data/taverna_player.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Workflows using Taverna Server. Taverna Player surfaces a workflow in "\
|
26
26
|
"three ways: As a Web interface in the browser; As an embeddable widget "\
|
27
27
|
"to be included in any other Web page; As a REST-based Web Service. All "\
|
28
|
-
"three modes provide functionality to fully configure a workflow
|
28
|
+
"three modes provide functionality to fully configure a workflow's "\
|
29
29
|
"inputs; run the workflow on a Taverna Server; collect workflow outputs, "\
|
30
30
|
"logs and messages; and present the results in an appropriate manner."
|
31
31
|
s.license = "BSD"
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.add_dependency "rails", "~> 3.2.12"
|
37
37
|
s.add_dependency "jquery-rails", "~> 3.0"
|
38
38
|
s.add_dependency "paperclip", "~> 4.1"
|
39
|
-
s.add_dependency "t2-server", "~> 1.
|
39
|
+
s.add_dependency "t2-server", "~> 1.1"
|
40
40
|
s.add_dependency "delayed_job_active_record", "~> 4.0"
|
41
41
|
s.add_dependency "daemons", "~> 1.1.9"
|
42
42
|
s.add_dependency "rubyzip", "~> 0.9.9"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%
|
2
|
-
# Copyright (c) 2013 The University of Manchester, UK.
|
2
|
+
# Copyright (c) 2013, 2014 The University of Manchester, UK.
|
3
3
|
#
|
4
4
|
# BSD Licenced. See LICENCE.rdoc for details.
|
5
5
|
#
|
@@ -33,6 +33,7 @@
|
|
33
33
|
</p>
|
34
34
|
|
35
35
|
<p id="notice"><%= notice %></p>
|
36
|
+
<p id="alert"><%= alert %></p>
|
36
37
|
|
37
38
|
<%= yield %>
|
38
39
|
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a plain text file with a non-standard extension!
|
@@ -161,6 +161,15 @@ module TavernaPlayer
|
|
161
161
|
"Did not render with the correct layout"
|
162
162
|
end
|
163
163
|
|
164
|
+
test "should fail to create run via browser" do
|
165
|
+
assert_no_difference("Run.count") do
|
166
|
+
post :create, :run => { :workflow_id => @workflow.id, :name => nil }
|
167
|
+
end
|
168
|
+
|
169
|
+
assert_equal "Run was not successfully created.", flash[:alert],
|
170
|
+
"Incorrect or missing flash notice"
|
171
|
+
end
|
172
|
+
|
164
173
|
test "should create run via browser" do
|
165
174
|
assert_difference("Run.count") do
|
166
175
|
post :create, :run => { :workflow_id => @workflow.id }
|
@@ -244,7 +253,7 @@ module TavernaPlayer
|
|
244
253
|
delete :destroy, :id => @run1, :use_route => :taverna_player
|
245
254
|
end
|
246
255
|
|
247
|
-
assert_equal "Run must be cancelled before deletion.", flash[:
|
256
|
+
assert_equal "Run must be cancelled before deletion.", flash[:alert],
|
248
257
|
"Incorrect or missing flash notice"
|
249
258
|
assert_response :redirect, "Response was not a redirect"
|
250
259
|
assert_redirected_to runs_path, "Did not redirect correctly"
|
@@ -256,7 +265,7 @@ module TavernaPlayer
|
|
256
265
|
delete :destroy, :id => @run1, :format => :json
|
257
266
|
end
|
258
267
|
|
259
|
-
assert_equal "Run must be cancelled before deletion.", flash[:
|
268
|
+
assert_equal "Run must be cancelled before deletion.", flash[:alert],
|
260
269
|
"Incorrect or missing flash notice"
|
261
270
|
assert_response :forbidden, "Response was not forbidden"
|
262
271
|
end
|
@@ -478,5 +478,23 @@ module TavernaPlayer
|
|
478
478
|
"Incorrect filename generated"
|
479
479
|
refute @port7.filename.ends_with?(".zip"), "Filename has 'zip' suffix"
|
480
480
|
end
|
481
|
+
|
482
|
+
test "non-standard extensions for plain text files on input ports" do
|
483
|
+
file = fixture_file_upload "/files/plain-text.bad-extension"
|
484
|
+
assert_difference("RunPort::Input.count", 1, "Port was not created") do
|
485
|
+
port = RunPort::Input.create(:name => "test_port", :file => file)
|
486
|
+
assert port.valid?, "Port is invalid"
|
487
|
+
refute port.file.blank?, "File should be present"
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
test "non-standard extensions for plain text files on output ports" do
|
492
|
+
file = fixture_file_upload "/files/plain-text.bad-extension"
|
493
|
+
assert_difference("RunPort::Output.count", 1, "Port was not created") do
|
494
|
+
port = RunPort::Output.create(:name => "test_port", :file => file)
|
495
|
+
assert port.valid?, "Port is invalid"
|
496
|
+
refute port.file.blank?, "File should be present"
|
497
|
+
end
|
498
|
+
end
|
481
499
|
end
|
482
500
|
end
|
@@ -16,12 +16,14 @@ require 'test_helper'
|
|
16
16
|
class WorkerTest < ActiveSupport::TestCase
|
17
17
|
include FlexMock::TestCase
|
18
18
|
|
19
|
+
SERVER_ADDRESS = "http://localhost:1111/taverna"
|
20
|
+
|
19
21
|
setup do
|
20
22
|
@noop_callback = Proc.new { }
|
21
23
|
|
22
24
|
# Taverna Server config that we need to set here for Travis, etc.
|
23
25
|
TavernaPlayer.setup do |config|
|
24
|
-
config.server_address =
|
26
|
+
config.server_address = SERVER_ADDRESS
|
25
27
|
config.server_username = "taverna"
|
26
28
|
config.server_password = "taverna"
|
27
29
|
config.server_poll_interval = 0
|
@@ -35,7 +37,6 @@ class WorkerTest < ActiveSupport::TestCase
|
|
35
37
|
# Stuff we can't test yet in TavernaPlayer::Worker.
|
36
38
|
flexmock(TavernaPlayer::Worker).new_instances do |w|
|
37
39
|
w.should_receive(:download_outputs).and_return_undefined
|
38
|
-
w.should_receive(:download_log).and_return_undefined
|
39
40
|
w.should_receive(:process_outputs).and_return([])
|
40
41
|
end
|
41
42
|
|
@@ -47,6 +48,41 @@ class WorkerTest < ActiveSupport::TestCase
|
|
47
48
|
assert_equal 1, @worker.max_attempts, "Max attempts was not 1."
|
48
49
|
end
|
49
50
|
|
51
|
+
test "server address not set to a uri initially" do
|
52
|
+
assert_raise(URI::InvalidURIError) do
|
53
|
+
URI.parse(@worker.server)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
test "server address and creds from config" do
|
58
|
+
# Stub the creation of a run on a Taverna Server so it fails.
|
59
|
+
flexmock(T2Server::Server).new_instances do |s|
|
60
|
+
s.should_receive(:initialize_run).once.
|
61
|
+
and_raise(RuntimeError)
|
62
|
+
end
|
63
|
+
|
64
|
+
@worker.perform
|
65
|
+
|
66
|
+
assert_equal SERVER_ADDRESS, @worker.server.to_s,
|
67
|
+
"Server address not read from config."
|
68
|
+
end
|
69
|
+
|
70
|
+
test "server address and creds from env" do
|
71
|
+
ENV["TAVERNA_URI"] = "https://localhost:8080/taverna"
|
72
|
+
ENV["TAVERNA_CREDENTIALS"] = "taverna:taverna"
|
73
|
+
|
74
|
+
# Stub the creation of a run on a Taverna Server so it fails.
|
75
|
+
flexmock(T2Server::Server).new_instances do |s|
|
76
|
+
s.should_receive(:initialize_run).once.
|
77
|
+
and_raise(RuntimeError)
|
78
|
+
end
|
79
|
+
|
80
|
+
@worker.perform
|
81
|
+
|
82
|
+
assert_equal ENV["TAVERNA_URI"], @worker.server.to_s,
|
83
|
+
"Server address not read from env."
|
84
|
+
end
|
85
|
+
|
50
86
|
test "run a workflow" do
|
51
87
|
# Stub the creation of a run on a Taverna Server with a failure first.
|
52
88
|
flexmock(T2Server::Server).new_instances do |s|
|
@@ -65,6 +101,7 @@ class WorkerTest < ActiveSupport::TestCase
|
|
65
101
|
r.should_receive(:start_time).and_return(Time.now)
|
66
102
|
r.should_receive(:notifications).and_return([])
|
67
103
|
r.should_receive(:finish_time).and_return(Time.now)
|
104
|
+
r.should_receive(:log).once.and_return(0)
|
68
105
|
r.should_receive(:delete).and_return_undefined
|
69
106
|
end
|
70
107
|
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taverna-player
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Robert Haines
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-04-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: jquery-rails
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: paperclip
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,23 +55,20 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: t2-server
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.
|
61
|
+
version: '1.1'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.
|
68
|
+
version: '1.1'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: delayed_job_active_record
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: daemons
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: rubyzip
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,7 +111,6 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: coderay
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,7 +125,6 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: rails_autolink
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - ~>
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,7 +132,6 @@ dependencies:
|
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - ~>
|
156
137
|
- !ruby/object:Gem::Version
|
@@ -158,7 +139,6 @@ dependencies:
|
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: require_all
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
143
|
- - ~>
|
164
144
|
- !ruby/object:Gem::Version
|
@@ -166,7 +146,6 @@ dependencies:
|
|
166
146
|
type: :runtime
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
150
|
- - ~>
|
172
151
|
- !ruby/object:Gem::Version
|
@@ -174,7 +153,6 @@ dependencies:
|
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: jbuilder
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
157
|
- - ~>
|
180
158
|
- !ruby/object:Gem::Version
|
@@ -182,7 +160,6 @@ dependencies:
|
|
182
160
|
type: :runtime
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
164
|
- - ~>
|
188
165
|
- !ruby/object:Gem::Version
|
@@ -190,7 +167,6 @@ dependencies:
|
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: pmrpc-rails
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
171
|
- - ~>
|
196
172
|
- !ruby/object:Gem::Version
|
@@ -198,7 +174,6 @@ dependencies:
|
|
198
174
|
type: :runtime
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
178
|
- - ~>
|
204
179
|
- !ruby/object:Gem::Version
|
@@ -206,7 +181,6 @@ dependencies:
|
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: sqlite3
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
185
|
- - ! '>='
|
212
186
|
- !ruby/object:Gem::Version
|
@@ -214,7 +188,6 @@ dependencies:
|
|
214
188
|
type: :development
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
192
|
- - ! '>='
|
220
193
|
- !ruby/object:Gem::Version
|
@@ -222,7 +195,6 @@ dependencies:
|
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: coveralls
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
199
|
- - ! '>='
|
228
200
|
- !ruby/object:Gem::Version
|
@@ -230,7 +202,6 @@ dependencies:
|
|
230
202
|
type: :development
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
206
|
- - ! '>='
|
236
207
|
- !ruby/object:Gem::Version
|
@@ -238,7 +209,6 @@ dependencies:
|
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: flexmock
|
240
211
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
212
|
requirements:
|
243
213
|
- - ~>
|
244
214
|
- !ruby/object:Gem::Version
|
@@ -246,7 +216,6 @@ dependencies:
|
|
246
216
|
type: :development
|
247
217
|
prerelease: false
|
248
218
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
219
|
requirements:
|
251
220
|
- - ~>
|
252
221
|
- !ruby/object:Gem::Version
|
@@ -255,7 +224,7 @@ description: ! 'Taverna Player is a Ruby on Rails plugin to run Taverna Workflow
|
|
255
224
|
using Taverna Server. Taverna Player surfaces a workflow in three ways: As a Web
|
256
225
|
interface in the browser; As an embeddable widget to be included in any other Web
|
257
226
|
page; As a REST-based Web Service. All three modes provide functionality to fully
|
258
|
-
configure a workflow
|
227
|
+
configure a workflow''s inputs; run the workflow on a Taverna Server; collect workflow
|
259
228
|
outputs, logs and messages; and present the results in an appropriate manner.'
|
260
229
|
email:
|
261
230
|
- support@mygrid.org.uk
|
@@ -264,6 +233,8 @@ extensions: []
|
|
264
233
|
extra_rdoc_files: []
|
265
234
|
files:
|
266
235
|
- .gitignore
|
236
|
+
- .ruby-gemset
|
237
|
+
- .ruby-version
|
267
238
|
- .travis.yml
|
268
239
|
- CHANGES.rdoc
|
269
240
|
- Gemfile
|
@@ -291,10 +262,10 @@ files:
|
|
291
262
|
- app/views/taverna_player/runs/_info.html.erb
|
292
263
|
- app/views/taverna_player/runs/_info.json.jbuilder
|
293
264
|
- app/views/taverna_player/runs/_inputs.html.erb
|
294
|
-
- app/views/taverna_player/runs/_inputs.json.jbuilder
|
295
265
|
- app/views/taverna_player/runs/_interaction.html.erb
|
296
266
|
- app/views/taverna_player/runs/_outputs.html.erb
|
297
267
|
- app/views/taverna_player/runs/_poll.html.erb
|
268
|
+
- app/views/taverna_player/runs/_port.json.jbuilder
|
298
269
|
- app/views/taverna_player/runs/create.json.jbuilder
|
299
270
|
- app/views/taverna_player/runs/embedded/_button.html.erb
|
300
271
|
- app/views/taverna_player/runs/embedded/_info.html.erb
|
@@ -378,6 +349,7 @@ files:
|
|
378
349
|
- lib/taverna_player/concerns/utils.rb
|
379
350
|
- lib/taverna_player/concerns/zip.rb
|
380
351
|
- lib/taverna_player/engine.rb
|
352
|
+
- lib/taverna_player/extras/paperclip-spoofing-fix.rb
|
381
353
|
- lib/taverna_player/model_proxy.rb
|
382
354
|
- lib/taverna_player/port_renderer.rb
|
383
355
|
- lib/taverna_player/render_callbacks.rb
|
@@ -463,6 +435,7 @@ files:
|
|
463
435
|
- test/dummy/test/functional/workflows_controller_test.rb
|
464
436
|
- test/dummy/tmp/.gitkeep
|
465
437
|
- test/fixtures/files/non-ascii.csv
|
438
|
+
- test/fixtures/files/plain-text.bad-extension
|
466
439
|
- test/fixtures/taverna_player/interactions.yml
|
467
440
|
- test/fixtures/taverna_player/run_ports.yml
|
468
441
|
- test/fixtures/taverna_player/runs.yml
|
@@ -488,33 +461,26 @@ files:
|
|
488
461
|
homepage: http://www.taverna.org.uk
|
489
462
|
licenses:
|
490
463
|
- BSD
|
464
|
+
metadata: {}
|
491
465
|
post_install_message:
|
492
466
|
rdoc_options: []
|
493
467
|
require_paths:
|
494
468
|
- lib
|
495
469
|
required_ruby_version: !ruby/object:Gem::Requirement
|
496
|
-
none: false
|
497
470
|
requirements:
|
498
471
|
- - ! '>='
|
499
472
|
- !ruby/object:Gem::Version
|
500
473
|
version: '0'
|
501
|
-
segments:
|
502
|
-
- 0
|
503
|
-
hash: 94152040374779137
|
504
474
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
505
|
-
none: false
|
506
475
|
requirements:
|
507
476
|
- - ! '>='
|
508
477
|
- !ruby/object:Gem::Version
|
509
478
|
version: '0'
|
510
|
-
segments:
|
511
|
-
- 0
|
512
|
-
hash: 94152040374779137
|
513
479
|
requirements: []
|
514
480
|
rubyforge_project:
|
515
|
-
rubygems_version:
|
481
|
+
rubygems_version: 2.2.2
|
516
482
|
signing_key:
|
517
|
-
specification_version:
|
483
|
+
specification_version: 4
|
518
484
|
summary: Taverna Player is a rails plugin to run Taverna Workflows.
|
519
485
|
test_files:
|
520
486
|
- test/dummy/Rakefile
|
@@ -594,6 +560,7 @@ test_files:
|
|
594
560
|
- test/dummy/test/functional/workflows_controller_test.rb
|
595
561
|
- test/dummy/tmp/.gitkeep
|
596
562
|
- test/fixtures/files/non-ascii.csv
|
563
|
+
- test/fixtures/files/plain-text.bad-extension
|
597
564
|
- test/fixtures/taverna_player/interactions.yml
|
598
565
|
- test/fixtures/taverna_player/run_ports.yml
|
599
566
|
- test/fixtures/taverna_player/runs.yml
|