flapjack 0.5.5 → 0.6.23

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 (167) hide show
  1. data/.gitignore +10 -0
  2. data/.rbenv-version +1 -0
  3. data/.rspec +10 -0
  4. data/Gemfile +18 -0
  5. data/Guardfile +14 -0
  6. data/README.md +152 -173
  7. data/Rakefile +53 -150
  8. data/bin/flapjack +72 -0
  9. data/bin/flapjack-nagios-receiver +111 -0
  10. data/bin/flapjack-nagios-receiver-control +15 -0
  11. data/bin/flapjack-netsaint-parser +0 -2
  12. data/bin/flapjack-populator +133 -16
  13. data/bin/install-flapjack-systemwide +2 -2
  14. data/config.ru +11 -0
  15. data/dist/etc/init.d/flapjack +46 -0
  16. data/dist/etc/init.d/flapjack-nagios-receiver +36 -0
  17. data/doc/GLOSSARY.md +19 -0
  18. data/etc/flapjack_config.yaml.example +90 -0
  19. data/features/events.feature +132 -0
  20. data/features/notifications.feature +57 -0
  21. data/features/packaging-lintian.feature +5 -3
  22. data/features/steps/events_steps.rb +164 -0
  23. data/features/steps/flapjack-importer_steps.rb +2 -5
  24. data/features/steps/flapjack-worker_steps.rb +13 -6
  25. data/features/steps/notifications_steps.rb +178 -0
  26. data/features/steps/packaging-lintian_steps.rb +14 -0
  27. data/features/steps/time_travel_steps.rb +34 -0
  28. data/features/support/env.rb +63 -36
  29. data/flapjack.gemspec +35 -186
  30. data/lib/flapjack.rb +2 -0
  31. data/lib/flapjack/api.rb +274 -0
  32. data/lib/flapjack/api/entity_check_presenter.rb +184 -0
  33. data/lib/flapjack/api/entity_presenter.rb +66 -0
  34. data/lib/flapjack/cli/worker_manager.rb +1 -2
  35. data/lib/flapjack/configuration.rb +11 -0
  36. data/lib/flapjack/coordinator.rb +288 -0
  37. data/lib/flapjack/daemonizing.rb +186 -0
  38. data/lib/flapjack/data/contact.rb +45 -0
  39. data/lib/flapjack/data/entity.rb +89 -0
  40. data/lib/flapjack/data/entity_check.rb +396 -0
  41. data/lib/flapjack/data/event.rb +144 -0
  42. data/lib/flapjack/data/notification.rb +13 -0
  43. data/lib/flapjack/executive.rb +289 -0
  44. data/lib/flapjack/filters/acknowledgement.rb +39 -0
  45. data/lib/flapjack/filters/{any_parents_failed.rb → base.rb} +6 -4
  46. data/lib/flapjack/filters/delays.rb +53 -0
  47. data/lib/flapjack/filters/detect_mass_client_failures.rb +44 -0
  48. data/lib/flapjack/filters/ok.rb +25 -5
  49. data/lib/flapjack/filters/scheduled_maintenance.rb +17 -0
  50. data/lib/flapjack/filters/unscheduled_maintenance.rb +17 -0
  51. data/lib/flapjack/jabber.rb +294 -0
  52. data/lib/flapjack/notification/common.rb +23 -0
  53. data/lib/flapjack/notification/email.rb +107 -0
  54. data/lib/flapjack/notification/email/alert.html.haml +48 -0
  55. data/lib/flapjack/notification/email/alert.text.erb +14 -0
  56. data/lib/flapjack/notification/sms.rb +42 -0
  57. data/lib/flapjack/notification/sms/messagenet.rb +49 -0
  58. data/lib/flapjack/notifier_engine.rb +4 -4
  59. data/lib/flapjack/notifiers/mailer/mailer.rb +6 -7
  60. data/lib/flapjack/notifiers/xmpp/xmpp.rb +12 -12
  61. data/lib/flapjack/pagerduty.rb +230 -0
  62. data/lib/flapjack/patches.rb +108 -19
  63. data/lib/flapjack/persistence/data_mapper/models/check.rb +5 -3
  64. data/lib/flapjack/persistence/data_mapper/models/check_template.rb +2 -0
  65. data/lib/flapjack/persistence/data_mapper/models/event.rb +2 -0
  66. data/lib/flapjack/persistence/data_mapper/models/node.rb +3 -1
  67. data/lib/flapjack/persistence/data_mapper/models/related_check.rb +3 -1
  68. data/lib/flapjack/pikelet.rb +56 -0
  69. data/lib/flapjack/transports/beanstalkd.rb +1 -1
  70. data/lib/flapjack/transports/result.rb +6 -6
  71. data/lib/flapjack/utility.rb +46 -0
  72. data/lib/flapjack/version.rb +5 -0
  73. data/lib/flapjack/web.rb +198 -0
  74. data/lib/flapjack/web/views/acknowledge.haml +55 -0
  75. data/lib/flapjack/web/views/check.haml +162 -0
  76. data/lib/flapjack/web/views/index.haml +92 -0
  77. data/lib/flapjack/web/views/self_stats.haml +56 -0
  78. data/lib/flapjack/{applications/worker.rb → worker/application.rb} +0 -0
  79. data/lib/flapjack/worker/cli.rb +49 -0
  80. data/{spec → spec.old}/check_sandbox/echo +0 -0
  81. data/{spec → spec.old}/check_sandbox/sandboxed_check +0 -0
  82. data/{spec → spec.old}/configs/flapjack-notifier-couchdb.ini +0 -0
  83. data/{spec → spec.old}/configs/flapjack-notifier.ini +0 -0
  84. data/{spec → spec.old}/configs/recipients.ini +0 -0
  85. data/{spec → spec.old}/helpers.rb +0 -0
  86. data/{spec → spec.old}/inifile_spec.rb +0 -0
  87. data/{spec → spec.old}/mock-notifiers/mock/init.rb +0 -0
  88. data/{spec → spec.old}/mock-notifiers/mock/mock.rb +0 -0
  89. data/{spec → spec.old}/notifier-directories/spoons/testmailer/init.rb +0 -0
  90. data/{spec → spec.old}/notifier_application_spec.rb +0 -0
  91. data/{spec → spec.old}/notifier_filters_spec.rb +0 -0
  92. data/{spec → spec.old}/notifier_options_multiplexer_spec.rb +0 -0
  93. data/{spec → spec.old}/notifier_options_spec.rb +0 -0
  94. data/{spec → spec.old}/notifier_spec.rb +0 -0
  95. data/{spec → spec.old}/notifiers/mailer_spec.rb +0 -0
  96. data/{spec → spec.old}/notifiers/xmpp_spec.rb +0 -0
  97. data/{spec → spec.old}/persistence/datamapper_spec.rb +0 -0
  98. data/{spec → spec.old}/persistence/mock_persistence_backend.rb +0 -0
  99. data/{spec → spec.old}/simple.ini +0 -0
  100. data/{spec → spec.old}/spec.opts +0 -0
  101. data/{spec → spec.old}/test-filters/blocker.rb +0 -0
  102. data/{spec → spec.old}/test-filters/mock.rb +0 -0
  103. data/{spec → spec.old}/transports/beanstalkd_spec.rb +0 -0
  104. data/{spec → spec.old}/transports/mock_transport.rb +0 -0
  105. data/{spec → spec.old}/worker_application_spec.rb +0 -0
  106. data/{spec → spec.old}/worker_options_spec.rb +0 -0
  107. data/spec/lib/flapjack/api/entity_check_presenter_spec.rb +117 -0
  108. data/spec/lib/flapjack/api/entity_presenter_spec.rb +92 -0
  109. data/spec/lib/flapjack/api_spec.rb +170 -0
  110. data/spec/lib/flapjack/coordinator_spec.rb +16 -0
  111. data/spec/lib/flapjack/data/entity_check_spec.rb +398 -0
  112. data/spec/lib/flapjack/data/entity_spec.rb +71 -0
  113. data/spec/lib/flapjack/data/event_spec.rb +6 -0
  114. data/spec/lib/flapjack/executive_spec.rb +59 -0
  115. data/spec/lib/flapjack/filters/acknowledgement_spec.rb +6 -0
  116. data/spec/lib/flapjack/filters/delays_spec.rb +6 -0
  117. data/spec/lib/flapjack/filters/detect_mass_client_failures_spec.rb +6 -0
  118. data/spec/lib/flapjack/filters/ok_spec.rb +6 -0
  119. data/spec/lib/flapjack/filters/scheduled_maintenance_spec.rb +6 -0
  120. data/spec/lib/flapjack/filters/unscheduled_maintenance_spec.rb +6 -0
  121. data/spec/lib/flapjack/jabber_spec.rb +150 -0
  122. data/spec/lib/flapjack/notification/email_spec.rb +6 -0
  123. data/spec/lib/flapjack/notification/sms_spec.rb +6 -0
  124. data/spec/lib/flapjack/pikelet_spec.rb +28 -0
  125. data/spec/lib/flapjack/web_spec.rb +188 -0
  126. data/spec/spec_helper.rb +44 -0
  127. data/spec/support/profile_all_formatter.rb +44 -0
  128. data/spec/support/uncolored_doc_formatter.rb +9 -0
  129. data/tasks/events.rake +85 -0
  130. data/tmp/acknowledge.rb +14 -0
  131. data/tmp/create_config_yaml.rb +16 -0
  132. data/tmp/create_events_failure.rb +33 -0
  133. data/tmp/create_events_ok.rb +33 -0
  134. data/tmp/create_events_ok_fail_ack_ok.rb +54 -0
  135. data/tmp/create_events_ok_failure.rb +40 -0
  136. data/tmp/create_events_ok_failure_ack.rb +54 -0
  137. data/tmp/dummy_entities.json +1 -0
  138. data/tmp/generate_nagios_test_hosts.rb +16 -0
  139. data/tmp/parse_config_yaml.rb +7 -0
  140. data/tmp/redis_delete_all_keys.rb +11 -0
  141. data/tmp/test_entities.json +1 -0
  142. metadata +482 -221
  143. data/TODO.md +0 -36
  144. data/VERSION +0 -1
  145. data/bin/flapjack-benchmark +0 -50
  146. data/bin/flapjack-notifier +0 -21
  147. data/bin/flapjack-notifier-manager +0 -43
  148. data/bin/flapjack-stats +0 -27
  149. data/bin/flapjack-worker +0 -13
  150. data/bin/flapjack-worker-manager +0 -35
  151. data/dist/etc/init.d/flapjack-notifier +0 -47
  152. data/dist/etc/init.d/flapjack-workers +0 -44
  153. data/features/flapjack-notifier-manager.feature +0 -19
  154. data/features/flapjack-worker-manager.feature +0 -27
  155. data/features/flapjack-worker.feature +0 -27
  156. data/features/netsaint-config-converter.feature +0 -126
  157. data/features/persistence/couch.feature +0 -105
  158. data/features/persistence/sqlite3.feature +0 -105
  159. data/features/persistence/steps/couch_steps.rb +0 -25
  160. data/features/persistence/steps/generic_steps.rb +0 -102
  161. data/features/persistence/steps/sqlite3_steps.rb +0 -13
  162. data/features/steps/flapjack-notifier-manager_steps.rb +0 -24
  163. data/features/steps/flapjack-worker-manager_steps.rb +0 -48
  164. data/lib/flapjack/applications/notifier.rb +0 -222
  165. data/lib/flapjack/cli/notifier.rb +0 -108
  166. data/lib/flapjack/cli/notifier_manager.rb +0 -86
  167. data/lib/flapjack/cli/worker.rb +0 -51
@@ -0,0 +1,44 @@
1
+ if ENV['COVERAGE']
2
+ require 'simplecov'
3
+
4
+ SimpleCov.start do
5
+ add_filter '/spec/'
6
+ end
7
+ end
8
+
9
+ FLAPJACK_ENV = ENV["FLAPJACK_ENV"] || 'test'
10
+ require 'bundler'
11
+ Bundler.require(:default, :test)
12
+
13
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
14
+
15
+ # Requires supporting files with custom matchers and macros, etc,
16
+ # in ./support/ and its subdirectories.
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
18
+
19
+ # This file was generated by the `rspec --init` command. Conventionally, all
20
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
21
+ # Require this file using `require "spec_helper"` to ensure that it is only
22
+ # loaded once.
23
+ #
24
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
25
+ RSpec.configure do |config|
26
+ config.treat_symbols_as_metadata_keys_with_true_values = true
27
+ config.run_all_when_everything_filtered = true
28
+ config.filter_run :focus
29
+
30
+ # Run specs in random order to surface order dependencies. If you find an
31
+ # order dependency and want to debug it, you can fix the order by providing
32
+ # the seed, which is printed after each run.
33
+ # --seed 1234
34
+ config.order = 'random'
35
+
36
+ config.around(:each, :redis => true) do |example|
37
+ @redis = ::Redis.new(:db => 14, :driver => :ruby)
38
+ @redis.flushdb
39
+ example.run
40
+ @redis.quit
41
+ end
42
+
43
+ config.include Rack::Test::Methods, :sinatra => true
44
+ end
@@ -0,0 +1,44 @@
1
+ require 'rspec/core/formatters/base_formatter'
2
+
3
+ class ProfileAllFormatter < RSpec::Core::Formatters::BaseFormatter
4
+
5
+ def initialize(output)
6
+ super(output)
7
+ @example_times = []
8
+ end
9
+
10
+ def start(count)
11
+ super(count)
12
+ @output.puts "Profiling enabled."
13
+ end
14
+
15
+ def example_started(example)
16
+ super(example)
17
+ @time = ((Time.respond_to?(:zone) && Time.zone) ? Time.zone.now : Time.now)
18
+ end
19
+
20
+ def example_passed(example)
21
+ @example_times << [
22
+ example_group.description,
23
+ example.description,
24
+ ((Time.respond_to?(:zone) && Time.zone) ? Time.zone.now : Time.now) - @time
25
+ ]
26
+ super(example)
27
+ end
28
+
29
+ def start_dump
30
+ super
31
+ @output.puts "\n\nExample times:\n"
32
+
33
+ @example_times = @example_times.sort_by do |description, example, time|
34
+ time
35
+ end.reverse
36
+
37
+ @example_times.each do |description, example, time|
38
+ @output.print sprintf("%.7f", time)
39
+ @output.puts " #{description} #{example}"
40
+ end
41
+ @output.flush
42
+ end
43
+
44
+ end
@@ -0,0 +1,9 @@
1
+ require 'rspec/core/formatters/documentation_formatter'
2
+
3
+ class UncoloredDocFormatter < RSpec::Core::Formatters::DocumentationFormatter
4
+
5
+ def color(text, color_code)
6
+ text
7
+ end
8
+
9
+ end
data/tasks/events.rake ADDED
@@ -0,0 +1,85 @@
1
+
2
+ require 'redis'
3
+ require 'yaml'
4
+ require 'yajl'
5
+
6
+ namespace :events do
7
+
8
+ # FIXME: add arguments, make more flexible
9
+ desc "send events to trigger some notifications"
10
+ task :test_notification do
11
+
12
+ # config file reading stuff ...
13
+ # FIXME: move this into somewhere reusable
14
+ FLAPJACK_ENV = ENV['FLAPJACK_ENV'] || 'development'
15
+ config_file = File.join('etc', 'flapjack_config.yaml')
16
+ if File.file?(config_file)
17
+ config = YAML::load(File.open(config_file))
18
+ else
19
+ puts "Could not find 'etc/flapjack_config.yaml'"
20
+ exit(false)
21
+ end
22
+ config_env = config[FLAPJACK_ENV]
23
+ @redis_host = config_env['redis']['host'] || 'localhost'
24
+ @redis_port = config_env['redis']['port'] || '6379'
25
+ @redis_path = config_env['redis']['path'] || nil
26
+ @redis_db = config_env['redis']['db'] || 0
27
+
28
+ if config_env.nil? || config_env.empty?
29
+ puts "No config data for environment '#{FLAPJACK_ENV}'"
30
+ exit(false)
31
+ end
32
+
33
+ # add lib to the default include path
34
+ unless $:.include?(File.dirname(__FILE__) + '/../lib/')
35
+ $: << File.dirname(__FILE__) + '/../lib'
36
+ end
37
+
38
+ def get_redis_connection
39
+ if @redis_path
40
+ redis = Redis.new(:db => @redis_db, :path => @redis_path)
41
+ else
42
+ redis = Redis.new(:db => @redis_db, :host => @redis_host, :port => @redis_port)
43
+ end
44
+ redis
45
+ end
46
+
47
+ # creates an event object and adds it to the events list in redis
48
+ # 'entity' => entity,
49
+ # 'check' => check,
50
+ # 'type' => 'service',
51
+ # 'state' => state,
52
+ # 'summary' => check_output,
53
+ # 'time' => timestamp,
54
+ def create_event(event)
55
+ redis = get_redis_connection
56
+ evt = Yajl::Encoder.encode(event)
57
+ puts "sending #{evt}"
58
+ redis.rpush('events', evt)
59
+ end
60
+
61
+ create_event( 'entity' => 'clientx-app-01',
62
+ 'check' => 'ping',
63
+ 'type' => 'service',
64
+ 'state' => 'ok',
65
+ 'summary' => 'testing' )
66
+
67
+ sleep(8)
68
+
69
+ create_event( 'entity' => 'clientx-app-01',
70
+ 'check' => 'ping',
71
+ 'type' => 'service',
72
+ 'state' => 'critical',
73
+ 'summary' => 'testing' )
74
+
75
+ sleep(8)
76
+
77
+ create_event( 'entity' => 'clientx-app-01',
78
+ 'check' => 'ping',
79
+ 'type' => 'service',
80
+ 'state' => 'ok',
81
+ 'summary' => 'testing' )
82
+
83
+ end
84
+
85
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ if not id = ARGV.first then
7
+ puts "Usage: acknowledge.rb <id>"
8
+ exit 1
9
+ end
10
+
11
+
12
+ redis = Redis.new
13
+
14
+ redis.hset 'acknowledged', id, 'true'
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ require 'yaml'
5
+
6
+ config = { 'sausage' => true,
7
+ 'sauce' => 'tomato sauce',
8
+ 'count' => 23,
9
+ 'foobar' => 'jkfldjsk',
10
+ 'zero_s' => '0',
11
+ 'true_s' => 'true',
12
+ }
13
+
14
+
15
+ puts config.to_yaml
16
+
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ id = "%.2d" % (1..10).to_a[rand(9)]
7
+
8
+ events = []
9
+
10
+ events << {
11
+ 'entity' => "app-#{id}",
12
+ 'check' => 'http',
13
+ 'type' => 'service',
14
+ 'state' => 'critical',
15
+ }.to_json
16
+
17
+ redis = Redis.new
18
+
19
+ 2000.times do
20
+ events.each {|event|
21
+ redis.rpush 'events', event
22
+ }
23
+ end
24
+
25
+ puts "#{Time.now} - finished loading up events"
26
+ previous_events_size = redis.llen 'events'
27
+ while previous_events_size > 0
28
+ sleep 1
29
+ events_size = redis.llen 'events'
30
+ throughput = previous_events_size - events_size
31
+ previous_events_size = events_size
32
+ puts "#{Time.now} - #{events_size} (#{throughput})"
33
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ id = "%.2d" % (1..10).to_a[rand(9)]
7
+
8
+ events = []
9
+
10
+ events << {
11
+ 'entity' => "client1-test-app-#{id}",
12
+ 'check' => 'http',
13
+ 'type' => 'service',
14
+ 'state' => 'ok',
15
+ }.to_json
16
+
17
+ redis = Redis.new
18
+
19
+ 4000.times do
20
+ events.each {|event|
21
+ redis.rpush 'events', event
22
+ }
23
+ end
24
+
25
+ puts "#{Time.now} - finished loading up events"
26
+ previous_events_size = redis.llen 'events'
27
+ while previous_events_size > 0
28
+ sleep 1
29
+ events_size = redis.llen 'events'
30
+ throughput = previous_events_size - events_size
31
+ previous_events_size = events_size
32
+ puts "#{Time.now} - #{events_size} (#{throughput})"
33
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ id = "%.2d" % (1..10).to_a[rand(9)]
7
+
8
+ events = []
9
+
10
+ events << {
11
+ 'entity' => "app-#{id}",
12
+ 'check' => 'http',
13
+ 'type' => 'service',
14
+ 'state' => 'ok',
15
+ }.to_json
16
+
17
+ events << {
18
+ 'entity' => "app-#{id}",
19
+ 'check' => 'http',
20
+ 'type' => 'service',
21
+ 'state' => 'critical',
22
+ }.to_json
23
+
24
+ events << {
25
+ 'entity' => "app-#{id}",
26
+ 'check' => 'http',
27
+ 'type' => 'action',
28
+ 'state' => 'acknowledgement',
29
+ }.to_json
30
+
31
+ events << {
32
+ 'entity' => "app-#{id}",
33
+ 'check' => 'http',
34
+ 'type' => 'service',
35
+ 'state' => 'ok',
36
+ }.to_json
37
+
38
+ redis = Redis.new
39
+
40
+ 2000.times do
41
+ events.each {|event|
42
+ redis.rpush 'events', event
43
+ }
44
+ end
45
+
46
+ puts "#{Time.now} - finished loading up events"
47
+ previous_events_size = redis.llen 'events'
48
+ while previous_events_size > 0
49
+ sleep 1
50
+ events_size = redis.llen 'events'
51
+ throughput = previous_events_size - events_size
52
+ previous_events_size = events_size
53
+ puts "#{Time.now} - #{events_size} (#{throughput})"
54
+ end
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ id = "%.2d" % (1..10).to_a[rand(9)]
7
+
8
+ events = []
9
+
10
+ events << {
11
+ 'entity' => "app-#{id}",
12
+ 'check' => 'http',
13
+ 'type' => 'service',
14
+ 'state' => 'ok',
15
+ }.to_json
16
+
17
+ events << {
18
+ 'entity' => "app-#{id}",
19
+ 'check' => 'http',
20
+ 'type' => 'service',
21
+ 'state' => 'critical',
22
+ }.to_json
23
+
24
+ redis = Redis.new
25
+
26
+ 2000.times do
27
+ events.each {|event|
28
+ redis.rpush 'events', event
29
+ }
30
+ end
31
+
32
+ puts "#{Time.now} - finished loading up events"
33
+ previous_events_size = redis.llen 'events'
34
+ while previous_events_size > 0
35
+ sleep 1
36
+ events_size = redis.llen 'events'
37
+ throughput = previous_events_size - events_size
38
+ previous_events_size = events_size
39
+ puts "#{Time.now} - #{events_size} (#{throughput})"
40
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redis'
4
+ require 'json'
5
+
6
+ id = "%.2d" % (1..10).to_a[rand(9)]
7
+
8
+ events = []
9
+
10
+ events << {
11
+ 'entity' => "app-#{id}",
12
+ 'check' => 'http',
13
+ 'type' => 'service',
14
+ 'state' => 'ok',
15
+ }.to_json
16
+
17
+ events << {
18
+ 'entity' => "app-#{id}",
19
+ 'check' => 'http',
20
+ 'type' => 'service',
21
+ 'state' => 'critical',
22
+ }.to_json
23
+
24
+ events << {
25
+ 'entity' => "app-#{id}",
26
+ 'check' => 'http',
27
+ 'type' => 'action',
28
+ 'state' => 'acknowledgement',
29
+ }.to_json
30
+
31
+ #events << {
32
+ # 'entity' => "app-#{id}",
33
+ # 'check' => 'http',
34
+ # 'type' => 'service',
35
+ # 'state' => 'ok',
36
+ #}.to_json
37
+
38
+ redis = Redis.new
39
+
40
+ 2000.times do
41
+ events.each {|event|
42
+ redis.rpush 'events', event
43
+ }
44
+ end
45
+
46
+ puts "#{Time.now} - finished loading up events"
47
+ previous_events_size = redis.llen 'events'
48
+ while previous_events_size > 0
49
+ sleep 1
50
+ events_size = redis.llen 'events'
51
+ throughput = previous_events_size - events_size
52
+ previous_events_size = events_size
53
+ puts "#{Time.now} - #{events_size} (#{throughput})"
54
+ end
@@ -0,0 +1 @@
1
+ [{"id":"10001","name":"clientx-app-01","contacts":["0362","0363","0364"]},{"id":"10002","name":"clientx-app-02","contacts":["0362"]},{"id":"10003","name":"clienty-app-01","contacts":["0363","0364"]}]