chicanery 0.0.6 → 0.0.7
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/Gemfile.lock +1 -1
- data/lib/chicanery.rb +35 -23
- data/spec/chicanery_spec.rb +1 -1
- data/spec/embedded_chicanery_spec.rb +49 -0
- metadata +6 -4
data/Gemfile.lock
CHANGED
data/lib/chicanery.rb
CHANGED
@@ -16,35 +16,47 @@ module Chicanery
|
|
16
16
|
include Handlers
|
17
17
|
include StateComparison
|
18
18
|
|
19
|
-
VERSION = "0.0.
|
19
|
+
VERSION = "0.0.7"
|
20
20
|
|
21
21
|
def execute args
|
22
|
+
load args.shift
|
23
|
+
poll_period = args.shift
|
24
|
+
if poll_period
|
25
|
+
run_every poll_period.to_i
|
26
|
+
else
|
27
|
+
run
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def run_every poll_period
|
22
32
|
begin
|
23
|
-
load args.shift
|
24
|
-
poll_period = args.shift
|
25
33
|
loop do
|
26
|
-
|
27
|
-
|
28
|
-
servers: {},
|
29
|
-
repos: {}
|
30
|
-
}
|
31
|
-
repos.each do |repo|
|
32
|
-
repo_state = repo.state
|
33
|
-
compare_repo_state repo.name, repo_state, previous_state[:repos][repo.name] if previous_state[:repos]
|
34
|
-
current_state[:repos][repo.name] = repo_state
|
35
|
-
end
|
36
|
-
servers.each do |server|
|
37
|
-
current_jobs = server.jobs
|
38
|
-
compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
|
39
|
-
current_state[:servers][server.name] = current_jobs
|
40
|
-
end
|
41
|
-
current_state.extend Chicanery::Summary
|
42
|
-
run_handlers.each {|handler| handler.call current_state }
|
43
|
-
persist current_state
|
44
|
-
break unless poll_period
|
45
|
-
sleep poll_period.to_i
|
34
|
+
run
|
35
|
+
sleep poll_period
|
46
36
|
end
|
47
37
|
rescue Interrupt
|
48
38
|
end
|
49
39
|
end
|
40
|
+
|
41
|
+
def run
|
42
|
+
previous_state = restore
|
43
|
+
current_state = {
|
44
|
+
servers: {},
|
45
|
+
repos: {}
|
46
|
+
}
|
47
|
+
repos.each do |repo|
|
48
|
+
repo_state = repo.state
|
49
|
+
compare_repo_state repo.name, repo_state, previous_state[:repos][repo.name] if previous_state[:repos]
|
50
|
+
current_state[:repos][repo.name] = repo_state
|
51
|
+
end
|
52
|
+
servers.each do |server|
|
53
|
+
current_jobs = server.jobs
|
54
|
+
compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
|
55
|
+
current_state[:servers][server.name] = current_jobs
|
56
|
+
end
|
57
|
+
current_state.extend Chicanery::Summary
|
58
|
+
run_handlers.each {|handler| handler.call current_state }
|
59
|
+
persist current_state
|
60
|
+
end
|
61
|
+
|
50
62
|
end
|
data/spec/chicanery_spec.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
describe Chicanery do
|
2
|
+
include Chicanery
|
3
|
+
|
4
|
+
describe '#run' do
|
5
|
+
|
6
|
+
before do
|
7
|
+
server double("Server A", :name => "A", :jobs => "A jobs")
|
8
|
+
server double("Server B", :name => "B", :jobs => "B jobs")
|
9
|
+
repo double("repo X", :name => "X", :state => "X state")
|
10
|
+
repo double("repo Y", :name => "Y", :state => "Y state")
|
11
|
+
when_run do |current_state|
|
12
|
+
@current_state = current_state
|
13
|
+
end
|
14
|
+
@current_state = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
before { stub!("restore").and_return({})}
|
18
|
+
before { %w{persist}.each {|m| stub! m } }
|
19
|
+
|
20
|
+
it "notifies when_run listeners of the current state of the servers jobs" do
|
21
|
+
run
|
22
|
+
@current_state[:servers]["A"].should == "A jobs"
|
23
|
+
@current_state[:servers]["B"].should == "B jobs"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "notifies when_run listeners of the current state of the repos" do
|
27
|
+
run
|
28
|
+
@current_state[:repos]["X"].should == "X state"
|
29
|
+
@current_state[:repos]["Y"].should == "Y state"
|
30
|
+
end
|
31
|
+
|
32
|
+
#TESTS TODO
|
33
|
+
# it restores previous state and records current state
|
34
|
+
# it compares current state and previous state for each server
|
35
|
+
# it compares current state and previous state for each server
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#run_every' do
|
40
|
+
it "polls with a specified period" do
|
41
|
+
should_receive(:run).exactly(3).times
|
42
|
+
should_receive(:sleep).with(10).ordered
|
43
|
+
should_receive(:sleep).with(10).ordered
|
44
|
+
should_receive(:sleep).with(10).ordered.and_raise Interrupt
|
45
|
+
run_every 10
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicanery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- spec/chicanery/state_comparison_spec.rb
|
124
124
|
- spec/chicanery/summary_spec.rb
|
125
125
|
- spec/chicanery_spec.rb
|
126
|
+
- spec/embedded_chicanery_spec.rb
|
126
127
|
homepage: http://github.com/markryall/chicanery
|
127
128
|
licenses: []
|
128
129
|
post_install_message:
|
@@ -137,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
138
|
version: '0'
|
138
139
|
segments:
|
139
140
|
- 0
|
140
|
-
hash:
|
141
|
+
hash: 3593176938821015770
|
141
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
143
|
none: false
|
143
144
|
requirements:
|
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
147
|
version: '0'
|
147
148
|
segments:
|
148
149
|
- 0
|
149
|
-
hash:
|
150
|
+
hash: 3593176938821015770
|
150
151
|
requirements: []
|
151
152
|
rubyforge_project:
|
152
153
|
rubygems_version: 1.8.23
|
@@ -159,3 +160,4 @@ test_files:
|
|
159
160
|
- spec/chicanery/state_comparison_spec.rb
|
160
161
|
- spec/chicanery/summary_spec.rb
|
161
162
|
- spec/chicanery_spec.rb
|
163
|
+
- spec/embedded_chicanery_spec.rb
|