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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae6a5d724b7c06425fca0953f0e8035cd802f492
4
- data.tar.gz: c8b9a89b451637c118264ed8988e5302178d261b
3
+ metadata.gz: ae725820fd3303481216d55d24f2469dbc2f71a2
4
+ data.tar.gz: e707f917125e83cb174c96a19db891dde8fce21b
5
5
  SHA512:
6
- metadata.gz: 85e5bc084b1e0ba6bcaf5293c77b854bbd557c444f6e3e55a4b642395902f689abadf60979f0740cbcb88c7842b82e0121391f280cd8798109f66f41b21ae5df
7
- data.tar.gz: c97d946b4225c5a50392d6dc8a7739b5da698c68c8e9d11ffabc3ec2d6d6abed207a0b50a32b7d6de2f6273bb05fad513382e89f267f5a86d77cf3161321428a
6
+ metadata.gz: 670dc15299ed7b16b420a33678acf4bece81fff5fbf24de671d0669e43184bf476a66d49d030f59015e822f88f6c31506a4933750dc996760ce6d91c71e5347e
7
+ data.tar.gz: 533e98f06fbbc95dc602c88f6607d17a47243e1e97cabcdd8c3f29a0950bb25a83bdc245578e3f92a59c6f01f6bd2afe1260e4333586fa6e22d2d68a33064a05
@@ -0,0 +1,9 @@
1
+ rvm:
2
+ - 2.1
3
+ - 2.2
4
+ - ruby-head
5
+ matrix:
6
+ allow_failures:
7
+ - rvm: ruby-head
8
+ env:
9
+ - CODECLIMATE_REPO_TOKEN=6a30c15f0405afc4bcdb43205af4520a2b38cc422d014198f599a25a1df2cacf
data/Rakefile CHANGED
@@ -23,6 +23,7 @@ GemHadar do
23
23
  development_dependency 'simplecov', '~>0.9'
24
24
  development_dependency 'rspec', '~>3.0'
25
25
  development_dependency 'byebug'
26
+ development_dependency 'codeclimate-test-reporter'
26
27
 
27
28
  default_task_dependencies :spec
28
29
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -1,25 +1,25 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: ampel_extase 0.4.0 ruby lib
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.4.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-26"
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/jenkins_multi_state_observer.rb", "lib/ampel_extase/jenkins_state_observer.rb", "lib/ampel_extase/light_switcher.rb", "lib/ampel_extase/version.rb"]
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/jenkins_multi_state_observer.rb", "lib/ampel_extase/jenkins_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/light_switcher_spec.rb", "spec/spec_helper.rb"]
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
- warning_jenkins = AmpelExtase::JenkinsStateObserver.for_url(warning_jenkins_url)
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 Time.now > @warning_jenkins.state_changed_at + 6 * @sleep
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
- attr_reader :state_changed_at
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 = AmpelExtase::BuildState.for [ last_result, building? ]
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
@@ -1,6 +1,6 @@
1
1
  module AmpelExtase
2
2
  # AmpelExtase version
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -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(AmpelExtase::Controller).to receive(:puts)
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 :warning_client do
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::JenkinsStateObserver.new warning_client
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, warning_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(warning_jenkins).to receive(:state_changed?).and_return true
105
- expect { |b| warning_jenkins.on_state_change(&b) }.to yield_with_args(state)
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(:state_changed_at).and_return Time.now - 65
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(AmpelExtase::JenkinsStateObserver).to receive(:puts)
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(AmpelExtase::JenkinsClient).to receive(:puts)
5
+ allow_any_instance_of(described_class).to receive(:puts)
6
6
  end
7
7
 
8
8
  let :client do
9
- AmpelExtase::JenkinsClient.new 'http://foo/bar'
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
+
@@ -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.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-26 00:00:00.000000000 Z
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