serverspec-opentsdb 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/serverspec/matcher/have_data_points.rb +22 -0
- data/lib/serverspec/opentsdb.rb +1 -0
- data/lib/serverspec/type/opentsdb_query.rb +17 -10
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e14aecc85327b60ff742690af0d5c6741ed8b57
|
4
|
+
data.tar.gz: bf15e8763fd0d42daf345ccbe5762d6839a6b661
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee0f32ff64f71b2aed419b4831e2c227370af3375a0a113833b3c206011593210bfabe95e84f2eee5cf9474586195fa50499e58fe289835b8b0f6b071e99967a
|
7
|
+
data.tar.gz: c6fd058611f5da321652b36625628b0dbc15c97f2b3863410712d85ef2111e182b05de016454508a5bc72e46351c6586f98b7dfc650492e51b62467b72e6066a
|
@@ -0,0 +1,22 @@
|
|
1
|
+
RSpec::Matchers.define :have_data_points do |metric|
|
2
|
+
match do |subject|
|
3
|
+
if subject.class.name == 'Serverspec::Type::OpenTSDBQuery'
|
4
|
+
subject.has_data_points?(metric, @start, @aggregator, @tags)
|
5
|
+
elsif subject.respond_to?(:has_data_points?)
|
6
|
+
subject.has_data_points?(metric)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
# For opentsdb
|
11
|
+
chain :with_start do |start|
|
12
|
+
@start = start
|
13
|
+
end
|
14
|
+
|
15
|
+
chain :with_aggregator do |aggregator|
|
16
|
+
@aggregator = aggregator
|
17
|
+
end
|
18
|
+
|
19
|
+
chain :with_tags do |tags|
|
20
|
+
@tags = tags
|
21
|
+
end
|
22
|
+
end
|
data/lib/serverspec/opentsdb.rb
CHANGED
@@ -6,22 +6,29 @@ require "uri"
|
|
6
6
|
|
7
7
|
module Serverspec
|
8
8
|
module Type
|
9
|
-
class
|
10
|
-
def initialize(metric
|
9
|
+
class OpenTSDBQuery < Base
|
10
|
+
def initialize(metric)
|
11
|
+
@metric = metric
|
11
12
|
@host = "opentsdb"
|
12
13
|
@port = 4242
|
13
14
|
@start = "2m-ago"
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@tags = tags
|
15
|
+
@aggregator = "sum"
|
16
|
+
@tags = {}
|
17
17
|
end
|
18
18
|
|
19
19
|
def response
|
20
20
|
JSON.parse(Net::HTTP.get_response(generate_uri).body)
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
|
23
|
+
def has_data_points?(metric, start, aggregator, tags)
|
24
|
+
@start = start if start
|
25
|
+
@aggregator = aggregator if aggregator
|
26
|
+
@tags = tags if tags
|
27
|
+
response.first['dps'].any?
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
"OpenTSDB Query"
|
25
32
|
end
|
26
33
|
|
27
34
|
private
|
@@ -31,14 +38,14 @@ module Serverspec
|
|
31
38
|
uri = URI.parse("http://#{@host}:#{@port}/api/query")
|
32
39
|
uri.query = URI.encode_www_form(
|
33
40
|
"start" => @start,
|
34
|
-
"m" => "#{@
|
41
|
+
"m" => "#{@aggregator}:#{@metric}{#{joined_tags}}"
|
35
42
|
)
|
36
43
|
uri
|
37
44
|
end
|
38
45
|
end
|
39
46
|
|
40
|
-
def opentsdb_query(metric
|
41
|
-
|
47
|
+
def opentsdb_query(metric)
|
48
|
+
OpenTSDBQuery.new(metric)
|
42
49
|
end
|
43
50
|
end
|
44
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverspec-opentsdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike
|
@@ -31,6 +31,7 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- lib/serverspec/matcher/have_data_points.rb
|
34
35
|
- lib/serverspec/opentsdb.rb
|
35
36
|
- lib/serverspec/type/opentsdb_query.rb
|
36
37
|
homepage: https://rubygems.org/gems/serverspec-opentsdb
|