flapjack 1.6.0 → 2.0.0b1
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 +4 -4
- data/.gitignore +4 -6
- data/.gitmodules +1 -1
- data/.rspec +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +12 -13
- data/CHANGELOG.md +2 -9
- data/CONTRIBUTING.md +7 -2
- data/Gemfile +4 -13
- data/LICENCE +1 -0
- data/README.md +8 -2
- data/Rakefile +2 -2
- data/bin/flapjack +3 -12
- data/build.sh +4 -2
- data/etc/flapjack_config.toml.example +273 -0
- data/features/ack_after_sched_maint.feature +18 -21
- data/features/cli.feature +11 -71
- data/features/cli_flapjack-feed-events.feature +14 -15
- data/features/cli_flapjack-nagios-receiver.feature +12 -41
- data/features/cli_flapper.feature +12 -41
- data/features/cli_purge.feature +5 -6
- data/features/cli_receive-events.feature +6 -7
- data/features/cli_simulate-failed-check.feature +5 -6
- data/features/events.feature +206 -181
- data/features/events_check_names.feature +4 -7
- data/features/notification_rules.feature +144 -223
- data/features/notifications.feature +65 -57
- data/features/rollup.feature +45 -47
- data/features/steps/cli_steps.rb +4 -5
- data/features/steps/events_steps.rb +163 -373
- data/features/steps/notifications_steps.rb +408 -264
- data/features/steps/packaging-lintian_steps.rb +0 -4
- data/features/steps/time_travel_steps.rb +0 -26
- data/features/support/daemons.rb +6 -31
- data/features/support/env.rb +65 -74
- data/flapjack.gemspec +22 -24
- data/lib/flapjack.rb +14 -7
- data/lib/flapjack/cli/flapper.rb +74 -173
- data/lib/flapjack/cli/maintenance.rb +278 -109
- data/lib/flapjack/cli/migrate.rb +950 -0
- data/lib/flapjack/cli/purge.rb +19 -22
- data/lib/flapjack/cli/receiver.rb +150 -326
- data/lib/flapjack/cli/server.rb +8 -235
- data/lib/flapjack/cli/simulate.rb +42 -57
- data/lib/flapjack/configuration.rb +51 -37
- data/lib/flapjack/coordinator.rb +138 -129
- data/lib/flapjack/data/acknowledgement.rb +177 -0
- data/lib/flapjack/data/alert.rb +97 -158
- data/lib/flapjack/data/check.rb +611 -0
- data/lib/flapjack/data/condition.rb +70 -0
- data/lib/flapjack/data/contact.rb +226 -456
- data/lib/flapjack/data/event.rb +96 -184
- data/lib/flapjack/data/extensions/associations.rb +59 -0
- data/lib/flapjack/data/extensions/short_name.rb +25 -0
- data/lib/flapjack/data/medium.rb +428 -0
- data/lib/flapjack/data/metrics.rb +194 -0
- data/lib/flapjack/data/notification.rb +22 -281
- data/lib/flapjack/data/rule.rb +473 -0
- data/lib/flapjack/data/scheduled_maintenance.rb +244 -0
- data/lib/flapjack/data/state.rb +221 -0
- data/lib/flapjack/data/statistic.rb +112 -0
- data/lib/flapjack/data/tag.rb +277 -0
- data/lib/flapjack/data/test_notification.rb +182 -0
- data/lib/flapjack/data/unscheduled_maintenance.rb +159 -0
- data/lib/flapjack/data/validators/id_validator.rb +20 -0
- data/lib/flapjack/exceptions.rb +6 -0
- data/lib/flapjack/filters/acknowledgement.rb +23 -16
- data/lib/flapjack/filters/base.rb +0 -5
- data/lib/flapjack/filters/delays.rb +53 -43
- data/lib/flapjack/filters/ok.rb +23 -14
- data/lib/flapjack/filters/scheduled_maintenance.rb +3 -3
- data/lib/flapjack/filters/unscheduled_maintenance.rb +12 -3
- data/lib/flapjack/gateways/aws_sns.rb +65 -49
- data/lib/flapjack/gateways/aws_sns/alert.text.erb +2 -2
- data/lib/flapjack/gateways/aws_sns/alert_subject.text.erb +2 -2
- data/lib/flapjack/gateways/aws_sns/rollup_subject.text.erb +1 -1
- data/lib/flapjack/gateways/email.rb +107 -90
- data/lib/flapjack/gateways/email/alert.html.erb +19 -18
- data/lib/flapjack/gateways/email/alert.text.erb +20 -14
- data/lib/flapjack/gateways/email/alert_subject.text.erb +2 -1
- data/lib/flapjack/gateways/email/rollup.html.erb +14 -13
- data/lib/flapjack/gateways/email/rollup.text.erb +13 -10
- data/lib/flapjack/gateways/jabber.rb +679 -671
- data/lib/flapjack/gateways/jabber/alert.text.erb +9 -6
- data/lib/flapjack/gateways/jsonapi.rb +164 -350
- data/lib/flapjack/gateways/jsonapi/data/join_descriptor.rb +44 -0
- data/lib/flapjack/gateways/jsonapi/data/method_descriptor.rb +21 -0
- data/lib/flapjack/gateways/jsonapi/helpers/headers.rb +63 -0
- data/lib/flapjack/gateways/jsonapi/helpers/miscellaneous.rb +136 -0
- data/lib/flapjack/gateways/jsonapi/helpers/resources.rb +227 -0
- data/lib/flapjack/gateways/jsonapi/helpers/serialiser.rb +313 -0
- data/lib/flapjack/gateways/jsonapi/helpers/swagger_docs.rb +322 -0
- data/lib/flapjack/gateways/jsonapi/methods/association_delete.rb +115 -0
- data/lib/flapjack/gateways/jsonapi/methods/association_get.rb +288 -0
- data/lib/flapjack/gateways/jsonapi/methods/association_patch.rb +178 -0
- data/lib/flapjack/gateways/jsonapi/methods/association_post.rb +116 -0
- data/lib/flapjack/gateways/jsonapi/methods/metrics.rb +71 -0
- data/lib/flapjack/gateways/jsonapi/methods/resource_delete.rb +119 -0
- data/lib/flapjack/gateways/jsonapi/methods/resource_get.rb +186 -0
- data/lib/flapjack/gateways/jsonapi/methods/resource_patch.rb +239 -0
- data/lib/flapjack/gateways/jsonapi/methods/resource_post.rb +197 -0
- data/lib/flapjack/gateways/jsonapi/middleware/array_param_fixer.rb +27 -0
- data/lib/flapjack/gateways/jsonapi/{rack → middleware}/json_params_parser.rb +7 -6
- data/lib/flapjack/gateways/jsonapi/middleware/request_timestamp.rb +18 -0
- data/lib/flapjack/gateways/oobetet.rb +222 -170
- data/lib/flapjack/gateways/pager_duty.rb +388 -0
- data/lib/flapjack/gateways/pager_duty/alert.text.erb +13 -0
- data/lib/flapjack/gateways/slack.rb +56 -48
- data/lib/flapjack/gateways/slack/alert.text.erb +1 -1
- data/lib/flapjack/gateways/slack/rollup.text.erb +1 -1
- data/lib/flapjack/gateways/sms_aspsms.rb +155 -0
- data/lib/flapjack/gateways/sms_aspsms/alert.text.erb +7 -0
- data/lib/flapjack/gateways/sms_aspsms/rollup.text.erb +2 -0
- data/lib/flapjack/gateways/sms_messagenet.rb +77 -57
- data/lib/flapjack/gateways/sms_messagenet/alert.text.erb +3 -2
- data/lib/flapjack/gateways/sms_nexmo.rb +53 -51
- data/lib/flapjack/gateways/sms_nexmo/alert.text.erb +2 -2
- data/lib/flapjack/gateways/sms_nexmo/rollup.text.erb +1 -1
- data/lib/flapjack/gateways/sms_twilio.rb +79 -62
- data/lib/flapjack/gateways/sms_twilio/alert.text.erb +3 -2
- data/lib/flapjack/gateways/web.rb +437 -345
- data/lib/flapjack/gateways/web/middleware/request_timestamp.rb +18 -0
- data/lib/flapjack/gateways/web/public/css/bootstrap.css +3793 -4340
- data/lib/flapjack/gateways/web/public/css/bootstrap.css.map +1 -0
- data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.svg +273 -214
- data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/lib/flapjack/gateways/web/public/js/bootstrap.js +1637 -1607
- data/lib/flapjack/gateways/web/public/js/self_stats.js +1 -2
- data/lib/flapjack/gateways/web/views/_pagination.html.erb +19 -0
- data/lib/flapjack/gateways/web/views/check.html.erb +159 -121
- data/lib/flapjack/gateways/web/views/checks.html.erb +82 -41
- data/lib/flapjack/gateways/web/views/contact.html.erb +59 -71
- data/lib/flapjack/gateways/web/views/contacts.html.erb +32 -8
- data/lib/flapjack/gateways/web/views/index.html.erb +2 -2
- data/lib/flapjack/gateways/web/views/{layout.erb → layout.html.erb} +7 -23
- data/lib/flapjack/gateways/web/views/self_stats.html.erb +32 -33
- data/lib/flapjack/gateways/web/views/tag.html.erb +32 -0
- data/lib/flapjack/gateways/web/views/tags.html.erb +51 -0
- data/lib/flapjack/logger.rb +34 -3
- data/lib/flapjack/notifier.rb +180 -112
- data/lib/flapjack/patches.rb +8 -63
- data/lib/flapjack/pikelet.rb +185 -143
- data/lib/flapjack/processor.rb +323 -191
- data/lib/flapjack/record_queue.rb +33 -0
- data/lib/flapjack/redis_proxy.rb +66 -0
- data/lib/flapjack/utility.rb +21 -15
- data/lib/flapjack/version.rb +2 -1
- data/libexec/httpbroker.go +218 -14
- data/libexec/oneoff.go +13 -10
- data/spec/lib/flapjack/configuration_spec.rb +286 -0
- data/spec/lib/flapjack/coordinator_spec.rb +103 -157
- data/spec/lib/flapjack/data/check_spec.rb +175 -0
- data/spec/lib/flapjack/data/contact_spec.rb +26 -349
- data/spec/lib/flapjack/data/event_spec.rb +76 -291
- data/spec/lib/flapjack/data/medium_spec.rb +19 -0
- data/spec/lib/flapjack/data/rule_spec.rb +43 -0
- data/spec/lib/flapjack/data/scheduled_maintenance_spec.rb +976 -0
- data/spec/lib/flapjack/data/unscheduled_maintenance_spec.rb +34 -0
- data/spec/lib/flapjack/gateways/aws_sns_spec.rb +111 -60
- data/spec/lib/flapjack/gateways/email_spec.rb +194 -161
- data/spec/lib/flapjack/gateways/jabber_spec.rb +961 -162
- data/spec/lib/flapjack/gateways/jsonapi/methods/check_links_spec.rb +155 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/checks_spec.rb +426 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/contact_links_spec.rb +217 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/contacts_spec.rb +425 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/events_spec.rb +271 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/media_spec.rb +257 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/medium_links_spec.rb +163 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/metrics_spec.rb +8 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/rule_links_spec.rb +212 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/rules_spec.rb +289 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/scheduled_maintenance_links_spec.rb +49 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/scheduled_maintenances_spec.rb +242 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/tag_links_spec.rb +274 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/tags_spec.rb +302 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/unscheduled_maintenance_links_spec.rb +49 -0
- data/spec/lib/flapjack/gateways/jsonapi/methods/unscheduled_maintenances_spec.rb +339 -0
- data/spec/lib/flapjack/gateways/jsonapi_spec.rb +1 -1
- data/spec/lib/flapjack/gateways/oobetet_spec.rb +151 -79
- data/spec/lib/flapjack/gateways/pager_duty_spec.rb +353 -0
- data/spec/lib/flapjack/gateways/slack_spec.rb +53 -53
- data/spec/lib/flapjack/gateways/sms_aspsms_spec.rb +106 -0
- data/spec/lib/flapjack/gateways/sms_messagenet_spec.rb +111 -54
- data/spec/lib/flapjack/gateways/sms_nexmo_spec.rb +50 -51
- data/spec/lib/flapjack/gateways/sms_twilio_spec.rb +108 -48
- data/spec/lib/flapjack/gateways/web_spec.rb +144 -216
- data/spec/lib/flapjack/notifier_spec.rb +132 -1
- data/spec/lib/flapjack/pikelet_spec.rb +111 -50
- data/spec/lib/flapjack/processor_spec.rb +210 -40
- data/spec/lib/flapjack/redis_proxy_spec.rb +45 -0
- data/spec/lib/flapjack/utility_spec.rb +11 -15
- data/spec/service_consumers/fixture_data.rb +547 -0
- data/spec/service_consumers/pact_helper.rb +21 -32
- data/spec/service_consumers/pacts/flapjack-diner_v2.0.json +4652 -0
- data/spec/service_consumers/provider_states_for_flapjack-diner.rb +279 -322
- data/spec/service_consumers/provider_support.rb +8 -0
- data/spec/spec_helper.rb +34 -44
- data/spec/support/erb_view_helper.rb +1 -1
- data/spec/support/factories.rb +58 -0
- data/spec/support/jsonapi_helper.rb +15 -26
- data/spec/support/mock_logger.rb +43 -0
- data/spec/support/xmpp_comparable.rb +24 -0
- data/src/flapjack/transport_test.go +30 -1
- data/tasks/dump_keys.rake +82 -0
- data/tasks/events.rake +7 -7
- data/tasks/support/flapjack_config_benchmark.toml +28 -0
- data/tasks/support/flapjack_config_benchmark.yaml +0 -2
- metadata +175 -222
- data/Guardfile +0 -14
- data/etc/flapjack_config.yaml.example +0 -477
- data/features/cli_flapjack-populator.feature +0 -90
- data/features/support/silent_system.rb +0 -4
- data/lib/flapjack/cli/import.rb +0 -108
- data/lib/flapjack/data/entity.rb +0 -652
- data/lib/flapjack/data/entity_check.rb +0 -1044
- data/lib/flapjack/data/message.rb +0 -56
- data/lib/flapjack/data/migration.rb +0 -234
- data/lib/flapjack/data/notification_rule.rb +0 -425
- data/lib/flapjack/data/semaphore.rb +0 -44
- data/lib/flapjack/data/tagged.rb +0 -48
- data/lib/flapjack/gateways/jsonapi/check_methods.rb +0 -206
- data/lib/flapjack/gateways/jsonapi/check_presenter.rb +0 -221
- data/lib/flapjack/gateways/jsonapi/contact_methods.rb +0 -186
- data/lib/flapjack/gateways/jsonapi/entity_methods.rb +0 -223
- data/lib/flapjack/gateways/jsonapi/medium_methods.rb +0 -185
- data/lib/flapjack/gateways/jsonapi/metrics_methods.rb +0 -132
- data/lib/flapjack/gateways/jsonapi/notification_rule_methods.rb +0 -141
- data/lib/flapjack/gateways/jsonapi/pagerduty_credential_methods.rb +0 -139
- data/lib/flapjack/gateways/jsonapi/report_methods.rb +0 -146
- data/lib/flapjack/gateways/pagerduty.rb +0 -318
- data/lib/flapjack/gateways/pagerduty/alert.text.erb +0 -10
- data/lib/flapjack/gateways/web/public/css/select2-bootstrap.css +0 -87
- data/lib/flapjack/gateways/web/public/css/select2.css +0 -615
- data/lib/flapjack/gateways/web/public/css/tablesort.css +0 -67
- data/lib/flapjack/gateways/web/public/img/select2-spinner.gif +0 -0
- data/lib/flapjack/gateways/web/public/img/select2.png +0 -0
- data/lib/flapjack/gateways/web/public/img/select2x2.png +0 -0
- data/lib/flapjack/gateways/web/public/js/backbone.js +0 -1581
- data/lib/flapjack/gateways/web/public/js/backbone.jsonapi.js +0 -322
- data/lib/flapjack/gateways/web/public/js/flapjack.js +0 -82
- data/lib/flapjack/gateways/web/public/js/jquery.tablesorter.js +0 -1640
- data/lib/flapjack/gateways/web/public/js/jquery.tablesorter.widgets.js +0 -1390
- data/lib/flapjack/gateways/web/public/js/modules/contact.js +0 -520
- data/lib/flapjack/gateways/web/public/js/modules/entity.js +0 -28
- data/lib/flapjack/gateways/web/public/js/modules/medium.js +0 -40
- data/lib/flapjack/gateways/web/public/js/select2.js +0 -3397
- data/lib/flapjack/gateways/web/public/js/tablesort.js +0 -44
- data/lib/flapjack/gateways/web/public/js/underscore.js +0 -1276
- data/lib/flapjack/gateways/web/views/edit_contacts.html.erb +0 -173
- data/lib/flapjack/gateways/web/views/entities.html.erb +0 -30
- data/lib/flapjack/gateways/web/views/entity.html.erb +0 -51
- data/lib/flapjack/rack_logger.rb +0 -47
- data/lib/flapjack/redis_pool.rb +0 -42
- data/spec/lib/flapjack/data/entity_check_spec.rb +0 -1418
- data/spec/lib/flapjack/data/entity_spec.rb +0 -872
- data/spec/lib/flapjack/data/message_spec.rb +0 -30
- data/spec/lib/flapjack/data/migration_spec.rb +0 -104
- data/spec/lib/flapjack/data/notification_rule_spec.rb +0 -232
- data/spec/lib/flapjack/data/notification_spec.rb +0 -53
- data/spec/lib/flapjack/data/semaphore_spec.rb +0 -24
- data/spec/lib/flapjack/filters/acknowledgement_spec.rb +0 -6
- data/spec/lib/flapjack/filters/delays_spec.rb +0 -6
- data/spec/lib/flapjack/filters/ok_spec.rb +0 -6
- data/spec/lib/flapjack/filters/scheduled_maintenance_spec.rb +0 -6
- data/spec/lib/flapjack/filters/unscheduled_maintenance_spec.rb +0 -6
- data/spec/lib/flapjack/gateways/jsonapi/check_methods_spec.rb +0 -315
- data/spec/lib/flapjack/gateways/jsonapi/check_presenter_spec.rb +0 -223
- data/spec/lib/flapjack/gateways/jsonapi/contact_methods_spec.rb +0 -131
- data/spec/lib/flapjack/gateways/jsonapi/entity_methods_spec.rb +0 -389
- data/spec/lib/flapjack/gateways/jsonapi/medium_methods_spec.rb +0 -231
- data/spec/lib/flapjack/gateways/jsonapi/notification_rule_methods_spec.rb +0 -169
- data/spec/lib/flapjack/gateways/jsonapi/pagerduty_credential_methods_spec.rb +0 -114
- data/spec/lib/flapjack/gateways/jsonapi/report_methods_spec.rb +0 -590
- data/spec/lib/flapjack/gateways/pagerduty_spec.rb +0 -249
- data/spec/lib/flapjack/gateways/web/views/check.html.erb_spec.rb +0 -21
- data/spec/lib/flapjack/gateways/web/views/contact.html.erb_spec.rb +0 -24
- data/spec/lib/flapjack/gateways/web/views/index.html.erb_spec.rb +0 -16
- data/spec/lib/flapjack/redis_pool_spec.rb +0 -29
- data/spec/service_consumers/pacts/flapjack-diner_v1.0.json +0 -4702
- data/tasks/entities.rake +0 -151
- data/tasks/profile.rake +0 -282
- data/tmp/acknowledge.rb +0 -13
- data/tmp/create_config_yaml.rb +0 -16
- data/tmp/create_event_ok.rb +0 -30
- data/tmp/create_event_unknown.rb +0 -30
- data/tmp/create_events_failure.rb +0 -34
- data/tmp/create_events_ok.rb +0 -32
- data/tmp/create_events_ok_fail_ack_ok.rb +0 -53
- data/tmp/create_events_ok_failure.rb +0 -41
- data/tmp/create_events_ok_failure_ack.rb +0 -53
- data/tmp/dummy_contacts.json +0 -43
- data/tmp/dummy_entities.json +0 -37
- data/tmp/generate_nagios_test_hosts.rb +0 -16
- data/tmp/notification_rules.rb +0 -73
- data/tmp/parse_config_yaml.rb +0 -7
- data/tmp/redis_find_spurious_unknown_states.rb +0 -52
- data/tmp/test_json_post.rb +0 -19
- data/tmp/test_notification_rules_api.rb +0 -171
|
@@ -0,0 +1,976 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'flapjack/data/scheduled_maintenance'
|
|
3
|
+
|
|
4
|
+
describe Flapjack::Data::ScheduledMaintenance, :redis => true do
|
|
5
|
+
|
|
6
|
+
# it "creates an unscheduled maintenance period from a human readable time" do
|
|
7
|
+
# Flapjack::Data::EntityCheck.create_maintenance(:redis => @redis, :entity => name, :check => check, :type => 'unscheduled', :started => '14/3/2027 3pm', :duration => '30 minutes', :reason => 'oops')
|
|
8
|
+
# t = Time.local(2027, 3, 14, 15, 0).to_i
|
|
9
|
+
|
|
10
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
11
|
+
# expect(ec).to be_in_unscheduled_maintenance
|
|
12
|
+
|
|
13
|
+
# umps = ec.maintenances(nil, nil, :scheduled => false)
|
|
14
|
+
# expect(umps).not_to be_nil
|
|
15
|
+
# expect(umps).to be_an(Array)
|
|
16
|
+
# expect(umps.size).to eq(1)
|
|
17
|
+
# expect(umps[0]).to be_a(Hash)
|
|
18
|
+
|
|
19
|
+
# start_time = umps[0][:start_time]
|
|
20
|
+
# expect(start_time).not_to be_nil
|
|
21
|
+
# expect(start_time).to be_an(Integer)
|
|
22
|
+
# expect(start_time).to eq(t)
|
|
23
|
+
|
|
24
|
+
# duration = umps[0][:duration]
|
|
25
|
+
# expect(duration).not_to be_nil
|
|
26
|
+
# expect(duration).to be_a(Float)
|
|
27
|
+
# expect(duration).to eq(1800.0)
|
|
28
|
+
|
|
29
|
+
# summary = @redis.get("#{name}:#{check}:#{t}:unscheduled_maintenance:summary")
|
|
30
|
+
# expect(summary).not_to be_nil
|
|
31
|
+
# expect(summary).to eq('oops')
|
|
32
|
+
# end
|
|
33
|
+
|
|
34
|
+
# it "ends an unscheduled maintenance period", :time => true do
|
|
35
|
+
# t = Time.now.to_i
|
|
36
|
+
# later_t = t + (15 * 60)
|
|
37
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
38
|
+
|
|
39
|
+
# ec.create_unscheduled_maintenance(t, half_an_hour, :summary => 'oops')
|
|
40
|
+
# expect(ec).to be_in_unscheduled_maintenance
|
|
41
|
+
|
|
42
|
+
# Delorean.time_travel_to(Time.at(later_t))
|
|
43
|
+
# expect(ec).to be_in_unscheduled_maintenance
|
|
44
|
+
# ec.end_unscheduled_maintenance(later_t)
|
|
45
|
+
# expect(ec).not_to be_in_unscheduled_maintenance
|
|
46
|
+
|
|
47
|
+
# umps = ec.maintenances(nil, nil, :scheduled => false)
|
|
48
|
+
# expect(umps).not_to be_nil
|
|
49
|
+
# expect(umps).to be_an(Array)
|
|
50
|
+
# expect(umps.size).to eq(1)
|
|
51
|
+
# expect(umps[0]).to be_a(Hash)
|
|
52
|
+
|
|
53
|
+
# start_time = umps[0][:start_time]
|
|
54
|
+
# expect(start_time).not_to be_nil
|
|
55
|
+
# expect(start_time).to be_an(Integer)
|
|
56
|
+
# expect(start_time).to eq(t)
|
|
57
|
+
|
|
58
|
+
# duration = umps[0][:duration]
|
|
59
|
+
# expect(duration).not_to be_nil
|
|
60
|
+
# expect(duration).to be_a(Float)
|
|
61
|
+
# expect(duration).to eq(15 * 60)
|
|
62
|
+
# end
|
|
63
|
+
|
|
64
|
+
# it "creates a scheduled maintenance period for a future time" do
|
|
65
|
+
# t = Time.now.to_i
|
|
66
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
67
|
+
# ec.create_scheduled_maintenance(t + (60 * 60),
|
|
68
|
+
# half_an_hour, :summary => "30 minutes")
|
|
69
|
+
|
|
70
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
71
|
+
# expect(smps).not_to be_nil
|
|
72
|
+
# expect(smps).to be_an(Array)
|
|
73
|
+
# expect(smps.size).to eq(1)
|
|
74
|
+
# expect(smps[0]).to be_a(Hash)
|
|
75
|
+
|
|
76
|
+
# start_time = smps[0][:start_time]
|
|
77
|
+
# expect(start_time).not_to be_nil
|
|
78
|
+
# expect(start_time).to be_an(Integer)
|
|
79
|
+
# expect(start_time).to eq(t + (60 * 60))
|
|
80
|
+
|
|
81
|
+
# duration = smps[0][:duration]
|
|
82
|
+
# expect(duration).not_to be_nil
|
|
83
|
+
# expect(duration).to be_a(Float)
|
|
84
|
+
# expect(duration).to eq(half_an_hour)
|
|
85
|
+
# end
|
|
86
|
+
|
|
87
|
+
# # TODO this should probably enforce that it starts in the future
|
|
88
|
+
# it "creates a scheduled maintenance period covering the current time" do
|
|
89
|
+
# t = Time.now.to_i
|
|
90
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
91
|
+
# ec.create_scheduled_maintenance(t - (60 * 60),
|
|
92
|
+
# 2 * (60 * 60), :summary => "2 hours")
|
|
93
|
+
|
|
94
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
95
|
+
# expect(smps).not_to be_nil
|
|
96
|
+
# expect(smps).to be_an(Array)
|
|
97
|
+
# expect(smps.size).to eq(1)
|
|
98
|
+
# expect(smps[0]).to be_a(Hash)
|
|
99
|
+
|
|
100
|
+
# start_time = smps[0][:start_time]
|
|
101
|
+
# expect(start_time).not_to be_nil
|
|
102
|
+
# expect(start_time).to be_an(Integer)
|
|
103
|
+
# expect(start_time).to eq(t - (60 * 60))
|
|
104
|
+
|
|
105
|
+
# duration = smps[0][:duration]
|
|
106
|
+
# expect(duration).not_to be_nil
|
|
107
|
+
# expect(duration).to be_a(Float)
|
|
108
|
+
# expect(duration).to eq(2 * (60 * 60))
|
|
109
|
+
# end
|
|
110
|
+
|
|
111
|
+
# it "creates an scheduled maintenance period from a human readable time" do
|
|
112
|
+
# Flapjack::Data::EntityCheck.create_maintenance(:redis => @redis, :entity => name, :check => check, :type => 'scheduled', :started => '14/3/2027 3pm', :duration => '30 minutes', :reason => 'oops')
|
|
113
|
+
# t = Time.local(2027, 3, 14, 15, 0).to_i
|
|
114
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
115
|
+
|
|
116
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
117
|
+
# expect(smps).not_to be_nil
|
|
118
|
+
# expect(smps).to be_an(Array)
|
|
119
|
+
# expect(smps.size).to eq(1)
|
|
120
|
+
# expect(smps[0]).to be_a(Hash)
|
|
121
|
+
|
|
122
|
+
# start_time = smps[0][:start_time]
|
|
123
|
+
# expect(start_time).not_to be_nil
|
|
124
|
+
# expect(start_time).to be_an(Integer)
|
|
125
|
+
# expect(start_time).to eq(t)
|
|
126
|
+
|
|
127
|
+
# duration = smps[0][:duration]
|
|
128
|
+
# expect(duration).not_to be_nil
|
|
129
|
+
# expect(duration).to be_a(Float)
|
|
130
|
+
# expect(duration).to eq(1800.0)
|
|
131
|
+
|
|
132
|
+
# summary = @redis.get("#{name}:#{check}:#{t}:scheduled_maintenance:summary")
|
|
133
|
+
# expect(summary).not_to be_nil
|
|
134
|
+
# expect(summary).to eq('oops')
|
|
135
|
+
# end
|
|
136
|
+
|
|
137
|
+
# it "removes a scheduled maintenance period for a future time" do
|
|
138
|
+
# t = Time.now.to_i
|
|
139
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
140
|
+
# ec.create_scheduled_maintenance(t + (60 * 60),
|
|
141
|
+
# 2 * (60 * 60), :summary => "2 hours")
|
|
142
|
+
|
|
143
|
+
# ec.end_scheduled_maintenance(t + (60 * 60))
|
|
144
|
+
|
|
145
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
146
|
+
# expect(smps).not_to be_nil
|
|
147
|
+
# expect(smps).to be_an(Array)
|
|
148
|
+
# expect(smps).to be_empty
|
|
149
|
+
# end
|
|
150
|
+
|
|
151
|
+
# # maint period starts an hour from now, goes for two hours -- at 30 minutes into
|
|
152
|
+
# # it we stop it, and its duration should be 30 minutes
|
|
153
|
+
# it "shortens a scheduled maintenance period covering a current time", :time => true do
|
|
154
|
+
# t = Time.now.to_i
|
|
155
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
156
|
+
# ec.create_scheduled_maintenance(t + (60 * 60),
|
|
157
|
+
# 2 * (60 * 60), :summary => "2 hours")
|
|
158
|
+
|
|
159
|
+
# Delorean.time_travel_to(Time.at(t + (90 * 60)))
|
|
160
|
+
|
|
161
|
+
# ec.end_scheduled_maintenance(t + (60 * 60))
|
|
162
|
+
|
|
163
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
164
|
+
# expect(smps).not_to be_nil
|
|
165
|
+
# expect(smps).to be_an(Array)
|
|
166
|
+
# expect(smps).not_to be_empty
|
|
167
|
+
# expect(smps.size).to eq(1)
|
|
168
|
+
# expect(smps.first[:duration]).to eq(30 * 60)
|
|
169
|
+
# end
|
|
170
|
+
|
|
171
|
+
# it "does not alter or remove a scheduled maintenance period covering a past time", :time => true do
|
|
172
|
+
# t = Time.now.to_i
|
|
173
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
174
|
+
# ec.create_scheduled_maintenance(t + (60 * 60),
|
|
175
|
+
# 2 * (60 * 60), :summary => "2 hours")
|
|
176
|
+
|
|
177
|
+
# Delorean.time_travel_to(Time.at(t + (6 * (60 * 60))))
|
|
178
|
+
|
|
179
|
+
# ec.end_scheduled_maintenance(t + (60 * 60))
|
|
180
|
+
|
|
181
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
182
|
+
# expect(smps).not_to be_nil
|
|
183
|
+
# expect(smps).to be_an(Array)
|
|
184
|
+
# expect(smps).not_to be_empty
|
|
185
|
+
# expect(smps.size).to eq(1)
|
|
186
|
+
# expect(smps.first[:duration]).to eq(2 * (60 * 60))
|
|
187
|
+
# end
|
|
188
|
+
|
|
189
|
+
# it "returns a list of scheduled maintenance periods" do
|
|
190
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
191
|
+
# ec.create_scheduled_maintenance(five_hours_ago, half_an_hour,
|
|
192
|
+
# :summary => "first")
|
|
193
|
+
# ec.create_scheduled_maintenance(three_hours_ago, half_an_hour,
|
|
194
|
+
# :summary => "second")
|
|
195
|
+
|
|
196
|
+
# smp = ec.maintenances(nil, nil, :scheduled => true)
|
|
197
|
+
# expect(smp).not_to be_nil
|
|
198
|
+
# expect(smp).to be_an(Array)
|
|
199
|
+
# expect(smp.size).to eq(2)
|
|
200
|
+
# expect(smp[0]).to eq(:start_time => five_hours_ago,
|
|
201
|
+
# :end_time => five_hours_ago + half_an_hour,
|
|
202
|
+
# :duration => half_an_hour,
|
|
203
|
+
# :summary => "first")
|
|
204
|
+
# expect(smp[1]).to eq(:start_time => three_hours_ago,
|
|
205
|
+
# :end_time => three_hours_ago + half_an_hour,
|
|
206
|
+
# :duration => half_an_hour,
|
|
207
|
+
# :summary => "second")
|
|
208
|
+
# end
|
|
209
|
+
|
|
210
|
+
# it "returns a list of unscheduled maintenance periods" do
|
|
211
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
212
|
+
# ec.create_unscheduled_maintenance(five_hours_ago,
|
|
213
|
+
# half_an_hour, :summary => "first")
|
|
214
|
+
# ec.create_unscheduled_maintenance(three_hours_ago,
|
|
215
|
+
# half_an_hour, :summary => "second")
|
|
216
|
+
|
|
217
|
+
# ump = ec.maintenances(nil, nil, :scheduled => false)
|
|
218
|
+
# expect(ump).not_to be_nil
|
|
219
|
+
# expect(ump).to be_an(Array)
|
|
220
|
+
# expect(ump.size).to eq(2)
|
|
221
|
+
# expect(ump[0]).to eq(:start_time => five_hours_ago,
|
|
222
|
+
# :end_time => five_hours_ago + half_an_hour,
|
|
223
|
+
# :duration => half_an_hour,
|
|
224
|
+
# :summary => "first")
|
|
225
|
+
# expect(ump[1]).to eq(:start_time => three_hours_ago,
|
|
226
|
+
# :end_time => three_hours_ago + half_an_hour,
|
|
227
|
+
# :duration => half_an_hour,
|
|
228
|
+
# :summary => "second")
|
|
229
|
+
# end
|
|
230
|
+
|
|
231
|
+
# it "finds current scheduled maintenance periods for multiple entities" do
|
|
232
|
+
# ec = nil
|
|
233
|
+
|
|
234
|
+
# %w(alpha lima bravo).each do |entity|
|
|
235
|
+
# Flapjack::Data::Entity.add({ 'name' => entity }, :redis => @redis)
|
|
236
|
+
|
|
237
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(entity, check, :redis => @redis)
|
|
238
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours,
|
|
239
|
+
# :summary => "Test scheduled maintenance for #{entity}")
|
|
240
|
+
# end
|
|
241
|
+
|
|
242
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis,
|
|
243
|
+
# :type => 'scheduled', :finishing => 'more than 0 minutes from now').sort_by { |k| k[:entity] }
|
|
244
|
+
|
|
245
|
+
# expect(smp).to be_an(Array)
|
|
246
|
+
# expect(smp.size).to eq(3)
|
|
247
|
+
# %w(alpha bravo lima).each_with_index do |entity, index|
|
|
248
|
+
# expect(smp[index]).to eq(:entity => entity,
|
|
249
|
+
# :check => "ping",
|
|
250
|
+
# # The state here is nil due to no check having gone
|
|
251
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
252
|
+
# :state => nil,
|
|
253
|
+
# :start_time => five_hours_ago,
|
|
254
|
+
# :end_time => five_hours_ago + seven_hours,
|
|
255
|
+
# :duration => seven_hours,
|
|
256
|
+
# :summary => "Test scheduled maintenance for #{entity}")
|
|
257
|
+
# end
|
|
258
|
+
# end
|
|
259
|
+
|
|
260
|
+
# it "finds current unscheduled maintenance periods for multiple entities" do
|
|
261
|
+
# ec = nil
|
|
262
|
+
|
|
263
|
+
# %w(alpha bravo lima).each do |entity|
|
|
264
|
+
# Flapjack::Data::Entity.add({ 'name' => entity }, :redis => @redis)
|
|
265
|
+
|
|
266
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(entity, check, :redis => @redis)
|
|
267
|
+
# ec.create_unscheduled_maintenance(five_hours_ago, seven_hours, :summary => "Test unscheduled maintenance for #{entity}")
|
|
268
|
+
# end
|
|
269
|
+
|
|
270
|
+
# ump = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'unscheduled', :finishing => 'more than 0 minutes from now').sort_by { |k| k[:entity] }
|
|
271
|
+
|
|
272
|
+
# expect(ump).not_to be_nil
|
|
273
|
+
# expect(ump).to be_an(Array)
|
|
274
|
+
# expect(ump.size).to eq(3)
|
|
275
|
+
# %w(alpha bravo lima).each_with_index do |entity, index|
|
|
276
|
+
# expect(ump[index]).to eq(:entity => entity,
|
|
277
|
+
# :check => "ping",
|
|
278
|
+
# # The state here is nil due to no check having gone
|
|
279
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
280
|
+
# :state => nil,
|
|
281
|
+
# :start_time => five_hours_ago,
|
|
282
|
+
# :end_time => five_hours_ago + seven_hours,
|
|
283
|
+
# :duration => seven_hours,
|
|
284
|
+
# :summary => "Test unscheduled maintenance for #{entity}")
|
|
285
|
+
# end
|
|
286
|
+
# end
|
|
287
|
+
|
|
288
|
+
# it "finds all scheduled maintenance starting more than 3 hours ago" do
|
|
289
|
+
# ['more than three hours ago', 'before 3 hours ago'].each do |input|
|
|
290
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
291
|
+
|
|
292
|
+
# # Maintenance in the past, now ended
|
|
293
|
+
# ec.create_scheduled_maintenance(five_hours_ago, half_an_hour, :summary => "30 minute maintenance")
|
|
294
|
+
# # Maintenance started in the past, still running
|
|
295
|
+
# ec.create_scheduled_maintenance(three_hours_ago + five_minutes, seven_hours, :summary => "Scheduled maintenance started 3 hours ago")
|
|
296
|
+
# ec.create_scheduled_maintenance(four_hours_ago, seven_hours, :summary => "Scheduled maintenance started 4 hours ago")
|
|
297
|
+
|
|
298
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :started => input).sort_by { |k| k[:entity] }
|
|
299
|
+
|
|
300
|
+
# expect(smp).to be_an(Array)
|
|
301
|
+
# expect(smp.size).to eq(2)
|
|
302
|
+
|
|
303
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
304
|
+
# :check => check,
|
|
305
|
+
# # The state here is nil due to no check having gone
|
|
306
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
307
|
+
# :state => nil,
|
|
308
|
+
# :start_time => five_hours_ago,
|
|
309
|
+
# :end_time => five_hours_ago + half_an_hour,
|
|
310
|
+
# :duration => half_an_hour,
|
|
311
|
+
# :summary => "30 minute maintenance")
|
|
312
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
313
|
+
# :check => check,
|
|
314
|
+
# # The state here is nil due to no check having gone
|
|
315
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
316
|
+
# :state => nil,
|
|
317
|
+
# :start_time => four_hours_ago,
|
|
318
|
+
# :end_time => four_hours_ago + seven_hours,
|
|
319
|
+
# :duration => seven_hours,
|
|
320
|
+
# :summary => "Scheduled maintenance started 4 hours ago")
|
|
321
|
+
# end
|
|
322
|
+
# end
|
|
323
|
+
|
|
324
|
+
# it "finds all scheduled maintenance starting within the next four hours" do
|
|
325
|
+
# ['less than four hours ago', 'after 4 hours ago'].each do |input|
|
|
326
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
327
|
+
|
|
328
|
+
# # Maintenance in the past, now ended
|
|
329
|
+
# ec.create_scheduled_maintenance(five_hours_ago, half_an_hour, :summary => "30 minute maintenance")
|
|
330
|
+
# # Maintenance started in the past, still running
|
|
331
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago")
|
|
332
|
+
# ec.create_scheduled_maintenance(four_hours_ago, seven_hours, :summary => "Scheduled maintenance started 4 hours ago")
|
|
333
|
+
|
|
334
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :started => input).sort_by { |k| k[:entity] }
|
|
335
|
+
|
|
336
|
+
# expect(smp).to be_an(Array)
|
|
337
|
+
# expect(smp.size).to eq(1)
|
|
338
|
+
|
|
339
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
340
|
+
# :check => check,
|
|
341
|
+
# # The state here is nil due to no check having gone
|
|
342
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
343
|
+
# :state => nil,
|
|
344
|
+
# :start_time => three_hours_ago,
|
|
345
|
+
# :end_time => three_hours_ago + seven_hours,
|
|
346
|
+
# :duration => seven_hours,
|
|
347
|
+
# :summary => "Scheduled maintenance started 3 hours ago")
|
|
348
|
+
# end
|
|
349
|
+
# end
|
|
350
|
+
|
|
351
|
+
# it "finds all scheduled maintenance ending within the next two hours" do
|
|
352
|
+
# ['less than two hours', 'before 2 hours'].each do |input|
|
|
353
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
354
|
+
# # Maintenance in the past, now ended
|
|
355
|
+
# ec.create_scheduled_maintenance(two_hours_ago + five_minutes, half_an_hour, :summary => "Scheduled maintenance started 3 hours ago")
|
|
356
|
+
# # Maintenance started in the past, still running
|
|
357
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
358
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours + five_minutes, :summary => "Scheduled maintenance started 5 hours ago")
|
|
359
|
+
# # Current maintenance
|
|
360
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
361
|
+
# # Future maintenance
|
|
362
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
363
|
+
|
|
364
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :finishing => input).sort_by { |k| k[:entity] }
|
|
365
|
+
|
|
366
|
+
# expect(smp).to be_an(Array)
|
|
367
|
+
# expect(smp.size).to eq(3)
|
|
368
|
+
|
|
369
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
370
|
+
# :check => check,
|
|
371
|
+
# # The state here is nil due to no check having gone
|
|
372
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
373
|
+
# :state => nil,
|
|
374
|
+
# :start_time => two_hours_ago + five_minutes,
|
|
375
|
+
# :end_time => two_hours_ago + five_minutes + half_an_hour,
|
|
376
|
+
# :duration => half_an_hour,
|
|
377
|
+
# :summary => "Scheduled maintenance started 3 hours ago")
|
|
378
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
379
|
+
# :check => check,
|
|
380
|
+
# # The state here is nil due to no check having gone
|
|
381
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
382
|
+
# :state => nil,
|
|
383
|
+
# :start_time => t,
|
|
384
|
+
# :end_time => t + half_an_hour,
|
|
385
|
+
# :duration => half_an_hour,
|
|
386
|
+
# :summary => "Scheduled maintenance started now")
|
|
387
|
+
# expect(smp[2]).to eq(:entity => name,
|
|
388
|
+
# :check => check,
|
|
389
|
+
# # The state here is nil due to no check having gone
|
|
390
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
391
|
+
# :state => nil,
|
|
392
|
+
# :start_time => t + five_minutes,
|
|
393
|
+
# :end_time => t + five_minutes + half_an_hour,
|
|
394
|
+
# :duration => half_an_hour,
|
|
395
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
396
|
+
# end
|
|
397
|
+
# end
|
|
398
|
+
|
|
399
|
+
# it "finds all scheduled maintenance ending between two times (1 hour ago - 2 hours ago)" do
|
|
400
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
401
|
+
# # Maintenance in the past, now ended
|
|
402
|
+
# ec.create_scheduled_maintenance(two_hours_ago + five_minutes, half_an_hour, :summary => "Scheduled maintenance started 1 hour, 55 minutes ago")
|
|
403
|
+
# # Maintenance started in the past, still running
|
|
404
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
405
|
+
# ec.create_scheduled_maintenance(five_hours_ago, three_hours + five_minutes, :summary => "Scheduled maintenance started 5 hours ago")
|
|
406
|
+
# # Future maintenance
|
|
407
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
408
|
+
|
|
409
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :finishing => 'between one and two hours ago').sort_by { |k| k[:entity] }
|
|
410
|
+
|
|
411
|
+
# expect(smp).to be_an(Array)
|
|
412
|
+
# expect(smp.size).to eq(2)
|
|
413
|
+
|
|
414
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
415
|
+
# :check => check,
|
|
416
|
+
# # The state here is nil due to no check having gone
|
|
417
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
418
|
+
# :state => nil,
|
|
419
|
+
# :start_time => five_hours_ago,
|
|
420
|
+
# :end_time => five_hours_ago + three_hours + five_minutes,
|
|
421
|
+
# :duration => three_hours + five_minutes,
|
|
422
|
+
# :summary => "Scheduled maintenance started 5 hours ago")
|
|
423
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
424
|
+
# :check => check,
|
|
425
|
+
# # The state here is nil due to no check having gone
|
|
426
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
427
|
+
# :state => nil,
|
|
428
|
+
# :start_time => two_hours_ago + five_minutes,
|
|
429
|
+
# :end_time => two_hours_ago + five_minutes + half_an_hour,
|
|
430
|
+
# :duration => half_an_hour,
|
|
431
|
+
# :summary => "Scheduled maintenance started 1 hour, 55 minutes ago")
|
|
432
|
+
# end
|
|
433
|
+
|
|
434
|
+
# it "finds all scheduled maintenance ending between two times (1 hour from now - 2 hours from now)" do
|
|
435
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
436
|
+
# # Maintenance in the past, now ended
|
|
437
|
+
# ec.create_scheduled_maintenance(two_hours_ago + five_minutes, half_an_hour, :summary => "Scheduled maintenance started 1 hour, 55 minutes ago")
|
|
438
|
+
# # Maintenance started in the past, still running
|
|
439
|
+
# ec.create_scheduled_maintenance(three_hours_ago, five_hours - five_minutes, :summary => "Scheduled maintenance started 3 hours ago for 4 hours, 25 minutes")
|
|
440
|
+
# ec.create_scheduled_maintenance(five_hours_ago, three_hours + five_minutes, :summary => "Scheduled maintenance started 5 hours ago")
|
|
441
|
+
# # Future maintenance
|
|
442
|
+
# ec.create_scheduled_maintenance(t + five_minutes, one_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
443
|
+
|
|
444
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :finishing => 'between one and two hours').sort_by { |k| k[:entity] }
|
|
445
|
+
|
|
446
|
+
# expect(smp).to be_an(Array)
|
|
447
|
+
# expect(smp.size).to eq(2)
|
|
448
|
+
|
|
449
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
450
|
+
# :check => check,
|
|
451
|
+
# # The state here is nil due to no check having gone
|
|
452
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
453
|
+
# :state => nil,
|
|
454
|
+
# :start_time => three_hours_ago,
|
|
455
|
+
# :end_time => three_hours_ago + five_hours - five_minutes,
|
|
456
|
+
# :duration => five_hours - five_minutes,
|
|
457
|
+
# :summary => "Scheduled maintenance started 3 hours ago for 4 hours, 25 minutes")
|
|
458
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
459
|
+
# :check => check,
|
|
460
|
+
# # The state here is nil due to no check having gone
|
|
461
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
462
|
+
# :state => nil,
|
|
463
|
+
# :start_time => t + five_minutes,
|
|
464
|
+
# :end_time => t + five_minutes + one_hour,
|
|
465
|
+
# :duration => one_hour,
|
|
466
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
467
|
+
# end
|
|
468
|
+
|
|
469
|
+
# it "finds all scheduled maintenance ending in more than two hours" do
|
|
470
|
+
# ['more than two hours', 'after 2 hours'].each do |input|
|
|
471
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
472
|
+
# # Maintenance in the past, now ended
|
|
473
|
+
# ec.create_scheduled_maintenance(two_hours_ago, half_an_hour, :summary => "Scheduled maintenance started 2 hours ago")
|
|
474
|
+
# # Maintenance started in the past, still running
|
|
475
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
476
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Scheduled maintenance started 5 hours ago")
|
|
477
|
+
# # Current maintenance
|
|
478
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
479
|
+
# # Future maintenance
|
|
480
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
481
|
+
|
|
482
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :finishing => input).sort_by { |k| k[:entity] }
|
|
483
|
+
|
|
484
|
+
# expect(smp).to be_an(Array)
|
|
485
|
+
# expect(smp.size).to eq(1)
|
|
486
|
+
|
|
487
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
488
|
+
# :check => check,
|
|
489
|
+
# # The state here is nil due to no check having gone
|
|
490
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
491
|
+
# :state => nil,
|
|
492
|
+
# :start_time => three_hours_ago,
|
|
493
|
+
# :end_time => three_hours_ago + seven_hours,
|
|
494
|
+
# :duration => seven_hours,
|
|
495
|
+
# :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
496
|
+
# end
|
|
497
|
+
# end
|
|
498
|
+
|
|
499
|
+
# it "finds all scheduled maintenance with a duration of less than one hour" do
|
|
500
|
+
# ['less than', 'before'].each do |input|
|
|
501
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
502
|
+
# # Maintenance in the past, now ended
|
|
503
|
+
# ec.create_scheduled_maintenance(two_hours_ago, half_an_hour, :summary => "Scheduled maintenance started 3 hours ago")
|
|
504
|
+
# # Maintenance started in the past, still running
|
|
505
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
506
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Scheduled maintenance started 5 hours ago")
|
|
507
|
+
# # Current maintenance
|
|
508
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
509
|
+
# # Future maintenance
|
|
510
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
511
|
+
|
|
512
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :duration => "#{input} one hour").sort_by { |k| k[:entity] }
|
|
513
|
+
|
|
514
|
+
# expect(smp).to be_an(Array)
|
|
515
|
+
# expect(smp.size).to eq(3)
|
|
516
|
+
|
|
517
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
518
|
+
# :check => check,
|
|
519
|
+
# # The state here is nil due to no check having gone
|
|
520
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
521
|
+
# :state => nil,
|
|
522
|
+
# :start_time => two_hours_ago,
|
|
523
|
+
# :end_time => two_hours_ago + half_an_hour,
|
|
524
|
+
# :duration => half_an_hour,
|
|
525
|
+
# :summary => "Scheduled maintenance started 3 hours ago")
|
|
526
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
527
|
+
# :check => check,
|
|
528
|
+
# # The state here is nil due to no check having gone
|
|
529
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
530
|
+
# :state => nil,
|
|
531
|
+
# :start_time => t,
|
|
532
|
+
# :end_time => t + half_an_hour,
|
|
533
|
+
# :duration => half_an_hour,
|
|
534
|
+
# :summary => "Scheduled maintenance started now")
|
|
535
|
+
# expect(smp[2]).to eq(:entity => name,
|
|
536
|
+
# :check => check,
|
|
537
|
+
# # The state here is nil due to no check having gone
|
|
538
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
539
|
+
# :state => nil,
|
|
540
|
+
# :start_time => t + five_minutes,
|
|
541
|
+
# :end_time => t + five_minutes + half_an_hour,
|
|
542
|
+
# :duration => half_an_hour,
|
|
543
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
544
|
+
# end
|
|
545
|
+
# end
|
|
546
|
+
|
|
547
|
+
# it "finds all scheduled maintenance with a duration of 30 minutes" do
|
|
548
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
549
|
+
# # Maintenance in the past, now ended
|
|
550
|
+
# ec.create_scheduled_maintenance(two_hours_ago, half_an_hour, :summary => "Scheduled maintenance started 3 hours ago")
|
|
551
|
+
# # Maintenance started in the past, still running
|
|
552
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
553
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Scheduled maintenance started 5 hours ago")
|
|
554
|
+
# # Current maintenance
|
|
555
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
556
|
+
# # Future maintenance
|
|
557
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
558
|
+
|
|
559
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :duration => '30 minutes').sort_by { |k| k[:entity] }
|
|
560
|
+
|
|
561
|
+
# expect(smp).to be_an(Array)
|
|
562
|
+
# expect(smp.size).to eq(3)
|
|
563
|
+
|
|
564
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
565
|
+
# :check => check,
|
|
566
|
+
# # The state here is nil due to no check having gone
|
|
567
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
568
|
+
# :state => nil,
|
|
569
|
+
# :start_time => two_hours_ago,
|
|
570
|
+
# :end_time => two_hours_ago + half_an_hour,
|
|
571
|
+
# :duration => half_an_hour,
|
|
572
|
+
# :summary => "Scheduled maintenance started 3 hours ago")
|
|
573
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
574
|
+
# :check => check,
|
|
575
|
+
# # The state here is nil due to no check having gone
|
|
576
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
577
|
+
# :state => nil,
|
|
578
|
+
# :start_time => t,
|
|
579
|
+
# :end_time => t + half_an_hour,
|
|
580
|
+
# :duration => half_an_hour,
|
|
581
|
+
# :summary => "Scheduled maintenance started now")
|
|
582
|
+
# expect(smp[2]).to eq(:entity => name,
|
|
583
|
+
# :check => check,
|
|
584
|
+
# # The state here is nil due to no check having gone
|
|
585
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
586
|
+
# :state => nil,
|
|
587
|
+
# :start_time => t + five_minutes,
|
|
588
|
+
# :end_time => t + five_minutes + half_an_hour,
|
|
589
|
+
# :duration => half_an_hour,
|
|
590
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
591
|
+
# end
|
|
592
|
+
|
|
593
|
+
# it "finds all scheduled maintenance with a duration of between 15 and 65 minutes" do
|
|
594
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
595
|
+
# # Maintenance in the past, now ended
|
|
596
|
+
# ec.create_scheduled_maintenance(two_hours_ago, half_an_hour, :summary => "Scheduled maintenance started 3 hours ago")
|
|
597
|
+
# # Maintenance started in the past, still running
|
|
598
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
599
|
+
# ec.create_scheduled_maintenance(five_hours_ago, one_hour, :summary => "Scheduled maintenance started 5 hours ago")
|
|
600
|
+
# # Current maintenance
|
|
601
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
602
|
+
# # Future maintenance
|
|
603
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
604
|
+
|
|
605
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :duration => 'between 15 and 65 minutes').sort_by { |k| k[:entity] }
|
|
606
|
+
|
|
607
|
+
# expect(smp).to be_an(Array)
|
|
608
|
+
# expect(smp.size).to eq(4)
|
|
609
|
+
|
|
610
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
611
|
+
# :check => check,
|
|
612
|
+
# # The state here is nil due to no check having gone
|
|
613
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
614
|
+
# :state => nil,
|
|
615
|
+
# :start_time => two_hours_ago,
|
|
616
|
+
# :end_time => two_hours_ago + half_an_hour,
|
|
617
|
+
# :duration => half_an_hour,
|
|
618
|
+
# :summary => "Scheduled maintenance started 3 hours ago")
|
|
619
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
620
|
+
# :check => check,
|
|
621
|
+
# # The state here is nil due to no check having gone
|
|
622
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
623
|
+
# :state => nil,
|
|
624
|
+
# :start_time => five_hours_ago,
|
|
625
|
+
# :end_time => five_hours_ago + one_hour,
|
|
626
|
+
# :duration => one_hour,
|
|
627
|
+
# :summary => "Scheduled maintenance started 5 hours ago")
|
|
628
|
+
# expect(smp[2]).to eq(:entity => name,
|
|
629
|
+
# :check => check,
|
|
630
|
+
# # The state here is nil due to no check having gone
|
|
631
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
632
|
+
# :state => nil,
|
|
633
|
+
# :start_time => t,
|
|
634
|
+
# :end_time => t + half_an_hour,
|
|
635
|
+
# :duration => half_an_hour,
|
|
636
|
+
# :summary => "Scheduled maintenance started now")
|
|
637
|
+
# expect(smp[3]).to eq(:entity => name,
|
|
638
|
+
# :check => check,
|
|
639
|
+
# # The state here is nil due to no check having gone
|
|
640
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
641
|
+
# :state => nil,
|
|
642
|
+
# :start_time => t + five_minutes,
|
|
643
|
+
# :end_time => t + five_minutes + half_an_hour,
|
|
644
|
+
# :duration => half_an_hour,
|
|
645
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
646
|
+
# end
|
|
647
|
+
|
|
648
|
+
# it "finds all scheduled maintenance with a duration of more than one hour" do
|
|
649
|
+
# ['more than, after'].each do |input|
|
|
650
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
651
|
+
# # Maintenance in the past, now ended
|
|
652
|
+
# ec.create_scheduled_maintenance(two_hours_ago, half_an_hour, :summary => "Scheduled maintenance started 3 hours ago")
|
|
653
|
+
# # Maintenance started in the past, still running
|
|
654
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
655
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Scheduled maintenance started 5 hours ago")
|
|
656
|
+
# # Current maintenance
|
|
657
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Scheduled maintenance started now")
|
|
658
|
+
# # Future maintenance
|
|
659
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
660
|
+
|
|
661
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :duration => "#{input} one hour").sort_by { |k| k[:entity] }
|
|
662
|
+
|
|
663
|
+
# expect(smp).to be_an(Array)
|
|
664
|
+
# expect(smp.size).to eq(2)
|
|
665
|
+
|
|
666
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
667
|
+
# :check => check,
|
|
668
|
+
# # The state here is nil due to no check having gone
|
|
669
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
670
|
+
# :state => nil,
|
|
671
|
+
# :start_time => five_hours_ago,
|
|
672
|
+
# :end_time => five_hours_ago + seven_hours,
|
|
673
|
+
# :duration => seven_hours,
|
|
674
|
+
# :summary => "Scheduled maintenance started 5 hours ago")
|
|
675
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
676
|
+
# :check => check,
|
|
677
|
+
# # The state here is nil due to no check having gone
|
|
678
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
679
|
+
# :state => nil,
|
|
680
|
+
# :start_time => three_hours_ago,
|
|
681
|
+
# :end_time => three_hours_ago + seven_hours,
|
|
682
|
+
# :duration => seven_hours,
|
|
683
|
+
# :summary => "Scheduled maintenance started 3 hours ago for 7 hours")
|
|
684
|
+
# end
|
|
685
|
+
# end
|
|
686
|
+
|
|
687
|
+
# it "finds all scheduled maintenance with a particular entity name" do
|
|
688
|
+
# ['bravo', 'br.*'].each do |input|
|
|
689
|
+
# %w(alpha bravo lima).each do |entity|
|
|
690
|
+
# Flapjack::Data::Entity.add({ 'name' => entity }, :redis => @redis)
|
|
691
|
+
|
|
692
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(entity, check, :redis => @redis)
|
|
693
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Test scheduled maintenance for #{entity}")
|
|
694
|
+
# end
|
|
695
|
+
|
|
696
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :entity => input ).sort_by { |k| k[:entity] }
|
|
697
|
+
|
|
698
|
+
# expect(smp).to be_an(Array)
|
|
699
|
+
# expect(smp.size).to eq(1)
|
|
700
|
+
# expect(smp[0]).to eq(:entity => "bravo",
|
|
701
|
+
# :check => check,
|
|
702
|
+
# # The state here is nil due to no check having gone
|
|
703
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
704
|
+
# :state => nil,
|
|
705
|
+
# :start_time => five_hours_ago,
|
|
706
|
+
# :end_time => five_hours_ago + seven_hours,
|
|
707
|
+
# :duration => seven_hours,
|
|
708
|
+
# :summary => "Test scheduled maintenance for bravo")
|
|
709
|
+
# end
|
|
710
|
+
# end
|
|
711
|
+
|
|
712
|
+
# it "finds all scheduled maintenance with a particular check name" do
|
|
713
|
+
# ['http', 'ht.*'].each do |input|
|
|
714
|
+
# %w(ping http ssh).each do |check|
|
|
715
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
716
|
+
# ec.create_scheduled_maintenance(five_hours_ago, seven_hours, :summary => "Test scheduled maintenance for #{check}")
|
|
717
|
+
# end
|
|
718
|
+
|
|
719
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :check => input ).sort_by { |k| k[:entity] }
|
|
720
|
+
|
|
721
|
+
# expect(smp).to be_an(Array)
|
|
722
|
+
# expect(smp.size).to eq(1)
|
|
723
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
724
|
+
# :check => "http",
|
|
725
|
+
# # The state here is nil due to no check having gone
|
|
726
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
727
|
+
# :state => nil,
|
|
728
|
+
# :start_time => five_hours_ago,
|
|
729
|
+
# :end_time => five_hours_ago + seven_hours,
|
|
730
|
+
# :duration => seven_hours,
|
|
731
|
+
# :summary => "Test scheduled maintenance for http")
|
|
732
|
+
# end
|
|
733
|
+
# end
|
|
734
|
+
|
|
735
|
+
# it "finds all scheduled maintenance with a particular summary" do
|
|
736
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
737
|
+
|
|
738
|
+
# # Maintenance started in the past, still running
|
|
739
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Bring me a shrubbery!")
|
|
740
|
+
# # Current maintenance
|
|
741
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Bring me a shrubbery!")
|
|
742
|
+
# # Future maintenance
|
|
743
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
744
|
+
|
|
745
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :reason => "Bring me a shrubbery!").sort_by { |k| k[:entity] }
|
|
746
|
+
|
|
747
|
+
# expect(smp).to be_an(Array)
|
|
748
|
+
# expect(smp.size).to eq(2)
|
|
749
|
+
|
|
750
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
751
|
+
# :check => check,
|
|
752
|
+
# # The state here is nil due to no check having gone
|
|
753
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
754
|
+
# :state => nil,
|
|
755
|
+
# :start_time => three_hours_ago,
|
|
756
|
+
# :end_time => three_hours_ago + seven_hours,
|
|
757
|
+
# :duration => seven_hours,
|
|
758
|
+
# :summary => "Bring me a shrubbery!")
|
|
759
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
760
|
+
# :check => check,
|
|
761
|
+
# # The state here is nil due to no check having gone
|
|
762
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
763
|
+
# :state => nil,
|
|
764
|
+
# :start_time => t,
|
|
765
|
+
# :end_time => t + half_an_hour,
|
|
766
|
+
# :duration => half_an_hour,
|
|
767
|
+
# :summary => "Bring me a shrubbery!")
|
|
768
|
+
# end
|
|
769
|
+
|
|
770
|
+
# it "finds all scheduled maintenance with a summary regex" do
|
|
771
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
772
|
+
|
|
773
|
+
# # Maintenance started in the past, still running
|
|
774
|
+
# ec.create_scheduled_maintenance(three_hours_ago, seven_hours, :summary => "Bring me a shrubbery!")
|
|
775
|
+
# # Current maintenance
|
|
776
|
+
# ec.create_scheduled_maintenance(t, half_an_hour, :summary => "Bring me a shrubbery!")
|
|
777
|
+
# # Future maintenance
|
|
778
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
779
|
+
|
|
780
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled', :reason => '.* shrubbery!').sort_by { |k| k[:entity] }
|
|
781
|
+
|
|
782
|
+
# expect(smp).to be_an(Array)
|
|
783
|
+
# expect(smp.size).to eq(2)
|
|
784
|
+
|
|
785
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
786
|
+
# :check => check,
|
|
787
|
+
# # The state here is nil due to no check having gone
|
|
788
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
789
|
+
# :state => nil,
|
|
790
|
+
# :start_time => three_hours_ago,
|
|
791
|
+
# :end_time => three_hours_ago + seven_hours,
|
|
792
|
+
# :duration => seven_hours,
|
|
793
|
+
# :summary => "Bring me a shrubbery!")
|
|
794
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
795
|
+
# :check => check,
|
|
796
|
+
# # The state here is nil due to no check having gone
|
|
797
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
798
|
+
# :state => nil,
|
|
799
|
+
# :start_time => t,
|
|
800
|
+
# :end_time => t + half_an_hour,
|
|
801
|
+
# :duration => half_an_hour,
|
|
802
|
+
# :summary => "Bring me a shrubbery!")
|
|
803
|
+
# end
|
|
804
|
+
|
|
805
|
+
# it "deletes scheduled maintenance from list" do
|
|
806
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
807
|
+
# # Current maintenance
|
|
808
|
+
# ec.create_scheduled_maintenance(two_hours_ago, seven_hours, :summary => "Scheduled maintenance started 2 hours ago")
|
|
809
|
+
# ec.create_scheduled_maintenance(t + half_an_hour, half_an_hour, :summary => "Scheduled maintenance starting in half an hour")
|
|
810
|
+
# # Future maintenance
|
|
811
|
+
# ec.create_scheduled_maintenance(t + five_minutes, half_an_hour, :summary => "Scheduled maintenance starting in 5 minutes")
|
|
812
|
+
|
|
813
|
+
# smp = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled').sort_by { |k| k[:entity] }
|
|
814
|
+
|
|
815
|
+
# expect(smp).to be_an(Array)
|
|
816
|
+
# expect(smp.size).to eq(3)
|
|
817
|
+
|
|
818
|
+
# expect(smp[0]).to eq(:entity => name,
|
|
819
|
+
# :check => check,
|
|
820
|
+
# # The state here is nil due to no check having gone
|
|
821
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
822
|
+
# :state => nil,
|
|
823
|
+
# :start_time => two_hours_ago,
|
|
824
|
+
# :end_time => two_hours_ago + seven_hours,
|
|
825
|
+
# :duration => seven_hours,
|
|
826
|
+
# :summary => "Scheduled maintenance started 2 hours ago")
|
|
827
|
+
# expect(smp[1]).to eq(:entity => name,
|
|
828
|
+
# :check => check,
|
|
829
|
+
# # The state here is nil due to no check having gone
|
|
830
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
831
|
+
# :state => nil,
|
|
832
|
+
# :start_time => t + five_minutes,
|
|
833
|
+
# :end_time => t + five_minutes + half_an_hour,
|
|
834
|
+
# :duration => half_an_hour,
|
|
835
|
+
# :summary => "Scheduled maintenance starting in 5 minutes")
|
|
836
|
+
# expect(smp[2]).to eq(:entity => name,
|
|
837
|
+
# :check => check,
|
|
838
|
+
# # The state here is nil due to no check having gone
|
|
839
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
840
|
+
# :state => nil,
|
|
841
|
+
# :start_time => t + half_an_hour,
|
|
842
|
+
# :end_time => t + half_an_hour + half_an_hour,
|
|
843
|
+
# :duration => half_an_hour,
|
|
844
|
+
# :summary => "Scheduled maintenance starting in half an hour")
|
|
845
|
+
|
|
846
|
+
# delete = Flapjack::Data::EntityCheck.delete_maintenance(:redis => @redis, :type => 'scheduled', :duration => '30 minutes' )
|
|
847
|
+
# expect(delete).to eq({})
|
|
848
|
+
|
|
849
|
+
# remain = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'scheduled').sort_by { |k| k[:entity] }
|
|
850
|
+
|
|
851
|
+
# expect(remain).to be_an(Array)
|
|
852
|
+
# expect(remain.size).to eq(1)
|
|
853
|
+
|
|
854
|
+
# expect(remain[0]).to eq(:entity => name,
|
|
855
|
+
# :check => check,
|
|
856
|
+
# # The state here is nil due to no check having gone
|
|
857
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
858
|
+
# :state => nil,
|
|
859
|
+
# :start_time => two_hours_ago,
|
|
860
|
+
# :end_time => two_hours_ago + seven_hours,
|
|
861
|
+
# :duration => seven_hours,
|
|
862
|
+
# :summary => "Scheduled maintenance started 2 hours ago")
|
|
863
|
+
# end
|
|
864
|
+
|
|
865
|
+
# it "deletes unscheduled maintenance from list" do
|
|
866
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
867
|
+
# ec.create_unscheduled_maintenance(t, half_an_hour, :summary => "Unscheduled maintenance starting now")
|
|
868
|
+
|
|
869
|
+
# ump = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'unscheduled').sort_by { |k| k[:entity] }
|
|
870
|
+
# expect(ump).to be_an(Array)
|
|
871
|
+
# expect(ump.size).to eq(1)
|
|
872
|
+
|
|
873
|
+
# expect(ump[0]).to eq(:entity => name,
|
|
874
|
+
# :check => check,
|
|
875
|
+
# # The state here is nil due to no check having gone
|
|
876
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
877
|
+
# :state => nil,
|
|
878
|
+
# :start_time => t,
|
|
879
|
+
# :duration => half_an_hour,
|
|
880
|
+
# :end_time => t + half_an_hour,
|
|
881
|
+
# :summary => "Unscheduled maintenance starting now")
|
|
882
|
+
|
|
883
|
+
# later_t = t + (15 * 60)
|
|
884
|
+
# Delorean.time_travel_to(Time.at(later_t))
|
|
885
|
+
|
|
886
|
+
# delete = Flapjack::Data::EntityCheck.delete_maintenance(:redis => @redis, :type => 'unscheduled', :duration => '30 minutes')
|
|
887
|
+
# expect(delete).to eq({})
|
|
888
|
+
|
|
889
|
+
# remain = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'unscheduled').sort_by { |k| k[:entity] }
|
|
890
|
+
# expect(remain).to be_an(Array)
|
|
891
|
+
# expect(remain.size).to eq(1)
|
|
892
|
+
|
|
893
|
+
# expect(remain[0]).to eq(:entity => name,
|
|
894
|
+
# :check => check,
|
|
895
|
+
# # The state here is nil due to no check having gone
|
|
896
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
897
|
+
# :state => nil,
|
|
898
|
+
# :start_time => t,
|
|
899
|
+
# :duration => half_an_hour,
|
|
900
|
+
# :end_time => t + half_an_hour,
|
|
901
|
+
# :summary => "Unscheduled maintenance starting now")
|
|
902
|
+
# end
|
|
903
|
+
|
|
904
|
+
# it "shows errors when deleting maintenance in the past" do
|
|
905
|
+
# Flapjack::Data::EntityCheck.create_maintenance(:redis => @redis, :entity => name, :check => check, :type => 'unscheduled', :started => '14/3/1927 3pm', :duration => '30 minutes', :reason => 'Unscheduled maintenance')
|
|
906
|
+
# t = Time.local(1927, 3, 14, 15, 0).to_i
|
|
907
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check, :redis => @redis)
|
|
908
|
+
|
|
909
|
+
# ump = Flapjack::Data::EntityCheck.find_maintenance(:redis => @redis, :type => 'unscheduled').sort_by { |k| k[:entity] }
|
|
910
|
+
# expect(ump).to be_an(Array)
|
|
911
|
+
# expect(ump.size).to eq(1)
|
|
912
|
+
|
|
913
|
+
# expect(ump[0]).to eq(:entity => name,
|
|
914
|
+
# :check => check,
|
|
915
|
+
# # The state here is nil due to no check having gone
|
|
916
|
+
# # through for this item. This is normally 'critical' or 'ok'
|
|
917
|
+
# :state => nil,
|
|
918
|
+
# :start_time => t,
|
|
919
|
+
# :duration => half_an_hour,
|
|
920
|
+
# :end_time => t + half_an_hour,
|
|
921
|
+
# :summary => "Unscheduled maintenance")
|
|
922
|
+
|
|
923
|
+
# delete = Flapjack::Data::EntityCheck.delete_maintenance(:redis => @redis, :type => 'unscheduled', :duration => '30 minutes')
|
|
924
|
+
# expect(delete).to eq({"abc-123:ping:#{t}"=>"Maintenance can't be deleted as it finished in the past"})
|
|
925
|
+
# end
|
|
926
|
+
# end
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
# it "creates a scheduled maintenance period for a future time" do
|
|
930
|
+
# t = Time.now.to_i
|
|
931
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check)
|
|
932
|
+
# ec.create_scheduled_maintenance(t + (60 * 60),
|
|
933
|
+
# half_an_hour, :summary => "30 minutes")
|
|
934
|
+
|
|
935
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
936
|
+
# smps.should_not be_nil
|
|
937
|
+
# smps.should be_an(Array)
|
|
938
|
+
# smps.should have(1).scheduled_maintenance_period
|
|
939
|
+
# smps[0].should be_a(Hash)
|
|
940
|
+
|
|
941
|
+
# start_time = smps[0][:start_time]
|
|
942
|
+
# start_time.should_not be_nil
|
|
943
|
+
# start_time.should be_an(Integer)
|
|
944
|
+
# start_time.should == (t + (60 * 60))
|
|
945
|
+
|
|
946
|
+
# duration = smps[0][:duration]
|
|
947
|
+
# duration.should_not be_nil
|
|
948
|
+
# duration.should be_a(Float)
|
|
949
|
+
# duration.should == half_an_hour
|
|
950
|
+
# end
|
|
951
|
+
|
|
952
|
+
# # TODO this should probably enforce that it starts in the future
|
|
953
|
+
# it "creates a scheduled maintenance period covering the current time" do
|
|
954
|
+
# t = Time.now.to_i
|
|
955
|
+
# ec = Flapjack::Data::EntityCheck.for_entity_name(name, check)
|
|
956
|
+
# ec.create_scheduled_maintenance(t - (60 * 60),
|
|
957
|
+
# 2 * (60 * 60), :summary => "2 hours")
|
|
958
|
+
|
|
959
|
+
# smps = ec.maintenances(nil, nil, :scheduled => true)
|
|
960
|
+
# smps.should_not be_nil
|
|
961
|
+
# smps.should be_an(Array)
|
|
962
|
+
# smps.should have(1).scheduled_maintenance_period
|
|
963
|
+
# smps[0].should be_a(Hash)
|
|
964
|
+
|
|
965
|
+
# start_time = smps[0][:start_time]
|
|
966
|
+
# start_time.should_not be_nil
|
|
967
|
+
# start_time.should be_an(Integer)
|
|
968
|
+
# start_time.should == (t - (60 * 60))
|
|
969
|
+
|
|
970
|
+
# duration = smps[0][:duration]
|
|
971
|
+
# duration.should_not be_nil
|
|
972
|
+
# duration.should be_a(Float)
|
|
973
|
+
# duration.should == 2 * (60 * 60)
|
|
974
|
+
# end
|
|
975
|
+
|
|
976
|
+
end
|