flapjack 0.7.35 → 0.8.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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -1
  3. data/Gemfile +3 -4
  4. data/Guardfile +1 -1
  5. data/README.md +38 -19
  6. data/Rakefile +1 -3
  7. data/etc/flapjack_config.yaml.example +11 -1
  8. data/features/steps/cli_steps.rb +3 -3
  9. data/features/steps/events_steps.rb +7 -6
  10. data/features/steps/flapjack-netsaint-parser_steps.rb +8 -8
  11. data/features/steps/notifications_steps.rb +10 -10
  12. data/features/steps/packaging-lintian_steps.rb +5 -9
  13. data/features/steps/time_travel_steps.rb +1 -1
  14. data/flapjack.gemspec +4 -3
  15. data/lib/flapjack/data/contact.rb +78 -6
  16. data/lib/flapjack/data/entity.rb +11 -2
  17. data/lib/flapjack/data/notification_rule.rb +67 -59
  18. data/lib/flapjack/data/semaphore.rb +44 -0
  19. data/lib/flapjack/gateways/api.rb +24 -28
  20. data/lib/flapjack/gateways/api/contact_methods.rb +1 -2
  21. data/lib/flapjack/gateways/api/entity_methods.rb +3 -3
  22. data/lib/flapjack/gateways/jsonapi.rb +249 -0
  23. data/lib/flapjack/gateways/jsonapi/contact_methods.rb +544 -0
  24. data/lib/flapjack/gateways/jsonapi/entity_check_presenter.rb +217 -0
  25. data/lib/flapjack/gateways/jsonapi/entity_methods.rb +350 -0
  26. data/lib/flapjack/gateways/jsonapi/entity_presenter.rb +75 -0
  27. data/lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb +32 -0
  28. data/lib/flapjack/gateways/web.rb +78 -12
  29. data/lib/flapjack/gateways/web/public/css/bootstrap-theme.css +397 -0
  30. data/lib/flapjack/gateways/web/public/css/bootstrap-theme.min.css +7 -0
  31. data/lib/flapjack/gateways/web/public/css/bootstrap.css +7118 -0
  32. data/lib/flapjack/gateways/web/public/css/bootstrap.min.css +6 -8
  33. data/lib/flapjack/gateways/web/public/css/font-awesome.css +1338 -0
  34. data/lib/flapjack/gateways/web/public/css/font-awesome.min.css +4 -0
  35. data/lib/flapjack/gateways/web/public/css/screen.css +80 -0
  36. data/lib/flapjack/gateways/web/public/css/select2-bootstrap.css +87 -0
  37. data/lib/flapjack/gateways/web/public/css/select2.css +615 -0
  38. data/lib/flapjack/gateways/web/public/fonts/FontAwesome.otf +0 -0
  39. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.eot +0 -0
  40. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.svg +414 -0
  41. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.eot +0 -0
  44. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.svg +229 -0
  45. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  46. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.woff +0 -0
  47. data/lib/flapjack/gateways/web/public/img/flapjack-2013-notext-transparent-300-300.png +0 -0
  48. data/lib/flapjack/gateways/web/public/img/select2.png +0 -0
  49. data/lib/flapjack/gateways/web/public/img/select2x2.png +0 -0
  50. data/lib/flapjack/gateways/web/public/js/backbone-min.js +2 -0
  51. data/lib/flapjack/gateways/web/public/js/backbone.js +1581 -0
  52. data/lib/flapjack/gateways/web/public/js/backbone.jsonapi.js +75 -0
  53. data/lib/flapjack/gateways/web/public/js/bootstrap.js +2276 -0
  54. data/lib/flapjack/gateways/web/public/js/contacts.js +225 -0
  55. data/lib/flapjack/gateways/web/public/js/jquery-1.10.2.js +9789 -0
  56. data/lib/flapjack/gateways/web/public/js/jquery-1.10.2.min.js +6 -0
  57. data/lib/flapjack/gateways/web/public/js/select2.js +3255 -0
  58. data/lib/flapjack/gateways/web/public/js/select2.min.js +22 -0
  59. data/lib/flapjack/gateways/web/public/js/underscore-min.js +6 -0
  60. data/lib/flapjack/gateways/web/public/js/underscore.js +1276 -0
  61. data/lib/flapjack/gateways/web/views/check.html.erb +423 -193
  62. data/lib/flapjack/gateways/web/views/checks.html.erb +51 -71
  63. data/lib/flapjack/gateways/web/views/contact.html.erb +142 -164
  64. data/lib/flapjack/gateways/web/views/contacts.html.erb +20 -40
  65. data/lib/flapjack/gateways/web/views/edit_contacts.html.erb +83 -0
  66. data/lib/flapjack/gateways/web/views/entities.html.erb +18 -37
  67. data/lib/flapjack/gateways/web/views/entity.html.erb +46 -65
  68. data/lib/flapjack/gateways/web/views/index.html.erb +6 -27
  69. data/lib/flapjack/gateways/web/views/layout.erb +95 -0
  70. data/lib/flapjack/gateways/web/views/self_stats.html.erb +100 -114
  71. data/lib/flapjack/pikelet.rb +4 -2
  72. data/lib/flapjack/version.rb +1 -1
  73. data/spec/lib/flapjack/coordinator_spec.rb +120 -120
  74. data/spec/lib/flapjack/data/contact_spec.rb +66 -58
  75. data/spec/lib/flapjack/data/entity_check_spec.rb +179 -179
  76. data/spec/lib/flapjack/data/entity_spec.rb +71 -71
  77. data/spec/lib/flapjack/data/event_spec.rb +34 -30
  78. data/spec/lib/flapjack/data/message_spec.rb +6 -6
  79. data/spec/lib/flapjack/data/notification_rule_spec.rb +24 -24
  80. data/spec/lib/flapjack/data/notification_spec.rb +19 -19
  81. data/spec/lib/flapjack/data/semaphore_spec.rb +24 -0
  82. data/spec/lib/flapjack/data/tag_spec.rb +11 -10
  83. data/spec/lib/flapjack/gateways/api/contact_methods_spec.rb +201 -201
  84. data/spec/lib/flapjack/gateways/api/entity_check_presenter_spec.rb +55 -55
  85. data/spec/lib/flapjack/gateways/api/entity_methods_spec.rb +257 -257
  86. data/spec/lib/flapjack/gateways/api/entity_presenter_spec.rb +26 -26
  87. data/spec/lib/flapjack/gateways/api_spec.rb +1 -1
  88. data/spec/lib/flapjack/gateways/email_spec.rb +4 -4
  89. data/spec/lib/flapjack/gateways/jabber_spec.rb +77 -77
  90. data/spec/lib/flapjack/gateways/jsonapi/contact_methods_spec.rb +830 -0
  91. data/spec/lib/flapjack/gateways/jsonapi/entity_check_presenter_spec.rb +211 -0
  92. data/spec/lib/flapjack/gateways/jsonapi/entity_methods_spec.rb +863 -0
  93. data/spec/lib/flapjack/gateways/jsonapi/entity_presenter_spec.rb +108 -0
  94. data/spec/lib/flapjack/gateways/jsonapi_spec.rb +8 -0
  95. data/spec/lib/flapjack/gateways/oobetet_spec.rb +35 -35
  96. data/spec/lib/flapjack/gateways/pagerduty_spec.rb +40 -40
  97. data/spec/lib/flapjack/gateways/sms_messagenet_spec.rb +3 -3
  98. data/spec/lib/flapjack/gateways/web/views/check.html.erb_spec.rb +1 -1
  99. data/spec/lib/flapjack/gateways/web/views/contact.html.erb_spec.rb +5 -5
  100. data/spec/lib/flapjack/gateways/web/views/index.html.erb_spec.rb +1 -1
  101. data/spec/lib/flapjack/gateways/web_spec.rb +73 -74
  102. data/spec/lib/flapjack/logger_spec.rb +13 -13
  103. data/spec/lib/flapjack/pikelet_spec.rb +33 -33
  104. data/spec/lib/flapjack/processor_spec.rb +22 -22
  105. data/spec/lib/flapjack/redis_pool_spec.rb +1 -1
  106. data/spec/lib/flapjack/utility_spec.rb +12 -12
  107. data/spec/spec_helper.rb +9 -9
  108. data/spec/support/erb_view_helper.rb +4 -0
  109. metadata +107 -96
  110. data/lib/flapjack/gateways/web/public/css/flapjack.css +0 -49
  111. data/lib/flapjack/gateways/web/views/_css.html.erb +0 -42
  112. data/lib/flapjack/gateways/web/views/_foot.html.erb +0 -3
  113. data/lib/flapjack/gateways/web/views/_head.html.erb +0 -5
  114. data/lib/flapjack/gateways/web/views/_nav.html.erb +0 -10
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+ require 'flapjack/gateways/jsonapi/entity_presenter'
3
+
4
+ describe 'Flapjack::Gateways::JSONAPI::EntityPresenter' do
5
+
6
+ let(:entity) { double(Flapjack::Data::Entity) }
7
+
8
+ let(:check_a) { double(Flapjack::Data::EntityCheck) }
9
+ let(:check_b) { double(Flapjack::Data::EntityCheck) }
10
+
11
+ let(:checkpres_a) { double(Flapjack::Gateways::JSONAPI::EntityCheckPresenter) }
12
+ let(:checkpres_b) { double(Flapjack::Gateways::JSONAPI::EntityCheckPresenter) }
13
+
14
+ let(:time) { Time.now.to_i }
15
+
16
+ let(:start_time) { time - (6 * 60 * 60) }
17
+ let(:end_time) { time - (2 * 60 * 60) }
18
+
19
+ def expect_check_presenters
20
+ expect(entity).to receive(:name).exactly(4).times.and_return('foo')
21
+ expect(entity).to receive(:check_list).and_return(['ping', 'ssh'])
22
+ expect(Flapjack::Data::EntityCheck).to receive(:for_entity).
23
+ with(entity, 'ssh', anything).and_return(check_a)
24
+ expect(Flapjack::Data::EntityCheck).to receive(:for_entity).
25
+ with(entity, 'ping', anything).and_return(check_b)
26
+
27
+ expect(Flapjack::Gateways::JSONAPI::EntityCheckPresenter).to receive(:new).
28
+ with(check_a).and_return(checkpres_a)
29
+ expect(Flapjack::Gateways::JSONAPI::EntityCheckPresenter).to receive(:new).
30
+ with(check_b).and_return(checkpres_b)
31
+ end
32
+
33
+ it 'returns a list of status hashes for each check on an entity' do
34
+ expect_check_presenters
35
+
36
+ status_a = double('status_a')
37
+ status_b = double('status_b')
38
+ expect(checkpres_a).to receive(:status).and_return(status_a)
39
+ expect(checkpres_b).to receive(:status).and_return(status_b)
40
+
41
+ ep = Flapjack::Gateways::JSONAPI::EntityPresenter.new(entity)
42
+ status = ep.status
43
+ expect(status).to eq([{:entity => entity.name, :check => 'ping', :status => status_b},
44
+ {:entity => entity.name, :check => 'ssh', :status => status_a}])
45
+
46
+ end
47
+
48
+ it "returns a list of outage hashes for each check on an entity" do
49
+ expect_check_presenters
50
+ outages_a = double('outages_a')
51
+ outages_b = double('outages_b')
52
+ expect(checkpres_a).to receive(:outages).with(start_time, end_time).
53
+ and_return(outages_a)
54
+ expect(checkpres_b).to receive(:outages).with(start_time, end_time).
55
+ and_return(outages_b)
56
+
57
+ ep = Flapjack::Gateways::JSONAPI::EntityPresenter.new(entity)
58
+ outages = ep.outages(start_time, end_time)
59
+ expect(outages).to eq([{:entity => entity.name, :check => 'ping', :outages => outages_b},
60
+ {:entity => entity.name, :check => 'ssh', :outages => outages_a}])
61
+ end
62
+
63
+ it "returns a list of unscheduled maintenance periods for each check on an entity" do
64
+ expect_check_presenters
65
+ unsched_maint_a = double('unsched_maint_a')
66
+ unsched_maint_b = double('unsched_maint_b')
67
+ expect(checkpres_a).to receive(:unscheduled_maintenances).with(start_time, end_time).
68
+ and_return(unsched_maint_a)
69
+ expect(checkpres_b).to receive(:unscheduled_maintenances).with(start_time, end_time).
70
+ and_return(unsched_maint_b)
71
+
72
+ ep = Flapjack::Gateways::JSONAPI::EntityPresenter.new(entity)
73
+ unsched_maint = ep.unscheduled_maintenances(start_time, end_time)
74
+ expect(unsched_maint).to eq([{:entity => entity.name, :check => 'ping', :unscheduled_maintenances => unsched_maint_b},
75
+ {:entity => entity.name, :check => 'ssh', :unscheduled_maintenances => unsched_maint_a}])
76
+ end
77
+
78
+ it "returns a list of scheduled maintenance periods for each check on an entity" do
79
+ expect_check_presenters
80
+ sched_maint_a = double('sched_maint_a')
81
+ sched_maint_b = double('sched_maint_b')
82
+ expect(checkpres_a).to receive(:scheduled_maintenances).with(start_time, end_time).
83
+ and_return(sched_maint_a)
84
+ expect(checkpres_b).to receive(:scheduled_maintenances).with(start_time, end_time).
85
+ and_return(sched_maint_b)
86
+
87
+ ep = Flapjack::Gateways::JSONAPI::EntityPresenter.new(entity)
88
+ sched_maint = ep.scheduled_maintenances(start_time, end_time)
89
+ expect(sched_maint).to eq([{:entity => entity.name, :check => 'ping', :scheduled_maintenances => sched_maint_b},
90
+ {:entity => entity.name, :check => 'ssh', :scheduled_maintenances => sched_maint_a}])
91
+ end
92
+
93
+ it "returns a list of downtime for each check on an entity" do
94
+ expect_check_presenters
95
+ downtime_a = double('downtime_a')
96
+ downtime_b = double('downtime_b')
97
+ expect(checkpres_a).to receive(:downtime).with(start_time, end_time).
98
+ and_return(downtime_a)
99
+ expect(checkpres_b).to receive(:downtime).with(start_time, end_time).
100
+ and_return(downtime_b)
101
+
102
+ ep = Flapjack::Gateways::JSONAPI::EntityPresenter.new(entity)
103
+ downtime = ep.downtime(start_time, end_time)
104
+ expect(downtime).to eq([{:entity => entity.name, :check => 'ping', :downtime => downtime_b},
105
+ {:entity => entity.name, :check => 'ssh', :downtime => downtime_a}])
106
+ end
107
+
108
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'flapjack/gateways/jsonapi'
3
+
4
+ describe 'Flapjack::Gateways::JSONAPI', :sinatra => true, :logger => true do
5
+
6
+ it "handles a route matching failure"
7
+
8
+ end
@@ -17,28 +17,28 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
17
17
  let(:stanza) { double('stanza') }
18
18
 
19
19
  it "raises an error if a required config setting is not set" do
20
- Socket.should_receive(:gethostname).and_return('thismachine')
20
+ expect(Socket).to receive(:gethostname).and_return('thismachine')
21
21
 
22
22
  fo = Flapjack::Gateways::Oobetet.new(:config => config.delete('watched_check'), :logger => @logger)
23
23
 
24
- lambda {
24
+ expect {
25
25
  fo.setup
26
- }.should raise_error
26
+ }.to raise_error
27
27
  end
28
28
 
29
29
  it "hooks up event handlers to the appropriate methods" do
30
30
  fo = Flapjack::Gateways::Oobetet.new(:config => config, :logger => @logger)
31
31
 
32
- EventMachine::Synchrony.should_receive(:next_tick).exactly(3).times.and_yield
32
+ expect(EventMachine::Synchrony).to receive(:next_tick).exactly(3).times.and_yield
33
33
 
34
- fo.should_receive(:register_handler).with(:ready).and_yield(stanza)
35
- fo.should_receive(:on_ready).with(stanza)
34
+ expect(fo).to receive(:register_handler).with(:ready).and_yield(stanza)
35
+ expect(fo).to receive(:on_ready).with(stanza)
36
36
 
37
- fo.should_receive(:register_handler).with(:message, :groupchat?).and_yield(stanza)
38
- fo.should_receive(:on_groupchat).with(stanza)
37
+ expect(fo).to receive(:register_handler).with(:message, :groupchat?).and_yield(stanza)
38
+ expect(fo).to receive(:on_groupchat).with(stanza)
39
39
 
40
- fo.should_receive(:register_handler).with(:disconnected).and_yield(stanza)
41
- fo.should_receive(:on_disconnect).with(stanza).and_return(true)
40
+ expect(fo).to receive(:register_handler).with(:disconnected).and_yield(stanza)
41
+ expect(fo).to receive(:on_disconnect).with(stanza).and_return(true)
42
42
 
43
43
  fo.register_handlers
44
44
  end
@@ -46,8 +46,8 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
46
46
  it "joins a chat room after connecting" do
47
47
  fo = Flapjack::Gateways::Oobetet.new(:config => config, :logger => @logger)
48
48
 
49
- fo.should_receive(:write).with(an_instance_of(Blather::Stanza::Presence))
50
- fo.should_receive(:write).with(an_instance_of(Blather::Stanza::Message))
49
+ expect(fo).to receive(:write).with(an_instance_of(Blather::Stanza::Presence))
50
+ expect(fo).to receive(:write).with(an_instance_of(Blather::Stanza::Message))
51
51
 
52
52
  fo.on_ready(stanza)
53
53
  end
@@ -55,11 +55,11 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
55
55
  it "reconnects when disconnected (if not quitting)" do
56
56
  fo = Flapjack::Gateways::Oobetet.new(:config => config, :logger => @logger)
57
57
 
58
- EventMachine::Timer.should_receive(:new).with(1).and_yield
59
- fo.should_receive(:connect)
58
+ expect(EventMachine::Timer).to receive(:new).with(1).and_yield
59
+ expect(fo).to receive(:connect)
60
60
 
61
61
  ret = fo.on_disconnect(stanza)
62
- ret.should be_true
62
+ expect(ret).to be true
63
63
  end
64
64
 
65
65
  it "records times of a problem status messages" do
@@ -68,14 +68,14 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
68
68
 
69
69
  t = Time.now
70
70
 
71
- stanza.should_receive(:body).and_return( %q{PROBLEM: "PING" on foo.bar.net} )
72
- Time.should_receive(:now).and_return(t)
71
+ expect(stanza).to receive(:body).and_return( %q{PROBLEM: "PING" on foo.bar.net} )
72
+ expect(Time).to receive(:now).and_return(t)
73
73
 
74
74
  fo.on_groupchat(stanza)
75
75
  fo_times = fo.instance_variable_get('@times')
76
- fo_times.should_not be_nil
77
- fo_times.should have_key(:last_problem)
78
- fo_times[:last_problem].should == t.to_i
76
+ expect(fo_times).not_to be_nil
77
+ expect(fo_times).to have_key(:last_problem)
78
+ expect(fo_times[:last_problem]).to eq(t.to_i)
79
79
  end
80
80
 
81
81
  it "records times of a recovery status messages" do
@@ -84,14 +84,14 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
84
84
 
85
85
  t = Time.now
86
86
 
87
- stanza.should_receive(:body).and_return( %q{RECOVERY: "PING" on foo.bar.net} )
88
- Time.should_receive(:now).and_return(t)
87
+ expect(stanza).to receive(:body).and_return( %q{RECOVERY: "PING" on foo.bar.net} )
88
+ expect(Time).to receive(:now).and_return(t)
89
89
 
90
90
  fo.on_groupchat(stanza)
91
91
  fo_times = fo.instance_variable_get('@times')
92
- fo_times.should_not be_nil
93
- fo_times.should have_key(:last_recovery)
94
- fo_times[:last_recovery].should == t.to_i
92
+ expect(fo_times).not_to be_nil
93
+ expect(fo_times).to have_key(:last_recovery)
94
+ expect(fo_times[:last_recovery]).to eq(t.to_i)
95
95
  end
96
96
 
97
97
  it "records times of an acknowledgement status messages" do
@@ -100,26 +100,26 @@ describe Flapjack::Gateways::Oobetet, :logger => true do
100
100
 
101
101
  t = Time.now
102
102
 
103
- stanza.should_receive(:body).and_return( %q{ACKNOWLEDGEMENT: "PING" on foo.bar.net} )
104
- Time.should_receive(:now).and_return(t)
103
+ expect(stanza).to receive(:body).and_return( %q{ACKNOWLEDGEMENT: "PING" on foo.bar.net} )
104
+ expect(Time).to receive(:now).and_return(t)
105
105
 
106
106
  fo.on_groupchat(stanza)
107
107
  fo_times = fo.instance_variable_get('@times')
108
- fo_times.should_not be_nil
109
- fo_times.should have_key(:last_ack)
110
- fo_times[:last_ack].should == t.to_i
108
+ expect(fo_times).not_to be_nil
109
+ expect(fo_times).to have_key(:last_ack)
110
+ expect(fo_times[:last_ack]).to eq(t.to_i)
111
111
  end
112
112
 
113
113
  it "runs a loop checking for recorded problems" do
114
114
  timer = double('timer')
115
- timer.should_receive(:cancel)
116
- EM::Synchrony.should_receive(:add_periodic_timer).with(60).and_return(timer)
115
+ expect(timer).to receive(:cancel)
116
+ expect(EM::Synchrony).to receive(:add_periodic_timer).with(60).and_return(timer)
117
117
 
118
118
  fo = Flapjack::Gateways::Oobetet.new(:config => config, :logger => @logger)
119
- fo.should_receive(:register_handler).exactly(3).times
120
- fo.should_receive(:connect)
119
+ expect(fo).to receive(:register_handler).exactly(3).times
120
+ expect(fo).to receive(:connect)
121
121
 
122
- EM::Synchrony.should_receive(:sleep).with(10) {
122
+ expect(EM::Synchrony).to receive(:sleep).with(10) {
123
123
  fo.instance_variable_set('@should_quit', true)
124
124
  nil
125
125
  }
@@ -12,34 +12,34 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
12
12
 
13
13
  it "prompts the blocking redis connection to quit" do
14
14
  shutdown_redis = double('shutdown_redis')
15
- shutdown_redis.should_receive(:rpush).with(config['queue'], %q{{"notification_type":"shutdown"}})
16
- EM::Hiredis.should_receive(:connect).and_return(shutdown_redis)
15
+ expect(shutdown_redis).to receive(:rpush).with(config['queue'], %q{{"notification_type":"shutdown"}})
16
+ expect(EM::Hiredis).to receive(:connect).and_return(shutdown_redis)
17
17
 
18
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
18
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
19
19
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
20
20
  fp.stop
21
21
  end
22
22
 
23
23
  it "doesn't look for acknowledgements if this search is already running" do
24
- redis.should_receive(:get).with('sem_pagerduty_acks_running').and_return('true')
25
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
24
+ expect(redis).to receive(:get).with('sem_pagerduty_acks_running').and_return('true')
25
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
26
26
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
27
27
 
28
- fp.should_not_receive(:find_pagerduty_acknowledgements)
28
+ expect(fp).not_to receive(:find_pagerduty_acknowledgements)
29
29
  fp.find_pagerduty_acknowledgements_if_safe
30
30
  end
31
31
 
32
32
  it "looks for acknowledgements if the search is not already running" do
33
- redis.should_receive(:get).with('sem_pagerduty_acks_running').and_return(nil)
34
- redis.should_receive(:set).with('sem_pagerduty_acks_running', 'true')
35
- redis.should_receive(:expire).with('sem_pagerduty_acks_running', 300)
33
+ expect(redis).to receive(:get).with('sem_pagerduty_acks_running').and_return(nil)
34
+ expect(redis).to receive(:set).with('sem_pagerduty_acks_running', 'true')
35
+ expect(redis).to receive(:expire).with('sem_pagerduty_acks_running', 300)
36
36
 
37
- redis.should_receive(:del).with('sem_pagerduty_acks_running')
37
+ expect(redis).to receive(:del).with('sem_pagerduty_acks_running')
38
38
 
39
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
39
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
40
40
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
41
41
 
42
- fp.should_receive(:find_pagerduty_acknowledgements)
42
+ expect(fp).to receive(:find_pagerduty_acknowledgements)
43
43
  fp.find_pagerduty_acknowledgements_if_safe
44
44
  end
45
45
 
@@ -50,7 +50,7 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
50
50
  # NB: needs to run in synchrony block to catch the evented HTTP requests
51
51
  it "looks for acknowledgements via the PagerDuty API" do
52
52
  check = 'PING'
53
- Time.should_receive(:now).and_return(time)
53
+ expect(Time).to receive(:now).and_return(time)
54
54
  since = (time.utc - (60*60*24*7)).iso8601 # the last week
55
55
  unt = (time.utc + (60*60*24)).iso8601 # 1 day in the future
56
56
 
@@ -72,7 +72,7 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
72
72
  with(:headers => {'Authorization'=>['flapjack', 'password123']}).
73
73
  to_return(:status => 200, :body => response.to_json, :headers => {})
74
74
 
75
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
75
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
76
76
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
77
77
 
78
78
 
@@ -80,22 +80,22 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
80
80
  result = fp.send(:pagerduty_acknowledged?, 'subdomain' => 'flpjck', 'username' => 'flapjack',
81
81
  'password' => 'password123', 'check' => check)
82
82
 
83
- result.should be_a(Hash)
84
- result.should have_key(:pg_acknowledged_by)
85
- result[:pg_acknowledged_by].should be_a(Hash)
86
- result[:pg_acknowledged_by].should have_key('id')
87
- result[:pg_acknowledged_by]['id'].should == 'ABCDEFG'
83
+ expect(result).to be_a(Hash)
84
+ expect(result).to have_key(:pg_acknowledged_by)
85
+ expect(result[:pg_acknowledged_by]).to be_a(Hash)
86
+ expect(result[:pg_acknowledged_by]).to have_key('id')
87
+ expect(result[:pg_acknowledged_by]['id']).to eq('ABCDEFG')
88
88
  EM.stop
89
89
  end
90
90
 
91
91
  end
92
92
 
93
93
  it "creates acknowledgements when pagerduty acknowledgements are found" do
94
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
94
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
95
95
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
96
96
 
97
97
  contact = double('contact')
98
- contact.should_receive(:pagerduty_credentials).and_return({
98
+ expect(contact).to receive(:pagerduty_credentials).and_return({
99
99
  'service_key' => '12345678',
100
100
  'subdomain"' => 'flpjck',
101
101
  'username' => 'flapjack',
@@ -103,32 +103,32 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
103
103
  })
104
104
 
105
105
  entity_check = double('entity_check')
106
- entity_check.should_receive(:check).and_return('PING')
107
- entity_check.should_receive(:contacts).and_return([contact])
108
- entity_check.should_receive(:entity_name).exactly(2).times.and_return('foo-app-01.bar.net')
109
- Flapjack::Data::Event.should_receive(:create_acknowledgement).with('foo-app-01.bar.net', 'PING',
106
+ expect(entity_check).to receive(:check).and_return('PING')
107
+ expect(entity_check).to receive(:contacts).and_return([contact])
108
+ expect(entity_check).to receive(:entity_name).exactly(2).times.and_return('foo-app-01.bar.net')
109
+ expect(Flapjack::Data::Event).to receive(:create_acknowledgement).with('foo-app-01.bar.net', 'PING',
110
110
  :summary => 'Acknowledged on PagerDuty', :duration => 14400, :redis => redis)
111
111
 
112
- Flapjack::Data::Global.should_receive(:unacknowledged_failing_checks).and_return([entity_check])
112
+ expect(Flapjack::Data::Global).to receive(:unacknowledged_failing_checks).and_return([entity_check])
113
113
 
114
- fp.should_receive(:pagerduty_acknowledged?).and_return({})
114
+ expect(fp).to receive(:pagerduty_acknowledged?).and_return({})
115
115
 
116
116
  fp.send(:find_pagerduty_acknowledgements)
117
117
  end
118
118
 
119
119
  it "runs a blocking loop listening for notifications" do
120
120
  timer = double('timer')
121
- timer.should_receive(:cancel)
122
- EM::Synchrony.should_receive(:add_periodic_timer).with(10).and_return(timer)
121
+ expect(timer).to receive(:cancel)
122
+ expect(EM::Synchrony).to receive(:add_periodic_timer).with(10).and_return(timer)
123
123
 
124
- redis.should_receive(:del).with('sem_pagerduty_acks_running')
124
+ expect(redis).to receive(:del).with('sem_pagerduty_acks_running')
125
125
 
126
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
126
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
127
127
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
128
128
 
129
129
  blpop_count = 0
130
130
 
131
- redis.should_receive(:blpop).twice {
131
+ expect(redis).to receive(:blpop).twice {
132
132
  blpop_count += 1
133
133
  if blpop_count == 1
134
134
  ["pagerduty_notifications", '{"notification_type":"problem","event_id":"main-example.com:ping",' +
@@ -139,12 +139,12 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
139
139
  end
140
140
  }
141
141
 
142
- fp.should_receive(:test_pagerduty_connection).and_return(true)
143
- fp.should_receive(:send_pagerduty_event)
142
+ expect(fp).to receive(:test_pagerduty_connection).and_return(true)
143
+ expect(fp).to receive(:send_pagerduty_event)
144
144
 
145
145
  fp.start
146
146
 
147
- @logger.errors.should be_empty
147
+ expect(@logger.errors).to be_empty
148
148
  end
149
149
 
150
150
  it "tests the pagerduty connection" do
@@ -157,12 +157,12 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
157
157
  stub_request(:post, "https://events.pagerduty.com/generic/2010-04-15/create_event.json").
158
158
  with(:body => body).to_return(:status => 200, :body => '{"status":"success"}', :headers => {})
159
159
 
160
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
160
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
161
161
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
162
162
 
163
163
  EM.synchrony do
164
164
  ret = fp.send(:test_pagerduty_connection)
165
- ret.should be_true
165
+ expect(ret).to be true
166
166
  EM.stop
167
167
  end
168
168
  end
@@ -177,13 +177,13 @@ describe Flapjack::Gateways::Pagerduty, :logger => true do
177
177
  stub_request(:post, "https://events.pagerduty.com/generic/2010-04-15/create_event.json").
178
178
  with(:body => body).to_return(:status => 200, :body => "", :headers => {})
179
179
 
180
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
180
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
181
181
  fp = Flapjack::Gateways::Pagerduty.new(:config => config, :logger => @logger)
182
182
 
183
183
  EM.synchrony do
184
184
  ret = fp.send(:send_pagerduty_event, evt)
185
- ret.should_not be_nil
186
- ret.should == [200, nil]
185
+ expect { ret }.not_to be_nil
186
+ expect(ret).to eq([200, nil])
187
187
  EM.stop
188
188
  end
189
189
  end
@@ -45,7 +45,7 @@ describe Flapjack::Gateways::SmsMessagenet, :logger => true do
45
45
  Flapjack::Gateways::SmsMessagenet.perform(message)
46
46
  EM.stop
47
47
  end
48
- req.should have_been_requested
48
+ expect(req).to have_been_requested
49
49
  end
50
50
 
51
51
  it "truncates a long message a" do
@@ -70,7 +70,7 @@ describe Flapjack::Gateways::SmsMessagenet, :logger => true do
70
70
  Flapjack::Gateways::SmsMessagenet.perform(long_msg)
71
71
  EM.stop
72
72
  end
73
- req.should have_been_requested
73
+ expect(req).to have_been_requested
74
74
  end
75
75
 
76
76
  it "does not send an SMS message with an invalid config" do
@@ -82,7 +82,7 @@ describe Flapjack::Gateways::SmsMessagenet, :logger => true do
82
82
  EM.stop
83
83
  end
84
84
 
85
- WebMock.should_not have_requested(:get,
85
+ expect(WebMock).not_to have_requested(:get,
86
86
  "https://www.messagenet.com.au/dotnet/Lodge.asmx/LodgeSMSMessage")
87
87
  end
88
88