fnordmetric 0.5.1 → 0.5.2

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 (65) hide show
  1. data/.travis.yml +1 -0
  2. data/VERSION +1 -1
  3. data/doc/preview1.png +0 -0
  4. data/doc/preview2.png +0 -0
  5. data/doc/ulm_stats.rb +622 -0
  6. data/doc/version +1 -0
  7. data/fnordmetric.gemspec +16 -38
  8. data/haml/app.haml +12 -5
  9. data/lib/fnordmetric.rb +3 -0
  10. data/lib/fnordmetric/app.rb +19 -10
  11. data/lib/fnordmetric/bars_widget.rb +26 -0
  12. data/lib/fnordmetric/context.rb +3 -3
  13. data/lib/fnordmetric/gauge.rb +20 -0
  14. data/lib/fnordmetric/gauge_calculations.rb +28 -4
  15. data/lib/fnordmetric/gauge_modifiers.rb +39 -6
  16. data/lib/fnordmetric/logger.rb +19 -0
  17. data/lib/fnordmetric/numbers_widget.rb +5 -15
  18. data/lib/fnordmetric/pie_widget.rb +23 -0
  19. data/lib/fnordmetric/standalone.rb +1 -1
  20. data/lib/fnordmetric/timeline_widget.rb +16 -23
  21. data/lib/fnordmetric/toplist_widget.rb +25 -0
  22. data/lib/fnordmetric/widget.rb +3 -3
  23. data/pub/{fnordmetric/fnordmetric.css → fnordmetric.css} +46 -36
  24. data/pub/fnordmetric.js +1069 -0
  25. data/pub/loader.gif +0 -0
  26. data/pub/{highcharts → vendor}/highcharts.js +0 -0
  27. data/pub/{jquery-1.6.1.min.js → vendor/jquery-1.6.1.min.js} +0 -0
  28. data/readme.rdoc +228 -311
  29. data/spec/app_spec.rb +63 -3
  30. data/spec/gauge_modifiers_spec.rb +157 -2
  31. data/spec/gauge_spec.rb +143 -12
  32. data/spec/widget_spec.rb +18 -18
  33. metadata +33 -58
  34. data/.document +0 -5
  35. data/_spec/app_spec.rb +0 -178
  36. data/_spec/cache_spec.rb +0 -53
  37. data/_spec/combine_metric_spec.rb +0 -19
  38. data/_spec/core_spec.rb +0 -50
  39. data/_spec/count_metric_spec.rb +0 -32
  40. data/_spec/dashboard_spec.rb +0 -67
  41. data/_spec/event_spec.rb +0 -46
  42. data/_spec/metric_spec.rb +0 -118
  43. data/_spec/report_spec.rb +0 -87
  44. data/_spec/sum_metric_spec.rb +0 -33
  45. data/_spec/widget_spec.rb +0 -107
  46. data/doc/example_server.rb +0 -56
  47. data/doc/import_dump.rb +0 -26
  48. data/pub/fnordmetric/fnordmetric.js +0 -543
  49. data/pub/fnordmetric/widget_numbers.js +0 -71
  50. data/pub/fnordmetric/widget_timeline.css +0 -0
  51. data/pub/fnordmetric/widget_timeline.js +0 -110
  52. data/pub/highcharts/adapters/mootools-adapter.js +0 -12
  53. data/pub/highcharts/adapters/mootools-adapter.src.js +0 -243
  54. data/pub/highcharts/adapters/prototype-adapter.js +0 -14
  55. data/pub/highcharts/adapters/prototype-adapter.src.js +0 -284
  56. data/pub/highcharts/highcharts.src.js +0 -11103
  57. data/pub/highcharts/modules/exporting.js +0 -22
  58. data/pub/highcharts/modules/exporting.src.js +0 -703
  59. data/pub/highcharts/themes/dark-blue.js +0 -268
  60. data/pub/highcharts/themes/dark-green.js +0 -268
  61. data/pub/highcharts/themes/gray.js +0 -262
  62. data/pub/highcharts/themes/grid.js +0 -97
  63. data/pub/raphael-min.js +0 -8
  64. data/pub/raphael-utils.js +0 -221
  65. data/ulm_stats.rb +0 -198
@@ -41,7 +41,7 @@ describe FnordMetric::Widget do
41
41
 
42
42
  it "should raise an error if two gauges with different ticks are added" do
43
43
  lambda{
44
- widget = FnordMetric::Widget.new(
44
+ widget = FnordMetric::TimelineWidget.new(
45
45
  :title => "My Widget",
46
46
  :gauges => [@gauge1, @gauge2]
47
47
  )
@@ -49,57 +49,57 @@ describe FnordMetric::Widget do
49
49
  end
50
50
 
51
51
  it "should generate the correct default range for daily graphs without include current" do
52
- widget = FnordMetric::Widget.new(
52
+ widget = FnordMetric::TimelineWidget.new(
53
53
  :title => "My Widget",
54
54
  :include_current => false,
55
55
  :gauges => [@gauge1]
56
56
  )
57
57
  range = widget.default_range(Time.utc(1992,01,13,18,23,23))
58
- Time.at(range.last).utc.should == Time.utc(1992,01,13,00,00)
59
- Time.at(range.first).utc.should == Time.utc(1991,12,14,00,00)
58
+ Time.at(range.last).utc.should == Time.utc(1992,01,12,00,00)
59
+ Time.at(range.first).utc.should == Time.utc(1991,12,13,00,00)
60
60
  end
61
61
 
62
62
  it "should generate the correct default range for daily graphs with include current" do
63
- widget = FnordMetric::Widget.new(
63
+ widget = FnordMetric::TimelineWidget.new(
64
64
  :title => "My Widget",
65
65
  :gauges => [@gauge1]
66
66
  )
67
67
  range = widget.default_range(Time.utc(1992,01,13,18,23,23))
68
- Time.at(range.last).utc.should == Time.utc(1992,01,14,00,00)
69
- Time.at(range.first).utc.should == Time.utc(1991,12,15,00,00)
68
+ Time.at(range.last).utc.should == Time.utc(1992,01,13,00,00)
69
+ Time.at(range.first).utc.should == Time.utc(1991,12,14,00,00)
70
70
  end
71
71
 
72
72
  it "should generate the correct default range for hourly graphs with include current" do
73
- widget = FnordMetric::Widget.new(
73
+ widget = FnordMetric::TimelineWidget.new(
74
74
  :title => "My Widget",
75
75
  :gauges => [@gauge2]
76
76
  )
77
77
  range = widget.default_range(Time.utc(1992,01,13,18,23,23))
78
- Time.at(range.last).utc.should == Time.utc(1992,01,13,19,00)
79
- Time.at(range.first).utc.should == Time.utc(1992,01,12,19,00)
78
+ Time.at(range.last).utc.should == Time.utc(1992,01,13,18,00)
79
+ Time.at(range.first).utc.should == Time.utc(1992,01,12,18,00)
80
80
  end
81
81
 
82
82
  it "should generate the correct default range for hourly graphs with include current" do
83
- widget = FnordMetric::Widget.new(
83
+ widget = FnordMetric::TimelineWidget.new(
84
84
  :title => "My Widget",
85
85
  :include_current => false,
86
86
  :gauges => [@gauge2]
87
87
  )
88
88
  range = widget.default_range(Time.utc(1992,01,13,18,23,23))
89
- Time.at(range.last).utc.should == Time.utc(1992,01,13,18,00)
90
- Time.at(range.first).utc.should == Time.utc(1992,01,12,18,00)
89
+ Time.at(range.last).utc.should == Time.utc(1992,01,13,17,00)
90
+ Time.at(range.first).utc.should == Time.utc(1992,01,12,17,00)
91
91
  end
92
92
 
93
93
  it "should generate the correct ticks" do
94
- widget = FnordMetric::Widget.new(
94
+ widget = FnordMetric::TimelineWidget.new(
95
95
  :title => "My Widget",
96
96
  :gauges => [@gauge2]
97
97
  )
98
98
  Delorean.time_travel_to(Time.utc(1992,01,13,18,23,23)) do
99
- Time.at(widget.ticks[0]).should == Time.utc(1992,01,12,19,00)
100
- Time.at(widget.ticks[1]).should == Time.utc(1992,01,12,20,00)
101
- Time.at(widget.ticks[-1]).should == Time.utc(1992,01,13,19,00)
102
- Time.at(widget.ticks[-2]).should == Time.utc(1992,01,13,18,00)
99
+ Time.at(widget.ticks[0]).utc.should == Time.utc(1992,01,12,18,00)
100
+ Time.at(widget.ticks[1]).utc.should == Time.utc(1992,01,12,19,00)
101
+ Time.at(widget.ticks[-1]).utc.should == Time.utc(1992,01,13,18,00)
102
+ Time.at(widget.ticks[-2]).utc.should == Time.utc(1992,01,13,17,00)
103
103
  end
104
104
  end
105
105
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: fnordmetric
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.1
5
+ version: 0.5.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Asmuth
@@ -10,11 +10,12 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-12-10 00:00:00 +01:00
13
+ date: 2011-12-26 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: mongoid
18
+ prerelease: false
18
19
  requirement: &id001 !ruby/object:Gem::Requirement
19
20
  none: false
20
21
  requirements:
@@ -22,10 +23,10 @@ dependencies:
22
23
  - !ruby/object:Gem::Version
23
24
  version: 2.2.0
24
25
  type: :runtime
25
- prerelease: false
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongo
29
+ prerelease: false
29
30
  requirement: &id002 !ruby/object:Gem::Requirement
30
31
  none: false
31
32
  requirements:
@@ -33,10 +34,10 @@ dependencies:
33
34
  - !ruby/object:Gem::Version
34
35
  version: 1.4.0
35
36
  type: :runtime
36
- prerelease: false
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: bson_ext
40
+ prerelease: false
40
41
  requirement: &id003 !ruby/object:Gem::Requirement
41
42
  none: false
42
43
  requirements:
@@ -44,10 +45,10 @@ dependencies:
44
45
  - !ruby/object:Gem::Version
45
46
  version: 1.4.0
46
47
  type: :runtime
47
- prerelease: false
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: sinatra
51
+ prerelease: false
51
52
  requirement: &id004 !ruby/object:Gem::Requirement
52
53
  none: false
53
54
  requirements:
@@ -55,10 +56,10 @@ dependencies:
55
56
  - !ruby/object:Gem::Version
56
57
  version: 1.2.6
57
58
  type: :runtime
58
- prerelease: false
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: redis
62
+ prerelease: false
62
63
  requirement: &id005 !ruby/object:Gem::Requirement
63
64
  none: false
64
65
  requirements:
@@ -66,10 +67,10 @@ dependencies:
66
67
  - !ruby/object:Gem::Version
67
68
  version: 2.2.2
68
69
  type: :runtime
69
- prerelease: false
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: eventmachine
73
+ prerelease: false
73
74
  requirement: &id006 !ruby/object:Gem::Requirement
74
75
  none: false
75
76
  requirements:
@@ -77,10 +78,10 @@ dependencies:
77
78
  - !ruby/object:Gem::Version
78
79
  version: "0"
79
80
  type: :runtime
80
- prerelease: false
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: em-hiredis
84
+ prerelease: false
84
85
  requirement: &id007 !ruby/object:Gem::Requirement
85
86
  none: false
86
87
  requirements:
@@ -88,10 +89,10 @@ dependencies:
88
89
  - !ruby/object:Gem::Version
89
90
  version: "0"
90
91
  type: :runtime
91
- prerelease: false
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: json
95
+ prerelease: false
95
96
  requirement: &id008 !ruby/object:Gem::Requirement
96
97
  none: false
97
98
  requirements:
@@ -99,10 +100,10 @@ dependencies:
99
100
  - !ruby/object:Gem::Version
100
101
  version: "0"
101
102
  type: :runtime
102
- prerelease: false
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: haml
106
+ prerelease: false
106
107
  requirement: &id009 !ruby/object:Gem::Requirement
107
108
  none: false
108
109
  requirements:
@@ -110,10 +111,10 @@ dependencies:
110
111
  - !ruby/object:Gem::Version
111
112
  version: "0"
112
113
  type: :runtime
113
- prerelease: false
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: rack
117
+ prerelease: false
117
118
  requirement: &id010 !ruby/object:Gem::Requirement
118
119
  none: false
119
120
  requirements:
@@ -121,10 +122,10 @@ dependencies:
121
122
  - !ruby/object:Gem::Version
122
123
  version: "0"
123
124
  type: :runtime
124
- prerelease: false
125
125
  version_requirements: *id010
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rack-test
128
+ prerelease: false
128
129
  requirement: &id011 !ruby/object:Gem::Requirement
129
130
  none: false
130
131
  requirements:
@@ -132,10 +133,10 @@ dependencies:
132
133
  - !ruby/object:Gem::Version
133
134
  version: "0"
134
135
  type: :runtime
135
- prerelease: false
136
136
  version_requirements: *id011
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: yajl-ruby
139
+ prerelease: false
139
140
  requirement: &id012 !ruby/object:Gem::Requirement
140
141
  none: false
141
142
  requirements:
@@ -143,10 +144,10 @@ dependencies:
143
144
  - !ruby/object:Gem::Version
144
145
  version: "0"
145
146
  type: :runtime
146
- prerelease: false
147
147
  version_requirements: *id012
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: thin
150
+ prerelease: false
150
151
  requirement: &id013 !ruby/object:Gem::Requirement
151
152
  none: false
152
153
  requirements:
@@ -154,10 +155,10 @@ dependencies:
154
155
  - !ruby/object:Gem::Version
155
156
  version: "0"
156
157
  type: :runtime
157
- prerelease: false
158
158
  version_requirements: *id013
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: delorean
161
+ prerelease: false
161
162
  requirement: &id014 !ruby/object:Gem::Requirement
162
163
  none: false
163
164
  requirements:
@@ -165,10 +166,10 @@ dependencies:
165
166
  - !ruby/object:Gem::Version
166
167
  version: "0"
167
168
  type: :development
168
- prerelease: false
169
169
  version_requirements: *id014
170
170
  - !ruby/object:Gem::Dependency
171
171
  name: rspec
172
+ prerelease: false
172
173
  requirement: &id015 !ruby/object:Gem::Requirement
173
174
  none: false
174
175
  requirements:
@@ -176,10 +177,10 @@ dependencies:
176
177
  - !ruby/object:Gem::Version
177
178
  version: 2.6.0
178
179
  type: :development
179
- prerelease: false
180
180
  version_requirements: *id015
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: shoulda
183
+ prerelease: false
183
184
  requirement: &id016 !ruby/object:Gem::Requirement
184
185
  none: false
185
186
  requirements:
@@ -187,10 +188,10 @@ dependencies:
187
188
  - !ruby/object:Gem::Version
188
189
  version: "0"
189
190
  type: :development
190
- prerelease: false
191
191
  version_requirements: *id016
192
192
  - !ruby/object:Gem::Dependency
193
193
  name: bundler
194
+ prerelease: false
194
195
  requirement: &id017 !ruby/object:Gem::Requirement
195
196
  none: false
196
197
  requirements:
@@ -198,10 +199,10 @@ dependencies:
198
199
  - !ruby/object:Gem::Version
199
200
  version: 1.0.0
200
201
  type: :development
201
- prerelease: false
202
202
  version_requirements: *id017
203
203
  - !ruby/object:Gem::Dependency
204
204
  name: jeweler
205
+ prerelease: false
205
206
  requirement: &id018 !ruby/object:Gem::Requirement
206
207
  none: false
207
208
  requirements:
@@ -209,7 +210,6 @@ dependencies:
209
210
  - !ruby/object:Gem::Version
210
211
  version: 1.5.2
211
212
  type: :development
212
- prerelease: false
213
213
  version_requirements: *id018
214
214
  description: FnordMetric is a Ruby Event-Tracking gem on steroids
215
215
  email: paul@paulasmuth.com
@@ -220,30 +220,22 @@ extensions: []
220
220
  extra_rdoc_files: []
221
221
 
222
222
  files:
223
- - .document
223
+ - .travis.yml
224
224
  - Gemfile
225
225
  - Gemfile.lock
226
226
  - Rakefile
227
227
  - VERSION
228
- - _spec/app_spec.rb
229
- - _spec/cache_spec.rb
230
- - _spec/combine_metric_spec.rb
231
- - _spec/core_spec.rb
232
- - _spec/count_metric_spec.rb
233
- - _spec/dashboard_spec.rb
234
- - _spec/event_spec.rb
235
- - _spec/metric_spec.rb
236
- - _spec/report_spec.rb
237
- - _spec/sum_metric_spec.rb
238
- - _spec/widget_spec.rb
239
- - doc/example_server.rb
240
- - doc/import_dump.rb
228
+ - doc/preview1.png
229
+ - doc/preview2.png
230
+ - doc/ulm_stats.rb
231
+ - doc/version
241
232
  - fnordmetric.gemspec
242
233
  - haml/app.haml
243
234
  - haml/widget.haml
244
235
  - lib/fnordmetric.rb
245
236
  - lib/fnordmetric/app.rb
246
237
  - lib/fnordmetric/average_metric.rb
238
+ - lib/fnordmetric/bars_widget.rb
247
239
  - lib/fnordmetric/cache.rb
248
240
  - lib/fnordmetric/combine_metric.rb
249
241
  - lib/fnordmetric/context.rb
@@ -260,34 +252,21 @@ files:
260
252
  - lib/fnordmetric/metric_api.rb
261
253
  - lib/fnordmetric/namespace.rb
262
254
  - lib/fnordmetric/numbers_widget.rb
255
+ - lib/fnordmetric/pie_widget.rb
263
256
  - lib/fnordmetric/report.rb
264
257
  - lib/fnordmetric/session.rb
265
258
  - lib/fnordmetric/standalone.rb
266
259
  - lib/fnordmetric/sum_metric.rb
267
260
  - lib/fnordmetric/timeline_widget.rb
261
+ - lib/fnordmetric/toplist_widget.rb
268
262
  - lib/fnordmetric/widget.rb
269
263
  - lib/fnordmetric/worker.rb
270
- - pub/fnordmetric/fnordmetric.css
271
- - pub/fnordmetric/fnordmetric.js
272
- - pub/fnordmetric/widget_numbers.js
273
- - pub/fnordmetric/widget_timeline.css
274
- - pub/fnordmetric/widget_timeline.js
275
- - pub/highcharts/adapters/mootools-adapter.js
276
- - pub/highcharts/adapters/mootools-adapter.src.js
277
- - pub/highcharts/adapters/prototype-adapter.js
278
- - pub/highcharts/adapters/prototype-adapter.src.js
279
- - pub/highcharts/highcharts.js
280
- - pub/highcharts/highcharts.src.js
281
- - pub/highcharts/modules/exporting.js
282
- - pub/highcharts/modules/exporting.src.js
283
- - pub/highcharts/themes/dark-blue.js
284
- - pub/highcharts/themes/dark-green.js
285
- - pub/highcharts/themes/gray.js
286
- - pub/highcharts/themes/grid.js
287
- - pub/jquery-1.6.1.min.js
288
- - pub/raphael-min.js
289
- - pub/raphael-utils.js
264
+ - pub/fnordmetric.css
265
+ - pub/fnordmetric.js
266
+ - pub/loader.gif
290
267
  - pub/sprite.png
268
+ - pub/vendor/highcharts.js
269
+ - pub/vendor/jquery-1.6.1.min.js
291
270
  - readme.rdoc
292
271
  - spec/app_spec.rb
293
272
  - spec/context_spec.rb
@@ -300,7 +279,6 @@ files:
300
279
  - spec/spec_helper.rb
301
280
  - spec/widget_spec.rb
302
281
  - spec/worker_spec.rb
303
- - ulm_stats.rb
304
282
  has_rdoc: true
305
283
  homepage: http://github.com/paulasmuth/fnordmetric
306
284
  licenses:
@@ -315,9 +293,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
315
293
  requirements:
316
294
  - - ">="
317
295
  - !ruby/object:Gem::Version
318
- hash: -764930577
319
- segments:
320
- - 0
321
296
  version: "0"
322
297
  required_rubygems_version: !ruby/object:Gem::Requirement
323
298
  none: false
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
@@ -1,178 +0,0 @@
1
- require ::File.expand_path('../spec_helper.rb', __FILE__)
2
-
3
- include Rack::Test::Methods
4
-
5
- describe "app" do
6
-
7
- before(:each) do
8
- FnordMetric::Event.destroy_all
9
- end
10
-
11
- def app
12
- @app ||= FnordMetric::App
13
- end
14
-
15
- it "should redirect to the default dashboard" do
16
- get "/"
17
- last_response.status.should == 302
18
- last_response.location.should == "http://example.org/dashboard/default"
19
- end
20
-
21
- it "should render the dashboard" do
22
- FnordMetric.dashboard("Deine Mama"){|dash|}
23
- get "/dashboard/default"
24
- last_response.status.should == 200
25
- last_response.body.should include("Deine Mama")
26
- end
27
-
28
- it "should render the right dashboard" do
29
- FnordMetric.dashboard("Deine Mama"){|dash|}
30
- FnordMetric.dashboard("My Dashboard"){|dash|}
31
- get "/dashboard/DeineMama"
32
- last_response.status.should == 200
33
- last_response.body.should include("Deine Mama")
34
- get "/dashboard/MyDashboard"
35
- last_response.status.should == 200
36
- last_response.body.should include("My Dashboard")
37
- end
38
-
39
- it "should track an event without auth" do
40
- post "/events", :type => "myevent", :fnord => "foobar"
41
- last_response.status.should == 200
42
- FnordMetric::Event.last.type.should == "myevent"
43
- FnordMetric::Event.last.fnord.should == "foobar"
44
- end
45
-
46
- it "should return 400 if no type is provided" do
47
- post "/events", :fnord => "foobar"
48
- last_response.status.should == 400
49
- last_response.body.should == "please specify the event_type"
50
- end
51
-
52
- it "should track an event in the past" do
53
- my_time = (Time.now-3.years).to_i
54
- post "/events", :type => "myevent", :time => my_time
55
- last_response.status.should == 200
56
- FnordMetric::Event.last.type.should == "myevent"
57
- FnordMetric::Event.last.time.should == my_time
58
- end
59
-
60
- it "should track an event with integer data" do
61
- post "/events", :type => "myevent", :blubb => "123"
62
- last_response.status.should == 200
63
- FnordMetric::Event.last.type.should == "myevent"
64
- FnordMetric::Event.last.blubb.should == 123
65
- end
66
-
67
- it "should track an event with float data" do
68
- post "/events", :type => "myevent", :blubb => "42.23"
69
- last_response.status.should == 200
70
- FnordMetric::Event.last.type.should == "myevent"
71
- FnordMetric::Event.last.blubb.should == 42.23
72
- end
73
-
74
-
75
- describe "metrics api" do
76
-
77
- before(:each) do
78
- FnordMetric::Event.destroy_all
79
- FnordMetric.metric('my_event_count', :count => true, :types => [:my_event_type])
80
- FnordMetric.track('my_event_type', :time => 33.hours.ago)
81
- FnordMetric.track('my_event_type', :time => 32.hours.ago)
82
- FnordMetric.track('my_event_type', :time => 29.hours.ago)
83
- FnordMetric.track('my_event_type', :time => 27.hours.ago)
84
- FnordMetric.track('my_event_type', :time => 26.hours.ago)
85
- FnordMetric.track('my_event_type', :time => 13.hours.ago)
86
- FnordMetric.track('my_event_type', :time => 12.hours.ago)
87
- FnordMetric.track('my_event_type', :time => 2.hours.ago)
88
- FnordMetric.track('my_event_type', :time => 3.hours.ago)
89
- end
90
-
91
- it "should return the right answer for: /metric/:name" do
92
- get "/metric/my_event_count"
93
- JSON.parse(last_response.body)["value"].to_i.should == 9
94
- end
95
-
96
- it "should return the right answer for: /metric/:name?at=timestamp" do
97
- get "/metric/my_event_count", :at => 18.hours.ago.to_i.to_s
98
- JSON.parse(last_response.body)["value"].to_i.should == 5
99
- end
100
-
101
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp" do
102
- get "/metric/my_event_count", :at => "#{30.hours.ago.to_i}-#{20.hours.ago.to_i}"
103
- JSON.parse(last_response.body)["value"].to_i.should == 3
104
- end
105
-
106
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
107
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
108
- JSON.parse(last_response.body)["values"].length.should == 6
109
- end
110
-
111
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
112
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
113
- JSON.parse(last_response.body)["values"][0].first.should == 34.hours.ago.to_i
114
- JSON.parse(last_response.body)["values"][0].last.should == 3
115
- end
116
-
117
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
118
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
119
- JSON.parse(last_response.body)["values"][1].first.should == 28.hours.ago.to_i
120
- JSON.parse(last_response.body)["values"][1].last.should == 2
121
- end
122
-
123
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
124
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
125
- JSON.parse(last_response.body)["values"][2].first.should == 22.hours.ago.to_i
126
- JSON.parse(last_response.body)["values"][2].last.should == 0
127
- end
128
-
129
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
130
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
131
- JSON.parse(last_response.body)["values"][3].first.should == 16.hours.ago.to_i
132
- JSON.parse(last_response.body)["values"][3].last.should == 2
133
- end
134
-
135
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
136
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i, :delta => true
137
- JSON.parse(last_response.body)["values"][5].first.should == 4.hours.ago.to_i
138
- JSON.parse(last_response.body)["values"][5].last.should == 2
139
- end
140
-
141
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
142
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
143
- JSON.parse(last_response.body)["values"].length.should == 6
144
- end
145
-
146
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
147
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
148
- JSON.parse(last_response.body)["values"][0].first.should == 34.hours.ago.to_i
149
- JSON.parse(last_response.body)["values"][0].last.should == 0
150
- end
151
-
152
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
153
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
154
- JSON.parse(last_response.body)["values"][1].first.should == 28.hours.ago.to_i
155
- JSON.parse(last_response.body)["values"][1].last.should == 3
156
- end
157
-
158
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
159
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
160
- JSON.parse(last_response.body)["values"][2].first.should == 22.hours.ago.to_i
161
- JSON.parse(last_response.body)["values"][2].last.should == 5
162
- end
163
-
164
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
165
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
166
- JSON.parse(last_response.body)["values"][3].first.should == 16.hours.ago.to_i
167
- JSON.parse(last_response.body)["values"][3].last.should == 5
168
- end
169
-
170
- it "should return the right answer for: /metric/:name?at=timestamp-timstamp&tick=seconds" do
171
- get "/metric/my_event_count", :at => "#{34.hours.ago.to_i}-#{1.hour.ago.to_i}", :tick => 6.hours.to_i
172
- JSON.parse(last_response.body)["values"][5].first.should == 4.hours.ago.to_i
173
- JSON.parse(last_response.body)["values"][5].last.should == 7
174
- end
175
-
176
- end
177
-
178
- end