fnordmetric 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. data/Gemfile +6 -0
  2. data/Gemfile.lock +21 -0
  3. data/Procfile +1 -2
  4. data/VERSION +1 -1
  5. data/_spec/app_spec.rb +178 -0
  6. data/{spec → _spec}/cache_spec.rb +0 -0
  7. data/{spec → _spec}/combine_metric_spec.rb +0 -0
  8. data/{spec → _spec}/core_spec.rb +0 -0
  9. data/{spec → _spec}/count_metric_spec.rb +0 -0
  10. data/_spec/dashboard_spec.rb +67 -0
  11. data/_spec/event_spec.rb +46 -0
  12. data/{spec → _spec}/metric_spec.rb +0 -0
  13. data/{spec → _spec}/report_spec.rb +0 -0
  14. data/{spec → _spec}/sum_metric_spec.rb +0 -0
  15. data/_spec/widget_spec.rb +107 -0
  16. data/doc/import_dump.rb +26 -0
  17. data/em_runner.rb +33 -0
  18. data/fnordmetric.gemspec +59 -20
  19. data/haml/app.haml +26 -12
  20. data/lib/fnordmetric.rb +150 -15
  21. data/lib/fnordmetric/app.rb +70 -11
  22. data/lib/fnordmetric/cache.rb +4 -4
  23. data/lib/fnordmetric/context.rb +65 -0
  24. data/lib/fnordmetric/dashboard.rb +16 -12
  25. data/lib/fnordmetric/event.rb +65 -15
  26. data/lib/fnordmetric/gauge.rb +46 -0
  27. data/lib/fnordmetric/gauge_calculations.rb +43 -0
  28. data/lib/fnordmetric/gauge_modifiers.rb +43 -0
  29. data/lib/fnordmetric/inbound_stream.rb +66 -0
  30. data/lib/fnordmetric/logger.rb +38 -0
  31. data/lib/fnordmetric/namespace.rb +120 -0
  32. data/lib/fnordmetric/numbers_widget.rb +29 -11
  33. data/lib/fnordmetric/session.rb +131 -0
  34. data/lib/fnordmetric/standalone.rb +31 -0
  35. data/lib/fnordmetric/timeline_widget.rb +29 -9
  36. data/lib/fnordmetric/widget.rb +50 -45
  37. data/lib/fnordmetric/worker.rb +80 -0
  38. data/pub/fnordmetric/fnordmetric.css +76 -9
  39. data/pub/fnordmetric/fnordmetric.js +541 -42
  40. data/pub/raphael-min.js +8 -0
  41. data/pub/raphael-utils.js +221 -0
  42. data/readme.rdoc +172 -27
  43. data/server.rb +22 -0
  44. data/spec/app_spec.rb +359 -117
  45. data/spec/context_spec.rb +42 -0
  46. data/spec/dashboard_spec.rb +7 -47
  47. data/spec/event_spec.rb +114 -33
  48. data/spec/gauge_modifiers_spec.rb +276 -0
  49. data/spec/gauge_spec.rb +128 -0
  50. data/spec/namespace_spec.rb +104 -0
  51. data/spec/session_spec.rb +231 -0
  52. data/spec/spec_helper.rb +27 -4
  53. data/spec/widget_spec.rb +81 -75
  54. data/spec/worker_spec.rb +37 -0
  55. data/test_stream.sh +187 -0
  56. data/ulm_stats.rb +198 -0
  57. metadata +114 -35
  58. data/lib/fnordmetric/core.rb +0 -66
  59. data/lib/fnordmetric/engine.rb +0 -3
data/ulm_stats.rb ADDED
@@ -0,0 +1,198 @@
1
+ $: << ::File.expand_path("../../fnordmetric/lib/", __FILE__)
2
+ require "fnordmetric"
3
+
4
+ # todos: old stylesheet, numbers widget, dump-to-file(+reimport)
5
+ FnordMetric.namespace :ulmstats do
6
+
7
+ # user activity
8
+ gauge :skip_votes, :tick => 1.day.to_i
9
+ gauge :yes_votes, :tick => 1.day.to_i
10
+ gauge :maybe_votes, :tick => 1.day.to_i
11
+
12
+ event(:skip_vote){ incr :skip_votes }
13
+ event(:action_skip){ incr :skip_votes }
14
+ event(:yes_vote){ incr :yes_votes }
15
+ event(:action_yes){ incr :yes_votes }
16
+ event(:maybe_vote){ incr :maybe_votes }
17
+ event(:action_maybe){ incr :maybe_votes }
18
+
19
+ widget 'UserActivity', {
20
+ :title => "Yes/No/Skip-Votes",
21
+ :type => :timeline,
22
+ :include_current => false,
23
+ :gauges => [:skip_votes, :yes_votes, :maybe_votes]
24
+ }
25
+
26
+ widget 'UserActivity', {
27
+ :title => "Yes/No/Skip Numbers",
28
+ :type => :numbers,
29
+ :gauges => [:skip_votes, :yes_votes, :maybe_votes]
30
+ }
31
+
32
+
33
+ gauge :messages_sent, :tick => 1.day.to_i
34
+ gauge :messages_read, :tick => 1.day.to_i
35
+ gauge :winks_sent, :tick => 1.day.to_i
36
+
37
+ event(:action_wink){ incr :winks_sent }
38
+ event(:wink_sent){ incr :winks_sent }
39
+ event(:message_sent){ incr :messages_sent }
40
+ event(:message_read){ incr :messages_read }
41
+
42
+ widget 'UserActivity', {
43
+ :title => "Messages sent/read",
44
+ :type => :timeline,
45
+ :include_current => false,
46
+ :gauges => [:messages_sent, :messages_read]
47
+ }
48
+
49
+ widget 'UserActivity', {
50
+ :title => "Winks sent",
51
+ :type => :timeline,
52
+ :include_current => false,
53
+ :gauges => [:winks_sent]
54
+ }
55
+
56
+ widget 'UserActivity', {
57
+ :title => "Messages sent+read/Winks Numbers",
58
+ :type => :numbers,
59
+ :gauges => [:messages_sent, :messages_read, :winks_sent]
60
+ }
61
+
62
+ gauge :events_per_minute, :tick => 60
63
+ gauge :uniques_daily, :tick => 1.day.to_i, :unique => true
64
+
65
+ event :"*" do
66
+ incr :events_per_minute
67
+ incr :uniques_daily
68
+ end
69
+
70
+ widget 'TrafficChannels', {
71
+ :title => "Daily Uniques",
72
+ :type => :timeline,
73
+ :width => 70,
74
+ :gauges => :uniques_daily
75
+ }
76
+
77
+ widget 'TrafficChannels', {
78
+ :title => "Events per Minute",
79
+ :type => :timeline,
80
+ :width => 30,
81
+ :gauges => :events_per_minute
82
+ }
83
+
84
+ #widget 'TrafficChannels', {
85
+ # :title => "Daily uniques / EPM",
86
+ # :type => :numbers,
87
+ # :gauges => [:uniques_daily, :events_per_minute]
88
+ #}
89
+
90
+ gauge :mails_sent, :tick => 1.day.to_i
91
+ gauge :mails_clicked, :tick => 1.day.to_i
92
+
93
+ event(:mail_sent){ incr :mails_sent }
94
+ event(:mail_clicked){ incr :mails_clicked }
95
+
96
+ widget 'TrafficChannels', {
97
+ :title => "Mails sent/read",
98
+ :type => :timeline,
99
+ :gauges => [:mails_sent, :mails_clicked]
100
+ }
101
+
102
+ widget 'TrafficChannels', {
103
+ :title => "Mail sent/read Numbers",
104
+ :type => :numbers,
105
+ :gauges => [:mails_sent, :mails_clicked]
106
+ }
107
+
108
+ gauge :app_requests_sent, :tick => 1.day.to_i
109
+ gauge :app_requests_clicked, :tick => 1.day.to_i
110
+
111
+ event(:app_request_sent){ incr :app_requests_sent }
112
+ event(:app_request_click){ incr :app_requests_clicked }
113
+
114
+ widget 'TrafficChannels', {
115
+ :title => "App-Requests sent/clicked",
116
+ :type => :timeline,
117
+ :gauges => [:app_requests_sent, :app_requests_clicked]
118
+ }
119
+
120
+ widget 'TrafficChannels', {
121
+ :title => "App-Requests sent/clicked Numbers",
122
+ :type => :numbers,
123
+ :gauges => [:app_requests_sent, :app_requests_clicked]
124
+ }
125
+
126
+ gauge :wall_posts_sent, :tick => 1.day.to_i
127
+ gauge :wall_posts_clicked, :tick => 1.day.to_i
128
+
129
+ event(:wallpost_sent){ incr :wall_posts_sent }
130
+ event(:wallpost_click){ incr :wall_posts_clicked }
131
+
132
+ widget 'TrafficChannels', {
133
+ :title => "Wall-Posts sent/clicked",
134
+ :type => :timeline,
135
+ :gauges => [:wall_posts_sent, :wall_posts_clicked]
136
+ }
137
+
138
+ widget 'TrafficChannels', {
139
+ :title => "Wall-Posts sent/clicked Numbers",
140
+ :type => :numbers,
141
+ :gauges => [:wall_posts_sent, :wall_posts_clicked]
142
+ }
143
+
144
+
145
+ gauge :rockyou1_ppis, :tick => 1.day.to_i
146
+ gauge :rockyou1_requests, :tick => 1.day.to_i
147
+ gauge :rockyou1_refs, :tick => 1.day.to_i
148
+
149
+ event :campaign_install do
150
+ if %w(ry201112a ry201112b).include?(data[:campaign_key])
151
+ incr :rockyou1_ppis
152
+ end
153
+ if %w(ry201112_ref).include?(data[:campaign_key])
154
+ incr :rockyou1_refs
155
+ end
156
+ end
157
+
158
+ event :app_request_sent do
159
+ if %w(ry201112a ry201112b ry201112_ref).include?(data[:campaign_key])
160
+ incr :rockyou1_requests
161
+ end
162
+ end
163
+
164
+ widget 'Campaigns', {
165
+ :title => "RockYou (1) - Installs via PPI",
166
+ :type => :timeline,
167
+ :include_current => false,
168
+ :gauges => [:rockyou1_ppis]
169
+ }
170
+
171
+ widget 'Campaigns', {
172
+ :title => "RockYou (1) - Installs via Referral",
173
+ :gauges => [:rockyou1_refs],
174
+ :include_current => false,
175
+ :type => :timeline
176
+ }
177
+
178
+ widget 'Campaigns', {
179
+ :title => "RockYou (1) - AppRequests sent",
180
+ :gauges => [:rockyou1_requests],
181
+ :include_current => false,
182
+ :type => :timeline
183
+ }
184
+
185
+ widget 'Campaigns', {
186
+ :title => "RockYou (1) - PPI vs. Requests vs. Refs",
187
+ :gauges => [:rockyou1_requests, :rockyou1_ppis, :rockyou1_refs],
188
+ :include_current => false,
189
+ :type => :timeline
190
+ }
191
+
192
+ end
193
+
194
+ #task :setup do
195
+ # @fm_opts = {:web_interface => ["0.0.0.0", "2323"]} if ENV['DEV']
196
+ #end
197
+
198
+ FnordMetric.standalone
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: fnordmetric
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.2
5
+ version: 0.5.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Asmuth
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-05 00:00:00 +01:00
13
+ date: 2011-12-10 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -58,18 +58,18 @@ dependencies:
58
58
  prerelease: false
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
61
- name: json
61
+ name: redis
62
62
  requirement: &id005 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
- - - ">="
65
+ - - ~>
66
66
  - !ruby/object:Gem::Version
67
- version: "0"
67
+ version: 2.2.2
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
- name: haml
72
+ name: eventmachine
73
73
  requirement: &id006 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
@@ -80,7 +80,7 @@ dependencies:
80
80
  prerelease: false
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
- name: rack
83
+ name: em-hiredis
84
84
  requirement: &id007 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
@@ -91,7 +91,7 @@ dependencies:
91
91
  prerelease: false
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
- name: rack-test
94
+ name: json
95
95
  requirement: &id008 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
@@ -102,19 +102,74 @@ dependencies:
102
102
  prerelease: false
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
105
- name: delorean
105
+ name: haml
106
106
  requirement: &id009 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: "0"
112
- type: :development
112
+ type: :runtime
113
113
  prerelease: false
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
116
- name: rspec
116
+ name: rack
117
117
  requirement: &id010 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: "0"
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: *id010
126
+ - !ruby/object:Gem::Dependency
127
+ name: rack-test
128
+ requirement: &id011 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: "0"
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: *id011
137
+ - !ruby/object:Gem::Dependency
138
+ name: yajl-ruby
139
+ requirement: &id012 !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: "0"
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: *id012
148
+ - !ruby/object:Gem::Dependency
149
+ name: thin
150
+ requirement: &id013 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: "0"
156
+ type: :runtime
157
+ prerelease: false
158
+ version_requirements: *id013
159
+ - !ruby/object:Gem::Dependency
160
+ name: delorean
161
+ requirement: &id014 !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: *id014
170
+ - !ruby/object:Gem::Dependency
171
+ name: rspec
172
+ requirement: &id015 !ruby/object:Gem::Requirement
118
173
  none: false
119
174
  requirements:
120
175
  - - ~>
@@ -122,10 +177,10 @@ dependencies:
122
177
  version: 2.6.0
123
178
  type: :development
124
179
  prerelease: false
125
- version_requirements: *id010
180
+ version_requirements: *id015
126
181
  - !ruby/object:Gem::Dependency
127
182
  name: shoulda
128
- requirement: &id011 !ruby/object:Gem::Requirement
183
+ requirement: &id016 !ruby/object:Gem::Requirement
129
184
  none: false
130
185
  requirements:
131
186
  - - ">="
@@ -133,10 +188,10 @@ dependencies:
133
188
  version: "0"
134
189
  type: :development
135
190
  prerelease: false
136
- version_requirements: *id011
191
+ version_requirements: *id016
137
192
  - !ruby/object:Gem::Dependency
138
193
  name: bundler
139
- requirement: &id012 !ruby/object:Gem::Requirement
194
+ requirement: &id017 !ruby/object:Gem::Requirement
140
195
  none: false
141
196
  requirements:
142
197
  - - ~>
@@ -144,10 +199,10 @@ dependencies:
144
199
  version: 1.0.0
145
200
  type: :development
146
201
  prerelease: false
147
- version_requirements: *id012
202
+ version_requirements: *id017
148
203
  - !ruby/object:Gem::Dependency
149
204
  name: jeweler
150
- requirement: &id013 !ruby/object:Gem::Requirement
205
+ requirement: &id018 !ruby/object:Gem::Requirement
151
206
  none: false
152
207
  requirements:
153
208
  - - ~>
@@ -155,7 +210,7 @@ dependencies:
155
210
  version: 1.5.2
156
211
  type: :development
157
212
  prerelease: false
158
- version_requirements: *id013
213
+ version_requirements: *id018
159
214
  description: FnordMetric is a Ruby Event-Tracking gem on steroids
160
215
  email: paul@paulasmuth.com
161
216
  executables: []
@@ -171,7 +226,20 @@ files:
171
226
  - Procfile
172
227
  - Rakefile
173
228
  - VERSION
229
+ - _spec/app_spec.rb
230
+ - _spec/cache_spec.rb
231
+ - _spec/combine_metric_spec.rb
232
+ - _spec/core_spec.rb
233
+ - _spec/count_metric_spec.rb
234
+ - _spec/dashboard_spec.rb
235
+ - _spec/event_spec.rb
236
+ - _spec/metric_spec.rb
237
+ - _spec/report_spec.rb
238
+ - _spec/sum_metric_spec.rb
239
+ - _spec/widget_spec.rb
174
240
  - doc/example_server.rb
241
+ - doc/import_dump.rb
242
+ - em_runner.rb
175
243
  - fnordmetric.gemspec
176
244
  - haml/app.haml
177
245
  - haml/widget.haml
@@ -180,19 +248,27 @@ files:
180
248
  - lib/fnordmetric/average_metric.rb
181
249
  - lib/fnordmetric/cache.rb
182
250
  - lib/fnordmetric/combine_metric.rb
183
- - lib/fnordmetric/core.rb
251
+ - lib/fnordmetric/context.rb
184
252
  - lib/fnordmetric/count_metric.rb
185
253
  - lib/fnordmetric/dashboard.rb
186
- - lib/fnordmetric/engine.rb
187
254
  - lib/fnordmetric/event.rb
188
255
  - lib/fnordmetric/funnel_widget.rb
256
+ - lib/fnordmetric/gauge.rb
257
+ - lib/fnordmetric/gauge_calculations.rb
258
+ - lib/fnordmetric/gauge_modifiers.rb
259
+ - lib/fnordmetric/inbound_stream.rb
260
+ - lib/fnordmetric/logger.rb
189
261
  - lib/fnordmetric/metric.rb
190
262
  - lib/fnordmetric/metric_api.rb
263
+ - lib/fnordmetric/namespace.rb
191
264
  - lib/fnordmetric/numbers_widget.rb
192
265
  - lib/fnordmetric/report.rb
266
+ - lib/fnordmetric/session.rb
267
+ - lib/fnordmetric/standalone.rb
193
268
  - lib/fnordmetric/sum_metric.rb
194
269
  - lib/fnordmetric/timeline_widget.rb
195
270
  - lib/fnordmetric/widget.rb
271
+ - lib/fnordmetric/worker.rb
196
272
  - pub/fnordmetric/fnordmetric.css
197
273
  - pub/fnordmetric/fnordmetric.js
198
274
  - pub/fnordmetric/widget_numbers.js
@@ -211,20 +287,24 @@ files:
211
287
  - pub/highcharts/themes/gray.js
212
288
  - pub/highcharts/themes/grid.js
213
289
  - pub/jquery-1.6.1.min.js
290
+ - pub/raphael-min.js
291
+ - pub/raphael-utils.js
214
292
  - pub/sprite.png
215
293
  - readme.rdoc
294
+ - server.rb
216
295
  - spec/app_spec.rb
217
- - spec/cache_spec.rb
218
- - spec/combine_metric_spec.rb
219
- - spec/core_spec.rb
220
- - spec/count_metric_spec.rb
296
+ - spec/context_spec.rb
221
297
  - spec/dashboard_spec.rb
222
298
  - spec/event_spec.rb
223
- - spec/metric_spec.rb
224
- - spec/report_spec.rb
299
+ - spec/gauge_modifiers_spec.rb
300
+ - spec/gauge_spec.rb
301
+ - spec/namespace_spec.rb
302
+ - spec/session_spec.rb
225
303
  - spec/spec_helper.rb
226
- - spec/sum_metric_spec.rb
227
304
  - spec/widget_spec.rb
305
+ - spec/worker_spec.rb
306
+ - test_stream.sh
307
+ - ulm_stats.rb
228
308
  has_rdoc: true
229
309
  homepage: http://github.com/paulasmuth/fnordmetric
230
310
  licenses:
@@ -239,7 +319,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
319
  requirements:
240
320
  - - ">="
241
321
  - !ruby/object:Gem::Version
242
- hash: -12181551
322
+ hash: -246353283
243
323
  segments:
244
324
  - 0
245
325
  version: "0"
@@ -258,14 +338,13 @@ specification_version: 3
258
338
  summary: FnordMetric is a Ruby Event-Tracking gem on steroids
259
339
  test_files:
260
340
  - spec/app_spec.rb
261
- - spec/cache_spec.rb
262
- - spec/combine_metric_spec.rb
263
- - spec/core_spec.rb
264
- - spec/count_metric_spec.rb
341
+ - spec/context_spec.rb
265
342
  - spec/dashboard_spec.rb
266
343
  - spec/event_spec.rb
267
- - spec/metric_spec.rb
268
- - spec/report_spec.rb
344
+ - spec/gauge_modifiers_spec.rb
345
+ - spec/gauge_spec.rb
346
+ - spec/namespace_spec.rb
347
+ - spec/session_spec.rb
269
348
  - spec/spec_helper.rb
270
- - spec/sum_metric_spec.rb
271
349
  - spec/widget_spec.rb
350
+ - spec/worker_spec.rb