ampel_extase 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -0
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/ampel_extase.gemspec +9 -6
- data/lib/ampel_extase/controller.rb +6 -3
- data/lib/ampel_extase/jenkins_state_observer.rb +9 -2
- data/lib/ampel_extase/jenkins_warning_state_observer.rb +38 -0
- data/lib/ampel_extase/version.rb +1 -1
- data/spec/ampel_extase/controller_spec.rb +32 -9
- data/spec/ampel_extase/jekins_state_observer_spec.rb +3 -3
- data/spec/ampel_extase/jenkins_client_spec.rb +2 -2
- data/spec/ampel_extase/jenkins_warning_state_observer_spec.rb +60 -0
- data/spec/spec_helper.rb +4 -0
- metadata +21 -4
- data/lib/ampel_extase/jenkins_multi_state_observer.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae725820fd3303481216d55d24f2469dbc2f71a2
|
4
|
+
data.tar.gz: e707f917125e83cb174c96a19db891dde8fce21b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 670dc15299ed7b16b420a33678acf4bece81fff5fbf24de671d0669e43184bf476a66d49d030f59015e822f88f6c31506a4933750dc996760ce6d91c71e5347e
|
7
|
+
data.tar.gz: 533e98f06fbbc95dc602c88f6607d17a47243e1e97cabcdd8c3f29a0950bb25a83bdc245578e3f92a59c6f01f6bd2afe1260e4333586fa6e22d2d68a33064a05
|
data/.travis.yml
ADDED
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/ampel_extase.gemspec
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: ampel_extase 0.
|
2
|
+
# stub: ampel_extase 0.5.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "ampel_extase"
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.5.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib"]
|
10
10
|
s.authors = ["Florian Frank"]
|
11
|
-
s.date = "2015-08-
|
11
|
+
s.date = "2015-08-27"
|
12
12
|
s.description = "Library to control the build traffic light. Yes, we can\u{2026}"
|
13
13
|
s.email = "flori@ping.de"
|
14
14
|
s.executables = ["ampel_control"]
|
15
|
-
s.extra_rdoc_files = ["README.md", "lib/ampel_extase.rb", "lib/ampel_extase/build_state.rb", "lib/ampel_extase/controller.rb", "lib/ampel_extase/jenkins_client.rb", "lib/ampel_extase/
|
16
|
-
s.files = [".gitignore", ".utilsrc", "Gemfile", "README.md", "Rakefile", "VERSION", "ampel_extase.gemspec", "bin/ampel_control", "lib/ampel_extase.rb", "lib/ampel_extase/build_state.rb", "lib/ampel_extase/controller.rb", "lib/ampel_extase/jenkins_client.rb", "lib/ampel_extase/
|
15
|
+
s.extra_rdoc_files = ["README.md", "lib/ampel_extase.rb", "lib/ampel_extase/build_state.rb", "lib/ampel_extase/controller.rb", "lib/ampel_extase/jenkins_client.rb", "lib/ampel_extase/jenkins_state_observer.rb", "lib/ampel_extase/jenkins_warning_state_observer.rb", "lib/ampel_extase/light_switcher.rb", "lib/ampel_extase/version.rb"]
|
16
|
+
s.files = [".gitignore", ".travis.yml", ".utilsrc", "Gemfile", "README.md", "Rakefile", "VERSION", "ampel_extase.gemspec", "bin/ampel_control", "lib/ampel_extase.rb", "lib/ampel_extase/build_state.rb", "lib/ampel_extase/controller.rb", "lib/ampel_extase/jenkins_client.rb", "lib/ampel_extase/jenkins_state_observer.rb", "lib/ampel_extase/jenkins_warning_state_observer.rb", "lib/ampel_extase/light_switcher.rb", "lib/ampel_extase/version.rb", "spec/ampel_extase/build_state_spec.rb", "spec/ampel_extase/controller_spec.rb", "spec/ampel_extase/jekins_state_observer_spec.rb", "spec/ampel_extase/jenkins_client_spec.rb", "spec/ampel_extase/jenkins_warning_state_observer_spec.rb", "spec/ampel_extase/light_switcher_spec.rb", "spec/spec_helper.rb"]
|
17
17
|
s.homepage = "http://github.com/flori/ampel_extase"
|
18
18
|
s.licenses = ["GPL-2"]
|
19
19
|
s.rdoc_options = ["--title", "AmpelExtase - Library to control the build traffic light", "--main", "README.md"]
|
20
20
|
s.rubygems_version = "2.4.8"
|
21
21
|
s.summary = "Library to control the build traffic light"
|
22
|
-
s.test_files = ["spec/ampel_extase/build_state_spec.rb", "spec/ampel_extase/controller_spec.rb", "spec/ampel_extase/jekins_state_observer_spec.rb", "spec/ampel_extase/jenkins_client_spec.rb", "spec/ampel_extase/light_switcher_spec.rb", "spec/spec_helper.rb"]
|
22
|
+
s.test_files = ["spec/ampel_extase/build_state_spec.rb", "spec/ampel_extase/controller_spec.rb", "spec/ampel_extase/jekins_state_observer_spec.rb", "spec/ampel_extase/jenkins_client_spec.rb", "spec/ampel_extase/jenkins_warning_state_observer_spec.rb", "spec/ampel_extase/light_switcher_spec.rb", "spec/spec_helper.rb"]
|
23
23
|
|
24
24
|
if s.respond_to? :specification_version then
|
25
25
|
s.specification_version = 4
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_development_dependency(%q<simplecov>, ["~> 0.9"])
|
30
30
|
s.add_development_dependency(%q<rspec>, ["~> 3.0"])
|
31
31
|
s.add_development_dependency(%q<byebug>, [">= 0"])
|
32
|
+
s.add_development_dependency(%q<codeclimate-test-reporter>, [">= 0"])
|
32
33
|
s.add_runtime_dependency(%q<tins>, ["~> 1.0"])
|
33
34
|
s.add_runtime_dependency(%q<term-ansicolor>, ["~> 1.0"])
|
34
35
|
s.add_runtime_dependency(%q<socket_switcher>, [">= 0"])
|
@@ -37,6 +38,7 @@ Gem::Specification.new do |s|
|
|
37
38
|
s.add_dependency(%q<simplecov>, ["~> 0.9"])
|
38
39
|
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
39
40
|
s.add_dependency(%q<byebug>, [">= 0"])
|
41
|
+
s.add_dependency(%q<codeclimate-test-reporter>, [">= 0"])
|
40
42
|
s.add_dependency(%q<tins>, ["~> 1.0"])
|
41
43
|
s.add_dependency(%q<term-ansicolor>, ["~> 1.0"])
|
42
44
|
s.add_dependency(%q<socket_switcher>, [">= 0"])
|
@@ -46,6 +48,7 @@ Gem::Specification.new do |s|
|
|
46
48
|
s.add_dependency(%q<simplecov>, ["~> 0.9"])
|
47
49
|
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
48
50
|
s.add_dependency(%q<byebug>, [">= 0"])
|
51
|
+
s.add_dependency(%q<codeclimate-test-reporter>, [">= 0"])
|
49
52
|
s.add_dependency(%q<tins>, ["~> 1.0"])
|
50
53
|
s.add_dependency(%q<term-ansicolor>, ["~> 1.0"])
|
51
54
|
s.add_dependency(%q<socket_switcher>, [">= 0"])
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'term/ansicolor'
|
4
4
|
require 'ampel_extase/light_switcher'
|
5
5
|
require 'ampel_extase/jenkins_state_observer'
|
6
|
+
require 'ampel_extase/jenkins_warning_state_observer'
|
6
7
|
|
7
8
|
class AmpelExtase::Controller
|
8
9
|
include Term::ANSIColor
|
@@ -14,7 +15,8 @@ class AmpelExtase::Controller
|
|
14
15
|
sleep: 10
|
15
16
|
)
|
16
17
|
ampel_jenkins = AmpelExtase::JenkinsStateObserver.for_url(jenkins_url)
|
17
|
-
|
18
|
+
urls = warning_jenkins_url.full?(:split, ?,) || []
|
19
|
+
warning_jenkins = AmpelExtase::JenkinsWarningStateObserver.for_urls(*urls)
|
18
20
|
lights = AmpelExtase::LightSwitcher.for(serial: serial)
|
19
21
|
new(ampel_jenkins, warning_jenkins, lights, sleep: sleep)
|
20
22
|
end
|
@@ -27,6 +29,7 @@ class AmpelExtase::Controller
|
|
27
29
|
)
|
28
30
|
@ampel_jenkins, @warning_jenkins, @lights, @sleep =
|
29
31
|
ampel_jenkins, warning_jenkins, lights, sleep
|
32
|
+
@expire_duration = 6 * @sleep
|
30
33
|
check_lights
|
31
34
|
end
|
32
35
|
|
@@ -60,7 +63,7 @@ class AmpelExtase::Controller
|
|
60
63
|
@ampel_jenkins.on_state_change do |state|
|
61
64
|
perform_lights_switch state
|
62
65
|
end
|
63
|
-
@warning_jenkins.on_state_change do |state|
|
66
|
+
@warning_jenkins.on_state_change(@expire_duration) do |state|
|
64
67
|
perform_warning state
|
65
68
|
end
|
66
69
|
expire_warning
|
@@ -101,7 +104,7 @@ class AmpelExtase::Controller
|
|
101
104
|
end
|
102
105
|
|
103
106
|
def expire_warning
|
104
|
-
if
|
107
|
+
if @warning_jenkins.expired?(@expire_duration)
|
105
108
|
@lights.aux.off
|
106
109
|
puts info('WARNING EXPIRED')
|
107
110
|
end
|
@@ -41,10 +41,12 @@ class AmpelExtase::JenkinsStateObserver
|
|
41
41
|
self
|
42
42
|
end
|
43
43
|
|
44
|
-
|
44
|
+
def fetch_new_state
|
45
|
+
AmpelExtase::BuildState.for [ last_result, building? ]
|
46
|
+
end
|
45
47
|
|
46
48
|
def on_state_change
|
47
|
-
new_state =
|
49
|
+
new_state = fetch_new_state
|
48
50
|
if state_changed?(new_state)
|
49
51
|
puts "state changed from #@build_state to #{new_state} => taking action"
|
50
52
|
begin
|
@@ -55,5 +57,10 @@ class AmpelExtase::JenkinsStateObserver
|
|
55
57
|
else
|
56
58
|
puts "state did not change, is still #@build_state => do nothing"
|
57
59
|
end
|
60
|
+
self
|
61
|
+
end
|
62
|
+
|
63
|
+
def expired?(duration)
|
64
|
+
Time.now > @state_changed_at + duration
|
58
65
|
end
|
59
66
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'ampel_extase/jenkins_state_observer'
|
2
|
+
|
3
|
+
class AmpelExtase::JenkinsWarningStateObserver
|
4
|
+
def self.for_urls(*jenkins_urls)
|
5
|
+
if urls = jenkins_urls.full?
|
6
|
+
new urls.map { |jenkins_url|
|
7
|
+
AmpelExtase::JenkinsStateObserver.for_url(jenkins_url)
|
8
|
+
}
|
9
|
+
else
|
10
|
+
Tins::NULL
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(observers)
|
15
|
+
@observers = observers
|
16
|
+
end
|
17
|
+
|
18
|
+
def check
|
19
|
+
@observers.each(&:check)
|
20
|
+
end
|
21
|
+
|
22
|
+
def on_state_change(duration, &block)
|
23
|
+
@observers.each do |observer|
|
24
|
+
observer.expired?(duration) and next
|
25
|
+
observer.on_state_change do |state|
|
26
|
+
if %w[ FAILURE ABORTED ].include?(state.last_result)
|
27
|
+
block.(state)
|
28
|
+
return
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
def expired?(duration)
|
36
|
+
@observers.all? { |observer| observer.expired?(duration) }
|
37
|
+
end
|
38
|
+
end
|
data/lib/ampel_extase/version.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe AmpelExtase::Controller do
|
4
4
|
before do
|
5
5
|
allow_any_instance_of(AmpelExtase::JenkinsClient).to receive(:puts)
|
6
|
-
allow_any_instance_of(
|
6
|
+
allow_any_instance_of(described_class).to receive(:puts)
|
7
7
|
allow_any_instance_of(AmpelExtase::JenkinsStateObserver).to receive(:puts)
|
8
8
|
allow_any_instance_of(described_class).to receive(:sleep)
|
9
9
|
end
|
@@ -12,7 +12,11 @@ describe AmpelExtase::Controller do
|
|
12
12
|
double('AmpelExtase::JenkinsClient', url: 'http://foo/bar')
|
13
13
|
end
|
14
14
|
|
15
|
-
let :
|
15
|
+
let :warning_client1 do
|
16
|
+
double('AmpelExtase::JenkinsClient', url: 'http://foo/bar')
|
17
|
+
end
|
18
|
+
|
19
|
+
let :warning_client2 do
|
16
20
|
double('AmpelExtase::JenkinsClient', url: 'http://foo/bar')
|
17
21
|
end
|
18
22
|
|
@@ -20,8 +24,18 @@ describe AmpelExtase::Controller do
|
|
20
24
|
AmpelExtase::JenkinsStateObserver.new ampel_client
|
21
25
|
end
|
22
26
|
|
27
|
+
let :warning_jenkins1 do
|
28
|
+
AmpelExtase::JenkinsStateObserver.new(warning_client1)
|
29
|
+
end
|
30
|
+
|
31
|
+
let :warning_jenkins2 do
|
32
|
+
AmpelExtase::JenkinsStateObserver.new(warning_client2)
|
33
|
+
end
|
34
|
+
|
23
35
|
let :warning_jenkins do
|
24
|
-
AmpelExtase::
|
36
|
+
AmpelExtase::JenkinsWarningStateObserver.new [
|
37
|
+
warning_jenkins1, warning_jenkins2
|
38
|
+
]
|
25
39
|
end
|
26
40
|
|
27
41
|
let :lights do
|
@@ -37,7 +51,7 @@ describe AmpelExtase::Controller do
|
|
37
51
|
end
|
38
52
|
|
39
53
|
before do
|
40
|
-
for client in [ ampel_client,
|
54
|
+
for client in [ ampel_client, warning_client1, warning_client2 ]
|
41
55
|
allow(client).to receive(:fetch).and_return true
|
42
56
|
allow(client).to receive(:fetch_build).and_return('result' => 'N/A')
|
43
57
|
end
|
@@ -97,17 +111,26 @@ describe AmpelExtase::Controller do
|
|
97
111
|
controller.instance_eval { perform }
|
98
112
|
end
|
99
113
|
|
114
|
+
let :aux do
|
115
|
+
double('Device', on: true)
|
116
|
+
end
|
117
|
+
|
118
|
+
before do
|
119
|
+
controller.instance_variable_set :@lights, double('Lights', aux: aux)
|
120
|
+
end
|
121
|
+
|
100
122
|
it 'reacts to state changes' do
|
101
123
|
state = AmpelExtase::BuildState.for
|
102
124
|
allow(ampel_jenkins).to receive(:state_changed?).and_return true
|
103
125
|
expect { |b| ampel_jenkins.on_state_change(&b) }.to yield_with_args(state)
|
104
|
-
allow(
|
105
|
-
|
126
|
+
allow(warning_jenkins1).to receive(:state_changed?).and_return true
|
127
|
+
state = AmpelExtase::BuildState.for [ 'FAILURE', false ]
|
128
|
+
allow(warning_jenkins1).to receive(:fetch_new_state).and_return state
|
129
|
+
expect { |b| warning_jenkins.on_state_change(60, &b) }.to yield_with_args(state)
|
106
130
|
perform
|
107
131
|
end
|
108
132
|
end
|
109
133
|
|
110
|
-
|
111
134
|
describe '#handle_crash' do
|
112
135
|
let :exception do
|
113
136
|
raise StandardError rescue $!
|
@@ -226,7 +249,7 @@ describe AmpelExtase::Controller do
|
|
226
249
|
|
227
250
|
describe '#expire_warning' do
|
228
251
|
let :aux do
|
229
|
-
double('Device')
|
252
|
+
double('Device', on: true)
|
230
253
|
end
|
231
254
|
|
232
255
|
before do
|
@@ -239,7 +262,7 @@ describe AmpelExtase::Controller do
|
|
239
262
|
|
240
263
|
it 'expires warnings after some time' do
|
241
264
|
allow(controller.instance_variable_get(:@warning_jenkins)).to\
|
242
|
-
receive(:
|
265
|
+
receive(:expired?).and_return true
|
243
266
|
expect(aux).to receive(:off)
|
244
267
|
expect(controller).to receive(:info).with('WARNING EXPIRED').and_call_original
|
245
268
|
expire_warning
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe AmpelExtase::JenkinsStateObserver do
|
4
4
|
before do
|
5
5
|
allow_any_instance_of(AmpelExtase::JenkinsClient).to receive(:puts)
|
6
|
-
allow_any_instance_of(
|
6
|
+
allow_any_instance_of(described_class).to receive(:puts)
|
7
7
|
end
|
8
8
|
|
9
9
|
let :client do
|
@@ -80,7 +80,7 @@ describe AmpelExtase::JenkinsStateObserver do
|
|
80
80
|
jso
|
81
81
|
end
|
82
82
|
expect(jso.instance_variable_get(:@build_state)).to eq bs_initial
|
83
|
-
expect(jso.state_changed_at).to eq past
|
83
|
+
expect(jso.instance_variable_get(:@state_changed_at)).to eq past
|
84
84
|
allow(client).to receive(:fetch_build).with(:last_completed_build).
|
85
85
|
and_return('result' => 'SUCCESS')
|
86
86
|
allow(client).to receive(:fetch_build).with(:last_build).
|
@@ -97,7 +97,7 @@ describe AmpelExtase::JenkinsStateObserver do
|
|
97
97
|
}.to yield_with_args(bs_success)
|
98
98
|
end
|
99
99
|
expect(jso.instance_variable_get(:@build_state)).to eq bs_success
|
100
|
-
expect(jso.state_changed_at).to eq now
|
100
|
+
expect(jso.instance_variable_get(:@state_changed_at)).to eq now
|
101
101
|
allow(client).to receive(:fetch_build).with(:last_completed_build).
|
102
102
|
and_return('result' => 'FAILURE')
|
103
103
|
allow(client).to receive(:fetch_build).with(:last_build).
|
@@ -2,11 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe AmpelExtase::JenkinsClient do
|
4
4
|
before do
|
5
|
-
allow_any_instance_of(
|
5
|
+
allow_any_instance_of(described_class).to receive(:puts)
|
6
6
|
end
|
7
7
|
|
8
8
|
let :client do
|
9
|
-
|
9
|
+
described_class.new 'http://foo/bar'
|
10
10
|
end
|
11
11
|
|
12
12
|
let :opened_uri do
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AmpelExtase::JenkinsWarningStateObserver do
|
4
|
+
let :jenkins_warning_state_observer do
|
5
|
+
described_class.new [ observer ]
|
6
|
+
end
|
7
|
+
|
8
|
+
let :observer do
|
9
|
+
double('AmpelExtase::JenkinsStateObserver')
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.for_urls' do
|
13
|
+
it 'returns a null object if there were no URLs passed' do
|
14
|
+
expect(described_class.for_urls).to be_nil
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'creates a jenkins_state_observer for every URL passed' do
|
18
|
+
expect(AmpelExtase::JenkinsStateObserver).to receive(:for_url).with('foo')
|
19
|
+
expect(AmpelExtase::JenkinsStateObserver).to receive(:for_url).with('bar')
|
20
|
+
described_class.for_urls 'foo', 'bar'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#check' do
|
25
|
+
it 'delegates the check to its observers' do
|
26
|
+
expect(observer).to receive(:check)
|
27
|
+
jenkins_warning_state_observer.check
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#on_state_change' do
|
32
|
+
let :bs_success do
|
33
|
+
AmpelExtase::BuildState.for [ 'SUCCESS', true ]
|
34
|
+
end
|
35
|
+
|
36
|
+
let :bs_failure do
|
37
|
+
AmpelExtase::BuildState.for [ 'FAILURE', true ]
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'skips observers that are already expired b4 duration' do
|
41
|
+
expect(observer).to receive(:expired?).with(666).and_return true
|
42
|
+
expect(observer).not_to receive(:on_state_change)
|
43
|
+
jenkins_warning_state_observer.on_state_change(666)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'skips states where the last result is not FAILURE/ABORTED' do
|
47
|
+
expect(observer).to receive(:expired?).with(666).and_return false
|
48
|
+
allow(observer).to receive(:on_state_change)
|
49
|
+
jenkins_warning_state_observer.on_state_change(666)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#expired?' do
|
54
|
+
it 'checks if all of its observers are expired' do
|
55
|
+
expect(observer).to receive(:expired?).with(666)
|
56
|
+
jenkins_warning_state_observer.expired?(666)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,10 @@ if ENV['START_SIMPLECOV'].to_i == 1
|
|
4
4
|
add_filter "#{File.basename(File.dirname(__FILE__))}/"
|
5
5
|
end
|
6
6
|
end
|
7
|
+
if ENV['CODECLIMATE_REPO_TOKEN']
|
8
|
+
require "codeclimate-test-reporter"
|
9
|
+
CodeClimate::TestReporter.start
|
10
|
+
end
|
7
11
|
require 'rspec'
|
8
12
|
require 'byebug'
|
9
13
|
require 'ampel_extase'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ampel_extase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codeclimate-test-reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: tins
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,12 +133,13 @@ extra_rdoc_files:
|
|
119
133
|
- lib/ampel_extase/build_state.rb
|
120
134
|
- lib/ampel_extase/controller.rb
|
121
135
|
- lib/ampel_extase/jenkins_client.rb
|
122
|
-
- lib/ampel_extase/jenkins_multi_state_observer.rb
|
123
136
|
- lib/ampel_extase/jenkins_state_observer.rb
|
137
|
+
- lib/ampel_extase/jenkins_warning_state_observer.rb
|
124
138
|
- lib/ampel_extase/light_switcher.rb
|
125
139
|
- lib/ampel_extase/version.rb
|
126
140
|
files:
|
127
141
|
- ".gitignore"
|
142
|
+
- ".travis.yml"
|
128
143
|
- ".utilsrc"
|
129
144
|
- Gemfile
|
130
145
|
- README.md
|
@@ -136,14 +151,15 @@ files:
|
|
136
151
|
- lib/ampel_extase/build_state.rb
|
137
152
|
- lib/ampel_extase/controller.rb
|
138
153
|
- lib/ampel_extase/jenkins_client.rb
|
139
|
-
- lib/ampel_extase/jenkins_multi_state_observer.rb
|
140
154
|
- lib/ampel_extase/jenkins_state_observer.rb
|
155
|
+
- lib/ampel_extase/jenkins_warning_state_observer.rb
|
141
156
|
- lib/ampel_extase/light_switcher.rb
|
142
157
|
- lib/ampel_extase/version.rb
|
143
158
|
- spec/ampel_extase/build_state_spec.rb
|
144
159
|
- spec/ampel_extase/controller_spec.rb
|
145
160
|
- spec/ampel_extase/jekins_state_observer_spec.rb
|
146
161
|
- spec/ampel_extase/jenkins_client_spec.rb
|
162
|
+
- spec/ampel_extase/jenkins_warning_state_observer_spec.rb
|
147
163
|
- spec/ampel_extase/light_switcher_spec.rb
|
148
164
|
- spec/spec_helper.rb
|
149
165
|
homepage: http://github.com/flori/ampel_extase
|
@@ -179,5 +195,6 @@ test_files:
|
|
179
195
|
- spec/ampel_extase/controller_spec.rb
|
180
196
|
- spec/ampel_extase/jekins_state_observer_spec.rb
|
181
197
|
- spec/ampel_extase/jenkins_client_spec.rb
|
198
|
+
- spec/ampel_extase/jenkins_warning_state_observer_spec.rb
|
182
199
|
- spec/ampel_extase/light_switcher_spec.rb
|
183
200
|
- spec/spec_helper.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'ampel_extase/jenkins_state_observer'
|
2
|
-
|
3
|
-
class AmpelExtase::JenkinsMultiStateObserver
|
4
|
-
def self.for_urls(*jenkins_urls)
|
5
|
-
new jenkins_urls.map { |jenkins_url| AmpelExtase::JenkinsStateObserver.new(jenkins_url) }
|
6
|
-
end
|
7
|
-
|
8
|
-
def initialize(observers)
|
9
|
-
@observers = observers
|
10
|
-
end
|
11
|
-
|
12
|
-
def check
|
13
|
-
@observers.each(&:check)
|
14
|
-
end
|
15
|
-
|
16
|
-
def on_state_change(&block)
|
17
|
-
@observers.each do |o|
|
18
|
-
o.on_state_change(&block)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|