flapjack 0.9.5 → 0.9.6
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 +7 -0
- data/.rspec +0 -6
- data/.travis.yml +12 -9
- data/CHANGELOG.md +3 -0
- data/Gemfile +5 -2
- data/Gemfile-ruby1.9 +28 -0
- data/Gemfile-ruby1.9.lock +227 -0
- data/lib/flapjack/data/event.rb +12 -7
- data/lib/flapjack/data/migration.rb +36 -0
- data/lib/flapjack/redis_pool.rb +6 -2
- data/lib/flapjack/version.rb +1 -1
- data/spec/lib/flapjack/coordinator_spec.rb +3 -3
- data/spec/lib/flapjack/data/event_spec.rb +31 -0
- data/spec/lib/flapjack/gateways/jabber_spec.rb +1 -1
- data/spec/lib/flapjack/gateways/pagerduty_spec.rb +1 -1
- data/spec/lib/flapjack/redis_pool_spec.rb +1 -0
- data/tasks/benchmarks.rake +4 -0
- metadata +59 -112
- data/spec/support/profile_all_formatter.rb +0 -44
- data/spec/support/uncolored_doc_formatter.rb +0 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9a77bb89c8999f6a11d0931654c29d4a6208a7d1
|
4
|
+
data.tar.gz: c9521efb2b1aa33e615efdecc288c51f90b887b6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb0351065fe36a2e797fac51f027fcc9e2582d773da07c0c961f21e0903a263ce2e903dcb7aee73e6ed7dd9a92328d7ac038f51c5a2ab8b39116a3adb71c3f21
|
7
|
+
data.tar.gz: 350d40dd04d845138c71bc08fec42b2633f871b145db7acd10f9a083f9aaae32ee73e8d5073bb577a8ca690fcbb1a516941e370a903a04af3a5e2f2589fded05
|
data/.rspec
CHANGED
@@ -2,9 +2,3 @@
|
|
2
2
|
--format Fuubar
|
3
3
|
--format html
|
4
4
|
--out tmp/spec.html
|
5
|
-
--require ./spec/support/uncolored_doc_formatter.rb
|
6
|
-
--format UncoloredDocFormatter
|
7
|
-
--out tmp/spec_doc.txt
|
8
|
-
--require ./spec/support/profile_all_formatter.rb
|
9
|
-
--format ProfileAllFormatter
|
10
|
-
--out tmp/spec_profile.txt
|
data/.travis.yml
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
language: ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
matrix:
|
3
|
+
include:
|
4
|
+
- rvm: 1.9.3
|
5
|
+
gemfile: Gemfile-ruby1.9
|
6
|
+
script: "bundle exec rspec spec && bundle exec cucumber features"
|
7
|
+
env: BUNDLE_GEMFILE=Gemfile-ruby1.9
|
8
|
+
- rvm: '2.0'
|
9
|
+
gemfile: Gemfile
|
10
|
+
script: "bundle exec rspec spec && bundle exec cucumber features"
|
11
|
+
- rvm: '2.1'
|
12
|
+
gemfile: Gemfile
|
13
|
+
script: "bundle exec rspec spec && bundle exec cucumber features"
|
10
14
|
services:
|
11
15
|
- redis-server
|
12
16
|
before_script:
|
@@ -14,4 +18,3 @@ before_script:
|
|
14
18
|
before_install:
|
15
19
|
- git submodule update --init --recursive
|
16
20
|
- gem install bundler
|
17
|
-
script: bundle exec rspec spec && bundle exec cucumber features
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -20,6 +20,9 @@ group :test do
|
|
20
20
|
gem 'guard-cucumber'
|
21
21
|
gem 'fuubar'
|
22
22
|
gem 'simplecov', :require => false
|
23
|
-
|
24
|
-
|
23
|
+
|
24
|
+
if RUBY_VERSION.split('.')[0] == '1' && RUBY_VERSION.split('.')[1] == '9'
|
25
|
+
gem 'debugger-ruby_core_source', '>= 1.3.4' # required for perftools.rb
|
26
|
+
gem 'perftools.rb'
|
27
|
+
end
|
25
28
|
end
|
data/Gemfile-ruby1.9
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec :name => 'flapjack'
|
4
|
+
|
5
|
+
group :development do
|
6
|
+
gem 'ruby-prof'
|
7
|
+
end
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem 'rspec', '~> 3.0.0.beta1'
|
11
|
+
gem 'cucumber'
|
12
|
+
gem 'delorean'
|
13
|
+
gem 'rack-test'
|
14
|
+
gem 'async_rack_test', '>= 0.0.5'
|
15
|
+
gem 'resque_spec'
|
16
|
+
gem 'webmock'
|
17
|
+
gem 'guard'
|
18
|
+
gem 'rb-fsevent'
|
19
|
+
gem 'guard-rspec'
|
20
|
+
gem 'guard-cucumber'
|
21
|
+
gem 'fuubar'
|
22
|
+
gem 'simplecov', :require => false
|
23
|
+
|
24
|
+
if RUBY_VERSION.split('.')[0] == '1' && RUBY_VERSION.split('.')[1] == '9'
|
25
|
+
gem 'debugger-ruby_core_source', '>= 1.3.4' # required for perftools.rb
|
26
|
+
gem 'perftools.rb'
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,227 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
flapjack (0.9.6)
|
5
|
+
activesupport (~> 3.2.14)
|
6
|
+
blather (~> 0.8.3)
|
7
|
+
chronic
|
8
|
+
chronic_duration
|
9
|
+
dante
|
10
|
+
em-http-request
|
11
|
+
em-resque
|
12
|
+
em-synchrony (~> 1.0.2)
|
13
|
+
eventmachine (~> 1.0.0)
|
14
|
+
hiredis
|
15
|
+
ice_cube
|
16
|
+
mail
|
17
|
+
oj (>= 2.9.0)
|
18
|
+
rack-fiber_pool
|
19
|
+
rake
|
20
|
+
rbtrace
|
21
|
+
redis (~> 3.0.6)
|
22
|
+
resque (~> 1.23.0)
|
23
|
+
sinatra
|
24
|
+
thin (~> 1.6.1)
|
25
|
+
tzinfo (~> 1.0.1)
|
26
|
+
tzinfo-data
|
27
|
+
|
28
|
+
GEM
|
29
|
+
remote: https://rubygems.org/
|
30
|
+
specs:
|
31
|
+
activesupport (3.2.19)
|
32
|
+
i18n (~> 0.6, >= 0.6.4)
|
33
|
+
multi_json (~> 1.0)
|
34
|
+
addressable (2.3.6)
|
35
|
+
async_rack_test (0.0.5)
|
36
|
+
blather (0.8.8)
|
37
|
+
activesupport (>= 2.3.11)
|
38
|
+
eventmachine (>= 1.0.0)
|
39
|
+
girl_friday
|
40
|
+
niceogiri (~> 1.0)
|
41
|
+
nokogiri (~> 1.5, >= 1.5.6)
|
42
|
+
builder (3.2.2)
|
43
|
+
celluloid (0.16.0)
|
44
|
+
timers (~> 4.0.0)
|
45
|
+
chronic (0.10.2)
|
46
|
+
chronic_duration (0.10.6)
|
47
|
+
numerizer (~> 0.1.1)
|
48
|
+
coderay (1.1.0)
|
49
|
+
connection_pool (1.2.0)
|
50
|
+
cookiejar (0.3.2)
|
51
|
+
crack (0.4.2)
|
52
|
+
safe_yaml (~> 1.0.0)
|
53
|
+
cucumber (1.3.17)
|
54
|
+
builder (>= 2.1.2)
|
55
|
+
diff-lcs (>= 1.1.3)
|
56
|
+
gherkin (~> 2.12)
|
57
|
+
multi_json (>= 1.7.5, < 2.0)
|
58
|
+
multi_test (>= 0.1.1)
|
59
|
+
daemons (1.1.9)
|
60
|
+
dante (0.2.0)
|
61
|
+
debugger-ruby_core_source (1.3.5)
|
62
|
+
delorean (2.1.0)
|
63
|
+
chronic
|
64
|
+
diff-lcs (1.2.5)
|
65
|
+
docile (1.1.5)
|
66
|
+
em-hiredis (0.1.1)
|
67
|
+
hiredis (~> 0.4.0)
|
68
|
+
em-http-request (1.1.2)
|
69
|
+
addressable (>= 2.3.4)
|
70
|
+
cookiejar
|
71
|
+
em-socksify (>= 0.3)
|
72
|
+
eventmachine (>= 1.0.3)
|
73
|
+
http_parser.rb (>= 0.6.0)
|
74
|
+
em-resque (1.1.1)
|
75
|
+
em-hiredis (~> 0.1.0)
|
76
|
+
em-synchrony (~> 1.0.0)
|
77
|
+
resque (~> 1.2)
|
78
|
+
em-socksify (0.3.0)
|
79
|
+
eventmachine (>= 1.0.0.beta.4)
|
80
|
+
em-synchrony (1.0.3)
|
81
|
+
eventmachine (>= 1.0.0.beta.1)
|
82
|
+
eventmachine (1.0.3)
|
83
|
+
ffi (1.9.6)
|
84
|
+
formatador (0.2.5)
|
85
|
+
fuubar (2.0.0)
|
86
|
+
rspec (~> 3.0)
|
87
|
+
ruby-progressbar (~> 1.4)
|
88
|
+
gherkin (2.12.2)
|
89
|
+
multi_json (~> 1.3)
|
90
|
+
girl_friday (0.11.2)
|
91
|
+
connection_pool (~> 1.0)
|
92
|
+
rubinius-actor
|
93
|
+
guard (2.6.1)
|
94
|
+
formatador (>= 0.2.4)
|
95
|
+
listen (~> 2.7)
|
96
|
+
lumberjack (~> 1.0)
|
97
|
+
pry (>= 0.9.12)
|
98
|
+
thor (>= 0.18.1)
|
99
|
+
guard-cucumber (1.4.1)
|
100
|
+
cucumber (>= 1.2.0)
|
101
|
+
guard (>= 1.1.0)
|
102
|
+
guard-rspec (4.3.1)
|
103
|
+
guard (~> 2.1)
|
104
|
+
rspec (>= 2.14, < 4.0)
|
105
|
+
hiredis (0.4.5)
|
106
|
+
hitimes (1.2.2)
|
107
|
+
http_parser.rb (0.6.0)
|
108
|
+
i18n (0.6.11)
|
109
|
+
ice_cube (0.12.1)
|
110
|
+
listen (2.7.11)
|
111
|
+
celluloid (>= 0.15.2)
|
112
|
+
rb-fsevent (>= 0.9.3)
|
113
|
+
rb-inotify (>= 0.9)
|
114
|
+
lumberjack (1.0.9)
|
115
|
+
mail (2.6.1)
|
116
|
+
mime-types (>= 1.16, < 3)
|
117
|
+
method_source (0.8.2)
|
118
|
+
mime-types (2.4.2)
|
119
|
+
mini_portile (0.6.0)
|
120
|
+
msgpack (0.5.9)
|
121
|
+
multi_json (1.10.1)
|
122
|
+
multi_test (0.1.1)
|
123
|
+
niceogiri (1.1.2)
|
124
|
+
nokogiri (~> 1.5)
|
125
|
+
nokogiri (1.6.3.1)
|
126
|
+
mini_portile (= 0.6.0)
|
127
|
+
numerizer (0.1.1)
|
128
|
+
oj (2.10.3)
|
129
|
+
perftools.rb (2.0.1)
|
130
|
+
pry (0.10.1)
|
131
|
+
coderay (~> 1.1.0)
|
132
|
+
method_source (~> 0.8.1)
|
133
|
+
slop (~> 3.4)
|
134
|
+
rack (1.5.2)
|
135
|
+
rack-fiber_pool (0.9.3)
|
136
|
+
rack-protection (1.5.3)
|
137
|
+
rack
|
138
|
+
rack-test (0.6.2)
|
139
|
+
rack (>= 1.0)
|
140
|
+
rake (10.3.2)
|
141
|
+
rb-fsevent (0.9.4)
|
142
|
+
rb-inotify (0.9.5)
|
143
|
+
ffi (>= 0.5.0)
|
144
|
+
rbtrace (0.4.5)
|
145
|
+
ffi (>= 1.0.6)
|
146
|
+
msgpack (>= 0.4.3)
|
147
|
+
trollop (>= 1.16.2)
|
148
|
+
redis (3.0.7)
|
149
|
+
redis-namespace (1.5.1)
|
150
|
+
redis (~> 3.0, >= 3.0.4)
|
151
|
+
resque (1.23.1)
|
152
|
+
multi_json (~> 1.0)
|
153
|
+
redis-namespace (~> 1.0)
|
154
|
+
sinatra (>= 0.9.2)
|
155
|
+
vegas (~> 0.1.2)
|
156
|
+
resque_spec (0.16.0)
|
157
|
+
resque (>= 1.19.0)
|
158
|
+
rspec-core (>= 3.0.0)
|
159
|
+
rspec-expectations (>= 3.0.0)
|
160
|
+
rspec-mocks (>= 3.0.0)
|
161
|
+
rspec (3.0.0)
|
162
|
+
rspec-core (~> 3.0.0)
|
163
|
+
rspec-expectations (~> 3.0.0)
|
164
|
+
rspec-mocks (~> 3.0.0)
|
165
|
+
rspec-core (3.0.4)
|
166
|
+
rspec-support (~> 3.0.0)
|
167
|
+
rspec-expectations (3.0.4)
|
168
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
169
|
+
rspec-support (~> 3.0.0)
|
170
|
+
rspec-mocks (3.0.4)
|
171
|
+
rspec-support (~> 3.0.0)
|
172
|
+
rspec-support (3.0.4)
|
173
|
+
rubinius-actor (0.0.2)
|
174
|
+
rubinius-core-api
|
175
|
+
rubinius-core-api (0.0.1)
|
176
|
+
ruby-prof (0.15.1)
|
177
|
+
ruby-progressbar (1.6.0)
|
178
|
+
safe_yaml (1.0.4)
|
179
|
+
simplecov (0.9.1)
|
180
|
+
docile (~> 1.1.0)
|
181
|
+
multi_json (~> 1.0)
|
182
|
+
simplecov-html (~> 0.8.0)
|
183
|
+
simplecov-html (0.8.0)
|
184
|
+
sinatra (1.4.5)
|
185
|
+
rack (~> 1.4)
|
186
|
+
rack-protection (~> 1.4)
|
187
|
+
tilt (~> 1.3, >= 1.3.4)
|
188
|
+
slop (3.6.0)
|
189
|
+
thin (1.6.3)
|
190
|
+
daemons (~> 1.0, >= 1.0.9)
|
191
|
+
eventmachine (~> 1.0)
|
192
|
+
rack (~> 1.0)
|
193
|
+
thor (0.19.1)
|
194
|
+
tilt (1.4.1)
|
195
|
+
timers (4.0.1)
|
196
|
+
hitimes
|
197
|
+
trollop (2.0)
|
198
|
+
tzinfo (1.0.1)
|
199
|
+
tzinfo-data (1.2014.8)
|
200
|
+
tzinfo (>= 1.0.0)
|
201
|
+
vegas (0.1.11)
|
202
|
+
rack (>= 1.0.0)
|
203
|
+
webmock (1.19.0)
|
204
|
+
addressable (>= 2.3.6)
|
205
|
+
crack (>= 0.3.2)
|
206
|
+
|
207
|
+
PLATFORMS
|
208
|
+
ruby
|
209
|
+
|
210
|
+
DEPENDENCIES
|
211
|
+
async_rack_test (>= 0.0.5)
|
212
|
+
cucumber
|
213
|
+
debugger-ruby_core_source (>= 1.3.4)
|
214
|
+
delorean
|
215
|
+
flapjack!
|
216
|
+
fuubar
|
217
|
+
guard
|
218
|
+
guard-cucumber
|
219
|
+
guard-rspec
|
220
|
+
perftools.rb
|
221
|
+
rack-test
|
222
|
+
rb-fsevent
|
223
|
+
resque_spec
|
224
|
+
rspec (~> 3.0.0.beta1)
|
225
|
+
ruby-prof
|
226
|
+
simplecov
|
227
|
+
webmock
|
data/lib/flapjack/data/event.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'oj'
|
4
4
|
require 'flapjack/data/tag_set'
|
5
5
|
|
6
|
+
require 'flapjack/data/migration'
|
7
|
+
|
6
8
|
module Flapjack
|
7
9
|
module Data
|
8
10
|
class Event
|
@@ -78,24 +80,27 @@ module Flapjack
|
|
78
80
|
:events_archive_maxage => (3 * 60 * 60) }
|
79
81
|
options = defaults.merge(opts)
|
80
82
|
|
81
|
-
archive_dest
|
83
|
+
archive_dest = nil
|
82
84
|
base_time_str = Time.now.utc.strftime("%Y%m%d%H")
|
83
85
|
|
84
86
|
if options[:archive_events]
|
85
87
|
archive_dest = "events_archive:#{base_time_str}"
|
88
|
+
unless @previous_base_time_str == base_time_str
|
89
|
+
Flapjack::Data::Migration.purge_expired_archive_index(:redis => redis)
|
90
|
+
end
|
91
|
+
@previous_base_time_str = base_time_str
|
86
92
|
if options[:block]
|
87
93
|
raw = redis.brpoplpush(queue, archive_dest, 0)
|
88
94
|
else
|
89
95
|
raw = redis.rpoplpush(queue, archive_dest)
|
90
96
|
return unless raw
|
91
97
|
end
|
98
|
+
redis.sadd("known_events_archive_keys", archive_dest)
|
99
|
+
elsif options[:block]
|
100
|
+
raw = redis.brpop(queue, 0)[1]
|
92
101
|
else
|
93
|
-
|
94
|
-
|
95
|
-
else
|
96
|
-
raw = redis.rpop(queue)
|
97
|
-
return unless raw
|
98
|
-
end
|
102
|
+
raw = redis.rpop(queue)
|
103
|
+
return unless raw
|
99
104
|
end
|
100
105
|
parsed = parse_and_validate(raw, :logger => options[:logger])
|
101
106
|
if parsed.nil?
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
module Flapjack
|
4
|
+
module Data
|
5
|
+
class Migration
|
6
|
+
|
7
|
+
def self.refresh_archive_index(options = {})
|
8
|
+
raise "Redis connection not set" unless redis = options[:redis]
|
9
|
+
archive_keys = redis.keys('events_archive:*')
|
10
|
+
if archive_keys.empty?
|
11
|
+
redis.del('known_events_archive_keys')
|
12
|
+
return
|
13
|
+
end
|
14
|
+
|
15
|
+
grouped_keys = archive_keys.group_by do |ak|
|
16
|
+
(redis.llen(ak) > 0) ? 'add' : 'remove'
|
17
|
+
end
|
18
|
+
|
19
|
+
{'remove' => :srem, 'add' => :sadd}.each_pair do |k, cmd|
|
20
|
+
next unless grouped_keys.has_key?(k) && !grouped_keys[k].empty?
|
21
|
+
redis.send(cmd, 'known_events_archive_keys', grouped_keys[k])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.purge_expired_archive_index(options = {})
|
26
|
+
raise "Redis connection not set" unless redis = options[:redis]
|
27
|
+
return unless redis.exists('known_events_archive_keys')
|
28
|
+
|
29
|
+
redis.smembers('known_events_archive_keys').each do |ak|
|
30
|
+
redis.srem('known_events_archive_keys', ak) unless redis.exists(ak)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/flapjack/redis_pool.rb
CHANGED
@@ -10,14 +10,18 @@ require 'redis'
|
|
10
10
|
|
11
11
|
require 'em-synchrony/connection_pool'
|
12
12
|
|
13
|
+
require 'flapjack/data/migration'
|
14
|
+
|
13
15
|
module Flapjack
|
14
16
|
class RedisPool < EventMachine::Synchrony::ConnectionPool
|
15
17
|
|
16
18
|
def initialize(opts = {})
|
17
19
|
config = opts.delete(:config)
|
18
|
-
@size
|
20
|
+
@size = opts[:size] || 5
|
19
21
|
super(:size => @size) {
|
20
|
-
::Redis.new(config)
|
22
|
+
redis = ::Redis.new(config)
|
23
|
+
Flapjack::Data::Migration.refresh_archive_index(:redis => redis)
|
24
|
+
redis
|
21
25
|
}
|
22
26
|
end
|
23
27
|
|
data/lib/flapjack/version.rb
CHANGED
@@ -33,7 +33,7 @@ describe Flapjack::Coordinator do
|
|
33
33
|
and_return(processor)
|
34
34
|
|
35
35
|
expect(EM).to receive(:stop)
|
36
|
-
expect(EM::Synchrony).to receive(:sleep)
|
36
|
+
expect(EM::Synchrony).to receive(:sleep) {
|
37
37
|
fc.instance_variable_set('@received_signals', ['INT'])
|
38
38
|
}
|
39
39
|
|
@@ -102,7 +102,7 @@ describe Flapjack::Coordinator do
|
|
102
102
|
and_return(notifier)
|
103
103
|
|
104
104
|
expect(EM).to receive(:stop)
|
105
|
-
expect(EM::Synchrony).to receive(:sleep)
|
105
|
+
expect(EM::Synchrony).to receive(:sleep) {
|
106
106
|
fc.instance_variable_set('@received_signals', ['INT'])
|
107
107
|
}
|
108
108
|
|
@@ -136,7 +136,7 @@ describe Flapjack::Coordinator do
|
|
136
136
|
and_return(processor)
|
137
137
|
|
138
138
|
expect(EM).to receive(:stop)
|
139
|
-
expect(EM::Synchrony).to receive(:sleep)
|
139
|
+
expect(EM::Synchrony).to receive(:sleep) {
|
140
140
|
fc.instance_variable_set('@received_signals', ['INT'])
|
141
141
|
}
|
142
142
|
|
@@ -22,11 +22,18 @@ describe Flapjack::Data::Event do
|
|
22
22
|
'tags' => ['dev'] }
|
23
23
|
}
|
24
24
|
|
25
|
+
before(:each) do
|
26
|
+
Flapjack::Data::Event.instance_variable_set('@previous_base_time_str', nil)
|
27
|
+
end
|
28
|
+
|
25
29
|
context 'class' do
|
26
30
|
|
27
31
|
it "returns the next event (blocking, archiving)" do
|
28
32
|
expect(mock_redis).to receive(:brpoplpush).
|
29
33
|
with('events', /^events_archive:/, 0).and_return(event_data.to_json)
|
34
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
35
|
+
expect(mock_redis).to receive(:sadd).
|
36
|
+
with('known_events_archive_keys', /^events_archive:/)
|
30
37
|
expect(mock_redis).to receive(:expire)
|
31
38
|
|
32
39
|
result = Flapjack::Data::Event.next('events', :block => true,
|
@@ -46,6 +53,9 @@ describe Flapjack::Data::Event do
|
|
46
53
|
it "returns the next event (non-blocking, archiving)" do
|
47
54
|
expect(mock_redis).to receive(:rpoplpush).
|
48
55
|
with('events', /^events_archive:/).and_return(event_data.to_json)
|
56
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
57
|
+
expect(mock_redis).to receive(:sadd).
|
58
|
+
with('known_events_archive_keys', /^events_archive:/)
|
49
59
|
expect(mock_redis).to receive(:expire)
|
50
60
|
|
51
61
|
result = Flapjack::Data::Event.next('events', :block => false,
|
@@ -66,6 +76,9 @@ describe Flapjack::Data::Event do
|
|
66
76
|
bad_event_json = '{{{'
|
67
77
|
expect(mock_redis).to receive(:brpoplpush).
|
68
78
|
with('events', /^events_archive:/, 0).and_return(bad_event_json)
|
79
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
80
|
+
expect(mock_redis).to receive(:sadd).
|
81
|
+
with('known_events_archive_keys', /^events_archive:/)
|
69
82
|
expect(mock_redis).to receive(:multi)
|
70
83
|
expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
|
71
84
|
expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
|
@@ -94,6 +107,9 @@ describe Flapjack::Data::Event do
|
|
94
107
|
bad_event_data = event_data.clone
|
95
108
|
bad_event_data.delete(required_key)
|
96
109
|
bad_event_json = bad_event_data.to_json
|
110
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
111
|
+
expect(mock_redis).to receive(:sadd).
|
112
|
+
with('known_events_archive_keys', /^events_archive:/)
|
97
113
|
expect(mock_redis).to receive(:brpoplpush).
|
98
114
|
with('events', /^events_archive:/, 0).and_return(bad_event_json)
|
99
115
|
expect(mock_redis).to receive(:multi)
|
@@ -126,6 +142,9 @@ describe Flapjack::Data::Event do
|
|
126
142
|
bad_event_json = bad_event_data.to_json
|
127
143
|
expect(mock_redis).to receive(:brpoplpush).
|
128
144
|
with('events', /^events_archive:/, 0).and_return(bad_event_json)
|
145
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
146
|
+
expect(mock_redis).to receive(:sadd).
|
147
|
+
with('known_events_archive_keys', /^events_archive:/)
|
129
148
|
expect(mock_redis).to receive(:multi)
|
130
149
|
expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
|
131
150
|
expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
|
@@ -156,6 +175,9 @@ describe Flapjack::Data::Event do
|
|
156
175
|
bad_event_data = event_data.clone
|
157
176
|
bad_event_data[optional_key] = {'hello' => 'there'}
|
158
177
|
bad_event_json = bad_event_data.to_json
|
178
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
179
|
+
expect(mock_redis).to receive(:sadd).
|
180
|
+
with('known_events_archive_keys', /^events_archive:/)
|
159
181
|
expect(mock_redis).to receive(:brpoplpush).
|
160
182
|
with('events', /^events_archive:/, 0).and_return(bad_event_json)
|
161
183
|
expect(mock_redis).to receive(:multi)
|
@@ -188,6 +210,9 @@ describe Flapjack::Data::Event do
|
|
188
210
|
it "it matches case-insensitively for #{key} (archiving)" do
|
189
211
|
case_event_data = event_data.clone
|
190
212
|
case_event_data[key] = event_data[key].upcase
|
213
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
214
|
+
expect(mock_redis).to receive(:sadd).
|
215
|
+
with('known_events_archive_keys', /^events_archive:/)
|
191
216
|
expect(mock_redis).to receive(:brpoplpush).
|
192
217
|
with('events', /^events_archive:/, 0).and_return(case_event_data.to_json)
|
193
218
|
expect(mock_redis).to receive(:expire)
|
@@ -214,6 +239,9 @@ describe Flapjack::Data::Event do
|
|
214
239
|
it "it accepts an event with a numeric #{key} key (archiving)" do
|
215
240
|
num_event_data = event_data.clone
|
216
241
|
num_event_data[key] = event_data[key].to_i.to_s
|
242
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
243
|
+
expect(mock_redis).to receive(:sadd).
|
244
|
+
with('known_events_archive_keys', /^events_archive:/)
|
217
245
|
expect(mock_redis).to receive(:brpoplpush).
|
218
246
|
with('events', /^events_archive:/, 0).and_return(num_event_data.to_json)
|
219
247
|
expect(mock_redis).to receive(:expire)
|
@@ -240,6 +268,9 @@ describe Flapjack::Data::Event do
|
|
240
268
|
bad_event_json = bad_event_data.to_json
|
241
269
|
expect(mock_redis).to receive(:brpoplpush).
|
242
270
|
with('events', /^events_archive:/, 0).and_return(bad_event_json)
|
271
|
+
expect(Flapjack::Data::Migration).to receive(:purge_expired_archive_index).with(:redis => mock_redis)
|
272
|
+
expect(mock_redis).to receive(:sadd).
|
273
|
+
with('known_events_archive_keys', /^events_archive:/)
|
243
274
|
expect(mock_redis).to receive(:multi)
|
244
275
|
expect(mock_redis).to receive(:lrem).with(/^events_archive:/, 1, bad_event_json)
|
245
276
|
expect(mock_redis).to receive(:lpush).with(/^events_rejected:/, bad_event_json)
|
@@ -174,7 +174,7 @@ describe Flapjack::Gateways::Jabber, :logger => true do
|
|
174
174
|
|
175
175
|
expect(EventMachine::Synchrony).to receive(:sleep).with(5).exactly(1).times
|
176
176
|
expect(EventMachine::Synchrony).to receive(:sleep).with(2).exactly(3).times
|
177
|
-
expect(fj).to receive(:connect).exactly(4).times
|
177
|
+
expect(fj).to receive(:connect).exactly(4).times {
|
178
178
|
attempts +=1
|
179
179
|
raise StandardError.new unless attempts > 3
|
180
180
|
}
|
@@ -12,6 +12,7 @@ describe Flapjack::RedisPool do
|
|
12
12
|
redis
|
13
13
|
}
|
14
14
|
expect(::Redis).to receive(:new).exactly(redis_count).times.and_return(*redis_conns)
|
15
|
+
expect(Flapjack::Data::Migration).to receive(:refresh_archive_index).exactly(redis_count).times
|
15
16
|
|
16
17
|
frp = Flapjack::RedisPool.new(:size => redis_count)
|
17
18
|
|
data/tasks/benchmarks.rake
CHANGED
@@ -94,6 +94,10 @@ namespace :benchmarks do
|
|
94
94
|
# - time to failure varies evenly between 1 hour and 1 month
|
95
95
|
# - time to recovery varies evenly between 10 seconds and 1 week
|
96
96
|
task :benchmark do
|
97
|
+
unless RUBY_VERSION.split('.')[0] == '1' && RUBY_VERSION.split('.')[1] == '9'
|
98
|
+
# Flapjack doesn't support 1.8 or below, so just checking for 1.9 is OK
|
99
|
+
raise "perftools.rb doesn't work on Ruby 2.0 or greater"
|
100
|
+
end
|
97
101
|
|
98
102
|
num_checks_per_entity = (ENV['CHECKS_PER_ENTITY'] || 5).to_i
|
99
103
|
num_entities = (ENV['ENTITIES'] || 100).to_i
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flapjack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
5
|
-
prerelease:
|
4
|
+
version: 0.9.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Lindsay Holmwood
|
@@ -11,358 +10,314 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date: 2014-10-
|
13
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: dante
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- -
|
19
|
+
- - ">="
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: '0'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- -
|
26
|
+
- - ">="
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '0'
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: oj
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- -
|
33
|
+
- - ">="
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: 2.9.0
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- -
|
40
|
+
- - ">="
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: 2.9.0
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: eventmachine
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- - ~>
|
47
|
+
- - "~>"
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: 1.0.0
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- - ~>
|
54
|
+
- - "~>"
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: 1.0.0
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: hiredis
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
|
-
- -
|
61
|
+
- - ">="
|
70
62
|
- !ruby/object:Gem::Version
|
71
63
|
version: '0'
|
72
64
|
type: :runtime
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
|
-
- -
|
68
|
+
- - ">="
|
78
69
|
- !ruby/object:Gem::Version
|
79
70
|
version: '0'
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: em-synchrony
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
|
-
- - ~>
|
75
|
+
- - "~>"
|
86
76
|
- !ruby/object:Gem::Version
|
87
77
|
version: 1.0.2
|
88
78
|
type: :runtime
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
|
-
- - ~>
|
82
|
+
- - "~>"
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: 1.0.2
|
96
85
|
- !ruby/object:Gem::Dependency
|
97
86
|
name: em-http-request
|
98
87
|
requirement: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
88
|
requirements:
|
101
|
-
- -
|
89
|
+
- - ">="
|
102
90
|
- !ruby/object:Gem::Version
|
103
91
|
version: '0'
|
104
92
|
type: :runtime
|
105
93
|
prerelease: false
|
106
94
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
95
|
requirements:
|
109
|
-
- -
|
96
|
+
- - ">="
|
110
97
|
- !ruby/object:Gem::Version
|
111
98
|
version: '0'
|
112
99
|
- !ruby/object:Gem::Dependency
|
113
100
|
name: redis
|
114
101
|
requirement: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
102
|
requirements:
|
117
|
-
- - ~>
|
103
|
+
- - "~>"
|
118
104
|
- !ruby/object:Gem::Version
|
119
105
|
version: 3.0.6
|
120
106
|
type: :runtime
|
121
107
|
prerelease: false
|
122
108
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
109
|
requirements:
|
125
|
-
- - ~>
|
110
|
+
- - "~>"
|
126
111
|
- !ruby/object:Gem::Version
|
127
112
|
version: 3.0.6
|
128
113
|
- !ruby/object:Gem::Dependency
|
129
114
|
name: em-resque
|
130
115
|
requirement: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
116
|
requirements:
|
133
|
-
- -
|
117
|
+
- - ">="
|
134
118
|
- !ruby/object:Gem::Version
|
135
119
|
version: '0'
|
136
120
|
type: :runtime
|
137
121
|
prerelease: false
|
138
122
|
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
123
|
requirements:
|
141
|
-
- -
|
124
|
+
- - ">="
|
142
125
|
- !ruby/object:Gem::Version
|
143
126
|
version: '0'
|
144
127
|
- !ruby/object:Gem::Dependency
|
145
128
|
name: resque
|
146
129
|
requirement: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
130
|
requirements:
|
149
|
-
- - ~>
|
131
|
+
- - "~>"
|
150
132
|
- !ruby/object:Gem::Version
|
151
133
|
version: 1.23.0
|
152
134
|
type: :runtime
|
153
135
|
prerelease: false
|
154
136
|
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
none: false
|
156
137
|
requirements:
|
157
|
-
- - ~>
|
138
|
+
- - "~>"
|
158
139
|
- !ruby/object:Gem::Version
|
159
140
|
version: 1.23.0
|
160
141
|
- !ruby/object:Gem::Dependency
|
161
142
|
name: sinatra
|
162
143
|
requirement: !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
144
|
requirements:
|
165
|
-
- -
|
145
|
+
- - ">="
|
166
146
|
- !ruby/object:Gem::Version
|
167
147
|
version: '0'
|
168
148
|
type: :runtime
|
169
149
|
prerelease: false
|
170
150
|
version_requirements: !ruby/object:Gem::Requirement
|
171
|
-
none: false
|
172
151
|
requirements:
|
173
|
-
- -
|
152
|
+
- - ">="
|
174
153
|
- !ruby/object:Gem::Version
|
175
154
|
version: '0'
|
176
155
|
- !ruby/object:Gem::Dependency
|
177
156
|
name: rack-fiber_pool
|
178
157
|
requirement: !ruby/object:Gem::Requirement
|
179
|
-
none: false
|
180
158
|
requirements:
|
181
|
-
- -
|
159
|
+
- - ">="
|
182
160
|
- !ruby/object:Gem::Version
|
183
161
|
version: '0'
|
184
162
|
type: :runtime
|
185
163
|
prerelease: false
|
186
164
|
version_requirements: !ruby/object:Gem::Requirement
|
187
|
-
none: false
|
188
165
|
requirements:
|
189
|
-
- -
|
166
|
+
- - ">="
|
190
167
|
- !ruby/object:Gem::Version
|
191
168
|
version: '0'
|
192
169
|
- !ruby/object:Gem::Dependency
|
193
170
|
name: thin
|
194
171
|
requirement: !ruby/object:Gem::Requirement
|
195
|
-
none: false
|
196
172
|
requirements:
|
197
|
-
- - ~>
|
173
|
+
- - "~>"
|
198
174
|
- !ruby/object:Gem::Version
|
199
175
|
version: 1.6.1
|
200
176
|
type: :runtime
|
201
177
|
prerelease: false
|
202
178
|
version_requirements: !ruby/object:Gem::Requirement
|
203
|
-
none: false
|
204
179
|
requirements:
|
205
|
-
- - ~>
|
180
|
+
- - "~>"
|
206
181
|
- !ruby/object:Gem::Version
|
207
182
|
version: 1.6.1
|
208
183
|
- !ruby/object:Gem::Dependency
|
209
184
|
name: mail
|
210
185
|
requirement: !ruby/object:Gem::Requirement
|
211
|
-
none: false
|
212
186
|
requirements:
|
213
|
-
- -
|
187
|
+
- - ">="
|
214
188
|
- !ruby/object:Gem::Version
|
215
189
|
version: '0'
|
216
190
|
type: :runtime
|
217
191
|
prerelease: false
|
218
192
|
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
none: false
|
220
193
|
requirements:
|
221
|
-
- -
|
194
|
+
- - ">="
|
222
195
|
- !ruby/object:Gem::Version
|
223
196
|
version: '0'
|
224
197
|
- !ruby/object:Gem::Dependency
|
225
198
|
name: blather
|
226
199
|
requirement: !ruby/object:Gem::Requirement
|
227
|
-
none: false
|
228
200
|
requirements:
|
229
|
-
- - ~>
|
201
|
+
- - "~>"
|
230
202
|
- !ruby/object:Gem::Version
|
231
203
|
version: 0.8.3
|
232
204
|
type: :runtime
|
233
205
|
prerelease: false
|
234
206
|
version_requirements: !ruby/object:Gem::Requirement
|
235
|
-
none: false
|
236
207
|
requirements:
|
237
|
-
- - ~>
|
208
|
+
- - "~>"
|
238
209
|
- !ruby/object:Gem::Version
|
239
210
|
version: 0.8.3
|
240
211
|
- !ruby/object:Gem::Dependency
|
241
212
|
name: chronic
|
242
213
|
requirement: !ruby/object:Gem::Requirement
|
243
|
-
none: false
|
244
214
|
requirements:
|
245
|
-
- -
|
215
|
+
- - ">="
|
246
216
|
- !ruby/object:Gem::Version
|
247
217
|
version: '0'
|
248
218
|
type: :runtime
|
249
219
|
prerelease: false
|
250
220
|
version_requirements: !ruby/object:Gem::Requirement
|
251
|
-
none: false
|
252
221
|
requirements:
|
253
|
-
- -
|
222
|
+
- - ">="
|
254
223
|
- !ruby/object:Gem::Version
|
255
224
|
version: '0'
|
256
225
|
- !ruby/object:Gem::Dependency
|
257
226
|
name: chronic_duration
|
258
227
|
requirement: !ruby/object:Gem::Requirement
|
259
|
-
none: false
|
260
228
|
requirements:
|
261
|
-
- -
|
229
|
+
- - ">="
|
262
230
|
- !ruby/object:Gem::Version
|
263
231
|
version: '0'
|
264
232
|
type: :runtime
|
265
233
|
prerelease: false
|
266
234
|
version_requirements: !ruby/object:Gem::Requirement
|
267
|
-
none: false
|
268
235
|
requirements:
|
269
|
-
- -
|
236
|
+
- - ">="
|
270
237
|
- !ruby/object:Gem::Version
|
271
238
|
version: '0'
|
272
239
|
- !ruby/object:Gem::Dependency
|
273
240
|
name: activesupport
|
274
241
|
requirement: !ruby/object:Gem::Requirement
|
275
|
-
none: false
|
276
242
|
requirements:
|
277
|
-
- - ~>
|
243
|
+
- - "~>"
|
278
244
|
- !ruby/object:Gem::Version
|
279
245
|
version: 3.2.14
|
280
246
|
type: :runtime
|
281
247
|
prerelease: false
|
282
248
|
version_requirements: !ruby/object:Gem::Requirement
|
283
|
-
none: false
|
284
249
|
requirements:
|
285
|
-
- - ~>
|
250
|
+
- - "~>"
|
286
251
|
- !ruby/object:Gem::Version
|
287
252
|
version: 3.2.14
|
288
253
|
- !ruby/object:Gem::Dependency
|
289
254
|
name: ice_cube
|
290
255
|
requirement: !ruby/object:Gem::Requirement
|
291
|
-
none: false
|
292
256
|
requirements:
|
293
|
-
- -
|
257
|
+
- - ">="
|
294
258
|
- !ruby/object:Gem::Version
|
295
259
|
version: '0'
|
296
260
|
type: :runtime
|
297
261
|
prerelease: false
|
298
262
|
version_requirements: !ruby/object:Gem::Requirement
|
299
|
-
none: false
|
300
263
|
requirements:
|
301
|
-
- -
|
264
|
+
- - ">="
|
302
265
|
- !ruby/object:Gem::Version
|
303
266
|
version: '0'
|
304
267
|
- !ruby/object:Gem::Dependency
|
305
268
|
name: tzinfo
|
306
269
|
requirement: !ruby/object:Gem::Requirement
|
307
|
-
none: false
|
308
270
|
requirements:
|
309
|
-
- - ~>
|
271
|
+
- - "~>"
|
310
272
|
- !ruby/object:Gem::Version
|
311
273
|
version: 1.0.1
|
312
274
|
type: :runtime
|
313
275
|
prerelease: false
|
314
276
|
version_requirements: !ruby/object:Gem::Requirement
|
315
|
-
none: false
|
316
277
|
requirements:
|
317
|
-
- - ~>
|
278
|
+
- - "~>"
|
318
279
|
- !ruby/object:Gem::Version
|
319
280
|
version: 1.0.1
|
320
281
|
- !ruby/object:Gem::Dependency
|
321
282
|
name: tzinfo-data
|
322
283
|
requirement: !ruby/object:Gem::Requirement
|
323
|
-
none: false
|
324
284
|
requirements:
|
325
|
-
- -
|
285
|
+
- - ">="
|
326
286
|
- !ruby/object:Gem::Version
|
327
287
|
version: '0'
|
328
288
|
type: :runtime
|
329
289
|
prerelease: false
|
330
290
|
version_requirements: !ruby/object:Gem::Requirement
|
331
|
-
none: false
|
332
291
|
requirements:
|
333
|
-
- -
|
292
|
+
- - ">="
|
334
293
|
- !ruby/object:Gem::Version
|
335
294
|
version: '0'
|
336
295
|
- !ruby/object:Gem::Dependency
|
337
296
|
name: rbtrace
|
338
297
|
requirement: !ruby/object:Gem::Requirement
|
339
|
-
none: false
|
340
298
|
requirements:
|
341
|
-
- -
|
299
|
+
- - ">="
|
342
300
|
- !ruby/object:Gem::Version
|
343
301
|
version: '0'
|
344
302
|
type: :runtime
|
345
303
|
prerelease: false
|
346
304
|
version_requirements: !ruby/object:Gem::Requirement
|
347
|
-
none: false
|
348
305
|
requirements:
|
349
|
-
- -
|
306
|
+
- - ">="
|
350
307
|
- !ruby/object:Gem::Version
|
351
308
|
version: '0'
|
352
309
|
- !ruby/object:Gem::Dependency
|
353
310
|
name: rake
|
354
311
|
requirement: !ruby/object:Gem::Requirement
|
355
|
-
none: false
|
356
312
|
requirements:
|
357
|
-
- -
|
313
|
+
- - ">="
|
358
314
|
- !ruby/object:Gem::Version
|
359
315
|
version: '0'
|
360
316
|
type: :runtime
|
361
317
|
prerelease: false
|
362
318
|
version_requirements: !ruby/object:Gem::Requirement
|
363
|
-
none: false
|
364
319
|
requirements:
|
365
|
-
- -
|
320
|
+
- - ">="
|
366
321
|
- !ruby/object:Gem::Version
|
367
322
|
version: '0'
|
368
323
|
description: Flapjack is a distributed monitoring notification system that provides
|
@@ -381,14 +336,16 @@ executables:
|
|
381
336
|
extensions: []
|
382
337
|
extra_rdoc_files: []
|
383
338
|
files:
|
384
|
-
- .gitignore
|
385
|
-
- .gitmodules
|
386
|
-
- .rspec
|
387
|
-
- .ruby-version
|
388
|
-
- .travis.yml
|
339
|
+
- ".gitignore"
|
340
|
+
- ".gitmodules"
|
341
|
+
- ".rspec"
|
342
|
+
- ".ruby-version"
|
343
|
+
- ".travis.yml"
|
389
344
|
- CHANGELOG.md
|
390
345
|
- CONTRIBUTING.md
|
391
346
|
- Gemfile
|
347
|
+
- Gemfile-ruby1.9
|
348
|
+
- Gemfile-ruby1.9.lock
|
392
349
|
- Guardfile
|
393
350
|
- LICENCE
|
394
351
|
- README.md
|
@@ -437,6 +394,7 @@ files:
|
|
437
394
|
- lib/flapjack/data/entity_check.rb
|
438
395
|
- lib/flapjack/data/event.rb
|
439
396
|
- lib/flapjack/data/message.rb
|
397
|
+
- lib/flapjack/data/migration.rb
|
440
398
|
- lib/flapjack/data/notification.rb
|
441
399
|
- lib/flapjack/data/notification_rule.rb
|
442
400
|
- lib/flapjack/data/semaphore.rb
|
@@ -595,8 +553,6 @@ files:
|
|
595
553
|
- spec/spec_helper.rb
|
596
554
|
- spec/support/erb_view_helper.rb
|
597
555
|
- spec/support/jsonapi_helper.rb
|
598
|
-
- spec/support/profile_all_formatter.rb
|
599
|
-
- spec/support/uncolored_doc_formatter.rb
|
600
556
|
- tasks/benchmarks.rake
|
601
557
|
- tasks/events.rake
|
602
558
|
- tasks/profile.rake
|
@@ -621,33 +577,26 @@ files:
|
|
621
577
|
homepage: http://flapjack.io/
|
622
578
|
licenses:
|
623
579
|
- MIT
|
580
|
+
metadata: {}
|
624
581
|
post_install_message:
|
625
582
|
rdoc_options: []
|
626
583
|
require_paths:
|
627
584
|
- lib
|
628
585
|
required_ruby_version: !ruby/object:Gem::Requirement
|
629
|
-
none: false
|
630
586
|
requirements:
|
631
|
-
- -
|
587
|
+
- - ">="
|
632
588
|
- !ruby/object:Gem::Version
|
633
589
|
version: '0'
|
634
|
-
segments:
|
635
|
-
- 0
|
636
|
-
hash: 3444506708991125351
|
637
590
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
638
|
-
none: false
|
639
591
|
requirements:
|
640
|
-
- -
|
592
|
+
- - ">="
|
641
593
|
- !ruby/object:Gem::Version
|
642
594
|
version: '0'
|
643
|
-
segments:
|
644
|
-
- 0
|
645
|
-
hash: 3444506708991125351
|
646
595
|
requirements: []
|
647
596
|
rubyforge_project:
|
648
|
-
rubygems_version:
|
597
|
+
rubygems_version: 2.2.2
|
649
598
|
signing_key:
|
650
|
-
specification_version:
|
599
|
+
specification_version: 4
|
651
600
|
summary: Intelligent, scalable, distributed monitoring notification system.
|
652
601
|
test_files:
|
653
602
|
- features/cli.feature
|
@@ -719,5 +668,3 @@ test_files:
|
|
719
668
|
- spec/spec_helper.rb
|
720
669
|
- spec/support/erb_view_helper.rb
|
721
670
|
- spec/support/jsonapi_helper.rb
|
722
|
-
- spec/support/profile_all_formatter.rb
|
723
|
-
- spec/support/uncolored_doc_formatter.rb
|
@@ -1,44 +0,0 @@
|
|
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
|