spec/lib/flapjack/data/event_spec.rb in flapjack-1.1.0 vs spec/lib/flapjack/data/event_spec.rb in flapjack-1.2.0rc1
- old
+ new
@@ -3,11 +3,11 @@
describe Flapjack::Data::Event do
let(:entity_name) { 'xyz-example.com' }
let(:check) { 'ping' }
- let(:mock_redis) { double(::Redis) }
+ let(:redis) { double(::Redis) }
let!(:time) { Time.now}
let(:event_data) { {'type' => 'service',
'state' => 'critical',
@@ -23,273 +23,273 @@
}
context 'class' do
it "returns the next event (blocking, archiving)" do
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(event_data.to_json)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "returns the next event (blocking, not archiving)" do
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', event_data.to_json])
result = Flapjack::Data::Event.next('events',:block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "returns the next event (non-blocking, archiving)" do
- expect(mock_redis).to receive(:rpoplpush).
+ expect(redis).to receive(:rpoplpush).
with('events', /^events_archive:/).and_return(event_data.to_json)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => false,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "returns the next event (non-blocking, not archiving)" do
- expect(mock_redis).to receive(:rpop).with('events').
+ expect(redis).to receive(:rpop).with('events').
and_return(event_data.to_json)
result = Flapjack::Data::Event.next('events', :block => false,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "rejects invalid event JSON (archiving)" do
bad_event_json = '{{{'
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(bad_event_json)
- expect(mock_redis).to receive(:multi)
- expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
- expect(mock_redis).to receive(:exec)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:multi)
+ expect(redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:exec)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_nil
end
it "rejects invalid event JSON (not archiving)" do
bad_event_json = '{{{'
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', bad_event_json])
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_nil
end
['type', 'state', 'entity', 'check', 'summary'].each do |required_key|
it "rejects an event with missing '#{required_key}' key (archiving)" do
bad_event_data = event_data.clone
bad_event_data.delete(required_key)
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(bad_event_json)
- expect(mock_redis).to receive(:multi)
- expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
- expect(mock_redis).to receive(:exec)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:multi)
+ expect(redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:exec)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_nil
end
it "rejects an event with missing '#{required_key}' key (not archiving)" do
bad_event_data = event_data.clone
bad_event_data.delete(required_key)
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', bad_event_json])
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_nil
end
it "rejects an event with invalid '#{required_key}' key (archiving)" do
bad_event_data = event_data.clone
bad_event_data[required_key] = {'hello' => 'there'}
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(bad_event_json)
- expect(mock_redis).to receive(:multi)
- expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
- expect(mock_redis).to receive(:exec)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:multi)
+ expect(redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:exec)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_nil
end
it "rejects an event with invalid '#{required_key}' key (not archiving)" do
bad_event_data = event_data.clone
bad_event_data[required_key] = {'hello' => 'there'}
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', bad_event_json])
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_nil
end
end
['time', 'details', 'perfdata', 'acknowledgement_id', 'duration', 'tags'].each do |optional_key|
it "rejects an event with invalid '#{optional_key}' key (archiving)" do
bad_event_data = event_data.clone
bad_event_data[optional_key] = {'hello' => 'there'}
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(bad_event_json)
- expect(mock_redis).to receive(:multi)
- expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
- expect(mock_redis).to receive(:exec)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:multi)
+ expect(redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:exec)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_nil
end
it "rejects an event with invalid '#{optional_key}' key (not archiving)" do
bad_event_data = event_data.clone
bad_event_data[optional_key] = {'hello' => 'there'}
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', bad_event_json])
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_nil
end
end
['type', 'state'].each do |key|
it "it matches case-insensitively for #{key} (archiving)" do
case_event_data = event_data.clone
case_event_data[key] = event_data[key].upcase
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(case_event_data.to_json)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "it matches case-insensitively for #{key} (not archiving)" do
case_event_data = event_data.clone
case_event_data[key] = event_data[key].upcase
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', case_event_data.to_json])
result = Flapjack::Data::Event.next('events',:block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
end
['time', 'duration'].each do |key|
it "it accepts an event with a numeric #{key} key (archiving)" do
num_event_data = event_data.clone
num_event_data[key] = event_data[key].to_i.to_s
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(num_event_data.to_json)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "it accepts an event with a numeric #{key} key (not archiving)" do
num_event_data = event_data.clone
num_event_data[key] = event_data[key].to_i.to_s
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', num_event_data.to_json])
result = Flapjack::Data::Event.next('events',:block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_an_instance_of(Flapjack::Data::Event)
end
it "rejects an event with a non-numeric string #{key} key (archiving)" do
bad_event_data = event_data.clone
bad_event_data[key] = 'NaN'
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpoplpush).
+ expect(redis).to receive(:brpoplpush).
with('events', /^events_archive:/, 0).and_return(bad_event_json)
- expect(mock_redis).to receive(:multi)
- expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
- expect(mock_redis).to receive(:exec)
- expect(mock_redis).to receive(:expire)
+ expect(redis).to receive(:multi)
+ expect(redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:exec)
+ expect(redis).to receive(:expire)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => true, :redis => mock_redis)
+ :archive_events => true, :redis => redis)
expect(result).to be_nil
end
it "rejects an event with a non-numeric string #{key} key (not archiving)" do
bad_event_data = event_data.clone
bad_event_data[key] = 'NaN'
bad_event_json = bad_event_data.to_json
- expect(mock_redis).to receive(:brpop).with('events', 0).
+ expect(redis).to receive(:brpop).with('events', 0).
and_return(['events', bad_event_json])
- expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
+ expect(redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
result = Flapjack::Data::Event.next('events', :block => true,
- :archive_events => false, :redis => mock_redis)
+ :archive_events => false, :redis => redis)
expect(result).to be_nil
end
end
it "returns a count of pending events" do
events_len = 23
- expect(mock_redis).to receive(:llen).with('events').and_return(events_len)
+ expect(redis).to receive(:llen).with('events').and_return(events_len)
- pc = Flapjack::Data::Event.pending_count('events', :redis => mock_redis)
+ pc = Flapjack::Data::Event.pending_count('events', :redis => redis)
expect(pc).to eq(events_len)
end
it "creates a notification testing event" do
expect(Time).to receive(:now).and_return(time)
- expect(mock_redis).to receive(:lpush).with('events', /"testing"/ )
+ expect(redis).to receive(:lpush).with('events', /"testing"/ )
Flapjack::Data::Event.test_notifications(entity_name, check,
- :summary => 'test', :details => 'testing', :redis => mock_redis)
+ :summary => 'test', :details => 'testing', :redis => redis)
end
it "creates an acknowledgement event" do
expect(Time).to receive(:now).and_return(time)
- expect(mock_redis).to receive(:lpush).with('events', /"acking"/ )
+ expect(redis).to receive(:lpush).with('events', /"acking"/ )
Flapjack::Data::Event.create_acknowledgement(entity_name, check,
- :summary => 'acking', :time => time.to_i, :redis => mock_redis)
+ :summary => 'acking', :time => time.to_i, :redis => redis)
end
end
context 'instance' do
@@ -300,10 +300,10 @@
expect(event.state).to eq(event_data['state'])
expect(event.duration).to eq(event_data['duration'])
expect(event.time).to eq(event_data['time'])
expect(event.id).to eq('xyz-example.com:ping')
expect(event.type).to eq('service')
- expect(event.tags).to be_an_instance_of(Flapjack::Data::TagSet)
+ expect(event.tags).to be_an_instance_of(Set)
expect(event.tags).to include('dev')
expect(event.tags).to_not include('prod')
expect(event).to be_a_service
expect(event).to be_a_service