cloudfactory 0.3.1 → 0.4.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/CHANGELOG.md +5 -0
- data/lib/cf/account.rb +3 -6
- data/lib/cf/cli.rb +8 -12
- data/lib/cf/cli/line.rb +13 -13
- data/lib/cf/cli/production.rb +18 -14
- data/lib/cf/client.rb +2 -12
- data/lib/cf/custom_task_form.rb +1 -3
- data/lib/cf/input_format.rb +1 -3
- data/lib/cf/line.rb +63 -66
- data/lib/cf/robot_worker.rb +3 -5
- data/lib/cf/run.rb +21 -58
- data/lib/cf/station.rb +6 -10
- data/lib/cf/task_form.rb +1 -3
- data/lib/cf/version.rb +1 -1
- data/spec/account_spec.rb +3 -5
- data/spec/badge_spec.rb +64 -64
- data/spec/concept_tagging_robot_spec.rb +37 -37
- data/spec/config_spec.rb +0 -1
- data/spec/content_scraping_robot_spec.rb +38 -38
- data/spec/custom_task_form_spec.rb +106 -105
- data/spec/department_spec.rb +5 -6
- data/spec/entity_extraction_robot_spec.rb +39 -39
- data/spec/form_field_spec.rb +148 -148
- data/spec/google_translate_robot_spec.rb +40 -40
- data/spec/human_worker_spec.rb +87 -87
- data/spec/image_processing_robot_spec.rb +37 -37
- data/spec/input_format_spec.rb +97 -97
- data/spec/keyword_matching_and_text_extraction_robot_spec.rb +56 -56
- data/spec/line_spec.rb +442 -416
- data/spec/mailer_robot_spec.rb +39 -39
- data/spec/media_converter_robot_spec.rb +40 -46
- data/spec/media_splitting_robot_spec.rb +41 -41
- data/spec/robot_worker_spec.rb +8 -8
- data/spec/run_spec.rb +424 -432
- data/spec/sentiment_robot_spec.rb +37 -37
- data/spec/station_spec.rb +209 -207
- data/spec/task_form_spec.rb +79 -79
- data/spec/term_extraction_robot_spec.rb +37 -37
- metadata +48 -48
data/lib/cf/robot_worker.rb
CHANGED
@@ -51,11 +51,9 @@ module CF
|
|
51
51
|
if station
|
52
52
|
request = options[:settings].merge(:type => @type)
|
53
53
|
resp = self.class.post("/lines/#{CF.account_name}/#{station.line_title.downcase}/stations/#{station.index}/workers.json", :worker => request)
|
54
|
-
if resp
|
55
|
-
|
56
|
-
|
57
|
-
self.number = resp.number
|
58
|
-
self.reward = resp.reward
|
54
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
55
|
+
self.number = resp['number']
|
56
|
+
self.reward = resp['reward']
|
59
57
|
self.station = station
|
60
58
|
station.worker = self
|
61
59
|
end
|
data/lib/cf/run.rb
CHANGED
@@ -48,9 +48,7 @@ module CF
|
|
48
48
|
else
|
49
49
|
resp = self.class.post("/lines/#{CF.account_name}/#{@line_title.downcase}/runs.json", {:data => {:run => {:title => @title}}, @param_for_input => @param_data})
|
50
50
|
end
|
51
|
-
if resp
|
52
|
-
self.errors = resp.error.message
|
53
|
-
end
|
51
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
54
52
|
else
|
55
53
|
@input = input
|
56
54
|
@param_data = input
|
@@ -109,7 +107,7 @@ module CF
|
|
109
107
|
if File.exist?(file.to_s)
|
110
108
|
file_upload = File.new(file, 'rb')
|
111
109
|
resp = post("/runs/#{CF.account_name}/#{run_title.downcase}/units.json", {:file => file_upload})
|
112
|
-
@errors = resp
|
110
|
+
@errors = resp['error']['message'] if resp['code'] != 200
|
113
111
|
return resp.to_hash
|
114
112
|
end
|
115
113
|
end
|
@@ -119,14 +117,8 @@ module CF
|
|
119
117
|
# run_object.final_output
|
120
118
|
def final_output
|
121
119
|
resp = self.class.get("/runs/#{CF.account_name}/#{self.title.downcase}/output.json")
|
122
|
-
self.errors = resp
|
123
|
-
|
124
|
-
if resp['output'].class == Array
|
125
|
-
resp['output'].each do |o|
|
126
|
-
output << o.to_hash
|
127
|
-
end
|
128
|
-
end
|
129
|
-
return output
|
120
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
121
|
+
return resp['output']
|
130
122
|
end
|
131
123
|
|
132
124
|
# ==Returns Final Output of production Run
|
@@ -134,14 +126,8 @@ module CF
|
|
134
126
|
# CF::Run.final_output("run_title")
|
135
127
|
def self.final_output(title)
|
136
128
|
resp = get("/runs/#{CF.account_name}/#{title.downcase}/output.json")
|
137
|
-
@errors = resp
|
138
|
-
|
139
|
-
if resp['output'].class == Array
|
140
|
-
resp['output'].each do |o|
|
141
|
-
output << o.to_hash
|
142
|
-
end
|
143
|
-
end
|
144
|
-
return output
|
129
|
+
@errors = resp['error']['message'] if resp['code'] != 200
|
130
|
+
return resp['output']
|
145
131
|
end
|
146
132
|
|
147
133
|
# ==Returns Output of production Run for any specific Station and for given Run Title
|
@@ -152,14 +138,8 @@ module CF
|
|
152
138
|
station_no = options[:station]
|
153
139
|
title = options[:title]
|
154
140
|
resp = get("/runs/#{CF.account_name}/#{title.downcase}/output/#{station_no}.json")
|
155
|
-
@errors = resp
|
156
|
-
|
157
|
-
if resp['output'].class == Array
|
158
|
-
resp['output'].each do |o|
|
159
|
-
output << o.to_hash
|
160
|
-
end
|
161
|
-
end
|
162
|
-
return output
|
141
|
+
@errors = resp['error']['message'] if resp['code'] != 200
|
142
|
+
return resp['output']
|
163
143
|
end
|
164
144
|
|
165
145
|
# ==Returns Output of Run object for any specific Station
|
@@ -169,14 +149,8 @@ module CF
|
|
169
149
|
def output(options={})
|
170
150
|
station_no = options[:station]
|
171
151
|
resp = self.class.get("/runs/#{CF.account_name}/#{self.title.downcase}/output/#{station_no}.json")
|
172
|
-
self.errors = resp
|
173
|
-
|
174
|
-
if resp['output'].class == Array
|
175
|
-
resp['output'].each do |o|
|
176
|
-
output << o.to_hash
|
177
|
-
end
|
178
|
-
end
|
179
|
-
return output
|
152
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
153
|
+
return resp['output']
|
180
154
|
end
|
181
155
|
|
182
156
|
# ==Searches Run for the given "run_title"
|
@@ -184,11 +158,11 @@ module CF
|
|
184
158
|
# CF::Run.find("run_title")
|
185
159
|
def self.find(title)
|
186
160
|
resp = get("/runs/#{CF.account_name}/#{title.downcase}.json")
|
187
|
-
if resp
|
188
|
-
@errors = resp
|
189
|
-
resp
|
190
|
-
resp.merge!(
|
191
|
-
resp.delete(
|
161
|
+
if resp['code'] != 200
|
162
|
+
@errors = resp['error']['message']
|
163
|
+
resp['error'] = resp['error']['message']
|
164
|
+
resp.merge!('errors' => "#{resp['error']}")
|
165
|
+
resp.delete('error')
|
192
166
|
end
|
193
167
|
return resp
|
194
168
|
end
|
@@ -238,22 +212,11 @@ module CF
|
|
238
212
|
end
|
239
213
|
end
|
240
214
|
|
241
|
-
if resp
|
242
|
-
send_resp = {"error" => resp
|
243
|
-
return send_resp
|
244
|
-
end
|
245
|
-
|
246
|
-
new_resp = []
|
247
|
-
if resp.code == 200
|
248
|
-
if resp.runs
|
249
|
-
if resp.runs.count > 0
|
250
|
-
resp.runs.each do |r|
|
251
|
-
new_resp << r.to_hash
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
send_resp = {"runs" => new_resp, "total_pages" => resp.total_pages, "total_runs" => resp.total_runs}
|
215
|
+
if resp['code'] != 200
|
216
|
+
send_resp = {"error" => resp['error']['message']}
|
256
217
|
return send_resp
|
218
|
+
else
|
219
|
+
return resp
|
257
220
|
end
|
258
221
|
end
|
259
222
|
|
@@ -262,7 +225,7 @@ module CF
|
|
262
225
|
# resume_run = CF::Run.resume("run_title")
|
263
226
|
def self.resume(run_title)
|
264
227
|
resp = post("/runs/#{CF.account_name}/#{run_title}/resume.json")
|
265
|
-
@errors = resp
|
228
|
+
@errors = resp['error']['message'] if resp['code'] != 200
|
266
229
|
return resp
|
267
230
|
end
|
268
231
|
|
@@ -271,7 +234,7 @@ module CF
|
|
271
234
|
# delete_run = CF::Run.destroy("run_title")
|
272
235
|
def self.destroy(run_title)
|
273
236
|
resp = delete("/runs/#{CF.account_name}/#{run_title}.json")
|
274
|
-
@errors = resp
|
237
|
+
@errors = resp['error']['message'] if resp['code'] != 200
|
275
238
|
return resp
|
276
239
|
end
|
277
240
|
end
|
data/lib/cf/station.rb
CHANGED
@@ -219,11 +219,9 @@ module CF
|
|
219
219
|
worker = CF::RobotWorker.new({})
|
220
220
|
worker.settings = @settings
|
221
221
|
worker.type = @type
|
222
|
-
worker.number = resp
|
223
|
-
worker.reward = resp
|
224
|
-
if resp
|
225
|
-
worker.errors = resp.error.message
|
226
|
-
end
|
222
|
+
worker.number = resp['number']
|
223
|
+
worker.reward = resp['reward']
|
224
|
+
worker.errors = resp['error']['message'] if resp['code'] != 200
|
227
225
|
@worker_instance = worker
|
228
226
|
end
|
229
227
|
end
|
@@ -273,9 +271,7 @@ module CF
|
|
273
271
|
@resp.to_hash.each_pair do |k,v|
|
274
272
|
form.send("#{k}=",v) if form.respond_to?(k)
|
275
273
|
end
|
276
|
-
if @resp
|
277
|
-
form.errors = @resp.error.message
|
278
|
-
end
|
274
|
+
form.errors = @resp['error']['message'] if @resp['code'] != 200
|
279
275
|
form.station = self
|
280
276
|
@form_instance = form
|
281
277
|
end
|
@@ -291,7 +287,7 @@ module CF
|
|
291
287
|
# returns the station object
|
292
288
|
def get
|
293
289
|
resp = self.class.get("/lines/#{CF.account_name}/#{self.line_title.downcase}/stations/#{self.index}.json")
|
294
|
-
self.errors = resp
|
290
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
295
291
|
return resp
|
296
292
|
end
|
297
293
|
|
@@ -300,7 +296,7 @@ module CF
|
|
300
296
|
# @got_form = line.stations[0].get_form
|
301
297
|
def get_form
|
302
298
|
resp = self.class.get("/lines/#{CF.account_name}/#{self.line_title.downcase}/stations/#{self.index}/form.json")
|
303
|
-
self.errors = resp
|
299
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
304
300
|
return resp
|
305
301
|
end
|
306
302
|
|
data/lib/cf/task_form.rb
CHANGED
@@ -34,9 +34,7 @@ module CF
|
|
34
34
|
resp.to_hash.each_pair do |k,v|
|
35
35
|
self.send("#{k}=",v) if self.respond_to?(k)
|
36
36
|
end
|
37
|
-
if resp
|
38
|
-
self.errors = resp.error.message
|
39
|
-
end
|
37
|
+
self.errors = resp['error']['message'] if resp['code'] != 200
|
40
38
|
@station.form = self
|
41
39
|
end
|
42
40
|
end
|
data/lib/cf/version.rb
CHANGED
data/spec/account_spec.rb
CHANGED
@@ -2,10 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe CF::Account do
|
4
4
|
it "should get the account info" do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
account_info.name.should eql("manish")
|
9
|
-
end
|
5
|
+
WebMock.allow_net_connect!
|
6
|
+
account_info = CF::Account.info
|
7
|
+
account_info['name'].should eql("4r9t")
|
10
8
|
end
|
11
9
|
end
|
data/spec/badge_spec.rb
CHANGED
@@ -4,84 +4,84 @@ module CF
|
|
4
4
|
describe CF::HumanWorker do
|
5
5
|
context "create badge" do
|
6
6
|
it "should create multiple badge for worker" do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
WebMock.allow_net_connect!
|
8
|
+
badge =
|
9
|
+
{
|
10
|
+
:title => 'Football Fanatic',
|
11
|
+
:description => "This qualification allows you to perform work at stations which have this badge.",
|
12
|
+
:max_badges => 3,
|
13
|
+
:test =>
|
10
14
|
{
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:test =>
|
15
|
-
{
|
16
|
-
:input => {:name => "Lionel Andres Messi", :country => "Argentina"},
|
17
|
-
:expected_output =>
|
18
|
-
[{:birthplace => "Rosario, Santa Fe, Argentina",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Barcelona",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
19
|
-
}
|
15
|
+
:input => {:name => "Lionel Andres Messi", :country => "Argentina"},
|
16
|
+
:expected_output =>
|
17
|
+
[{:birthplace => "Rosario, Santa Fe, Argentina",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Barcelona",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
20
18
|
}
|
21
|
-
|
19
|
+
}
|
20
|
+
badge_1 =
|
21
|
+
{
|
22
|
+
:title => 'Football Fanatic',
|
23
|
+
:description => "This qualification allows you to perform work at stations which have this badge.",
|
24
|
+
:max_badges => 3,
|
25
|
+
:test =>
|
22
26
|
{
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:test =>
|
27
|
-
{
|
28
|
-
:input => {:name => "Cristiano Ronaldo", :country => "Portugal"},
|
29
|
-
:expected_output =>
|
30
|
-
[{:birthplace => "Rosario, Santa Fe, Portugal",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Real Madrid",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
31
|
-
}
|
27
|
+
:input => {:name => "Cristiano Ronaldo", :country => "Portugal"},
|
28
|
+
:expected_output =>
|
29
|
+
[{:birthplace => "Rosario, Santa Fe, Portugal",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Real Madrid",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
32
30
|
}
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
}
|
32
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
33
|
+
sleep 1
|
34
|
+
line = CF::Line.create(title, "Digitization") do |l|
|
35
|
+
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
36
|
+
CF::Station.create({:line =>l, :type => "work"}) do |s|
|
37
|
+
CF::HumanWorker.new({:station => s, :number => 1, :reward => 20, :skill_badge => badge})
|
38
38
|
end
|
39
|
-
line.stations.first.worker.badge = badge_1
|
40
|
-
line.stations.first.type.should eql("WorkStation")
|
41
|
-
line.stations.first.worker.number.should eql(1)
|
42
|
-
line.stations.first.worker.reward.should eql(20)
|
43
|
-
line.stations.first.worker.skill_badges.first.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Lionel Andres Messi", "country"=>"Argentina"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Argentina", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Barcelona"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
44
|
-
line.stations.first.worker.skill_badges.last.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Cristiano Ronaldo", "country"=>"Portugal"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Portugal", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Real Madrid"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
45
|
-
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>80, "assignment_duration"=>3600, "abandonment_rate"=>30, "country"=>nil})
|
46
39
|
end
|
40
|
+
line.stations.first.worker.badge = badge_1
|
41
|
+
line.stations.first.type.should eql("WorkStation")
|
42
|
+
line.stations.first.worker.number.should eql(1)
|
43
|
+
line.stations.first.worker.reward.should eql(20)
|
44
|
+
line.stations.first.worker.skill_badges.first.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Lionel Andres Messi", "country"=>"Argentina"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Argentina", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Barcelona"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
45
|
+
line.stations.first.worker.skill_badges.last.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Cristiano Ronaldo", "country"=>"Portugal"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Portugal", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Real Madrid"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
46
|
+
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>80, "assignment_duration"=>3600, "abandonment_rate"=>30, "country"=>nil})
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
it "should create stat badge for worker in block DSL way" do
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
50
|
+
WebMock.allow_net_connect!
|
51
|
+
stat_badge = {:approval_rating => 40, :assignment_duration => 1800}
|
52
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
53
|
+
sleep 1
|
54
|
+
line = CF::Line.create(title, "Digitization") do |l|
|
55
|
+
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
56
|
+
CF::Station.create({:line =>l, :type => "work"}) do |s|
|
57
|
+
CF::HumanWorker.new({:station => s, :number => 1, :reward => 20, :stat_badge => stat_badge})
|
58
58
|
end
|
59
|
-
line.stations.first.type.should eql("WorkStation")
|
60
|
-
line.stations.first.worker.number.should eql(1)
|
61
|
-
line.stations.first.worker.reward.should eql(20)
|
62
|
-
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>40, "assignment_duration"=>1800, "abandonment_rate"=>30, "country"=>nil})
|
63
59
|
end
|
60
|
+
line.stations.first.type.should eql("WorkStation")
|
61
|
+
line.stations.first.worker.number.should eql(1)
|
62
|
+
line.stations.first.worker.reward.should eql(20)
|
63
|
+
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>40, "assignment_duration"=>1800, "abandonment_rate"=>30, "country"=>nil})
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
it "should create stat badge for worker in plain ruby way" do
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
67
|
+
WebMock.allow_net_connect!
|
68
|
+
stat_badge = {:approval_rating => 40, :assignment_duration => 1800}
|
69
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
70
|
+
sleep 1
|
71
|
+
line = CF::Line.new(title, "Digitization")
|
72
|
+
input_format = CF::InputFormat.new({:name => "image_url", :required => true, :valid_type => "url"})
|
73
|
+
line.input_formats input_format
|
73
74
|
|
74
|
-
|
75
|
-
|
75
|
+
station = CF::Station.new({:type => "work"})
|
76
|
+
line.stations station
|
76
77
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
end
|
78
|
+
worker = CF::HumanWorker.new({:number => 1, :reward => 20, :stat_badge => stat_badge})
|
79
|
+
line.stations.first.worker = worker
|
80
|
+
|
81
|
+
line.stations.first.type.should eql("WorkStation")
|
82
|
+
line.stations.first.worker.number.should eql(1)
|
83
|
+
line.stations.first.worker.reward.should eql(20)
|
84
|
+
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>40, "assignment_duration"=>1800, "abandonment_rate"=>30, "country"=>nil})
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -5,51 +5,51 @@ module CF
|
|
5
5
|
describe CF::RobotWorker do
|
6
6
|
context "create a concept tagging robot worker" do
|
7
7
|
it "should create concept tagging robot worker for first station in Block DSL way" do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
WebMock.allow_net_connect!
|
9
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
10
|
+
sleep 1
|
11
|
+
line = CF::Line.create(title,"Digitization") do |l|
|
12
|
+
CF::InputFormat.new({:line => l, :name => "url", :valid_type => "url", :required => "true"})
|
13
|
+
CF::Station.create({:line => l, :type => "work"}) do |s|
|
14
|
+
CF::RobotWorker.create({:station => s, :type => "concept_tagging_robot", :settings => {:url => ["{{url}}"]}})
|
15
15
|
end
|
16
|
-
run = CF::Run.create(line, "concept_tagging_robot_run", [{"url"=>"www.mosexindex.com"}])
|
17
|
-
# sleep 20 # require delay for final_output's processing
|
18
|
-
output = run.final_output
|
19
|
-
output.first['concept_tagging_of_url'].should eql(["Canada", "English language"])
|
20
|
-
output.first['concept_tagging_relevance_of_url'].should eql([89.5153, 79.0912])
|
21
|
-
line.stations.first.worker.class.should eql(CF::RobotWorker)
|
22
|
-
line.stations.first.worker.reward.should eql(0.5)
|
23
|
-
line.stations.first.worker.number.should eql(1)
|
24
|
-
line.stations.first.worker.settings.should eql({:url => ["{{url}}"]})
|
25
|
-
line.stations.first.worker.type.should eql("ConceptTaggingRobot")
|
26
16
|
end
|
17
|
+
run = CF::Run.create(line, "run-#{title}", [{"url"=>"www.mosexindex.com"}])
|
18
|
+
sleep 20 # require delay for final_output's processing
|
19
|
+
output = run.final_output
|
20
|
+
output.first['concept_tagging_of_url'].should eql(["Canada", "English language"])
|
21
|
+
output.first['concept_tagging_relevance_of_url'].should eql([89.5153, 79.0912])
|
22
|
+
line.stations.first.worker.class.should eql(CF::RobotWorker)
|
23
|
+
line.stations.first.worker.reward.should eql(0.5)
|
24
|
+
line.stations.first.worker.number.should eql(1)
|
25
|
+
line.stations.first.worker.settings.should eql({:url => ["{{url}}"]})
|
26
|
+
line.stations.first.worker.type.should eql("ConceptTaggingRobot")
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should create content_scraping_robot worker for first station in a plain ruby way" do
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
WebMock.allow_net_connect!
|
31
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
32
|
+
sleep 1
|
33
|
+
line = CF::Line.new(title,"Digitization")
|
34
|
+
input_format = CF::InputFormat.new({:name => "url", :required => true, :valid_type => "url"})
|
35
|
+
line.input_formats input_format
|
35
36
|
|
36
|
-
|
37
|
-
|
37
|
+
station = CF::Station.new({:type => "work"})
|
38
|
+
line.stations station
|
38
39
|
|
39
|
-
|
40
|
-
|
40
|
+
worker = CF::RobotWorker.create({:type => "concept_tagging_robot", :settings => {:url => ["{{url}}"]}})
|
41
|
+
line.stations.first.worker = worker
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
43
|
+
run = CF::Run.create(line, "run-#{title}", [{"url"=>"www.mosexindex.com"}])
|
44
|
+
sleep 20 # require delay for final_output's processing
|
45
|
+
output = run.final_output
|
46
|
+
output.first['concept_tagging_of_url'].should eql(["Canada", "English language"])
|
47
|
+
output.first['concept_tagging_relevance_of_url'].should eql([89.5153, 79.0912])
|
48
|
+
line.stations.first.worker.class.should eql(CF::RobotWorker)
|
49
|
+
line.stations.first.worker.reward.should eql(0.5)
|
50
|
+
line.stations.first.worker.number.should eql(1)
|
51
|
+
line.stations.first.worker.settings.should eql({:url => ["{{url}}"]})
|
52
|
+
line.stations.first.worker.type.should eql("ConceptTaggingRobot")
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|