metriks-addons 2.1.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.
@@ -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: []