documentcloud-cloud-crowd 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class WorkUnitTest < Test::Unit::TestCase
4
+
5
+ context "A WorkUnit" do
6
+
7
+ setup do
8
+ @unit = WorkUnit.make
9
+ @job = @unit.job
10
+ end
11
+
12
+ subject { @unit }
13
+
14
+ should_belong_to :job
15
+
16
+ should_validate_presence_of :job_id, :status, :input
17
+
18
+ should "know if its done" do
19
+ assert !@unit.complete?
20
+ @unit.status = CloudCrowd::SUCCEEDED
21
+ assert @unit.complete?
22
+ @unit.status = CloudCrowd::FAILED
23
+ assert @unit.complete?
24
+ @unit.expects :check_for_job_completion
25
+ @unit.save
26
+ end
27
+
28
+ should "have JSON that includes job attributes" do
29
+ job = Job.make
30
+ unit_data = JSON.parse(job.work_units.first.to_json)
31
+ assert unit_data['job_id'] == job.id
32
+ assert unit_data['action'] == job.action
33
+ assert JSON.parse(job.inputs).include? unit_data['input']
34
+ end
35
+
36
+ should "be able to retry, on failure" do
37
+ @unit.update_attribute :taken, true
38
+ assert @unit.attempts == 0
39
+ @unit.fail('oops', 10)
40
+ assert @unit.taken == false
41
+ assert @unit.attempts == 1
42
+ assert @unit.processing?
43
+ @unit.fail('oops again', 10)
44
+ assert @unit.attempts == 2
45
+ assert @unit.processing?
46
+ assert @unit.job.processing?
47
+ @unit.fail('oops one last time', 10)
48
+ assert @unit.attempts == 3
49
+ assert @unit.failed?
50
+ assert @unit.job.any_work_units_failed?
51
+ end
52
+
53
+ end
54
+
55
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: documentcloud-cloud-crowd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Ashkenas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-23 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sinatra
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.9.4
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: json
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.7
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rest-client
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.3
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: right_aws
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.10.0
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: daemons
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.0.10
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: faker
77
+ type: :development
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.3.1
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: thoughtbot-shoulda
87
+ type: :development
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.10.2
94
+ version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: notahat-machinist
97
+ type: :development
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 1.0.3
104
+ version:
105
+ - !ruby/object:Gem::Dependency
106
+ name: rack-test
107
+ type: :development
108
+ version_requirement:
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 0.4.1
114
+ version:
115
+ - !ruby/object:Gem::Dependency
116
+ name: mocha
117
+ type: :development
118
+ version_requirement:
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 0.9.7
124
+ version:
125
+ description: The crowd, suddenly there where there was nothing before, is a mysterious and universal phenomenon. A few people may have been standing together -- five, ten or twelve, nor more; nothing has been announced, nothing is expected. Suddenly everywhere is black with people and more come streaming from all sides as though streets had only one direction.
126
+ email: jeremy@documentcloud.org
127
+ executables:
128
+ - crowd
129
+ extensions: []
130
+
131
+ extra_rdoc_files: []
132
+
133
+ files:
134
+ - actions/graphics_magick.rb
135
+ - cloud-crowd.gemspec
136
+ - config/config.example.ru
137
+ - config/config.example.yml
138
+ - config/database.example.yml
139
+ - lib/cloud-crowd.rb
140
+ - lib/cloud_crowd/action.rb
141
+ - lib/cloud_crowd/app.rb
142
+ - lib/cloud_crowd/asset_store.rb
143
+ - lib/cloud_crowd/command_line.rb
144
+ - lib/cloud_crowd/core_ext.rb
145
+ - lib/cloud_crowd/daemon.rb
146
+ - lib/cloud_crowd/helpers/resources.rb
147
+ - lib/cloud_crowd/helpers/urls.rb
148
+ - lib/cloud_crowd/helpers.rb
149
+ - lib/cloud_crowd/models/job.rb
150
+ - lib/cloud_crowd/models/work_unit.rb
151
+ - lib/cloud_crowd/models.rb
152
+ - lib/cloud_crowd/runner.rb
153
+ - lib/cloud_crowd/schema.rb
154
+ - lib/cloud_crowd/worker.rb
155
+ - test/acceptance/test_failing_work_units.rb
156
+ - test/blueprints.rb
157
+ - test/config/test_config.yml
158
+ - test/config/test_database.yml
159
+ - test/test_helper.rb
160
+ - test/unit/test_job.rb
161
+ - test/unit/test_work_unit.rb
162
+ has_rdoc: true
163
+ homepage: http://documentcloud.org
164
+ licenses:
165
+ post_install_message: Run `crowd help` for information on using CloudCrowd.
166
+ rdoc_options: []
167
+
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
175
+ version:
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: "0"
181
+ version:
182
+ requirements: []
183
+
184
+ rubyforge_project: cloud-crowd
185
+ rubygems_version: 1.3.5
186
+ signing_key:
187
+ specification_version: 2
188
+ summary: Better living through Map --> Ruby --> Reduce
189
+ test_files: []
190
+