build_status_server 0.14 → 0.15

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/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ language: ruby
3
+ bundler_args: --without development
4
+ rvm:
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ - jruby-18mode
9
+ - jruby-19mode
10
+ - jruby-head
11
+ - ree
12
+ - ruby-head
13
+ - rbx-18mode
14
+ # - rbx-19mode
data/Gemfile CHANGED
@@ -7,13 +7,13 @@ gem "json"
7
7
  group :test do
8
8
  gem "rspec"
9
9
  gem "ci_reporter"
10
- gem "ruby-debug19"
11
10
  gem "simplecov", :require => false
12
11
  gem "simplecov-rcov"
13
12
  end
14
13
 
15
14
  group :development do
16
15
  gem "sinatra"
16
+ gem "ruby-debug19"
17
17
  end
18
18
 
19
19
  group :development, :test do
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- build_status_server (0.14)
4
+ build_status_server (0.15)
5
5
  json
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Build Notifier
2
+ [![Build Status](https://secure.travis-ci.org/jcmuller/build_status_server.png?branch=master)](http://travis-ci.org/jcmuller/build_status_server)
3
+ [![Dependency Status](https://gemnasium.com/pluginaweek/state_machine.png "Dependency Status")](https://gemnasium.com/jcmuller/build_status_server)
2
4
 
3
- This utility is part of an XFD (eXtreeme Feedback Device) solution designed and
5
+ This utility is part of an XFD (eXtreme Feedback Device) solution designed and
4
6
  built for my employer [ChallengePost](http://challengepost.com). It works in
5
7
  conjunction with our [Jenkins](http://jenkins-ci.org) Continuous Integration
6
8
  server (and its
@@ -5,7 +5,13 @@ module BuildStatusServer
5
5
  attr_reader :options
6
6
 
7
7
  def initialize
8
- process_command_line_options
8
+ begin
9
+ process_command_line_options
10
+ rescue GetoptLong::MissingArgument
11
+ puts
12
+ show_help_and_exit
13
+ end
14
+
9
15
  BuildStatusServer::Server.new(options).listen
10
16
  end
11
17
 
@@ -45,7 +45,7 @@ is listening on the same port (#{address}:#{port})
45
45
 
46
46
  EOT
47
47
  exit
48
- rescue Errno::EADDRNOTAVAIL
48
+ rescue Errno::EADDRNOTAVAIL, SocketError
49
49
  STDERR.puts <<-EOT
50
50
  The address configured is not available (#{address})
51
51
 
@@ -151,13 +151,15 @@ The address configured is not available (#{address})
151
151
  rescue Timeout::Error => ex
152
152
  STDERR.puts "Error: #{ex} while trying to send #{light}"
153
153
  retry unless attempts > tcp_client["attempts"]
154
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => ex
154
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ENETUNREACH => ex
155
155
  wait = wait_for(attempts)
156
156
  STDERR.puts "Error: #{ex} while trying to send #{light}"
157
157
  STDERR.puts "Will wait for #{wait} seconds and try again..."
158
158
  # sleep 2 seconds the first attempt, 4 the next, 8 the following...
159
159
  sleep wait
160
160
  retry unless attempts > tcp_client["attempts"]
161
+ rescue StandardError => ex
162
+ STDERR.puts "There was an error, but we don't know how to handle it: (#{ex.class}) #{ex}"
161
163
  ensure
162
164
  client.close if client
163
165
  end
@@ -1,3 +1,3 @@
1
1
  module BuildStatusServer
2
- VERSION = "0.14"
2
+ VERSION = "0.15"
3
3
  end
@@ -38,12 +38,13 @@ describe BuildStatusServer::Server do
38
38
  socket = mock(:udp_socket)
39
39
  socket.should_receive(:bind).with("address", "port")
40
40
  UDPSocket.should_receive(:new).and_return(socket)
41
+ server.stub!(:udp_server).and_return(socket)
41
42
 
42
43
  server.send(:setup_udp_server)
43
44
  end
44
45
 
45
46
  it "instantiates a UDPSocket object and binds it to address and port" do
46
- server.config.stub!(:udp_server).and_return({"address" => "127.0.0.1", "port" => "9999"})
47
+ server.config.stub!(:udp_server).and_return({"address" => "127.0.0.1", "port" => 9999})
47
48
 
48
49
  server.send(:setup_udp_server)
49
50
 
@@ -59,7 +60,7 @@ describe BuildStatusServer::Server do
59
60
  end
60
61
 
61
62
  it "should show message and exit when connecting to address not available" do
62
- server.config.stub!(:udp_server).and_return({"address" => "192.192.192.192", "port" => "9999"})
63
+ server.config.stub!(:udp_server).and_return({"address" => "192.192.192.192", "port" => 9999})
63
64
 
64
65
  STDERR.should_receive(:puts).with("The address configured is not available (192.192.192.192)\n\n")
65
66
  server.should_receive(:exit)
@@ -68,14 +69,15 @@ describe BuildStatusServer::Server do
68
69
  end
69
70
 
70
71
  it "it recovers from an address in use exception" do
71
- server.config.stub!(:udp_server).and_return({"address" => "127.0.0.1", "port" => "9999"})
72
+ server.config.stub!(:udp_server).and_return({"address" => "127.0.0.1", "port" => 9999})
72
73
 
73
74
  socket = mock(:udp_socket)
74
- socket.should_receive(:bind).and_raise(Errno::EADDRINUSE)
75
+ socket.should_receive(:bind).and_raise(Errno::EADDRINUSE.new)
75
76
  UDPSocket.should_receive(:new).and_return(socket)
76
77
 
77
78
  STDERR.should_receive(:puts).with("There appears that another instance is running, or another process\nis listening on the same port (127.0.0.1:9999)\n\n")
78
79
  server.should_receive(:exit)
80
+
79
81
  server.send(:setup_udp_server)
80
82
  end
81
83
 
@@ -303,17 +305,17 @@ describe BuildStatusServer::Server do
303
305
  "port" => "port"
304
306
  }
305
307
  config = mock(:config)
306
- config.should_receive(:tcp_client).and_return(options)
307
- config.should_receive(:verbose).and_return(true)
308
+ config.stub(:tcp_client).and_return(options)
309
+ config.stub(:verbose).and_return(true)
308
310
 
309
- server.should_receive(:config).twice.and_return(config)
311
+ server.stub(:config).and_return(config)
310
312
 
311
313
  STDOUT.should_receive(:puts).with("answer")
312
314
 
313
- client.should_receive(:gets).and_return("answer")
314
- client.should_receive(:close)
315
+ client.stub(:gets).and_return("answer")
316
+ client.stub(:close)
315
317
 
316
- TCPSocket.should_receive(:new).with("host", "port").and_return(client)
318
+ TCPSocket.stub(:new).with("host", "port").and_return(client)
317
319
  end
318
320
 
319
321
  it "should send passing packet to tcp socket when status is true" do
@@ -333,16 +335,16 @@ describe BuildStatusServer::Server do
333
335
  "fail" => "fail",
334
336
  "host" => "host",
335
337
  "port" => "port",
336
- "attempts" => 2
338
+ "attempts" => 4
337
339
  }
338
340
  config = mock(:config)
339
- config.should_receive(:tcp_client).and_return(options)
340
- config.should_receive(:verbose).and_return(false)
341
+ config.stub(:tcp_client).and_return(options)
342
+ config.stub(:verbose).and_return(false)
341
343
 
342
- server.should_receive(:config).twice.and_return(config)
343
- client.should_receive(:close)
344
+ server.stub(:config).and_return(config)
345
+ client.stub(:close)
344
346
 
345
- client.should_receive(:gets).and_return("answer")
347
+ client.stub(:gets).and_return("answer")
346
348
  end
347
349
 
348
350
  it "should time out and retry 2 times" do
@@ -354,18 +356,22 @@ describe BuildStatusServer::Server do
354
356
  server.send(:notify, false)
355
357
  end
356
358
 
357
- it "should not connect and retry 2 times" do
359
+ it "should not connect and retry 3 times" do
358
360
  STDERR.should_receive(:puts).with("Error: Connection refused while trying to send fail")
359
361
  STDERR.should_receive(:puts).with("Error: No route to host while trying to send fail")
362
+ STDERR.should_receive(:puts).with("Error: Network is unreachable while trying to send fail")
360
363
  STDERR.should_receive(:puts).with("Will wait for 2 seconds and try again...")
361
364
  STDERR.should_receive(:puts).with("Will wait for 4 seconds and try again...")
365
+ STDERR.should_receive(:puts).with("Will wait for 8 seconds and try again...")
362
366
 
363
- TCPSocket.should_receive(:new).with("host", "port").and_raise(Errno::ECONNREFUSED)
364
- TCPSocket.should_receive(:new).with("host", "port").and_raise(Errno::EHOSTUNREACH)
367
+ TCPSocket.should_receive(:new).with("host", "port").and_raise(Errno::ECONNREFUSED.new)
368
+ TCPSocket.should_receive(:new).with("host", "port").and_raise(Errno::EHOSTUNREACH.new)
369
+ TCPSocket.should_receive(:new).with("host", "port").and_raise(Errno::ENETUNREACH.new)
365
370
  TCPSocket.should_receive(:new).with("host", "port").and_return(client)
366
371
 
367
372
  server.should_receive(:sleep).with(2)
368
373
  server.should_receive(:sleep).with(4)
374
+ server.should_receive(:sleep).with(8)
369
375
 
370
376
  client.should_receive(:print).with("GET fail HTTP/1.0\n\n")
371
377
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build_status_server
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.14'
4
+ version: '0.15'
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-05-05 00:00:00.000000000 Z
12
+ date: 2012-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -83,6 +83,7 @@ extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
85
  - .gitignore
86
+ - .travis.yml
86
87
  - Gemfile
87
88
  - Gemfile.lock
88
89
  - LICENSE