updater 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +14 -0
- data/VERSION +1 -1
- data/lib/updater/fork_worker.rb +427 -0
- data/lib/updater/orm/datamapper.rb +172 -0
- data/lib/updater/{worker.rb → thread_worker.rb} +4 -8
- data/lib/updater/update.rb +170 -149
- data/lib/updater/update_dm.rb +298 -0
- data/lib/updater/util.rb +22 -0
- data/lib/updater.rb +0 -3
- data/spec/chained_spec.rb +81 -0
- data/spec/errors_spec.rb +31 -0
- data/spec/fooclass.rb +14 -0
- data/spec/fork_worker_instance_spec.rb +56 -0
- data/spec/fork_worker_spec.rb +290 -0
- data/spec/lock_spec.rb +18 -35
- data/spec/named_request_spec.rb +36 -0
- data/spec/params_sub_spec.rb +27 -0
- data/spec/schedule_spec.rb +89 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/{worker_spec.rb → thread_worker_spec.rb} +11 -11
- data/spec/update_runner_spec.rb +48 -0
- data/spec/update_spec.rb +11 -173
- data/spec/util_spec.rb +11 -0
- metadata +18 -4
data/spec/update_spec.rb
CHANGED
@@ -3,183 +3,21 @@ require File.join( File.dirname(__FILE__), "spec_helper" )
|
|
3
3
|
include Updater
|
4
4
|
|
5
5
|
describe Update do
|
6
|
-
|
7
|
-
class Foo
|
8
|
-
include DataMapper::Resource
|
9
|
-
|
10
|
-
property :id, Serial
|
11
|
-
property :name, String
|
12
|
-
|
13
|
-
def bar(*args)
|
14
|
-
Foo.bar(:instance,*args)
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
Foo.auto_migrate!
|
20
|
-
|
21
|
-
before(:each) do
|
22
|
-
Foo.all.destroy!
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should include DataMapper::Resource" do
|
26
|
-
DataMapper::Model.descendants.to_a.should include(Update)
|
27
|
-
end
|
28
|
-
|
29
6
|
it "should have a version matching the VERSION file" do
|
30
7
|
Updater::VERSION.should == File.read(File.join(ROOT,'VERSION')).strip
|
31
|
-
end
|
8
|
+
end
|
32
9
|
|
33
|
-
|
34
|
-
|
35
|
-
it "with a class target" do
|
36
|
-
u = Update.immidiate(Foo,:bar,[])
|
37
|
-
u.target.should == Foo
|
38
|
-
Update.current.should include(u)
|
39
|
-
Update.delayed.should_not include(u)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "with an conforming instance target" do
|
43
|
-
f = Foo.create
|
44
|
-
u = Update.immidiate(f,:bar,[])
|
45
|
-
u.target.should == f
|
46
|
-
Update.current.should include(u)
|
47
|
-
Update.delayed.should_not include(u)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "with an custome finder" do
|
51
|
-
f = Foo.create(:name=>'baz')
|
52
|
-
u = Update.immidiate(Foo,:bar,[],:finder=>:first, :finder_args=>{:name=>'baz'})
|
53
|
-
u.target.should == f
|
54
|
-
Update.current.should include(u)
|
55
|
-
Update.delayed.should_not include(u)
|
56
|
-
end
|
57
|
-
|
10
|
+
it "shuold have its own inspect method" do
|
11
|
+
Update.new(Update.orm.new).inspect.should =~ /Updater::Update/
|
58
12
|
end
|
59
|
-
|
60
|
-
describe "chained request" do
|
61
|
-
|
62
|
-
it "should not be in current or delayed queue" do
|
63
|
-
u = Update.chain(Foo,:bar,[:error])
|
64
|
-
u.time.should be_nil
|
65
|
-
Update.current.should_not include(u)
|
66
|
-
Update.delayed.should_not include(u)
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
describe "named request" do
|
72
|
-
|
73
|
-
it "should be found by name when target is an instance" do
|
74
|
-
f = Foo.create(:name=>'Honey')
|
75
|
-
u = Update.immidiate(f,:bar,[:named],:name=>'Now')
|
76
|
-
u.name.should ==("Now")
|
77
|
-
Update.for(f, "Now").should ==(u)
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should be found by name when target is a class" do
|
81
|
-
u = Update.immidiate(Foo,:bar,[:named],:name=>'Now')
|
82
|
-
u.name.should ==("Now")
|
83
|
-
Update.for(Foo, "Now").should ==(u)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should return all updates for a given target" do
|
87
|
-
u1 = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
88
|
-
u2 = Update.immidiate(Foo,:bar,[:arg3,:arg4])
|
89
|
-
Update.for(Foo).should include(u1,u2)
|
90
|
-
end
|
91
13
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
u = Update.at(Chronic.parse('tomorrow'),Foo,:bar,[])
|
99
|
-
u.target.should == Foo
|
100
|
-
Update.current.should_not include(u)
|
101
|
-
Update.delayed.should include(u)
|
102
|
-
end
|
103
|
-
|
104
|
-
it "with an conforming instance target" do
|
105
|
-
f = Foo.create
|
106
|
-
u = Update.at(Chronic.parse('tomorrow'),f,:bar,[])
|
107
|
-
u.target.should == f
|
108
|
-
Update.current.should_not include(u)
|
109
|
-
Update.delayed.should include(u)
|
110
|
-
end
|
111
|
-
|
112
|
-
it "with an custome finder" do
|
113
|
-
f = Foo.create(:name=>'baz')
|
114
|
-
u = Update.at(Chronic.parse('tomorrow'),Foo,:bar,[],:finder=>:first, :finder_args=>{:name=>'baz'})
|
115
|
-
u.target.should == f
|
116
|
-
Update.current.should_not include(u)
|
117
|
-
Update.delayed.should include(u)
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
|
122
|
-
describe "running an update" do
|
123
|
-
|
124
|
-
before :each do
|
125
|
-
Update.all.destroy!
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should call the named method with a class target" do
|
129
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
130
|
-
Foo.should_receive(:bar).with(:arg1,:arg2)
|
131
|
-
u.run
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should call the named method with an conforming instance target" do
|
135
|
-
f = Foo.create
|
136
|
-
u = Update.immidiate(f,:bar,[:arg1,:arg2])
|
137
|
-
Foo.should_receive(:bar).with(:instance,:arg1,:arg2)
|
138
|
-
u.run
|
139
|
-
end
|
140
|
-
|
141
|
-
it "should delete the record once it is run" do
|
142
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
143
|
-
Foo.should_receive(:bar).with(:arg1,:arg2)
|
144
|
-
u.run
|
145
|
-
u.should_not be_saved #NOTE: not a theological statment
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should delete the record if there is a failure" do
|
149
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
150
|
-
Foo.should_receive(:bar).with(:arg1,:arg2).and_raise(RuntimeError)
|
151
|
-
u.run
|
152
|
-
u.should_not be_saved #NOTE: not a theological statment
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should not delete the record if it is a chain record" do
|
156
|
-
u = Update.chain(Foo,:bar,[:arg1,:arg2])
|
157
|
-
Foo.should_receive(:bar).with(:arg1,:arg2).and_raise(RuntimeError)
|
158
|
-
u.run
|
159
|
-
u.should be_saved
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "Error Handeling" do
|
163
|
-
it "should return false when run" do
|
164
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
165
|
-
Foo.should_receive(:bar).with(:arg1,:arg2).and_raise(RuntimeError)
|
166
|
-
u.run.should be_false
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should trap errors" do
|
170
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2])
|
171
|
-
Foo.should_receive(:bar).with(:arg1,:arg2).and_raise(RuntimeError)
|
172
|
-
lambda {u.run}.should_not raise_error
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should run the failure task" do
|
176
|
-
err = Update.chain(Foo,:bar,[:error])
|
177
|
-
u = Update.immidiate(Foo,:bar,[:arg1,:arg2],:failure=>err)
|
178
|
-
Foo.should_receive(:bar).with(:arg1,:arg2).and_raise(RuntimeError)
|
179
|
-
Foo.should_receive(:bar).with(:error)
|
180
|
-
u.run
|
181
|
-
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "Gemspec: " do
|
17
|
+
it"should match version" do
|
18
|
+
gs = File.open(File.join(ROOT,'updater.gemspec')) do |f|
|
19
|
+
eval f.read
|
182
20
|
end
|
21
|
+
gs.version.to_s.should == File.read(File.join(ROOT,'VERSION')).strip
|
183
22
|
end
|
184
|
-
|
185
|
-
end
|
23
|
+
end
|
data/spec/util_spec.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: updater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John F. Miller
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-09 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -68,13 +68,27 @@ files:
|
|
68
68
|
- Rakefile
|
69
69
|
- VERSION
|
70
70
|
- lib/updater.rb
|
71
|
+
- lib/updater/util.rb
|
71
72
|
- lib/updater/update.rb
|
73
|
+
- lib/updater/fork_worker.rb
|
74
|
+
- lib/updater/update_dm.rb
|
72
75
|
- lib/updater/tasks.rb
|
73
|
-
- lib/updater/
|
74
|
-
-
|
76
|
+
- lib/updater/thread_worker.rb
|
77
|
+
- lib/updater/orm/datamapper.rb
|
78
|
+
- spec/fork_worker_instance_spec.rb
|
79
|
+
- spec/thread_worker_spec.rb
|
80
|
+
- spec/schedule_spec.rb
|
75
81
|
- spec/lock_spec.rb
|
82
|
+
- spec/params_sub_spec.rb
|
83
|
+
- spec/chained_spec.rb
|
84
|
+
- spec/fooclass.rb
|
76
85
|
- spec/update_spec.rb
|
77
86
|
- spec/spec_helper.rb
|
87
|
+
- spec/named_request_spec.rb
|
88
|
+
- spec/update_runner_spec.rb
|
89
|
+
- spec/util_spec.rb
|
90
|
+
- spec/fork_worker_spec.rb
|
91
|
+
- spec/errors_spec.rb
|
78
92
|
- bin/updater
|
79
93
|
has_rdoc: true
|
80
94
|
homepage: http://blog.antarestrader.com
|