ampel_extase 0.4.0 → 0.5.0

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