simple_metrics 0.3.6 → 0.4.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.
- data/README.markdown +53 -16
- data/Rakefile +0 -17
- data/bin/populate +13 -26
- data/bin/simple_metrics_client +64 -0
- data/bin/simple_metrics_server +3 -4
- data/lib/simple_metrics.rb +76 -17
- data/lib/simple_metrics/bucket.rb +106 -43
- data/lib/simple_metrics/client.rb +83 -0
- data/lib/simple_metrics/data_point.rb +137 -45
- data/lib/simple_metrics/functions.rb +5 -5
- data/lib/simple_metrics/graph.rb +32 -69
- data/lib/simple_metrics/mongo.rb +48 -0
- data/lib/simple_metrics/server.rb +66 -0
- data/lib/simple_metrics/version.rb +1 -1
- data/simple_metrics.gemspec +0 -6
- data/spec/bucket_spec.rb +152 -17
- data/spec/data_point_spec.rb +64 -14
- data/spec/graph_spec.rb +19 -30
- data/spec/spec_helper.rb +3 -3
- metadata +24 -139
- data/.travis.yml +0 -3
- data/bin/simple_metrics_web +0 -11
- data/config.ru +0 -6
- data/default_config.yml +0 -34
- data/lib/simple_metrics/app.rb +0 -52
- data/lib/simple_metrics/configuration.rb +0 -97
- data/lib/simple_metrics/data_point/base.rb +0 -59
- data/lib/simple_metrics/data_point/counter.rb +0 -20
- data/lib/simple_metrics/data_point/event.rb +0 -16
- data/lib/simple_metrics/data_point/gauge.rb +0 -19
- data/lib/simple_metrics/data_point/timing.rb +0 -15
- data/lib/simple_metrics/data_point_repository.rb +0 -114
- data/lib/simple_metrics/importer.rb +0 -64
- data/lib/simple_metrics/metric.rb +0 -29
- data/lib/simple_metrics/metric_repository.rb +0 -54
- data/lib/simple_metrics/public/css/bootstrap-responsive.min.css +0 -12
- data/lib/simple_metrics/public/css/bootstrap.min.css +0 -689
- data/lib/simple_metrics/public/css/graph.css +0 -45
- data/lib/simple_metrics/public/css/rickshaw.min.css +0 -1
- data/lib/simple_metrics/public/img/glyphicons-halflings-white.png +0 -0
- data/lib/simple_metrics/public/img/glyphicons-halflings.png +0 -0
- data/lib/simple_metrics/public/js/app.js +0 -20
- data/lib/simple_metrics/public/js/collections/graph.js +0 -16
- data/lib/simple_metrics/public/js/collections/metric.js +0 -9
- data/lib/simple_metrics/public/js/helpers.js +0 -23
- data/lib/simple_metrics/public/js/lib/backbone-0.9.2.min.js +0 -38
- data/lib/simple_metrics/public/js/lib/bootstrap.min.js +0 -6
- data/lib/simple_metrics/public/js/lib/d3.v2.min.js +0 -4
- data/lib/simple_metrics/public/js/lib/handlebars-1.0.0.beta.6.js +0 -1550
- data/lib/simple_metrics/public/js/lib/jquery-1.7.1.min.js +0 -4
- data/lib/simple_metrics/public/js/lib/moment.min.js +0 -6
- data/lib/simple_metrics/public/js/lib/rickshaw.min.js +0 -1
- data/lib/simple_metrics/public/js/lib/underscore-1.3.1.min.js +0 -31
- data/lib/simple_metrics/public/js/models/graph.js +0 -6
- data/lib/simple_metrics/public/js/models/metric.js +0 -7
- data/lib/simple_metrics/public/js/router.js +0 -42
- data/lib/simple_metrics/public/js/views/app.js +0 -18
- data/lib/simple_metrics/public/js/views/dashboard.js +0 -10
- data/lib/simple_metrics/public/js/views/graph.js +0 -101
- data/lib/simple_metrics/public/js/views/metric.js +0 -82
- data/lib/simple_metrics/public/js/views/metrics.js +0 -10
- data/lib/simple_metrics/repository.rb +0 -34
- data/lib/simple_metrics/udp_server.rb +0 -81
- data/lib/simple_metrics/views/graph.erb +0 -93
- data/lib/simple_metrics/views/index.erb +0 -0
- data/lib/simple_metrics/views/layout.erb +0 -138
- data/lib/simple_metrics/views/show.erb +0 -31
- data/spec/data_point_repository_spec.rb +0 -77
- data/spec/importer_spec.rb +0 -126
- data/spec/metric_repository_spec.rb +0 -53
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "eventmachine"
|
3
|
+
|
4
|
+
module SimpleMetrics
|
5
|
+
|
6
|
+
module ClientHandler
|
7
|
+
|
8
|
+
@@data_points = []
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def get_and_clear_data_points
|
12
|
+
data_points = @@data_points.dup
|
13
|
+
@@data_points = []
|
14
|
+
data_points
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def data_points
|
19
|
+
@@data_points
|
20
|
+
end
|
21
|
+
|
22
|
+
def post_init
|
23
|
+
SimpleMetrics.logger.info "ClientHandler entering post_init"
|
24
|
+
end
|
25
|
+
|
26
|
+
def receive_data(data)
|
27
|
+
SimpleMetrics.logger.debug "received_data: #{data.inspect}"
|
28
|
+
|
29
|
+
@@data_points ||= []
|
30
|
+
@@data_points << DataPoint.parse(data)
|
31
|
+
rescue DataPoint::ParserError => e
|
32
|
+
SimpleMetrics.logger.debug "Invalid Data skipped: #{data}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Server
|
37
|
+
|
38
|
+
attr_reader :db, :connection
|
39
|
+
|
40
|
+
def start
|
41
|
+
SimpleMetrics.logger.info "SERVER: starting up on #{SimpleMetrics.config[:host]}:#{SimpleMetrics.config[:port]}..."
|
42
|
+
|
43
|
+
Mongo.ensure_collections_exist
|
44
|
+
|
45
|
+
EM.run do
|
46
|
+
EM.open_datagram_socket(SimpleMetrics.config[:host], SimpleMetrics.config[:port], SimpleMetrics::ClientHandler) do |con|
|
47
|
+
EventMachine::add_periodic_timer(SimpleMetrics.config[:flush_interval]) do
|
48
|
+
SimpleMetrics.logger.debug "SERVER: period timer triggered after #{SimpleMetrics.config[:flush_interval]} seconds"
|
49
|
+
|
50
|
+
EM.defer { Bucket.flush_data_points(ClientHandler.get_and_clear_data_points) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def stop
|
57
|
+
SimpleMetrics.logger.info "EventMachine stop"
|
58
|
+
EM.stop
|
59
|
+
end
|
60
|
+
|
61
|
+
def to_s
|
62
|
+
"#{SimpleMetrics.config[:host]}:#{SimpleMetrics.config[:port]}"
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
data/simple_metrics.gemspec
CHANGED
@@ -19,15 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency "rake"
|
20
20
|
s.add_development_dependency "rspec"
|
21
21
|
s.add_development_dependency "rr"
|
22
|
-
s.add_development_dependency "shotgun"
|
23
22
|
|
24
23
|
s.add_dependency "eventmachine"
|
25
24
|
s.add_dependency "daemons"
|
26
25
|
s.add_dependency "mongo", '~> 1.6'
|
27
26
|
s.add_dependency "bson", '~> 1.6'
|
28
|
-
s.add_dependency "bson_ext", '~> 1.6'
|
29
|
-
s.add_dependency "sinatra"
|
30
|
-
s.add_dependency "erubis"
|
31
|
-
s.add_dependency "vegas", '~> 0.1.2'
|
32
|
-
s.add_dependency "json"
|
33
27
|
end
|
data/spec/bucket_spec.rb
CHANGED
@@ -37,17 +37,17 @@ module SimpleMetrics
|
|
37
37
|
|
38
38
|
describe "#save" do
|
39
39
|
before do
|
40
|
-
|
41
|
-
|
40
|
+
Mongo.truncate_collections
|
41
|
+
Mongo.ensure_collections_exist
|
42
42
|
bucket.save(stats, ts)
|
43
43
|
end
|
44
44
|
|
45
45
|
let(:stats) do
|
46
|
-
DataPoint
|
46
|
+
DataPoint.create_counter(:name => "key1", :value => 5)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "saves given data in bucket" do
|
50
|
-
results = bucket.
|
50
|
+
results = bucket.find_all_by_name("key1")
|
51
51
|
results.should have(1).item
|
52
52
|
result = results.first
|
53
53
|
result.name.should == stats.name
|
@@ -56,7 +56,7 @@ module SimpleMetrics
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it "saves data in correct timestamp" do
|
59
|
-
result = bucket.
|
59
|
+
result = bucket.find_all_by_name("key1").first
|
60
60
|
result.ts.should == ts/sec*sec
|
61
61
|
end
|
62
62
|
|
@@ -65,33 +65,68 @@ module SimpleMetrics
|
|
65
65
|
describe "finder methods" do
|
66
66
|
|
67
67
|
before do
|
68
|
-
|
69
|
-
|
68
|
+
Mongo.truncate_collections
|
69
|
+
Mongo.ensure_collections_exist
|
70
70
|
end
|
71
71
|
|
72
|
-
describe "#
|
72
|
+
describe "#find_all_by_name" do
|
73
|
+
it "returns all stats for given name" do
|
74
|
+
stats_same1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
75
|
+
stats_same2 = DataPoint.create_counter(:name => "key1", :value => 3)
|
76
|
+
stats_different = DataPoint.create_counter(:name => "key2", :value => 3)
|
77
|
+
|
78
|
+
bucket.save(stats_same1, ts)
|
79
|
+
bucket.save(stats_same2, ts)
|
80
|
+
bucket.save(stats_different, ts)
|
81
|
+
|
82
|
+
results = bucket.find_all_by_name("key1")
|
83
|
+
results.should have(2).items
|
84
|
+
results.first.name.should == stats_same1.name
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#find_all_in_ts" do
|
73
89
|
it "returns all stats in given timestamp" do
|
74
|
-
stats1 = DataPoint
|
75
|
-
stats2 = DataPoint
|
90
|
+
stats1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
91
|
+
stats2 = DataPoint.create_counter(:name => "key2", :value => 3)
|
76
92
|
|
77
93
|
bucket.save(stats1, ts)
|
78
94
|
bucket.save(stats2, bucket.next_ts_bucket(ts))
|
79
95
|
|
80
|
-
result1 = bucket.
|
96
|
+
result1 = bucket.find_all_in_ts(ts).first
|
81
97
|
result1.name.should == stats1.name
|
82
98
|
result1.value.should == stats1.value
|
83
99
|
|
84
|
-
result2 = bucket.
|
100
|
+
result2 = bucket.find_all_in_ts(bucket.next_ts_bucket(ts)).first
|
85
101
|
result2.name.should == stats2.name
|
86
102
|
result2.value.should == stats2.value
|
87
103
|
end
|
88
104
|
end
|
89
105
|
|
90
|
-
describe "#
|
106
|
+
describe "#find_all_in_ts_by_name" do
|
107
|
+
it "returns all stats for given name and timestamp" do
|
108
|
+
stats1a = DataPoint.create_counter(:name => "key1", :value => 5)
|
109
|
+
stats1b = DataPoint.create_counter(:name => "key1", :value => 7)
|
110
|
+
stats2 = DataPoint.create_counter(:name => "key2", :value => 7)
|
111
|
+
stats1_different_ts = DataPoint.create_counter(:name => "key1", :value => 3)
|
112
|
+
|
113
|
+
bucket.save(stats1a, ts)
|
114
|
+
bucket.save(stats1b, ts)
|
115
|
+
bucket.save(stats2, ts)
|
116
|
+
bucket.save(stats1_different_ts, bucket.next_ts_bucket(ts))
|
117
|
+
|
118
|
+
results = bucket.find_all_in_ts_by_name(ts, "key1")
|
119
|
+
results.should have(2).items
|
120
|
+
results.first.name.should == "key1"
|
121
|
+
results.last.name.should == "key1"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "#find_all_in_ts_by_wildcard" do
|
91
126
|
it "returns all stats for given name and timestamp" do
|
92
|
-
stats1 = DataPoint
|
93
|
-
stats2 = DataPoint
|
94
|
-
stats_different = DataPoint
|
127
|
+
stats1 = DataPoint.create_counter(:name => "com.test.key1", :value => 5)
|
128
|
+
stats2 = DataPoint.create_counter(:name => "com.test.key2", :value => 7)
|
129
|
+
stats_different = DataPoint.create_counter(:name => "com.test2.key1", :value => 3)
|
95
130
|
|
96
131
|
from = bucket.ts_bucket(ts)
|
97
132
|
to = from
|
@@ -109,7 +144,7 @@ module SimpleMetrics
|
|
109
144
|
|
110
145
|
describe "#fill_gaps" do
|
111
146
|
it "returns stats and fills missing gaps with null entries" do
|
112
|
-
stats = DataPoint
|
147
|
+
stats = DataPoint.create_counter(:name => "com.test.key1", :value => 5)
|
113
148
|
|
114
149
|
from = ts - 10
|
115
150
|
to = ts + 10
|
@@ -134,5 +169,105 @@ module SimpleMetrics
|
|
134
169
|
end
|
135
170
|
end # describe "finder methods"
|
136
171
|
|
172
|
+
describe "#aggregate_all" do
|
173
|
+
before do
|
174
|
+
Mongo.truncate_collections
|
175
|
+
Mongo.ensure_collections_exist
|
176
|
+
end
|
177
|
+
|
178
|
+
it "aggregates all counter data points" do
|
179
|
+
stats1a = DataPoint.create_counter(:name => "key1", :value => 5)
|
180
|
+
stats1b = DataPoint.create_counter(:name => "key1", :value => 7)
|
181
|
+
stats2 = DataPoint.create_counter(:name => "key2", :value => 3)
|
182
|
+
|
183
|
+
bucket2 = Bucket[1]
|
184
|
+
ts_at_insert = bucket2.previous_ts_bucket(ts)
|
185
|
+
bucket.save(stats1a, ts_at_insert)
|
186
|
+
bucket.save(stats1b, ts_at_insert)
|
187
|
+
bucket.save(stats2, ts_at_insert)
|
188
|
+
|
189
|
+
Bucket.aggregate_all(ts)
|
190
|
+
|
191
|
+
results = bucket2.find_all_in_ts(ts_at_insert)
|
192
|
+
results.should have(2).items
|
193
|
+
|
194
|
+
key1_result = results.find {|stat| stat.name == "key1"}
|
195
|
+
key1_result.value.should == 12
|
196
|
+
key1_result.should be_counter
|
197
|
+
|
198
|
+
key2_result = results.find {|stat| stat.name == "key2"}
|
199
|
+
key2_result.value.should == 3
|
200
|
+
key2_result.should be_counter
|
201
|
+
end
|
202
|
+
|
203
|
+
it "aggregates all gauge data points" do
|
204
|
+
stats1a = DataPoint.create_gauge(:name => "key1", :value => 5)
|
205
|
+
stats1b = DataPoint.create_gauge(:name => "key1", :value => 7)
|
206
|
+
stats2 = DataPoint.create_gauge(:name => "key2", :value => 3)
|
207
|
+
|
208
|
+
bucket2 = Bucket[1]
|
209
|
+
ts_at_insert = bucket2.previous_ts_bucket(ts)
|
210
|
+
bucket.save(stats1a, ts_at_insert)
|
211
|
+
bucket.save(stats1b, ts_at_insert)
|
212
|
+
bucket.save(stats2, ts_at_insert)
|
213
|
+
|
214
|
+
Bucket.aggregate_all(ts)
|
215
|
+
|
216
|
+
results = bucket2.find_all_in_ts(ts_at_insert)
|
217
|
+
results.should have(2).items
|
218
|
+
|
219
|
+
key1_result = results.find {|stat| stat.name == "key1"}
|
220
|
+
key1_result.value.should == 6
|
221
|
+
key1_result.should be_gauge
|
222
|
+
|
223
|
+
key2_result = results.find {|stat| stat.name == "key2"}
|
224
|
+
key2_result.value.should == 3
|
225
|
+
key2_result.should be_gauge
|
226
|
+
end
|
227
|
+
|
228
|
+
end # describe "#aggregate_all"
|
229
|
+
|
230
|
+
describe "#flush_data_points" do
|
231
|
+
before do
|
232
|
+
Mongo.truncate_collections
|
233
|
+
Mongo.ensure_collections_exist
|
234
|
+
|
235
|
+
stats1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
236
|
+
stats2 = DataPoint.create_counter(:name => "key1", :value => 7)
|
237
|
+
stats3 = DataPoint.create_counter(:name => "key2", :value => 3)
|
238
|
+
@stats = [stats1, stats2, stats3]
|
239
|
+
end
|
240
|
+
|
241
|
+
it "saves all stats in finest/first bucket" do
|
242
|
+
Bucket.flush_data_points(@stats)
|
243
|
+
|
244
|
+
results = bucket.find_all_in_ts(ts)
|
245
|
+
results.should have(2).items
|
246
|
+
end
|
247
|
+
|
248
|
+
it "calls aggregate_all afterwards" do
|
249
|
+
mock(Bucket).aggregate_all(ts)
|
250
|
+
Bucket.flush_data_points(@stats)
|
251
|
+
end
|
252
|
+
|
253
|
+
it "saves all stats and aggregate if duplicates found" do
|
254
|
+
Bucket.flush_data_points(@stats)
|
255
|
+
|
256
|
+
results = bucket.find_all_in_ts(ts)
|
257
|
+
results.should have(2).items
|
258
|
+
results.first.name.should == "key1"
|
259
|
+
results.last.name.should == "key2"
|
260
|
+
results.first.value == 12
|
261
|
+
results.last.value == 3
|
262
|
+
end
|
263
|
+
|
264
|
+
it "raises error if name matches but type does not" do
|
265
|
+
stats4 = DataPoint.create_gauge(:name => "key1", :value => 3)
|
266
|
+
input = @stats + [stats4]
|
267
|
+
expect { Bucket.flush_data_points(input) }.to raise_error(SimpleMetrics::DataPoint::NonMatchingTypesError)
|
268
|
+
end
|
269
|
+
|
270
|
+
end # describe "#flush_data_points"
|
271
|
+
|
137
272
|
end
|
138
273
|
end
|
data/spec/data_point_spec.rb
CHANGED
@@ -54,28 +54,78 @@ module SimpleMetrics
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "parses increment timing with sample rate" do
|
57
|
-
# TODO
|
58
57
|
end
|
59
|
-
end
|
58
|
+
end
|
60
59
|
|
61
|
-
describe "#aggregate" do
|
62
60
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
describe "#aggregate" do
|
62
|
+
it "aggregates counter data points" do
|
63
|
+
stats1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
64
|
+
stats2 = DataPoint.create_counter(:name => "key1", :value => 7)
|
65
|
+
result = DataPoint.aggregate([stats1, stats2])
|
66
|
+
result.value.should == 12
|
67
67
|
result.name.should == "key1"
|
68
|
-
result.
|
68
|
+
result.should be_counter
|
69
|
+
end
|
70
|
+
|
71
|
+
it "aggregates counter data points with custom name" do
|
72
|
+
stats1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
73
|
+
stats2 = DataPoint.create_counter(:name => "key1", :value => 7)
|
74
|
+
result = DataPoint.aggregate([stats1, stats2], "new_name")
|
75
|
+
result.value.should == 12
|
76
|
+
result.name.should == "new_name"
|
77
|
+
result.should be_counter
|
69
78
|
end
|
70
79
|
|
71
|
-
it "
|
72
|
-
|
73
|
-
|
74
|
-
result = DataPoint.
|
80
|
+
it "aggregates gauge data points" do
|
81
|
+
stats1 = DataPoint.create_gauge(:name => "key1", :value => 5)
|
82
|
+
stats2 = DataPoint.create_gauge(:name => "key1", :value => 7)
|
83
|
+
result = DataPoint.aggregate([stats1, stats2])
|
84
|
+
result.value.should == 6
|
75
85
|
result.name.should == "key1"
|
76
|
-
result.
|
86
|
+
result.should be_gauge
|
77
87
|
end
|
78
88
|
|
79
|
-
|
89
|
+
it "aggregates timing data points" do
|
90
|
+
end
|
91
|
+
|
92
|
+
it "aggregates event data points" do
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "#aggregate_array" do
|
97
|
+
it "aggregates counter data points" do
|
98
|
+
stats1 = DataPoint.create_counter(:name => "com.test.key1", :value => 5, :ts => ts)
|
99
|
+
stats2 = DataPoint.create_counter(:name => "com.test.key1", :value => 7, :ts => ts)
|
100
|
+
stats3 = DataPoint.create_counter(:name => "com.test.key1", :value => 9, :ts => (ts + 60) )
|
101
|
+
|
102
|
+
results = DataPoint.aggregate_array([stats1, stats2, stats3], "com.test.*")
|
103
|
+
results.should have(2).data_points
|
104
|
+
results.first.name.should == "com.test.*"
|
105
|
+
results.last.name.should == "com.test.*"
|
106
|
+
results.first.value.should == 12
|
107
|
+
results.last.value.should == 9
|
108
|
+
end
|
109
|
+
|
110
|
+
it "aggregates gauge data points" do
|
111
|
+
stats1 = DataPoint.create_gauge(:name => "com.test.key1", :value => 5, :ts => ts)
|
112
|
+
stats2 = DataPoint.create_gauge(:name => "com.test.key1", :value => 7, :ts => ts)
|
113
|
+
stats3 = DataPoint.create_gauge(:name => "com.test.key1", :value => 9, :ts => (ts + 60) )
|
114
|
+
|
115
|
+
results = DataPoint.aggregate_array([stats1, stats2, stats3], "com.test.*")
|
116
|
+
results.should have(2).data_points
|
117
|
+
results.first.name.should == "com.test.*"
|
118
|
+
results.last.name.should == "com.test.*"
|
119
|
+
results.first.value.should == 6
|
120
|
+
results.last.value.should == 9
|
121
|
+
end
|
122
|
+
|
123
|
+
it "raises NonMatchingTypesError if types are different" do
|
124
|
+
stats1 = DataPoint.create_counter(:name => "com.test.key1", :value => 5, :ts => ts)
|
125
|
+
stats2 = DataPoint.create_gauge(:name => "com.test.key1", :value => 5, :ts => ts)
|
126
|
+
expect { DataPoint.aggregate_array([stats1, stats2], "com.test.*") }.to raise_error(SimpleMetrics::DataPoint::NonMatchingTypesError)
|
127
|
+
end
|
128
|
+
end
|
80
129
|
end
|
130
|
+
|
81
131
|
end
|
data/spec/graph_spec.rb
CHANGED
@@ -14,14 +14,14 @@ module SimpleMetrics
|
|
14
14
|
end
|
15
15
|
|
16
16
|
before do
|
17
|
-
|
18
|
-
|
17
|
+
Mongo.truncate_collections
|
18
|
+
Mongo.ensure_collections_exist
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "#query" do
|
22
22
|
|
23
23
|
it "returns string request data points as is" do
|
24
|
-
dp1 = DataPoint
|
24
|
+
dp1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
25
25
|
|
26
26
|
bucket.save(dp1, ts)
|
27
27
|
|
@@ -34,7 +34,7 @@ module SimpleMetrics
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "returns string request data points and fill graps" do
|
37
|
-
dp1 = DataPoint
|
37
|
+
dp1 = DataPoint.create_counter(:name => "key1", :value => 5)
|
38
38
|
|
39
39
|
bucket.save(dp1, ts)
|
40
40
|
|
@@ -49,8 +49,8 @@ module SimpleMetrics
|
|
49
49
|
end
|
50
50
|
|
51
51
|
it "returns wildcard request data points with aggregate counter" do
|
52
|
-
dp1 = DataPoint
|
53
|
-
dp2 = DataPoint
|
52
|
+
dp1 = DataPoint.create_counter(:name => "com.test.key1", :value => 5)
|
53
|
+
dp2 = DataPoint.create_counter(:name => "com.test.key2", :value => 7)
|
54
54
|
|
55
55
|
bucket.save(dp1, ts)
|
56
56
|
bucket.save(dp2, ts)
|
@@ -66,35 +66,24 @@ module SimpleMetrics
|
|
66
66
|
result.should be_counter
|
67
67
|
end
|
68
68
|
|
69
|
-
|
69
|
+
it "returns regexp request data points with aggregate gauge" do
|
70
|
+
dp1 = DataPoint.create_gauge(:name => "com.test.key1", :value => 5)
|
71
|
+
dp2 = DataPoint.create_gauge(:name => "com.test.key2", :value => 7)
|
70
72
|
|
71
|
-
|
72
|
-
|
73
|
-
it "returns request data points as is" do
|
74
|
-
dp1 = DataPoint::Counter.new(:name => "com.test.key1", :value => 5)
|
75
|
-
dp2 = DataPoint::Counter.new(:name => "com.test.key2", :value => 7)
|
76
|
-
dp3 = DataPoint::Counter.new(:name => "com.test.key2", :value => 3)
|
77
|
-
bucket.save(dp1, ts)
|
78
|
-
bucket.save(dp2, ts - 10)
|
79
|
-
bucket.save(dp3, ts)
|
73
|
+
bucket.save(dp1, ts)
|
74
|
+
bucket.save(dp2, ts)
|
80
75
|
|
81
76
|
current_ts = bucket.ts_bucket(ts)
|
82
|
-
from = current_ts
|
77
|
+
from = current_ts
|
83
78
|
to = current_ts
|
84
|
-
results = Graph.query_all(bucket, from, to, "com.test.key1", "com.test.key2")
|
85
|
-
key1 = results.first
|
86
|
-
key1[:name].should == "com.test.key1"
|
87
|
-
key1[:data].should have(2).entry
|
88
|
-
key1[:data].first[:y].should == 0
|
89
|
-
key1[:data].last[:y].should == 5
|
90
|
-
|
91
|
-
key2 = results.last
|
92
|
-
key2[:name].should == "com.test.key2"
|
93
|
-
key2[:data].should have(2).entry
|
94
|
-
key2[:data].first[:y].should == 7
|
95
|
-
key2[:data].last[:y].should == 3
|
96
|
-
end
|
97
79
|
|
80
|
+
results = Graph.query(bucket, from, to, /com\.test(.*)/)
|
81
|
+
results.should have(1).data_point
|
82
|
+
result = results.first
|
83
|
+
result.name.should == "/com\\.test(.*)/"
|
84
|
+
result.value.should == 6
|
85
|
+
result.should be_gauge
|
86
|
+
end
|
98
87
|
end
|
99
88
|
end
|
100
89
|
end
|