documentcloud-cloud-crowd 0.0.1

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.
@@ -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
+