hawkular-client 2.7.0 → 2.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 (156) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +19 -2
  3. data/.travis/wait_for_services.rb +23 -0
  4. data/CHANGES.rdoc +11 -0
  5. data/docker-compose.yml +15 -0
  6. data/lib/hawkular/alerts/alerts_api.rb +24 -0
  7. data/lib/hawkular/base_client.rb +7 -0
  8. data/lib/hawkular/inventory/entities.rb +3 -0
  9. data/lib/hawkular/metrics/metric_api.rb +38 -3
  10. data/lib/hawkular/metrics/metrics_client.rb +3 -0
  11. data/lib/hawkular/metrics/tenant_api.rb +2 -2
  12. data/lib/hawkular/version.rb +1 -1
  13. data/spec/integration/alert-resources/alerts-test-data.json +40 -0
  14. data/spec/integration/alert-resources/events-test-data.json +78 -0
  15. data/spec/integration/alert-resources/triggers-test-data.json +66 -0
  16. data/spec/integration/alerts_spec.rb +192 -83
  17. data/spec/integration/hello-world-definitions.json +1 -2
  18. data/spec/integration/inventory_spec.rb +18 -5
  19. data/spec/integration/metric_spec.rb +201 -40
  20. data/spec/integration/operations_spec.rb +45 -1
  21. data/spec/spec_helper.rb +25 -6
  22. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_acknowledge_an_alert.yml +205 -0
  23. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_fetch_single_alert.yml +108 -0
  24. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_alerts.yml +59 -0
  25. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_alerts_for_trigger.yml +58 -0
  26. data/spec/vcr_cassettes/Alert/Alerts/{Should_list_alerts_for_unknown_trigger.yml → Templates/Should_list_alerts_for_unknown_trigger.yml} +13 -9
  27. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_open_alerts.yml +59 -0
  28. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_resolve_an_alert.yml +207 -0
  29. data/spec/vcr_cassettes/Alert/Alerts/Templates/setup.yml +255 -0
  30. data/spec/vcr_cassettes/Alert/Alerts/Templates/setup_cleanup.yml +302 -0
  31. data/spec/vcr_cassettes/Alert/EndToEnd/Templates/Should_create_and_fire_a_trigger.yml +527 -0
  32. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Gauge_metrics/Should_return_periods.yml → Alert/Events/Templates/Should_create_an_event.yml} +22 -18
  33. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml → Alert/Events/Templates/Should_delete_an_event.yml} +28 -24
  34. data/spec/vcr_cassettes/Alert/Events/Templates/Should_list_events.yml +91 -0
  35. data/spec/vcr_cassettes/Alert/Events/Templates/Should_list_events_using_criteria.yml +60 -0
  36. data/spec/vcr_cassettes/Alert/Events/{Should_not_list_events_using_criteria.yml → Templates/Should_not_list_events_using_criteria.yml} +14 -13
  37. data/spec/vcr_cassettes/Alert/Events/Templates/setup.yml +615 -0
  38. data/spec/vcr_cassettes/Alert/Events/Templates/setup_cleanup.yml +567 -0
  39. data/spec/vcr_cassettes/Alert/Groups/{Should_operate_a_complex_group_trigger.yml → Templates/Should_operate_a_complex_group_trigger.yml} +508 -352
  40. data/spec/vcr_cassettes/{Alerts → Alert/Templates}/Should_return_the_version.yml +10 -8
  41. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers.yml +55 -0
  42. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_ID.yml +56 -0
  43. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_Tag.yml +56 -0
  44. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_Tags.yml +56 -0
  45. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_bulk_load_triggers.yml +243 -0
  46. data/spec/vcr_cassettes/Alert/Triggers/{Should_create_a_basic_trigger_with_action.yml → Templates/Should_create_a_basic_trigger_with_action.yml} +107 -76
  47. data/spec/vcr_cassettes/Alert/Triggers/{Should_create_a_firing_ALL_ANY_trigger.yml → Templates/Should_create_a_firing_ALL_ANY_trigger.yml} +81 -61
  48. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml → Alert/Triggers/Templates/Should_create_an_action.yml} +32 -30
  49. data/spec/vcr_cassettes/{Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml → Alert/Triggers/Templates/Should_get_a_single_Trigger_with_conditions.yml} +29 -29
  50. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_get_a_single_metric_Trigger.yml +50 -0
  51. data/spec/vcr_cassettes/Alert/Triggers/{Should_get_the_action_definitions.yml → Templates/Should_get_the_action_definitions.yml} +46 -73
  52. data/spec/vcr_cassettes/Alert/Triggers/{Should_not_create_an_action_for_unknown_plugin.yml → Templates/Should_not_create_an_action_for_unknown_plugin.yml} +12 -8
  53. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_create_Availability_definition_using_MetricDefinition_parameter.yml → Alert/Triggers/Templates/Should_not_create_an_action_for_unknown_properties.yml} +27 -26
  54. data/spec/vcr_cassettes/Alert/Triggers/Templates/setup.yml +52 -0
  55. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml → Alert/Triggers/Templates/setup_cleanup.yml} +51 -51
  56. data/spec/vcr_cassettes/Inventory/NonSecure/inventory_0_17/Templates/Should_list_metrics_of_given_metric_type.yml +29 -25
  57. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Get_metric_definition_by_id.yml +3 -3
  58. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Retrieve_metric_rate_points.yml +5 -5
  59. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_Availability_definition.yml +4 -4
  60. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_Counter_definition.yml +4 -4
  61. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_gauge_definition.yml +4 -4
  62. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_push_metric_data_to_existing_gauge.yml +4 -4
  63. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_update_tags_for_Availability_definition.yml +6 -6
  64. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_update_tags_for_gauge_definition.yml +8 -8
  65. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/setup_client.yml +44 -0
  66. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml → metrics_services/Templates/All_Tags_for_metrics/Should_fetch_all_metric_tags_for_metrics_definitions.yml} +159 -53
  67. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/Should_group_contiguous_values.yml +47 -6
  68. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml +12 -12
  69. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/setup_client.yml +44 -0
  70. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +17 -17
  71. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml +23 -23
  72. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +19 -19
  73. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml +12 -12
  74. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/setup_client.yml +44 -0
  75. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml +19 -19
  76. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml +12 -12
  77. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_periods.yml +5 -5
  78. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_platform_memory.yml +151 -5
  79. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_platform_memory_def.yml +152 -6
  80. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/setup_client.yml +44 -0
  81. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_fetch_rate_stats_for_mixed_metric.yml +33 -33
  82. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_fetch_stats_for_mixed_metric.yml +31 -32
  83. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +108 -20
  84. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +26 -26
  85. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml +27 -27
  86. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Status/Should_return_the_version.yml → metrics_services/Templates/Mixed_metrics/setup_client.yml} +3 -3
  87. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/No_Tenant/Should_fail.yml +43 -4
  88. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Status/Should_return_the_version.yml +44 -3
  89. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_Hash.yml → metrics_services/Templates/String_metrics/Should_create_string_definition_using_Hash.yml} +9 -9
  90. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_MetricDefinition.yml → metrics_services/Templates/String_metrics/Should_create_string_definition_using_MetricDefinition.yml} +9 -9
  91. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml → metrics_services/Templates/String_metrics/Should_push_metric_data_to_existing_string.yml} +27 -27
  92. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml → metrics_services/Templates/String_metrics/Should_push_metric_data_to_non-existing_string.yml} +15 -15
  93. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/String_metrics/setup_client.yml +44 -0
  94. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Tags_Metrics/setup_client.yml +44 -0
  95. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Tenants/Should_create_and_return_tenant.yml +10 -6
  96. data/spec/vcr_cassettes/Metrics/{Secure/metrics_0_16_0/Templates/Status/Should_return_the_version.yml → NonSecure/metrics_services/Templates/Tenants/setup_client.yml} +5 -5
  97. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/setup_client.yml +44 -0
  98. data/spec/vcr_cassettes/Metrics/Secure/metrics_services/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +80 -33
  99. data/spec/vcr_cassettes/Operation/NonSecure/Operation/Add_XA_datasource_should_be_doable.json +23 -0
  100. data/spec/vcr_cassettes/Operation/NonSecure/Operation/{Add_datasource_should_be_doable.json → Add_non-XA_datasource_should_be_doable.json} +0 -0
  101. metadata +111 -156
  102. data/spec/vcr_cassettes/Alert/Alerts/Should_acknowledge_an_alert.yml +0 -183
  103. data/spec/vcr_cassettes/Alert/Alerts/Should_fetch_single_alert.yml +0 -69
  104. data/spec/vcr_cassettes/Alert/Alerts/Should_list_alerts.yml +0 -85
  105. data/spec/vcr_cassettes/Alert/Alerts/Should_list_alerts_for_trigger.yml +0 -142
  106. data/spec/vcr_cassettes/Alert/Alerts/Should_resolve_an_alert.yml +0 -181
  107. data/spec/vcr_cassettes/Alert/Alerts/Should_resolve_an_alert2.yml +0 -49
  108. data/spec/vcr_cassettes/Alert/EndToEnd/Should_create_and_fire_a_trigger.yml +0 -1187
  109. data/spec/vcr_cassettes/Alert/Events/Should_create_an_event.yml +0 -50
  110. data/spec/vcr_cassettes/Alert/Events/Should_list_events.yml +0 -101
  111. data/spec/vcr_cassettes/Alert/Events/Should_list_events_using_criteria.yml +0 -79
  112. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers.yml +0 -62
  113. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_ID.yml +0 -55
  114. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_Tag.yml +0 -68
  115. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_Tags.yml +0 -68
  116. data/spec/vcr_cassettes/Alert/Triggers/Should_bulk_load_triggers.yml +0 -225
  117. data/spec/vcr_cassettes/Alert/Triggers/Should_create_an_action.yml +0 -134
  118. data/spec/vcr_cassettes/Alert/Triggers/Should_create_an_action_for_webhooks.yml +0 -220
  119. data/spec/vcr_cassettes/Alert/Triggers/Should_get_a_single_Trigger_with_conditions.yml +0 -138
  120. data/spec/vcr_cassettes/Alert/Triggers/Should_get_a_single_metric_Trigger.yml +0 -50
  121. data/spec/vcr_cassettes/Alert/Triggers/Should_not_create_an_action_for_unknown_properties.yml +0 -134
  122. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_create_and_return_Availability_using_Hash_parameter.yml +0 -99
  123. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_group_contiguous_values.yml +0 -97
  124. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_update_tags_for_Availability_definition.yml +0 -240
  125. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_create_and_return_counter_using_Hash_parameter.yml +0 -99
  126. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_create_counter_definition_using_MetricDefinition_parameter.yml +0 -99
  127. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +0 -240
  128. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +0 -281
  129. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Gauge_metrics/Should_update_tags_for_gauge_definition.yml +0 -240
  130. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +0 -326
  131. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +0 -314
  132. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/No_Tenant/Should_fail.yml +0 -50
  133. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Simple/Should_be_Cool.yml +0 -48
  134. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Tenants/Should_create_and_return_tenant.yml +0 -99
  135. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_create_Availability_definition_using_MetricDefinition_parameter.yml +0 -99
  136. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_create_and_return_Availability_using_Hash_parameter.yml +0 -99
  137. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_group_contiguous_values.yml +0 -97
  138. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_update_tags_for_Availability_definition.yml +0 -240
  139. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_create_and_return_counter_using_Hash_parameter.yml +0 -99
  140. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_create_counter_definition_using_MetricDefinition_parameter.yml +0 -99
  141. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +0 -240
  142. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml +0 -328
  143. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +0 -281
  144. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml +0 -144
  145. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_Hash.yml +0 -99
  146. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_MetricDefinition.yml +0 -99
  147. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml +0 -281
  148. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml +0 -144
  149. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_return_periods.yml +0 -97
  150. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_update_tags_for_gauge_definition.yml +0 -240
  151. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +0 -326
  152. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +0 -314
  153. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml +0 -285
  154. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/No_Tenant/Should_fail.yml +0 -50
  155. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Simple/Should_be_Cool.yml +0 -48
  156. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Tenants/Should_create_and_return_tenant.yml +0 -99
@@ -6,7 +6,38 @@ module Hawkular::Alerts::RSpec
6
6
  creds = { username: 'jdoe', password: 'password' }
7
7
  options = { tenant: 'hawkular' }
8
8
 
9
- describe 'Alert/Triggers', vcr: { decode_compressed_response: true } do
9
+ describe 'Alert/Triggers' do
10
+ before(:all) do
11
+ # Setup for testing
12
+ record('Alert/Triggers', credentials, 'setup') do
13
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
14
+ json = IO.read('spec/integration/alert-resources/triggers-test-data.json')
15
+ trigger_hash = JSON.parse(json)
16
+ @client.bulk_import_triggers trigger_hash
17
+ end
18
+ end
19
+
20
+ after(:all) do
21
+ # cleanup test values
22
+ record('Alert/Triggers', credentials, 'setup_cleanup') do
23
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
24
+ json = IO.read('spec/integration/alert-resources/triggers-test-data.json')
25
+ trigger_hash = JSON.parse(json)
26
+ trigger_hash['triggers'].each do |trigger|
27
+ @client.delete_trigger trigger['trigger']['id']
28
+ end
29
+ end
30
+ end
31
+
32
+ let(:cassette_name) do |example|
33
+ description = example.description
34
+ description
35
+ end
36
+
37
+ around(:each) do |example|
38
+ record('Alert/Triggers', credentials, cassette_name, example: example)
39
+ end
40
+
10
41
  before(:each) do
11
42
  @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
12
43
  end
@@ -14,38 +45,37 @@ module Hawkular::Alerts::RSpec
14
45
  it 'Should List Triggers' do
15
46
  triggers = @client.list_triggers
16
47
 
17
- expect(triggers.size).to be(3)
48
+ expect(triggers.size).to be(6)
18
49
  end
19
50
 
20
51
  it 'Should List Triggers for Tag' do
21
52
  triggers = @client.list_triggers [],
22
- ['resourceId|75bfdd05-d03d-481e-bf32-c724c7719d8b~Local']
53
+ ['resourceId|my-resource01']
23
54
 
24
- expect(triggers.size).to be(7)
55
+ expect(triggers.size).to be(4)
25
56
  end
26
57
 
27
58
  it 'Should List Triggers for Tags' do
28
59
  triggers = @client.list_triggers [],
29
- ['resourceId|75bfdd05-d03d-481e-bf32-c724c7719d8b~Local',
30
- 'app|MyShop']
60
+ %w(resourceId|my-resource01 app|MyShop)
31
61
 
32
- expect(triggers.size).to be(7)
62
+ expect(triggers.size).to be(5)
33
63
  end
34
64
 
35
65
  it 'Should List Triggers for ID' do
36
- triggers = @client.list_triggers ['75bfdd05-d03d-481e-bf32-c724c7719d8b~Local_jvm_pheap']
66
+ triggers = @client.list_triggers ['my-trigger-05']
37
67
 
38
68
  expect(triggers.size).to be(1)
39
69
  end
40
70
 
41
71
  it 'Should get a single metric Trigger' do
42
- trigger = @client.get_single_trigger('snert~Local_jvm_nheap')
72
+ trigger = @client.get_single_trigger('my-trigger-01')
43
73
 
44
74
  expect(trigger).not_to be_nil
45
75
  end
46
76
 
47
77
  it 'Should get a single Trigger with conditions' do
48
- trigger = @client.get_single_trigger 'snert~Local_jvm_nheap', true
78
+ trigger = @client.get_single_trigger 'my-trigger-01', true
49
79
 
50
80
  expect(trigger).not_to be_nil
51
81
  expect(trigger.conditions.size).to be(1)
@@ -67,7 +97,7 @@ module Hawkular::Alerts::RSpec
67
97
  end
68
98
 
69
99
  it 'Should create a basic trigger with action' do
70
- @client.create_action :email, 'send-via-email', 'notify-to-admins' => 'joe@acme.org'
100
+ @client.create_action :email, 'send-via-email', 'to' => 'joe@acme.org'
71
101
 
72
102
  # Create the trigger
73
103
  t = Hawkular::Alerts::Trigger.new({})
@@ -108,7 +138,7 @@ module Hawkular::Alerts::RSpec
108
138
  # I am not interested
109
139
  end
110
140
  begin
111
- @client.delete_action(a.action_id, a.action_plugin)
141
+ @client.delete_action(a.action_plugin, a.action_id)
112
142
  rescue
113
143
  # I am not interested
114
144
  end
@@ -157,7 +187,7 @@ module Hawkular::Alerts::RSpec
157
187
 
158
188
  it 'Should get the action definitions' do
159
189
  ret = @client.get_action_definition
160
- expect(ret.size).to be(2)
190
+ expect(ret.size).to be > 0
161
191
  expect(ret.key? 'email').to be_truthy
162
192
 
163
193
  ret = @client.get_action_definition 'email'
@@ -169,7 +199,7 @@ module Hawkular::Alerts::RSpec
169
199
  end
170
200
 
171
201
  it 'Should create an action' do
172
- @client.create_action 'email', 'my-id1', 'notify-to-admins' => 'joe@acme.org'
202
+ @client.create_action 'email', 'my-id1', 'to' => 'joe@acme.org'
173
203
  @client.delete_action 'email', 'my-id1'
174
204
  end
175
205
 
@@ -182,31 +212,22 @@ module Hawkular::Alerts::RSpec
182
212
  end
183
213
 
184
214
  it 'Should not create an action for unknown properties' do
185
- begin
215
+ expect do
186
216
  @client.create_action :email, 'my-id3', foo: 'bar'
187
- ensure
188
- @client.delete_action :email, 'my-id3'
189
- end
217
+ end.to raise_error(Hawkular::BaseClient::HawkularException)
190
218
  end
219
+ end
191
220
 
192
- it 'Should create an action for webhooks' do
193
- begin
194
- @client.get_action_definition 'webhook'
195
-
196
- webhook_props = { 'url' => 'http://localhost:8080/bla', 'method' => 'POST' }
197
- @client.create_action 'webhook', 'my-id1',
198
- webhook_props
199
- ret = @client.get_action 'webhook', 'my-id1'
200
- expect(ret.action_plugin).to eq('webhook')
201
- expect(ret.action_id).to eq('my-id1')
221
+ describe 'Alert/Groups' do
222
+ let(:cassette_name) do |example|
223
+ description = example.description
224
+ description
225
+ end
202
226
 
203
- ensure
204
- @client.delete_action 'webhook', 'my-id1'
205
- end
227
+ around(:each) do |example|
228
+ record('Alert/Groups', credentials, cassette_name, example: example)
206
229
  end
207
- end
208
230
 
209
- describe 'Alert/Groups', vcr: { decode_compressed_response: true } do
210
231
  before(:each) do
211
232
  @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
212
233
  end
@@ -389,12 +410,64 @@ module Hawkular::Alerts::RSpec
389
410
  end
390
411
  end
391
412
 
392
- describe 'Alert/Alerts', :vcr do
413
+ describe 'Alert/Alerts' do
414
+ before(:all) do
415
+ # Setup for testing
416
+ record('Alert/Alerts', credentials, 'setup') do
417
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
418
+ json = IO.read('spec/integration/alert-resources/alerts-test-data.json')
419
+ trigger_hash = JSON.parse(json)
420
+ @client.bulk_import_triggers trigger_hash
421
+ current_open_alert_count = @client.list_alerts('statuses' => 'OPEN')
422
+ @client.http_post('data', [{ id: 'data-x', timestamp: Time.new.to_i, value: 4 }])
423
+ wait_while do
424
+ current_open_alert_count == @client.list_alerts('statuses' => 'OPEN')
425
+ end
426
+ end
427
+ end
428
+
429
+ after(:all) do
430
+ # cleanup test values
431
+ record('Alert/Alerts', credentials, 'setup_cleanup') do
432
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
433
+ json = IO.read('spec/integration/alert-resources/alerts-test-data.json')
434
+ trigger_hash = JSON.parse(json)
435
+ trigger_hash['triggers'].each do |trigger|
436
+ @client.list_alerts('triggerIds' => [trigger['trigger']['id']]).each do |alert|
437
+ @client.http_delete(alert.id)
438
+ end
439
+ @client.delete_trigger trigger['trigger']['id']
440
+ end
441
+ end
442
+ end
443
+
444
+ let(:cassette_name) do |example|
445
+ description = example.description
446
+ description
447
+ end
448
+
449
+ around(:each) do |example|
450
+ record('Alert/Alerts', credentials, cassette_name, example: example)
451
+ end
452
+
453
+ before(:each) do
454
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
455
+ end
456
+
393
457
  it 'Should list alerts' do
394
458
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
395
459
 
396
460
  alerts = client.list_alerts
397
461
 
462
+ expect(alerts).to_not be_nil
463
+ expect(alerts.size).to be >= 2
464
+ end
465
+
466
+ it 'Should list open alerts' do
467
+ client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
468
+
469
+ alerts = client.list_alerts('statuses' => 'OPEN')
470
+
398
471
  expect(alerts).to_not be_nil
399
472
  expect(alerts.size).to be(2)
400
473
  end
@@ -402,7 +475,7 @@ module Hawkular::Alerts::RSpec
402
475
  it 'Should list alerts for trigger' do
403
476
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
404
477
 
405
- alerts = client.get_alerts_for_trigger '75bfdd05-d03d-481e-bf32-c724c7719d8b~Local_jvm_pheap'
478
+ alerts = client.get_alerts_for_trigger 'hello-world-trigger'
406
479
 
407
480
  expect(alerts).to_not be_nil
408
481
  expect(alerts.size).to be(1)
@@ -420,18 +493,18 @@ module Hawkular::Alerts::RSpec
420
493
  it 'Should fetch single alert' do
421
494
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
422
495
 
423
- alert = client.get_single_alert(
424
- '28026b36-8fe4-4332-84c8-524e173a68bf-snert~Local_jvm_garba-1446977734134')
496
+ alert_id = client.list_alerts('statuses' => 'OPEN').first.id
497
+
498
+ alert = client.get_single_alert(alert_id)
425
499
 
426
500
  expect(alert).to_not be_nil
427
- expect(alert.alertId)
428
- .to eql('28026b36-8fe4-4332-84c8-524e173a68bf-snert~Local_jvm_garba-1446977734134')
501
+ expect(alert.id).to eql(alert_id)
429
502
  end
430
503
 
431
504
  it 'Should resolve an alert' do
432
505
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
433
506
 
434
- alert_id = '28026b36-8fe4-4332-84c8-524e173a68bf-snert~Local_jvm_garba-1446977734134'
507
+ alert_id = client.list_alerts('statuses' => 'OPEN').first.id
435
508
  alert = client.get_single_alert alert_id
436
509
 
437
510
  expect(alert.status).to eql('OPEN')
@@ -454,7 +527,7 @@ module Hawkular::Alerts::RSpec
454
527
  it 'Should acknowledge an alert' do
455
528
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
456
529
 
457
- alert_id = '28026b36-8fe4-4332-84c8-524e173a68bf-snert~Local_jvm_garba-1446977734134'
530
+ alert_id = client.list_alerts('statuses' => 'OPEN').first.id
458
531
  client.get_single_alert alert_id
459
532
 
460
533
  client.acknowledge_alert(alert_id, 'Heiko', 'Hello Ruby World :-)')
@@ -464,7 +537,16 @@ module Hawkular::Alerts::RSpec
464
537
  end
465
538
  end
466
539
 
467
- describe 'Alerts', vcr: { decode_compressed_response: true } do
540
+ describe 'Alert' do
541
+ let(:cassette_name) do |example|
542
+ description = example.description
543
+ description
544
+ end
545
+
546
+ around(:each) do |example|
547
+ record('Alert', credentials, cassette_name, example: example)
548
+ end
549
+
468
550
  before(:each) do
469
551
  @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds)
470
552
  end
@@ -475,11 +557,38 @@ module Hawkular::Alerts::RSpec
475
557
  end
476
558
  end
477
559
 
478
- describe 'Alert/Events', :vcr do
479
- VCR.configure do |c|
480
- c.default_cassette_options = {
481
- match_requests_on: [:method, VCR.request_matchers.uri_without_params(:startTime, :endTime)]
482
- }
560
+ describe 'Alert/Events' do
561
+ before(:all) do
562
+ # Setup for testing
563
+ record('Alert/Events', credentials, 'setup') do
564
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
565
+ json = IO.read('spec/integration/alert-resources/events-test-data.json')
566
+ hash = JSON.parse(json)
567
+ hash['events'].each do |event|
568
+ @client.create_event event['id'], event['category'], event['text'], event['extras']
569
+ end
570
+ end
571
+ end
572
+
573
+ after(:all) do
574
+ # cleanup test values
575
+ record('Alert/Events', credentials, 'setup_cleanup') do
576
+ @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, credentials, options)
577
+ json = IO.read('spec/integration/alert-resources/events-test-data.json')
578
+ hash = JSON.parse(json)
579
+ hash['events'].each do |event|
580
+ @client.delete_event event['id']
581
+ end
582
+ end
583
+ end
584
+
585
+ let(:cassette_name) do |example|
586
+ description = example.description
587
+ description
588
+ end
589
+
590
+ around(:each) do |example|
591
+ record('Alert/Events', credentials, cassette_name, example: example)
483
592
  end
484
593
 
485
594
  it 'Should list events' do
@@ -488,20 +597,16 @@ module Hawkular::Alerts::RSpec
488
597
  events = client.list_events('thin' => true)
489
598
 
490
599
  expect(events).to_not be_nil
491
- expect(events.size).to be(12)
600
+ expect(events.size).to be >= 12
492
601
  end
493
602
 
494
603
  it 'Should list events using criteria' do
495
- now = Time.new.to_i
496
- start_time = (now - 7_200) * 1000
497
- end_time = now * 1000
498
-
499
604
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
500
605
 
501
- events = client.list_events('startTime' => start_time, 'endTime' => end_time)
606
+ events = client.list_events('categories' => %w(my-category-01 my-category-02))
502
607
 
503
608
  expect(events).to_not be_nil
504
- expect(events.size).to be(1)
609
+ expect(events.size).to be(4)
505
610
  end
506
611
 
507
612
  it 'Should not list events using criteria' do
@@ -515,10 +620,8 @@ module Hawkular::Alerts::RSpec
515
620
 
516
621
  it 'Should create an event' do
517
622
  the_id = "test-event@#{Time.new.to_i}"
518
- VCR.use_cassette('Alert/Events/Should_create_an_event',
519
- erb: { id: the_id }, record: :none,
520
- decode_compressed_response: true
521
- ) do
623
+ VCR.eject_cassette
624
+ record('Alert/Events', credentials.merge(id: the_id), cassette_name) do
522
625
  client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
523
626
 
524
627
  the_event = client.create_event(the_id, 'MyCategory', 'Li la lu',
@@ -527,11 +630,37 @@ module Hawkular::Alerts::RSpec
527
630
 
528
631
  expect(the_event['id']).to eql(the_id)
529
632
  expect(the_event['category']).to eql('MyCategory')
633
+
634
+ client.delete_event the_id
635
+ end
636
+ end
637
+
638
+ it 'Should delete an event' do
639
+ the_id = "test-event@#{Time.new.to_i}"
640
+ VCR.eject_cassette
641
+ record('Alert/Events', credentials.merge(id: the_id), cassette_name) do
642
+ client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
643
+ client.create_event(the_id, 'MyCategory', 'Li la lu',
644
+ context: { message: 'This is a test' },
645
+ tags: { tag_name: 'tag-value' })
646
+
647
+ client.delete_event the_id
648
+ the_event = client.list_events('thin' => true, 'eventIds' => [the_id]).first
649
+ expect(the_event).to be_nil
530
650
  end
531
651
  end
532
652
  end
533
653
 
534
- describe 'Alert/EndToEnd', vcr: { decode_compressed_response: true } do
654
+ describe 'Alert/EndToEnd' do
655
+ let(:cassette_name) do |example|
656
+ description = example.description
657
+ description
658
+ end
659
+
660
+ around(:each) do |example|
661
+ record('Alert/EndToEnd', credentials, cassette_name, example: example)
662
+ end
663
+
535
664
  before(:each) do
536
665
  @client = Hawkular::Alerts::AlertsClient.new(ALERTS_BASE, creds, options)
537
666
  end
@@ -548,17 +677,6 @@ module Hawkular::Alerts::RSpec
548
677
  email_props
549
678
  end
550
679
 
551
- webhook_props = { url: 'http://172.31.7.177/',
552
- method: 'POST' }
553
- begin
554
- @client.create_action 'webhook', 'send-via-webhook',
555
- webhook_props
556
- rescue
557
- @client.delete_action 'webhook', 'send-via-webhook'
558
- @client.create_action 'webhook', 'send-via-webhook',
559
- webhook_props
560
- end
561
-
562
680
  # Create the trigger
563
681
  t = Hawkular::Alerts::Trigger.new({})
564
682
  t.enabled = true
@@ -581,12 +699,6 @@ module Hawkular::Alerts::RSpec
581
699
  a.action_id = 'send-via-email'
582
700
  t.actions.push a
583
701
 
584
- # Reference an action definition for webhook
585
- a = Hawkular::Alerts::Trigger::Action.new({})
586
- a.action_plugin = 'webhook'
587
- a.action_id = 'send-via-webhook'
588
- t.actions.push a
589
-
590
702
  begin
591
703
  ft = @client.create_trigger t, [c], nil
592
704
 
@@ -610,8 +722,10 @@ module Hawkular::Alerts::RSpec
610
722
 
611
723
  metric_client.push_data(gauges: data)
612
724
 
613
- # wait 2s for the alert engine to work if we are live
614
- sleep 2 if VCR.current_cassette.recording?
725
+ # wait for the alert engine to work if we are live
726
+ wait_while do
727
+ @client.get_alerts_for_trigger('my-cool-email-trigger').nil?
728
+ end
615
729
 
616
730
  # see if alert has fired
617
731
  alerts = @client.get_alerts_for_trigger 'my-cool-email-trigger'
@@ -625,11 +739,6 @@ module Hawkular::Alerts::RSpec
625
739
  rescue
626
740
  # I am not interested
627
741
  end
628
- begin
629
- @client.delete_action('webhook', 'send-via-webhook')
630
- rescue
631
- # I am not interested
632
- end
633
742
  begin
634
743
  @client.delete_action('email', 'send-via-email')
635
744
  rescue