pulse_meter_core 0.4.13

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 (81) hide show
  1. data/.gitignore +19 -0
  2. data/.rbenv-version +1 -0
  3. data/.rspec +1 -0
  4. data/.rvmrc +1 -0
  5. data/.travis.yml +8 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +22 -0
  8. data/README.md +40 -0
  9. data/Rakefile +20 -0
  10. data/lib/pulse_meter/command_aggregator/async.rb +83 -0
  11. data/lib/pulse_meter/command_aggregator/sync.rb +18 -0
  12. data/lib/pulse_meter/command_aggregator/udp.rb +48 -0
  13. data/lib/pulse_meter/mixins/dumper.rb +87 -0
  14. data/lib/pulse_meter/mixins/utils.rb +155 -0
  15. data/lib/pulse_meter/observer.rb +118 -0
  16. data/lib/pulse_meter/observer/extended.rb +32 -0
  17. data/lib/pulse_meter/sensor.rb +61 -0
  18. data/lib/pulse_meter/sensor/base.rb +88 -0
  19. data/lib/pulse_meter/sensor/configuration.rb +106 -0
  20. data/lib/pulse_meter/sensor/counter.rb +39 -0
  21. data/lib/pulse_meter/sensor/hashed_counter.rb +36 -0
  22. data/lib/pulse_meter/sensor/hashed_indicator.rb +24 -0
  23. data/lib/pulse_meter/sensor/indicator.rb +35 -0
  24. data/lib/pulse_meter/sensor/multi.rb +97 -0
  25. data/lib/pulse_meter/sensor/timeline.rb +236 -0
  26. data/lib/pulse_meter/sensor/timeline_reduce.rb +68 -0
  27. data/lib/pulse_meter/sensor/timelined/average.rb +32 -0
  28. data/lib/pulse_meter/sensor/timelined/counter.rb +23 -0
  29. data/lib/pulse_meter/sensor/timelined/hashed_counter.rb +31 -0
  30. data/lib/pulse_meter/sensor/timelined/hashed_indicator.rb +30 -0
  31. data/lib/pulse_meter/sensor/timelined/indicator.rb +23 -0
  32. data/lib/pulse_meter/sensor/timelined/max.rb +19 -0
  33. data/lib/pulse_meter/sensor/timelined/median.rb +14 -0
  34. data/lib/pulse_meter/sensor/timelined/min.rb +19 -0
  35. data/lib/pulse_meter/sensor/timelined/multi_percentile.rb +34 -0
  36. data/lib/pulse_meter/sensor/timelined/percentile.rb +22 -0
  37. data/lib/pulse_meter/sensor/timelined/uniq_counter.rb +22 -0
  38. data/lib/pulse_meter/sensor/timelined/zset_based.rb +37 -0
  39. data/lib/pulse_meter/sensor/uniq_counter.rb +24 -0
  40. data/lib/pulse_meter/server.rb +0 -0
  41. data/lib/pulse_meter/server/command_line_options.rb +0 -0
  42. data/lib/pulse_meter/server/config_options.rb +0 -0
  43. data/lib/pulse_meter/server/sensors.rb +0 -0
  44. data/lib/pulse_meter/udp_server.rb +45 -0
  45. data/lib/pulse_meter_core.rb +66 -0
  46. data/pulse_meter_core.gemspec +33 -0
  47. data/spec/pulse_meter/command_aggregator/async_spec.rb +53 -0
  48. data/spec/pulse_meter/command_aggregator/sync_spec.rb +25 -0
  49. data/spec/pulse_meter/command_aggregator/udp_spec.rb +45 -0
  50. data/spec/pulse_meter/mixins/dumper_spec.rb +162 -0
  51. data/spec/pulse_meter/mixins/utils_spec.rb +212 -0
  52. data/spec/pulse_meter/observer/extended_spec.rb +92 -0
  53. data/spec/pulse_meter/observer_spec.rb +207 -0
  54. data/spec/pulse_meter/sensor/base_spec.rb +106 -0
  55. data/spec/pulse_meter/sensor/configuration_spec.rb +103 -0
  56. data/spec/pulse_meter/sensor/counter_spec.rb +54 -0
  57. data/spec/pulse_meter/sensor/hashed_counter_spec.rb +43 -0
  58. data/spec/pulse_meter/sensor/hashed_indicator_spec.rb +39 -0
  59. data/spec/pulse_meter/sensor/indicator_spec.rb +43 -0
  60. data/spec/pulse_meter/sensor/multi_spec.rb +137 -0
  61. data/spec/pulse_meter/sensor/timeline_spec.rb +88 -0
  62. data/spec/pulse_meter/sensor/timelined/average_spec.rb +6 -0
  63. data/spec/pulse_meter/sensor/timelined/counter_spec.rb +6 -0
  64. data/spec/pulse_meter/sensor/timelined/hashed_counter_spec.rb +8 -0
  65. data/spec/pulse_meter/sensor/timelined/hashed_indicator_spec.rb +8 -0
  66. data/spec/pulse_meter/sensor/timelined/indicator_spec.rb +6 -0
  67. data/spec/pulse_meter/sensor/timelined/max_spec.rb +7 -0
  68. data/spec/pulse_meter/sensor/timelined/median_spec.rb +7 -0
  69. data/spec/pulse_meter/sensor/timelined/min_spec.rb +7 -0
  70. data/spec/pulse_meter/sensor/timelined/multi_percentile_spec.rb +21 -0
  71. data/spec/pulse_meter/sensor/timelined/percentile_spec.rb +17 -0
  72. data/spec/pulse_meter/sensor/timelined/uniq_counter_spec.rb +9 -0
  73. data/spec/pulse_meter/sensor/uniq_counter_spec.rb +28 -0
  74. data/spec/pulse_meter/udp_server_spec.rb +36 -0
  75. data/spec/pulse_meter_spec.rb +73 -0
  76. data/spec/shared_examples/timeline_sensor.rb +439 -0
  77. data/spec/shared_examples/timelined_subclass.rb +23 -0
  78. data/spec/spec_helper.rb +37 -0
  79. data/spec/support/matchers.rb +34 -0
  80. data/spec/support/observered.rb +40 -0
  81. metadata +342 -0
@@ -0,0 +1,23 @@
1
+ shared_examples_for "timelined subclass" do |events, result, extra_options|
2
+ let(:name){ :counter }
3
+ let(:ttl){ 100 }
4
+ let(:raw_data_ttl){ 10 }
5
+ let(:interval){ 5 }
6
+ let(:reduce_delay){ 3 }
7
+ let(:init_values){ {:ttl => ttl, :raw_data_ttl => raw_data_ttl, :interval => interval, :reduce_delay => reduce_delay}.merge(extra_options || {}) }
8
+ let(:sensor){ described_class.new(name, init_values) }
9
+ let(:epsilon) {1}
10
+
11
+ it "should calculate summarized value #{result.inspect} of #{events.inspect}" do
12
+ interval_id = 0
13
+ start_of_interval = Time.at(interval_id)
14
+ Timecop.freeze(start_of_interval) do
15
+ events.each {|e| sensor.event(e)}
16
+ end
17
+ Timecop.freeze(start_of_interval + interval) do
18
+ data = sensor.timeline(interval + epsilon).first
19
+ data.value.should be_generally_equal(sensor.deflate_safe(result))
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,37 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ $:.unshift File.expand_path('../../lib/', __FILE__)
4
+
5
+ ROOT = File.expand_path('../..', __FILE__)
6
+
7
+ Bundler.require(:default, :test, :development)
8
+
9
+ SimpleCov.start
10
+
11
+ require 'pulse_meter_core'
12
+ PulseMeter.redis = MockRedis.new
13
+
14
+ Dir['spec/support/**/*.rb'].each{|f| require File.join(ROOT, f) }
15
+ Dir['spec/shared_examples/**/*.rb'].each{|f| require File.join(ROOT,f)}
16
+
17
+
18
+ require 'aquarium'
19
+ include Aquarium::Aspects
20
+
21
+ Aspect.new :after, :calls_to => [:event, :event_at], :for_types => [PulseMeter::Sensor::Base, PulseMeter::Sensor::Timeline] do |jp, obj, *args|
22
+ PulseMeter.command_aggregator.wait_for_pending_events
23
+ end
24
+
25
+ PulseMeter.command_aggregator.max_queue_length = 20
26
+
27
+ RSpec.configure do |config|
28
+ config.before(:each) do
29
+ PulseMeter.redis = MockRedis.new
30
+ Timecop.return
31
+ PulseMeter.logger = Logger.new("/dev/null")
32
+ end
33
+ config.filter_run :focus => true
34
+ config.run_all_when_everything_filtered = true
35
+ config.include(Matchers)
36
+ end
37
+
@@ -0,0 +1,34 @@
1
+ module Matchers
2
+
3
+ class GenerallyEqual
4
+
5
+ EPSILON = 0.0001
6
+
7
+ def initialize(expected)
8
+ @expected = expected
9
+ end
10
+
11
+ def matches?(actual)
12
+ @actual = actual
13
+
14
+ if @actual.kind_of?(Float) || @expected.kind_of?(Float)
15
+ (@expected - EPSILON .. @expected + EPSILON).include? @actual
16
+ else
17
+ @expected == @actual
18
+ end
19
+ end
20
+
21
+ def failure_message_for_should
22
+ "expected #{@actual.inspect} to be generally equal to #{@expected.inspect}"
23
+ end
24
+
25
+ def failure_message_for_should_not
26
+ "expected #{@actual.inspect} not to be generally equal to #{@expected.inspect}"
27
+ end
28
+ end
29
+
30
+ def be_generally_equal(expected)
31
+ GenerallyEqual.new(expected)
32
+ end
33
+
34
+ end
@@ -0,0 +1,40 @@
1
+ class ObservedDummy
2
+ attr_reader :count
3
+ @@count = 0
4
+
5
+ def initialize
6
+ @count = 0
7
+ end
8
+
9
+ def incr(value = 1, &proc)
10
+ Timecop.travel(Time.now + 1)
11
+ @count += value
12
+ @count += proc.call if proc
13
+ @count
14
+ end
15
+
16
+ def error
17
+ raise RuntimeError
18
+ end
19
+
20
+ class << self
21
+ def count
22
+ @@count
23
+ end
24
+
25
+ def reset
26
+ @@count = 0
27
+ end
28
+
29
+ def incr(value = 1, &proc)
30
+ Timecop.travel(Time.now + 1)
31
+ @@count += value
32
+ @@count += proc.call if proc
33
+ @@count
34
+ end
35
+
36
+ def error
37
+ raise RuntimeError
38
+ end
39
+ end
40
+ end
metadata ADDED
@@ -0,0 +1,342 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pulse_meter_core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.13
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ilya Averyanov
9
+ - Sergey Averyanov
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-06-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: redis
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: json
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: aquarium
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: hashie
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: mock_redis
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: redcarpet
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: rspec
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: simplecov
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: timecop
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: yard
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ description: Lightweight metrics processor
192
+ email:
193
+ - av@fun-box.ru
194
+ - averyanov@gmail.com
195
+ executables: []
196
+ extensions: []
197
+ extra_rdoc_files: []
198
+ files:
199
+ - .gitignore
200
+ - .rbenv-version
201
+ - .rspec
202
+ - .rvmrc
203
+ - .travis.yml
204
+ - Gemfile
205
+ - LICENSE
206
+ - README.md
207
+ - Rakefile
208
+ - lib/pulse_meter/command_aggregator/async.rb
209
+ - lib/pulse_meter/command_aggregator/sync.rb
210
+ - lib/pulse_meter/command_aggregator/udp.rb
211
+ - lib/pulse_meter/mixins/dumper.rb
212
+ - lib/pulse_meter/mixins/utils.rb
213
+ - lib/pulse_meter/observer.rb
214
+ - lib/pulse_meter/observer/extended.rb
215
+ - lib/pulse_meter/sensor.rb
216
+ - lib/pulse_meter/sensor/base.rb
217
+ - lib/pulse_meter/sensor/configuration.rb
218
+ - lib/pulse_meter/sensor/counter.rb
219
+ - lib/pulse_meter/sensor/hashed_counter.rb
220
+ - lib/pulse_meter/sensor/hashed_indicator.rb
221
+ - lib/pulse_meter/sensor/indicator.rb
222
+ - lib/pulse_meter/sensor/multi.rb
223
+ - lib/pulse_meter/sensor/timeline.rb
224
+ - lib/pulse_meter/sensor/timeline_reduce.rb
225
+ - lib/pulse_meter/sensor/timelined/average.rb
226
+ - lib/pulse_meter/sensor/timelined/counter.rb
227
+ - lib/pulse_meter/sensor/timelined/hashed_counter.rb
228
+ - lib/pulse_meter/sensor/timelined/hashed_indicator.rb
229
+ - lib/pulse_meter/sensor/timelined/indicator.rb
230
+ - lib/pulse_meter/sensor/timelined/max.rb
231
+ - lib/pulse_meter/sensor/timelined/median.rb
232
+ - lib/pulse_meter/sensor/timelined/min.rb
233
+ - lib/pulse_meter/sensor/timelined/multi_percentile.rb
234
+ - lib/pulse_meter/sensor/timelined/percentile.rb
235
+ - lib/pulse_meter/sensor/timelined/uniq_counter.rb
236
+ - lib/pulse_meter/sensor/timelined/zset_based.rb
237
+ - lib/pulse_meter/sensor/uniq_counter.rb
238
+ - lib/pulse_meter/server.rb
239
+ - lib/pulse_meter/server/command_line_options.rb
240
+ - lib/pulse_meter/server/config_options.rb
241
+ - lib/pulse_meter/server/sensors.rb
242
+ - lib/pulse_meter/udp_server.rb
243
+ - lib/pulse_meter_core.rb
244
+ - pulse_meter_core.gemspec
245
+ - spec/pulse_meter/command_aggregator/async_spec.rb
246
+ - spec/pulse_meter/command_aggregator/sync_spec.rb
247
+ - spec/pulse_meter/command_aggregator/udp_spec.rb
248
+ - spec/pulse_meter/mixins/dumper_spec.rb
249
+ - spec/pulse_meter/mixins/utils_spec.rb
250
+ - spec/pulse_meter/observer/extended_spec.rb
251
+ - spec/pulse_meter/observer_spec.rb
252
+ - spec/pulse_meter/sensor/base_spec.rb
253
+ - spec/pulse_meter/sensor/configuration_spec.rb
254
+ - spec/pulse_meter/sensor/counter_spec.rb
255
+ - spec/pulse_meter/sensor/hashed_counter_spec.rb
256
+ - spec/pulse_meter/sensor/hashed_indicator_spec.rb
257
+ - spec/pulse_meter/sensor/indicator_spec.rb
258
+ - spec/pulse_meter/sensor/multi_spec.rb
259
+ - spec/pulse_meter/sensor/timeline_spec.rb
260
+ - spec/pulse_meter/sensor/timelined/average_spec.rb
261
+ - spec/pulse_meter/sensor/timelined/counter_spec.rb
262
+ - spec/pulse_meter/sensor/timelined/hashed_counter_spec.rb
263
+ - spec/pulse_meter/sensor/timelined/hashed_indicator_spec.rb
264
+ - spec/pulse_meter/sensor/timelined/indicator_spec.rb
265
+ - spec/pulse_meter/sensor/timelined/max_spec.rb
266
+ - spec/pulse_meter/sensor/timelined/median_spec.rb
267
+ - spec/pulse_meter/sensor/timelined/min_spec.rb
268
+ - spec/pulse_meter/sensor/timelined/multi_percentile_spec.rb
269
+ - spec/pulse_meter/sensor/timelined/percentile_spec.rb
270
+ - spec/pulse_meter/sensor/timelined/uniq_counter_spec.rb
271
+ - spec/pulse_meter/sensor/uniq_counter_spec.rb
272
+ - spec/pulse_meter/udp_server_spec.rb
273
+ - spec/pulse_meter_spec.rb
274
+ - spec/shared_examples/timeline_sensor.rb
275
+ - spec/shared_examples/timelined_subclass.rb
276
+ - spec/spec_helper.rb
277
+ - spec/support/matchers.rb
278
+ - spec/support/observered.rb
279
+ homepage: https://github.com/savonarola/pulse_meter_core
280
+ licenses: []
281
+ post_install_message:
282
+ rdoc_options: []
283
+ require_paths:
284
+ - lib
285
+ required_ruby_version: !ruby/object:Gem::Requirement
286
+ none: false
287
+ requirements:
288
+ - - ! '>='
289
+ - !ruby/object:Gem::Version
290
+ version: 1.9.2
291
+ required_rubygems_version: !ruby/object:Gem::Requirement
292
+ none: false
293
+ requirements:
294
+ - - ! '>='
295
+ - !ruby/object:Gem::Version
296
+ version: '0'
297
+ segments:
298
+ - 0
299
+ hash: 887814886917484037
300
+ requirements: []
301
+ rubyforge_project:
302
+ rubygems_version: 1.8.23
303
+ signing_key:
304
+ specification_version: 3
305
+ summary: Lightweight Redis-based metrics aggregator and processor with simple CLI
306
+ interface
307
+ test_files:
308
+ - spec/pulse_meter/command_aggregator/async_spec.rb
309
+ - spec/pulse_meter/command_aggregator/sync_spec.rb
310
+ - spec/pulse_meter/command_aggregator/udp_spec.rb
311
+ - spec/pulse_meter/mixins/dumper_spec.rb
312
+ - spec/pulse_meter/mixins/utils_spec.rb
313
+ - spec/pulse_meter/observer/extended_spec.rb
314
+ - spec/pulse_meter/observer_spec.rb
315
+ - spec/pulse_meter/sensor/base_spec.rb
316
+ - spec/pulse_meter/sensor/configuration_spec.rb
317
+ - spec/pulse_meter/sensor/counter_spec.rb
318
+ - spec/pulse_meter/sensor/hashed_counter_spec.rb
319
+ - spec/pulse_meter/sensor/hashed_indicator_spec.rb
320
+ - spec/pulse_meter/sensor/indicator_spec.rb
321
+ - spec/pulse_meter/sensor/multi_spec.rb
322
+ - spec/pulse_meter/sensor/timeline_spec.rb
323
+ - spec/pulse_meter/sensor/timelined/average_spec.rb
324
+ - spec/pulse_meter/sensor/timelined/counter_spec.rb
325
+ - spec/pulse_meter/sensor/timelined/hashed_counter_spec.rb
326
+ - spec/pulse_meter/sensor/timelined/hashed_indicator_spec.rb
327
+ - spec/pulse_meter/sensor/timelined/indicator_spec.rb
328
+ - spec/pulse_meter/sensor/timelined/max_spec.rb
329
+ - spec/pulse_meter/sensor/timelined/median_spec.rb
330
+ - spec/pulse_meter/sensor/timelined/min_spec.rb
331
+ - spec/pulse_meter/sensor/timelined/multi_percentile_spec.rb
332
+ - spec/pulse_meter/sensor/timelined/percentile_spec.rb
333
+ - spec/pulse_meter/sensor/timelined/uniq_counter_spec.rb
334
+ - spec/pulse_meter/sensor/uniq_counter_spec.rb
335
+ - spec/pulse_meter/udp_server_spec.rb
336
+ - spec/pulse_meter_spec.rb
337
+ - spec/shared_examples/timeline_sensor.rb
338
+ - spec/shared_examples/timelined_subclass.rb
339
+ - spec/spec_helper.rb
340
+ - spec/support/matchers.rb
341
+ - spec/support/observered.rb
342
+ has_rdoc: