pulse-meter 0.4.9 → 0.4.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. data/Rakefile +1 -48
  2. data/lib/pulse-meter.rb +1 -68
  3. data/lib/pulse-meter/visualizer.rb +1 -40
  4. data/pulse-meter.gemspec +4 -26
  5. metadata +10 -558
  6. data/Procfile +0 -3
  7. data/bin/pulse +0 -6
  8. data/examples/basic.ru +0 -145
  9. data/examples/basic_sensor_data.rb +0 -96
  10. data/examples/udp_benchmark.rb +0 -29
  11. data/lib/cmd.rb +0 -171
  12. data/lib/pulse-meter/command_aggregator/async.rb +0 -83
  13. data/lib/pulse-meter/command_aggregator/sync.rb +0 -18
  14. data/lib/pulse-meter/command_aggregator/udp.rb +0 -48
  15. data/lib/pulse-meter/extensions/enumerable.rb +0 -24
  16. data/lib/pulse-meter/mixins/cmd.rb +0 -46
  17. data/lib/pulse-meter/mixins/dumper.rb +0 -87
  18. data/lib/pulse-meter/mixins/utils.rb +0 -155
  19. data/lib/pulse-meter/observer.rb +0 -120
  20. data/lib/pulse-meter/observer/extended.rb +0 -34
  21. data/lib/pulse-meter/sensor.rb +0 -61
  22. data/lib/pulse-meter/sensor/base.rb +0 -88
  23. data/lib/pulse-meter/sensor/configuration.rb +0 -106
  24. data/lib/pulse-meter/sensor/counter.rb +0 -39
  25. data/lib/pulse-meter/sensor/hashed_counter.rb +0 -36
  26. data/lib/pulse-meter/sensor/hashed_indicator.rb +0 -24
  27. data/lib/pulse-meter/sensor/indicator.rb +0 -35
  28. data/lib/pulse-meter/sensor/multi.rb +0 -97
  29. data/lib/pulse-meter/sensor/timeline.rb +0 -236
  30. data/lib/pulse-meter/sensor/timeline_reduce.rb +0 -68
  31. data/lib/pulse-meter/sensor/timelined/average.rb +0 -32
  32. data/lib/pulse-meter/sensor/timelined/counter.rb +0 -23
  33. data/lib/pulse-meter/sensor/timelined/hashed_counter.rb +0 -31
  34. data/lib/pulse-meter/sensor/timelined/hashed_indicator.rb +0 -30
  35. data/lib/pulse-meter/sensor/timelined/indicator.rb +0 -23
  36. data/lib/pulse-meter/sensor/timelined/max.rb +0 -19
  37. data/lib/pulse-meter/sensor/timelined/median.rb +0 -14
  38. data/lib/pulse-meter/sensor/timelined/min.rb +0 -19
  39. data/lib/pulse-meter/sensor/timelined/multi_percentile.rb +0 -34
  40. data/lib/pulse-meter/sensor/timelined/percentile.rb +0 -22
  41. data/lib/pulse-meter/sensor/timelined/uniq_counter.rb +0 -22
  42. data/lib/pulse-meter/sensor/timelined/zset_based.rb +0 -38
  43. data/lib/pulse-meter/sensor/uniq_counter.rb +0 -24
  44. data/lib/pulse-meter/server.rb +0 -0
  45. data/lib/pulse-meter/server/command_line_options.rb +0 -0
  46. data/lib/pulse-meter/server/config_options.rb +0 -0
  47. data/lib/pulse-meter/server/sensors.rb +0 -0
  48. data/lib/pulse-meter/udp_server.rb +0 -45
  49. data/lib/pulse-meter/version.rb +0 -3
  50. data/lib/pulse-meter/visualize/app.rb +0 -78
  51. data/lib/pulse-meter/visualize/base.rb +0 -15
  52. data/lib/pulse-meter/visualize/coffee/application.coffee +0 -40
  53. data/lib/pulse-meter/visualize/coffee/collections/page_info_list.coffee +0 -17
  54. data/lib/pulse-meter/visualize/coffee/collections/sensor_info_list.coffee +0 -4
  55. data/lib/pulse-meter/visualize/coffee/collections/widget_list.coffee +0 -14
  56. data/lib/pulse-meter/visualize/coffee/extensions.coffee +0 -26
  57. data/lib/pulse-meter/visualize/coffee/models/dinamic_widget.coffee +0 -34
  58. data/lib/pulse-meter/visualize/coffee/models/page_info.coffee +0 -2
  59. data/lib/pulse-meter/visualize/coffee/models/sensor_info.coffee +0 -2
  60. data/lib/pulse-meter/visualize/coffee/models/widget.coffee +0 -54
  61. data/lib/pulse-meter/visualize/coffee/presenters/area.coffee +0 -2
  62. data/lib/pulse-meter/visualize/coffee/presenters/gauge.coffee +0 -11
  63. data/lib/pulse-meter/visualize/coffee/presenters/line.coffee +0 -2
  64. data/lib/pulse-meter/visualize/coffee/presenters/pie.coffee +0 -20
  65. data/lib/pulse-meter/visualize/coffee/presenters/series.coffee +0 -44
  66. data/lib/pulse-meter/visualize/coffee/presenters/table.coffee +0 -10
  67. data/lib/pulse-meter/visualize/coffee/presenters/timeline.coffee +0 -13
  68. data/lib/pulse-meter/visualize/coffee/presenters/widget.coffee +0 -65
  69. data/lib/pulse-meter/visualize/coffee/router.coffee +0 -21
  70. data/lib/pulse-meter/visualize/coffee/views/dynamic_chart.coffee +0 -91
  71. data/lib/pulse-meter/visualize/coffee/views/dynamic_widget.coffee +0 -58
  72. data/lib/pulse-meter/visualize/coffee/views/page_title.coffee +0 -17
  73. data/lib/pulse-meter/visualize/coffee/views/page_titles.coffee +0 -15
  74. data/lib/pulse-meter/visualize/coffee/views/sensor_info_list.coffee +0 -19
  75. data/lib/pulse-meter/visualize/coffee/views/widget.coffee +0 -99
  76. data/lib/pulse-meter/visualize/coffee/views/widget_chart.coffee +0 -13
  77. data/lib/pulse-meter/visualize/coffee/views/widget_list.coffee +0 -15
  78. data/lib/pulse-meter/visualize/dsl/base.rb +0 -131
  79. data/lib/pulse-meter/visualize/dsl/errors.rb +0 -40
  80. data/lib/pulse-meter/visualize/dsl/layout.rb +0 -27
  81. data/lib/pulse-meter/visualize/dsl/page.rb +0 -33
  82. data/lib/pulse-meter/visualize/dsl/sensor.rb +0 -20
  83. data/lib/pulse-meter/visualize/dsl/widget.rb +0 -37
  84. data/lib/pulse-meter/visualize/dsl/widgets/area.rb +0 -20
  85. data/lib/pulse-meter/visualize/dsl/widgets/gauge.rb +0 -12
  86. data/lib/pulse-meter/visualize/dsl/widgets/line.rb +0 -21
  87. data/lib/pulse-meter/visualize/dsl/widgets/pie.rb +0 -16
  88. data/lib/pulse-meter/visualize/dsl/widgets/table.rb +0 -19
  89. data/lib/pulse-meter/visualize/layout.rb +0 -79
  90. data/lib/pulse-meter/visualize/page.rb +0 -25
  91. data/lib/pulse-meter/visualize/public/css/application.css +0 -56
  92. data/lib/pulse-meter/visualize/public/css/bootstrap.css +0 -4883
  93. data/lib/pulse-meter/visualize/public/css/bootstrap.min.css +0 -729
  94. data/lib/pulse-meter/visualize/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  95. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  96. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  97. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  98. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  99. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  100. data/lib/pulse-meter/visualize/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  101. data/lib/pulse-meter/visualize/public/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  102. data/lib/pulse-meter/visualize/public/css/images/ui-icons_222222_256x240.png +0 -0
  103. data/lib/pulse-meter/visualize/public/css/images/ui-icons_2e83ff_256x240.png +0 -0
  104. data/lib/pulse-meter/visualize/public/css/images/ui-icons_454545_256x240.png +0 -0
  105. data/lib/pulse-meter/visualize/public/css/images/ui-icons_888888_256x240.png +0 -0
  106. data/lib/pulse-meter/visualize/public/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  107. data/lib/pulse-meter/visualize/public/css/images/ui-icons_f6cf3b_256x240.png +0 -0
  108. data/lib/pulse-meter/visualize/public/css/jquery-ui-1.8.16.bootstrap.css +0 -1320
  109. data/lib/pulse-meter/visualize/public/favicon.ico +0 -208
  110. data/lib/pulse-meter/visualize/public/img/glyphicons-halflings-white.png +0 -0
  111. data/lib/pulse-meter/visualize/public/img/glyphicons-halflings.png +0 -0
  112. data/lib/pulse-meter/visualize/public/js/application.js +0 -973
  113. data/lib/pulse-meter/visualize/public/js/backbone-min.js +0 -38
  114. data/lib/pulse-meter/visualize/public/js/bootstrap.js +0 -1835
  115. data/lib/pulse-meter/visualize/public/js/jquery-1.7.2.min.js +0 -4
  116. data/lib/pulse-meter/visualize/public/js/jquery-ui-1.8.16.bootstrap.min.js +0 -791
  117. data/lib/pulse-meter/visualize/public/js/jquery-ui-1.8.23.custom.min.js +0 -21
  118. data/lib/pulse-meter/visualize/public/js/jquery-ui-timepicker-addon.js +0 -1687
  119. data/lib/pulse-meter/visualize/public/js/json2.js +0 -487
  120. data/lib/pulse-meter/visualize/public/js/underscore-min.js +0 -32
  121. data/lib/pulse-meter/visualize/sensor.rb +0 -63
  122. data/lib/pulse-meter/visualize/series_extractor.rb +0 -107
  123. data/lib/pulse-meter/visualize/views/main.haml +0 -30
  124. data/lib/pulse-meter/visualize/views/sensors.haml +0 -76
  125. data/lib/pulse-meter/visualize/views/widgets/area.haml +0 -53
  126. data/lib/pulse-meter/visualize/views/widgets/extend_options.haml +0 -11
  127. data/lib/pulse-meter/visualize/views/widgets/gauge.haml +0 -13
  128. data/lib/pulse-meter/visualize/views/widgets/line.haml +0 -54
  129. data/lib/pulse-meter/visualize/views/widgets/pie.haml +0 -13
  130. data/lib/pulse-meter/visualize/views/widgets/table.haml +0 -45
  131. data/lib/pulse-meter/visualize/widget.rb +0 -38
  132. data/lib/pulse-meter/visualize/widgets/gauge.rb +0 -47
  133. data/lib/pulse-meter/visualize/widgets/pie.rb +0 -36
  134. data/lib/pulse-meter/visualize/widgets/timeline.rb +0 -114
  135. data/spec/pulse_meter/command_aggregator/async_spec.rb +0 -53
  136. data/spec/pulse_meter/command_aggregator/sync_spec.rb +0 -25
  137. data/spec/pulse_meter/command_aggregator/udp_spec.rb +0 -45
  138. data/spec/pulse_meter/extensions/enumerable_spec.rb +0 -58
  139. data/spec/pulse_meter/mixins/cmd_spec.rb +0 -117
  140. data/spec/pulse_meter/mixins/dumper_spec.rb +0 -162
  141. data/spec/pulse_meter/mixins/utils_spec.rb +0 -212
  142. data/spec/pulse_meter/observer/extended_spec.rb +0 -92
  143. data/spec/pulse_meter/observer_spec.rb +0 -207
  144. data/spec/pulse_meter/sensor/base_spec.rb +0 -106
  145. data/spec/pulse_meter/sensor/configuration_spec.rb +0 -103
  146. data/spec/pulse_meter/sensor/counter_spec.rb +0 -54
  147. data/spec/pulse_meter/sensor/hashed_counter_spec.rb +0 -43
  148. data/spec/pulse_meter/sensor/hashed_indicator_spec.rb +0 -39
  149. data/spec/pulse_meter/sensor/indicator_spec.rb +0 -43
  150. data/spec/pulse_meter/sensor/multi_spec.rb +0 -137
  151. data/spec/pulse_meter/sensor/timeline_spec.rb +0 -88
  152. data/spec/pulse_meter/sensor/timelined/average_spec.rb +0 -6
  153. data/spec/pulse_meter/sensor/timelined/counter_spec.rb +0 -6
  154. data/spec/pulse_meter/sensor/timelined/hashed_counter_spec.rb +0 -8
  155. data/spec/pulse_meter/sensor/timelined/hashed_indicator_spec.rb +0 -8
  156. data/spec/pulse_meter/sensor/timelined/indicator_spec.rb +0 -6
  157. data/spec/pulse_meter/sensor/timelined/max_spec.rb +0 -7
  158. data/spec/pulse_meter/sensor/timelined/median_spec.rb +0 -7
  159. data/spec/pulse_meter/sensor/timelined/min_spec.rb +0 -7
  160. data/spec/pulse_meter/sensor/timelined/multi_percentile_spec.rb +0 -21
  161. data/spec/pulse_meter/sensor/timelined/percentile_spec.rb +0 -17
  162. data/spec/pulse_meter/sensor/timelined/uniq_counter_spec.rb +0 -9
  163. data/spec/pulse_meter/sensor/uniq_counter_spec.rb +0 -28
  164. data/spec/pulse_meter/udp_server_spec.rb +0 -36
  165. data/spec/pulse_meter/visualize/app_spec.rb +0 -27
  166. data/spec/pulse_meter/visualize/dsl/layout_spec.rb +0 -64
  167. data/spec/pulse_meter/visualize/dsl/page_spec.rb +0 -62
  168. data/spec/pulse_meter/visualize/dsl/sensor_spec.rb +0 -30
  169. data/spec/pulse_meter/visualize/dsl/widget_spec.rb +0 -6
  170. data/spec/pulse_meter/visualize/dsl/widgets/area_spec.rb +0 -44
  171. data/spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb +0 -22
  172. data/spec/pulse_meter/visualize/dsl/widgets/line_spec.rb +0 -44
  173. data/spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb +0 -35
  174. data/spec/pulse_meter/visualize/dsl/widgets/table_spec.rb +0 -36
  175. data/spec/pulse_meter/visualize/layout_spec.rb +0 -54
  176. data/spec/pulse_meter/visualize/page_spec.rb +0 -153
  177. data/spec/pulse_meter/visualize/sensor_spec.rb +0 -120
  178. data/spec/pulse_meter/visualize/series_extractor_spec.rb +0 -80
  179. data/spec/pulse_meter/visualize/widgets/area_spec.rb +0 -6
  180. data/spec/pulse_meter/visualize/widgets/gauge_spec.rb +0 -63
  181. data/spec/pulse_meter/visualize/widgets/line_spec.rb +0 -6
  182. data/spec/pulse_meter/visualize/widgets/pie_spec.rb +0 -73
  183. data/spec/pulse_meter/visualize/widgets/table_spec.rb +0 -6
  184. data/spec/pulse_meter/visualizer_spec.rb +0 -42
  185. data/spec/pulse_meter_spec.rb +0 -73
  186. data/spec/shared_examples/dsl_widget.rb +0 -106
  187. data/spec/shared_examples/timeline_sensor.rb +0 -439
  188. data/spec/shared_examples/timelined_subclass.rb +0 -23
  189. data/spec/shared_examples/widget.rb +0 -97
  190. data/spec/spec_helper.rb +0 -40
  191. data/spec/support/matchers.rb +0 -34
  192. data/spec/support/observered.rb +0 -40
@@ -1,92 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe PulseMeter::Observer::Extended do
4
- context "instance methods observation" do
5
- let!(:dummy) {ObservedDummy.new}
6
- let!(:sensor) {PulseMeter::Sensor::Counter.new(:foo)}
7
- before do
8
- [:incr, :error].each {|m| described_class.unobserve_method(ObservedDummy, m)}
9
- end
10
-
11
- describe ".observe_method" do
12
- it "passes exended parameters to block in normal execution" do
13
- Timecop.freeze do
14
- parameters = {}
15
-
16
- described_class.observe_method(ObservedDummy, :incr, sensor) do |params|
17
- parameters = params
18
- end
19
-
20
- dummy.incr(40)
21
-
22
- parameters[:self].should == dummy
23
- parameters[:delta].should >= 1000
24
- parameters[:result].should == 40
25
- parameters[:exception].should be_nil
26
- parameters[:args].should == [40]
27
- end
28
- end
29
-
30
- it "passes exended parameters to block with exception" do
31
- Timecop.freeze do
32
- parameters = {}
33
-
34
- described_class.observe_method(ObservedDummy, :error, sensor) do |params|
35
- parameters = params
36
- end
37
-
38
- lambda { dummy.error }.should raise_error(RuntimeError)
39
-
40
- parameters[:self].should == dummy
41
- parameters[:result].should == nil
42
- parameters[:exception].class.should == RuntimeError
43
- parameters[:args].should == []
44
- end
45
- end
46
- end
47
- end
48
-
49
- context "class methods observation" do
50
- let!(:sensor) {PulseMeter::Sensor::Counter.new(:foo)}
51
- before do
52
- [:incr, :error].each {|m| described_class.unobserve_class_method(ObservedDummy, m)}
53
- end
54
-
55
- describe ".observe_class_method" do
56
- it "passes exended parameters to block in normal execution" do
57
- Timecop.freeze do
58
- parameters = {}
59
-
60
- described_class.observe_class_method(ObservedDummy, :incr, sensor) do |params|
61
- parameters = params
62
- end
63
-
64
- ObservedDummy.incr(40)
65
-
66
- parameters[:self].should == ObservedDummy
67
- parameters[:delta].should >= 1000
68
- parameters[:result].should == 40
69
- parameters[:exception].should be_nil
70
- parameters[:args].should == [40]
71
- end
72
- end
73
-
74
- it "passes exended parameters to block with exception" do
75
- Timecop.freeze do
76
- parameters = {}
77
-
78
- described_class.observe_class_method(ObservedDummy, :error, sensor) do |params|
79
- parameters = params
80
- end
81
-
82
- lambda { ObservedDummy.error }.should raise_error(RuntimeError)
83
-
84
- parameters[:self].should == ObservedDummy
85
- parameters[:result].should == nil
86
- parameters[:exception].class.should == RuntimeError
87
- parameters[:args].should == []
88
- end
89
- end
90
- end
91
- end
92
- end
@@ -1,207 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe PulseMeter::Observer do
4
-
5
- context "instance methods observation" do
6
- let!(:dummy) {ObservedDummy.new}
7
- let!(:sensor) {PulseMeter::Sensor::Counter.new(:foo)}
8
- before do
9
- [:incr, :error].each {|m| described_class.unobserve_method(ObservedDummy, m)}
10
- end
11
-
12
- def create_observer(method = :incr, increment = 1)
13
- described_class.observe_method(ObservedDummy, method, sensor) do |*args|
14
- event(increment)
15
- end
16
- end
17
-
18
- def remove_observer(method = :incr)
19
- described_class.unobserve_method(ObservedDummy, method)
20
- end
21
-
22
- describe ".observe_method" do
23
- it "executes block in context of sensor each time specified method of given class called" do
24
- create_observer
25
- 5.times {dummy.incr}
26
- sensor.value.should == 5
27
- end
28
-
29
- it "passes arguments to observed method" do
30
- create_observer
31
- 5.times {dummy.incr(10)}
32
- dummy.count.should == 50
33
- end
34
-
35
- it "passes methods' params to block" do
36
- described_class.observe_method(ObservedDummy, :incr, sensor) do |time, cnt|
37
- event(cnt)
38
- end
39
-
40
- 5.times {dummy.incr(10)}
41
- sensor.value.should == 50
42
- end
43
-
44
- it "passes execution time in milliseconds to block" do
45
- Timecop.freeze do
46
- described_class.observe_method(ObservedDummy, :incr, sensor) do |time, cnt|
47
- event(time)
48
- end
49
-
50
- dummy.incr
51
- sensor.value.should >= 1000
52
- end
53
- end
54
-
55
- it "does not break observed method even is observer raises error" do
56
- described_class.observe_method(ObservedDummy, :incr, sensor) do |*args|
57
- raise RuntimeError
58
- end
59
-
60
- lambda {dummy.incr}.should_not raise_error
61
- dummy.count.should == 1
62
- end
63
-
64
- it "uses first observer in case of double observation" do
65
- create_observer(:incr, 1)
66
- create_observer(:incr, 2)
67
- 5.times {dummy.incr}
68
- sensor.value.should == 5
69
- end
70
-
71
- it "keeps observed methods' errors" do
72
- create_observer(:error)
73
- lambda {dummy.error}.should raise_error(RuntimeError)
74
- sensor.value.should == 1
75
- end
76
-
77
- it "makes observed method return its value" do
78
- create_observer
79
- dummy.incr.should == 1
80
- end
81
-
82
- it "allows to pass blocks to observed method" do
83
- create_observer
84
- dummy.incr do
85
- 2
86
- end
87
- dummy.count.should == 3
88
- end
89
- end
90
-
91
- describe ".unobserve_method" do
92
- it "does nothing unless method is observed" do
93
- lambda {remove_observer}.should_not raise_error
94
- end
95
-
96
- it "removes observation from observed method" do
97
- create_observer
98
- dummy.incr
99
- remove_observer
100
- dummy.incr
101
- sensor.value.should == 1
102
- end
103
- end
104
- end
105
-
106
- context "class methods observation" do
107
- let!(:dummy) {ObservedDummy}
108
- let!(:sensor) {PulseMeter::Sensor::Counter.new(:foo)}
109
- before do
110
- dummy.reset
111
- [:incr, :error].each {|m| described_class.unobserve_class_method(ObservedDummy, m)}
112
- end
113
-
114
- def create_observer(method = :incr, increment = 1)
115
- described_class.observe_class_method(ObservedDummy, method, sensor) do |*args|
116
- event(increment)
117
- end
118
- end
119
-
120
- def remove_observer(method = :incr)
121
- described_class.unobserve_class_method(ObservedDummy, method)
122
- end
123
-
124
- describe ".observe_class_method" do
125
- it "executes block in context of sensor each time specified method of given class called" do
126
- create_observer
127
- 5.times {dummy.incr}
128
- sensor.value.should == 5
129
- end
130
-
131
- it "passes arguments to observed method" do
132
- create_observer
133
- 5.times {dummy.incr(10)}
134
- dummy.count.should == 50
135
- end
136
-
137
- it "passes methods' params to block" do
138
- described_class.observe_class_method(ObservedDummy, :incr, sensor) do |time, cnt|
139
- event(cnt)
140
- end
141
-
142
- 5.times {dummy.incr(10)}
143
- sensor.value.should == 50
144
- end
145
-
146
- it "passes execution time in milliseconds to block" do
147
- Timecop.freeze do
148
- described_class.observe_class_method(ObservedDummy, :incr, sensor) do |time, cnt|
149
- event(time)
150
- end
151
-
152
- dummy.incr
153
- sensor.value.should == 1000
154
- end
155
- end
156
-
157
- it "does not break observed method even is observer raises error" do
158
- described_class.observe_class_method(ObservedDummy, :incr, sensor) do |*args|
159
- raise RuntimeError
160
- end
161
-
162
- lambda {dummy.incr}.should_not raise_error
163
- dummy.count.should == 1
164
- end
165
-
166
- it "uses first observer in case of double observation" do
167
- create_observer(:incr, 1)
168
- create_observer(:incr, 2)
169
- 5.times {dummy.incr}
170
- sensor.value.should == 5
171
- end
172
-
173
- it "keeps observed methods' errors" do
174
- create_observer(:error)
175
- lambda {dummy.error}.should raise_error(RuntimeError)
176
- sensor.value.should == 1
177
- end
178
-
179
- it "makes observed method return its value" do
180
- create_observer
181
- dummy.incr.should == 1
182
- end
183
-
184
- it "allows to pass blocks to observed method" do
185
- create_observer
186
- dummy.incr do
187
- 2
188
- end
189
- dummy.count.should == 3
190
- end
191
- end
192
-
193
- describe ".unobserve_class_method" do
194
- it "does nothing unless method is observed" do
195
- lambda {remove_observer}.should_not raise_error
196
- end
197
-
198
- it "removes observation from observed method" do
199
- create_observer
200
- dummy.incr
201
- remove_observer
202
- dummy.incr
203
- sensor.value.should == 1
204
- end
205
- end
206
- end
207
- end
@@ -1,106 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe PulseMeter::Sensor::Base do
4
- let(:name){ :some_sensor }
5
- let(:description) {"Le awesome description"}
6
- let!(:sensor){ described_class.new(name) }
7
- let(:redis){ PulseMeter.redis }
8
-
9
- describe '#initialize' do
10
- context 'when PulseMeter.redis is not initialized' do
11
- it "should raise RedisNotInitialized exception" do
12
- PulseMeter.redis = nil
13
- expect{ described_class.new(:foo) }.to raise_exception(PulseMeter::RedisNotInitialized)
14
- end
15
- end
16
-
17
- context 'when PulseMeter.redis is initialized' do
18
-
19
- context 'when passed sensor name is bad' do
20
- it "should raise BadSensorName exception" do
21
- ['name with whitespace', 'name|with|bad|characters'].each do |bad_name|
22
- expect{ described_class.new(bad_name) }.to raise_exception(PulseMeter::BadSensorName)
23
- end
24
- end
25
- end
26
-
27
- context 'when passed sensor name is valid' do
28
- it "should successfully create object" do
29
- described_class.new(:foo).should_not be_nil
30
- end
31
-
32
- it "should initialize attributes #redis and #name" do
33
- sensor = described_class.new(:foo)
34
- sensor.name.should == 'foo'
35
- sensor.redis.should == PulseMeter.redis
36
- end
37
-
38
- it "should save dump to redis automatically to let the object be restored by name" do
39
- described_class.restore(name).should be_instance_of(described_class)
40
- end
41
-
42
- it "should annotate object if annotation given" do
43
- described_class.new(:foo, :annotation => "annotation")
44
- sensor = described_class.restore(:foo)
45
- sensor.annotation.should == "annotation"
46
- end
47
- end
48
- end
49
- end
50
-
51
- describe '#annotate' do
52
-
53
- it "should store sensor annotation in redis" do
54
- expect {sensor.annotate(description)}.to change{redis.keys('*').count}.by(1)
55
- end
56
-
57
- end
58
-
59
- describe '#annotation' do
60
- context "when sensor was annotated" do
61
- it "should return stored annotation" do
62
- sensor.annotate(description)
63
- sensor.annotation.should == description
64
- end
65
- end
66
-
67
- context "when sensor was not annotated" do
68
- it "should return nil" do
69
- sensor.annotation.should be_nil
70
- end
71
- end
72
-
73
- context "after sensor data was cleaned" do
74
- it "should return nil" do
75
- sensor.annotate(description)
76
- sensor.cleanup
77
- sensor.annotation.should be_nil
78
- end
79
- end
80
- end
81
-
82
- describe "#cleanup" do
83
- it "should remove from redis all sensor data" do
84
- sensor.event(123)
85
- sensor.annotate(description)
86
- sensor.cleanup
87
- redis.keys('*').should be_empty
88
- end
89
- end
90
-
91
- describe "#event" do
92
- context "when everything is ok" do
93
- it "should do nothing and return true" do
94
- sensor.event(nil).should be_true
95
- end
96
- end
97
-
98
- context "when an error occures while processing event" do
99
- it "should catch StandardErrors and return false" do
100
- sensor.stub(:process_event) {raise StandardError}
101
- sensor.event(nil).should be_false
102
- end
103
- end
104
- end
105
-
106
- end
@@ -1,103 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe PulseMeter::Sensor::Configuration do
4
- let(:counter_config) {
5
- {
6
- cnt: {
7
- sensor_type: 'counter',
8
- args: {
9
- annotation: "MySensor"
10
- }
11
- },
12
- }
13
- }
14
-
15
- describe "#add_sensor" do
16
- let(:cfg) {described_class.new}
17
-
18
- it "should create sensor available under passed name" do
19
- cfg.has_sensor?(:foo).should be_false
20
- cfg.add_sensor(:foo, sensor_type: 'counter')
21
- cfg.has_sensor?(:foo).should_not be_true
22
- end
23
-
24
- it "should have event shortcut for the sensor" do
25
- cfg.add_sensor(:foo, sensor_type: 'counter')
26
- puts cfg.to_yaml
27
- cfg.sensor(:foo){|s| s.should_receive(:event).with(321)}
28
- cfg.foo(321)
29
- end
30
-
31
- it "should have event_at shortcut for the sensor" do
32
- cfg.add_sensor(:foo, sensor_type: 'counter')
33
- now = Time.now
34
- cfg.sensor(:foo) do |sensor|
35
- sensor.should_receive(:event_at).with(now, 321)
36
- end
37
- cfg.foo_at(now, 321)
38
- end
39
-
40
- it "should create sensor with correct type" do
41
- cfg.add_sensor(:foo, sensor_type: 'counter')
42
- cfg.sensor(:foo){|s| s.should be_kind_of(PulseMeter::Sensor::Counter)}
43
- end
44
-
45
- it "should not raise exception if sensor type is bad" do
46
- expect{ cfg.add_sensor(:foo, sensor_type: 'baaaar') }.not_to raise_exception
47
- end
48
-
49
- it "should pass args to created sensor" do
50
- cfg.add_sensor(:foo, sensor_type: 'counter', args: {annotation: "My Foo Counter"} )
51
- cfg.sensor(:foo){|s| s.annotation.should == "My Foo Counter" }
52
- end
53
-
54
- it "should accept hashie-objects" do
55
- class Dummy
56
- def sensor_type
57
- 'counter'
58
- end
59
- def args
60
- Hashie::Mash.new(annotation: "My Foo Counter")
61
- end
62
- end
63
-
64
- cfg.add_sensor(:foo, Dummy.new)
65
- cfg.sensor(:foo){|s| s.annotation.should == "My Foo Counter"}
66
- end
67
- end
68
-
69
- describe ".new" do
70
- it "should add passed sensor setting hash using keys as names" do
71
- opts = {
72
- cnt: {
73
- sensor_type: 'counter'
74
- },
75
- ind: {
76
- sensor_type: 'indicator'
77
- }
78
- }
79
- cfg1 = described_class.new(opts)
80
- cfg2 = described_class.new
81
- opts.each{|k,v| cfg2.add_sensor(k, v)}
82
- cfg1.sensors.to_yaml.should == cfg2.sensors.to_yaml
83
- end
84
- end
85
-
86
- describe "#sensor" do
87
- it "should give access to added sensors via block" do
88
- cfg = described_class.new(counter_config)
89
- cfg.sensor(:cnt){ |s| s.annotation.should == "MySensor" }
90
- cfg.sensor("cnt"){ |s| s.annotation.should == "MySensor" }
91
- end
92
- end
93
-
94
- describe "#each_sensor" do
95
- it "yields block for each name/sensor pair" do
96
- cfg = described_class.new(counter_config)
97
- sensors = {}
98
- cfg.each {|s| sensors[s.name.to_sym] = s}
99
- sensor = cfg.sensor(:cnt){|s| s}
100
- sensors.should == {:cnt => sensor}
101
- end
102
- end
103
- end