metriks-addons 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,198 @@
1
+ require 'webmock/rspec'
2
+ require 'metriks'
3
+ require 'metriks/signalfx_reporter'
4
+
5
+ describe "Smoke test" do
6
+ before(:all) do
7
+ stub_request(:any, "http://localhost:4242")
8
+ end
9
+
10
+ before(:each) do
11
+ @registry = Metriks::Registry.new
12
+ @reporter = Metriks::SignalFxReporter.new(
13
+ 'http://localhost:4242',
14
+ "123456789",
15
+ "ABCD",
16
+ {:env => "test"},
17
+ { :registry => @registry, :batch_size => 3})
18
+ end
19
+
20
+ after(:each) do
21
+ @reporter.stop
22
+ @registry.stop
23
+ end
24
+
25
+ it "meter" do
26
+ @registry.meter('meter.testing').mark
27
+ datapoints = @reporter.get_datapoints
28
+ expect(datapoints[:counter].size).to eql(5)
29
+ expect(datapoints[:counter][0][:metric]).to eql("meter.testing.count")
30
+ expect(datapoints[:counter][0][:value]).to eql(1)
31
+ expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
32
+ expect(datapoints[:counter][0][:timestamp]).not_to be_nil
33
+
34
+ expect(datapoints[:counter][1][:metric]).to eql("meter.testing.one_minute_rate")
35
+ expect(datapoints[:counter][1][:value]).not_to be_nil
36
+ expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
37
+ expect(datapoints[:counter][1][:timestamp]).not_to be_nil
38
+
39
+ expect(datapoints[:counter][2][:metric]).to eql("meter.testing.five_minute_rate")
40
+ expect(datapoints[:counter][2][:value]).to eql(0.0)
41
+ expect(datapoints[:counter][2][:dimensions]).to include(:env => "test")
42
+ expect(datapoints[:counter][2][:timestamp]).not_to be_nil
43
+
44
+ expect(datapoints[:counter][3][:metric]).to eql("meter.testing.fifteen_minute_rate")
45
+ expect(datapoints[:counter][3][:value]).to eql(0.0)
46
+ expect(datapoints[:counter][3][:dimensions]).to include(:env => "test")
47
+ expect(datapoints[:counter][3][:timestamp]).not_to be_nil
48
+
49
+ expect(datapoints[:counter][4][:metric]).to eql("meter.testing.mean_rate")
50
+ expect(datapoints[:counter][4][:value]).not_to be_nil
51
+ expect(datapoints[:counter][4][:dimensions]).to include(:env => "test")
52
+ expect(datapoints[:counter][4][:timestamp]).not_to be_nil
53
+ end
54
+
55
+ it "counter" do
56
+ @registry.counter('counter.testing').increment
57
+ datapoints = @reporter.get_datapoints
58
+ expect(datapoints[:counter].size).to eql(1)
59
+ expect(datapoints[:counter][0][:metric]).to eql("counter.testing.count")
60
+ expect(datapoints[:counter][0][:value]).to eql(1)
61
+ expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
62
+ expect(datapoints[:counter][0][:timestamp]).not_to be_nil
63
+ end
64
+
65
+ it "timer" do
66
+ @registry.timer('timer.testing').update(1.5)
67
+ datapoints = @reporter.get_datapoints
68
+ expect(datapoints[:counter].size).to eql(11)
69
+ expect(datapoints[:counter][0][:metric]).to eql("timer.testing.count")
70
+ expect(datapoints[:counter][0][:value]).to eql(1)
71
+ expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
72
+ expect(datapoints[:counter][0][:timestamp]).not_to be_nil
73
+
74
+ expect(datapoints[:counter][1][:metric]).to eql("timer.testing.one_minute_rate")
75
+ expect(datapoints[:counter][1][:value]).not_to be_nil
76
+ expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
77
+ expect(datapoints[:counter][1][:timestamp]).not_to be_nil
78
+
79
+ expect(datapoints[:counter][2][:metric]).to eql("timer.testing.five_minute_rate")
80
+ expect(datapoints[:counter][2][:value]).to eql(0.0)
81
+ expect(datapoints[:counter][2][:dimensions]).to include(:env => "test")
82
+ expect(datapoints[:counter][2][:timestamp]).not_to be_nil
83
+
84
+ expect(datapoints[:counter][3][:metric]).to eql("timer.testing.fifteen_minute_rate")
85
+ expect(datapoints[:counter][3][:value]).to eql(0.0)
86
+ expect(datapoints[:counter][3][:dimensions]).to include(:env => "test")
87
+ expect(datapoints[:counter][3][:timestamp]).not_to be_nil
88
+
89
+ expect(datapoints[:counter][4][:metric]).to eql("timer.testing.mean_rate")
90
+ expect(datapoints[:counter][4][:value]).not_to be_nil
91
+ expect(datapoints[:counter][4][:dimensions]).to include(:env => "test")
92
+ expect(datapoints[:counter][4][:timestamp]).not_to be_nil
93
+
94
+ expect(datapoints[:counter][5][:metric]).to eql("timer.testing.min")
95
+ expect(datapoints[:counter][5][:value]).not_to be_nil
96
+ expect(datapoints[:counter][5][:dimensions]).to include(:env => "test")
97
+ expect(datapoints[:counter][5][:timestamp]).not_to be_nil
98
+
99
+ expect(datapoints[:counter][6][:metric]).to eql("timer.testing.max")
100
+ expect(datapoints[:counter][6][:value]).not_to be_nil
101
+ expect(datapoints[:counter][6][:dimensions]).to include(:env => "test")
102
+ expect(datapoints[:counter][6][:timestamp]).not_to be_nil
103
+
104
+ expect(datapoints[:counter][7][:metric]).to eql("timer.testing.mean")
105
+ expect(datapoints[:counter][7][:value]).not_to be_nil
106
+ expect(datapoints[:counter][7][:dimensions]).to include(:env => "test")
107
+ expect(datapoints[:counter][7][:timestamp]).not_to be_nil
108
+
109
+ expect(datapoints[:counter][8][:metric]).to eql("timer.testing.stddev")
110
+ expect(datapoints[:counter][8][:value]).not_to be_nil
111
+ expect(datapoints[:counter][8][:dimensions]).to include(:env => "test")
112
+ expect(datapoints[:counter][8][:timestamp]).not_to be_nil
113
+
114
+ expect(datapoints[:counter][9][:metric]).to eql("timer.testing.median")
115
+ expect(datapoints[:counter][9][:value]).not_to be_nil
116
+ expect(datapoints[:counter][9][:dimensions]).to include(:env => "test")
117
+ expect(datapoints[:counter][9][:timestamp]).not_to be_nil
118
+
119
+ expect(datapoints[:counter][10][:metric]).to eql("timer.testing.95th_percentile")
120
+ expect(datapoints[:counter][10][:value]).not_to be_nil
121
+ expect(datapoints[:counter][10][:dimensions]).to include(:env => "test")
122
+ expect(datapoints[:counter][10][:timestamp]).not_to be_nil
123
+ end
124
+
125
+ it "histogram" do
126
+ @registry.histogram('histogram.testing').update(1.5)
127
+ datapoints = @reporter.get_datapoints
128
+ expect(datapoints[:counter].size).to eql(7)
129
+ expect(datapoints[:counter][0][:metric]).to eql("histogram.testing.count")
130
+ expect(datapoints[:counter][0][:value]).to eql(1)
131
+ expect(datapoints[:counter][0][:dimensions]).to include(:env => "test")
132
+ expect(datapoints[:counter][0][:timestamp]).not_to be_nil
133
+
134
+ expect(datapoints[:counter][1][:metric]).to eql("histogram.testing.min")
135
+ expect(datapoints[:counter][1][:value]).not_to be_nil
136
+ expect(datapoints[:counter][1][:dimensions]).to include(:env => "test")
137
+ expect(datapoints[:counter][1][:timestamp]).not_to be_nil
138
+
139
+ expect(datapoints[:counter][2][:metric]).to eql("histogram.testing.max")
140
+ expect(datapoints[:counter][2][:value]).not_to be_nil
141
+ expect(datapoints[:counter][2][:dimensions]).to include(:env => "test")
142
+ expect(datapoints[:counter][2][:timestamp]).not_to be_nil
143
+
144
+ expect(datapoints[:counter][3][:metric]).to eql("histogram.testing.mean")
145
+ expect(datapoints[:counter][3][:value]).not_to be_nil
146
+ expect(datapoints[:counter][3][:dimensions]).to include(:env => "test")
147
+ expect(datapoints[:counter][3][:timestamp]).not_to be_nil
148
+
149
+ expect(datapoints[:counter][4][:metric]).to eql("histogram.testing.stddev")
150
+ expect(datapoints[:counter][4][:value]).not_to be_nil
151
+ expect(datapoints[:counter][4][:dimensions]).to include(:env => "test")
152
+ expect(datapoints[:counter][4][:timestamp]).not_to be_nil
153
+
154
+ expect(datapoints[:counter][5][:metric]).to eql("histogram.testing.median")
155
+ expect(datapoints[:counter][5][:value]).not_to be_nil
156
+ expect(datapoints[:counter][5][:dimensions]).to include(:env => "test")
157
+ expect(datapoints[:counter][5][:timestamp]).not_to be_nil
158
+
159
+ expect(datapoints[:counter][6][:metric]).to eql("histogram.testing.95th_percentile")
160
+ expect(datapoints[:counter][6][:value]).not_to be_nil
161
+ expect(datapoints[:counter][6][:dimensions]).to include(:env => "test")
162
+ expect(datapoints[:counter][6][:timestamp]).not_to be_nil
163
+ end
164
+
165
+ it "gauge" do
166
+ @registry.gauge('gauge.testing') { 123 }
167
+ datapoints = @reporter.get_datapoints
168
+ expect(datapoints[:gauge].size).to eql(1)
169
+ expect(datapoints[:gauge][0][:metric]).to eql("gauge.testing.value")
170
+ expect(datapoints[:gauge][0][:value]).to eql(123)
171
+ expect(datapoints[:gauge][0][:dimensions]).to include(:env => "test")
172
+ expect(datapoints[:gauge][0][:timestamp]).not_to be_nil
173
+ end
174
+ end
175
+
176
+ describe "Rest Client" do
177
+ before(:each) do
178
+ @registry = Metriks::Registry.new
179
+ @reporter = Metriks::SignalFxReporter.new(
180
+ 'http://localhost:4242/api/datapoint',
181
+ "123456789",
182
+ "ABCD",
183
+ {:env => "test"},
184
+ { :registry => @registry, :batch_size => 3})
185
+ stub_request(:post, "http://localhost:4242/api/datapoint?orgid=ABCD").
186
+ with(:body => /^\{.*\}$/).
187
+ to_return(:status => 200, :body => "", :headers => {})
188
+ end
189
+
190
+ it "Send metricwise" do
191
+ for i in 0..2 do
192
+ @registry.counter("counter.testing.#{i}").increment
193
+ end
194
+ @registry.gauge("gauge.testing")
195
+ @reporter.submit @reporter.get_datapoints
196
+ expect(a_request(:post, "http://localhost:4242/api/datapoint?orgid=ABCD")).to have_been_made
197
+ end
198
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metriks-addons
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Rajat Venkatesh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: metriks
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.9.9.7
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.9.7
33
+ - !ruby/object:Gem::Dependency
34
+ name: rest-client
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.6.7
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.6.7
47
+ - !ruby/object:Gem::Dependency
48
+ name: mocha
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.10'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.10'
61
+ description: OpenTSDB and SignalFX reporter for Metriks.
62
+ email: rvenkatesh@qubole.com
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files:
66
+ - README.md
67
+ - LICENSE
68
+ files:
69
+ - Gemfile
70
+ - LICENSE
71
+ - README.md
72
+ - Rakefile
73
+ - lib/metriks-addons.rb
74
+ - lib/metriks/opentsdb_reporter.rb
75
+ - lib/metriks/signalfx_reporter.rb
76
+ - metriks-addons.gemspec
77
+ - spec/opentsdb_spec.rb
78
+ - spec/signalfx_spec.rb
79
+ homepage: https://github.com/vrajat/metriks-addons
80
+ licenses: []
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options:
84
+ - "--charset=UTF-8"
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.4.5
100
+ signing_key:
101
+ specification_version: 2
102
+ summary: Reporters for Metriks.
103
+ test_files: []