influxdb 0.6.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/.travis.yml +15 -13
- data/CHANGELOG.md +5 -0
- data/influxdb.gemspec +1 -1
- data/lib/influxdb.rb +1 -0
- data/lib/influxdb/client/http.rb +3 -1
- data/lib/influxdb/config.rb +1 -0
- data/lib/influxdb/logging.rb +1 -0
- data/lib/influxdb/max_queue.rb +1 -0
- data/lib/influxdb/point_value.rb +7 -6
- data/lib/influxdb/query/core.rb +2 -2
- data/lib/influxdb/query/measurement.rb +1 -0
- data/lib/influxdb/query/series.rb +1 -0
- data/lib/influxdb/timestamp_conversion.rb +23 -0
- data/lib/influxdb/version.rb +1 -1
- data/lib/influxdb/writer/async.rb +2 -0
- data/spec/influxdb/cases/query_batch_spec.rb +26 -26
- data/spec/influxdb/cases/query_cluster_spec.rb +2 -1
- data/spec/influxdb/cases/query_continuous_query_spec.rb +6 -4
- data/spec/influxdb/cases/query_core_spec.rb +2 -2
- data/spec/influxdb/cases/query_series_spec.rb +4 -4
- data/spec/influxdb/cases/query_with_params_spec.rb +2 -2
- data/spec/influxdb/cases/querying_issue_7000_spec.rb +34 -14
- data/spec/influxdb/cases/querying_spec.rb +155 -60
- data/spec/influxdb/cases/retry_requests_spec.rb +11 -11
- data/spec/influxdb/cases/show_field_keys_spec.rb +5 -5
- data/spec/influxdb/cases/udp_client_spec.rb +1 -1
- data/spec/influxdb/cases/write_points_spec.rb +19 -19
- data/spec/influxdb/client_spec.rb +4 -4
- data/spec/influxdb/config_spec.rb +9 -9
- data/spec/influxdb/point_value_spec.rb +8 -8
- data/spec/influxdb/time_conversion_spec.rb +26 -0
- data/spec/spec_helper.rb +1 -0
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7762707820de5633483a02078dd8d6254fbda6bd412fbf56c67e8517bd51684
|
4
|
+
data.tar.gz: 3ba80a79c409b7768a65616cf2f6b1e7a6097c862799a56cf5a9bc419a5c49e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76cf43822faa5426b10160f7bb40cbd48af59a4cd1bfd494cd7978a82484b984e35440e3f714491884f78e6d497163567c162e66164c602bb7eeefe84c7b86a9
|
7
|
+
data.tar.gz: 742e37b48e925a5e0985570cc502a976c41f9059258d6347a9a132d8a4ef452d070f344aa20e4880a1b0bd800a887220816c9c370f2a176a04855a18dc865b98
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -8,9 +8,9 @@ before_install:
|
|
8
8
|
- bin/provision.sh
|
9
9
|
rvm:
|
10
10
|
- 2.2.9
|
11
|
-
- 2.3.
|
12
|
-
- 2.4.
|
13
|
-
- 2.5.
|
11
|
+
- 2.3.8
|
12
|
+
- 2.4.5
|
13
|
+
- 2.5.3
|
14
14
|
- ruby-head
|
15
15
|
env:
|
16
16
|
- TEST_TASK=spec
|
@@ -20,29 +20,31 @@ matrix:
|
|
20
20
|
- rvm: jruby-head
|
21
21
|
- rvm: ruby-head
|
22
22
|
- rvm: jruby-9.1.5.0
|
23
|
-
- rvm: 2.5.
|
23
|
+
- rvm: 2.5.3
|
24
24
|
env: influx_version=nightly channel=nightlies
|
25
25
|
include:
|
26
|
-
- rvm: 2.5.
|
26
|
+
- rvm: 2.5.3
|
27
27
|
env: TEST_TASK=rubocop
|
28
28
|
- rvm: jruby-9.1.5.0
|
29
29
|
- rvm: jruby-head
|
30
30
|
env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
|
31
|
-
- rvm: 2.5.
|
31
|
+
- rvm: 2.5.3
|
32
32
|
env: influx_version=1.0.2 pkghash=88f6c30fec2c6e612e802e23b9161fdfc7c5c29f6be036f0376326445aff0037
|
33
|
-
- rvm: 2.5.
|
33
|
+
- rvm: 2.5.3
|
34
34
|
env: influx_version=1.1.0 pkghash=f1520a2e18e0ab47e8a8810671e07d5a47960e54f7553b78bebe7d3c7594742f
|
35
|
-
- rvm: 2.5.
|
35
|
+
- rvm: 2.5.3
|
36
36
|
env: influx_version=1.2.4 pkghash=2fac8391e04aa1bec9151e8f0d8f18df030c866af2b4963ab7d86c6ddc172182
|
37
|
-
- rvm: 2.5.
|
37
|
+
- rvm: 2.5.3
|
38
38
|
env: influx_version=1.3.6 pkghash=6406cdd21466bcb832b967078adaa9f07cb6ae524a6579c15141692031f5f840
|
39
|
-
- rvm: 2.5.
|
39
|
+
- rvm: 2.5.3
|
40
40
|
env: influx_version=1.4.3 pkghash=0477080f1d1cf8e1242dc7318280b9010c4c45cf6a415a2a5de607ae17fa0359
|
41
|
-
- rvm: 2.5.
|
41
|
+
- rvm: 2.5.3
|
42
42
|
env: influx_version=1.5.2 pkghash=42fede7b497bdf30d4eb5138db218d1add986fca4fce4a8bcd9c7d6dabaf572a
|
43
|
-
- rvm: 2.5.
|
43
|
+
- rvm: 2.5.3
|
44
44
|
env: influx_version=1.6.1 pkghash=a833ac16890182a75983c61e5fe6471ae27cbab7984d7b7361034887b7428de2
|
45
|
-
- rvm: 2.5.
|
45
|
+
- rvm: 2.5.3
|
46
|
+
env: influx_version=1.7.0 pkghash=0615a395b3f8e68455b0a8a2584d00ff8694f62caf77468900f7cf0a77f2b8be
|
47
|
+
- rvm: 2.5.3
|
46
48
|
env: influx_version=nightly channel=nightlies
|
47
49
|
fail_fast: true
|
48
50
|
addons:
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
For the full commit log, [see here](https://github.com/influxdata/influxdb-ruby/commits/master).
|
4
4
|
|
5
|
+
## v0.6.2, released 2018-11-30
|
6
|
+
|
7
|
+
- Added `InfluxDB.convert_timestamp` utility to convert a `Time` to a
|
8
|
+
timestamp with (taken from PR influxdb-rails#53 by @ChrisBr).
|
9
|
+
|
5
10
|
## v0.6.1, released 2018-08-23
|
6
11
|
|
7
12
|
- Fix `InfluxDB::Client#delete_retention_policy`: the database name
|
data/influxdb.gemspec
CHANGED
@@ -21,6 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.6"
|
24
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
24
|
+
spec.add_development_dependency "rubocop", "~> 0.60.0"
|
25
25
|
spec.add_development_dependency "webmock", "~> 3.0"
|
26
26
|
end
|
data/lib/influxdb.rb
CHANGED
data/lib/influxdb/client/http.rb
CHANGED
@@ -58,6 +58,7 @@ module InfluxDB
|
|
58
58
|
unless (config.retry == -1 || retry_count <= config.retry) && !stopped?
|
59
59
|
raise InfluxDB::ConnectionError, "Tried #{retry_count - 1} times to reconnect but failed."
|
60
60
|
end
|
61
|
+
|
61
62
|
log(:warn) { "Failed to contact host #{host}: #{e.inspect} - retrying in #{delay}s." }
|
62
63
|
sleep delay
|
63
64
|
delay = [config.max_delay, delay * 2].min
|
@@ -96,13 +97,14 @@ module InfluxDB
|
|
96
97
|
end
|
97
98
|
|
98
99
|
errors = errors_from_response(parsed_response)
|
99
|
-
|
100
100
|
raise InfluxDB::QueryError, errors if errors
|
101
|
+
|
101
102
|
options.fetch(:parse, false) ? parsed_response : response
|
102
103
|
end
|
103
104
|
|
104
105
|
def errors_from_response(parsed_resp)
|
105
106
|
return unless parsed_resp.is_a?(Hash)
|
107
|
+
|
106
108
|
parsed_resp
|
107
109
|
.fetch('results', [])
|
108
110
|
.fetch(0, {})
|
data/lib/influxdb/config.rb
CHANGED
data/lib/influxdb/logging.rb
CHANGED
data/lib/influxdb/max_queue.rb
CHANGED
data/lib/influxdb/point_value.rb
CHANGED
@@ -21,11 +21,11 @@ module InfluxDB
|
|
21
21
|
private
|
22
22
|
|
23
23
|
ESCAPES = {
|
24
|
-
measurement:
|
25
|
-
tag_key:
|
26
|
-
tag_value:
|
27
|
-
field_key:
|
28
|
-
field_value:
|
24
|
+
measurement: [' '.freeze, ','.freeze],
|
25
|
+
tag_key: ['='.freeze, ' '.freeze, ','.freeze],
|
26
|
+
tag_value: ['='.freeze, ' '.freeze, ','.freeze],
|
27
|
+
field_key: ['='.freeze, ' '.freeze, ','.freeze, '"'.freeze],
|
28
|
+
field_value: ["\\".freeze, '"'.freeze],
|
29
29
|
}.freeze
|
30
30
|
|
31
31
|
private_constant :ESCAPES
|
@@ -34,7 +34,7 @@ module InfluxDB
|
|
34
34
|
# rubocop:disable Layout/AlignParameters
|
35
35
|
str = str.encode "UTF-8".freeze, "UTF-8".freeze,
|
36
36
|
invalid: :replace,
|
37
|
-
undef:
|
37
|
+
undef: :replace,
|
38
38
|
replace: "".freeze
|
39
39
|
# rubocop:enable Layout/AlignParameters
|
40
40
|
|
@@ -46,6 +46,7 @@ module InfluxDB
|
|
46
46
|
|
47
47
|
def escape_values(values)
|
48
48
|
return if values.nil?
|
49
|
+
|
49
50
|
values.map do |k, v|
|
50
51
|
key = escape(k.to_s, :field_key)
|
51
52
|
val = escape_value(v)
|
data/lib/influxdb/query/core.rb
CHANGED
@@ -74,8 +74,8 @@ module InfluxDB
|
|
74
74
|
|
75
75
|
def write(data, precision, retention_policy = nil, database = nil)
|
76
76
|
params = {
|
77
|
-
db:
|
78
|
-
precision:
|
77
|
+
db: database || config.database,
|
78
|
+
precision: precision || config.time_precision,
|
79
79
|
}
|
80
80
|
|
81
81
|
params[:rp] = retention_policy if retention_policy
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module InfluxDB #:nodoc:
|
2
|
+
TIMESTAMP_CONVERSIONS = {
|
3
|
+
"ns" => 1e9.to_r,
|
4
|
+
nil => 1e9.to_r,
|
5
|
+
"u" => 1e6.to_r,
|
6
|
+
"ms" => 1e3.to_r,
|
7
|
+
"s" => 1.to_r,
|
8
|
+
"m" => 1.to_r / 60,
|
9
|
+
"h" => 1.to_r / 60 / 60,
|
10
|
+
}.freeze
|
11
|
+
private_constant :TIMESTAMP_CONVERSIONS
|
12
|
+
|
13
|
+
# Converts a Time to a timestamp with the given precision.
|
14
|
+
#
|
15
|
+
# `convert_timestamp(Time.now, "ms")` might return `1543533308243`.
|
16
|
+
def self.convert_timestamp(time, time_precision)
|
17
|
+
factor = TIMESTAMP_CONVERSIONS.fetch(time_precision) do
|
18
|
+
raise "Invalid time precision: #{time_precision}"
|
19
|
+
end
|
20
|
+
|
21
|
+
(time.to_r * factor).to_i
|
22
|
+
end
|
23
|
+
end
|
data/lib/influxdb/version.rb
CHANGED
@@ -19,10 +19,12 @@ module InfluxDB
|
|
19
19
|
WORKER_MUTEX = Mutex.new
|
20
20
|
def worker
|
21
21
|
return @worker if @worker
|
22
|
+
|
22
23
|
WORKER_MUTEX.synchronize do
|
23
24
|
# this return is necessary because the previous mutex holder
|
24
25
|
# might have already assigned the @worker
|
25
26
|
return @worker if @worker
|
27
|
+
|
26
28
|
@worker = Worker.new(client, config)
|
27
29
|
end
|
28
30
|
end
|
@@ -65,26 +65,26 @@ describe InfluxDB::Client do
|
|
65
65
|
|
66
66
|
let :response do
|
67
67
|
{ "results" => [{ "statement_id" => 0,
|
68
|
-
"series"
|
69
|
-
|
70
|
-
|
68
|
+
"series" => [{ "name" => "requests_per_minute",
|
69
|
+
"columns" => %w[time value],
|
70
|
+
"values" => [%w[2018-04-02T00:00:00Z 204]] }] },
|
71
71
|
{ "statement_id" => 1 },
|
72
72
|
{ "statement_id" => 2,
|
73
|
-
"series"
|
74
|
-
|
75
|
-
|
73
|
+
"series" => [{ "name" => "requests_per_minute",
|
74
|
+
"columns" => %w[time value],
|
75
|
+
"values" => [%w[2018-04-02T00:00:00Z 204]] }] }] }
|
76
76
|
end
|
77
77
|
|
78
78
|
let :expected_result do
|
79
79
|
[
|
80
|
-
[{ "name"
|
81
|
-
"tags"
|
82
|
-
"values" => [{ "time"
|
80
|
+
[{ "name" => "requests_per_minute",
|
81
|
+
"tags" => nil,
|
82
|
+
"values" => [{ "time" => "2018-04-02T00:00:00Z",
|
83
83
|
"value" => "204" }] }],
|
84
84
|
[],
|
85
|
-
[{ "name"
|
86
|
-
"tags"
|
87
|
-
"values" => [{ "time"
|
85
|
+
[{ "name" => "requests_per_minute",
|
86
|
+
"tags" => nil,
|
87
|
+
"values" => [{ "time" => "2018-04-02T00:00:00Z",
|
88
88
|
"value" => "204" }] }],
|
89
89
|
]
|
90
90
|
end
|
@@ -113,24 +113,24 @@ describe InfluxDB::Client do
|
|
113
113
|
|
114
114
|
let :response do
|
115
115
|
{ "results" => [{ "statement_id" => 0,
|
116
|
-
"series"
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
116
|
+
"series" => [{ "name" => "requests_per_minute",
|
117
|
+
"tags" => { "status_code" => "200" },
|
118
|
+
"columns" => %w[time value],
|
119
|
+
"values" => [%w[2018-04-02T00:00:00Z 204]] },
|
120
|
+
{ "name" => "requests_per_minute",
|
121
|
+
"tags" => { "status_code" => "500" },
|
122
|
+
"columns" => %w[time value],
|
123
|
+
"values" => [%w[2018-04-02T00:00:00Z 204]] }] }] }
|
124
124
|
end
|
125
125
|
|
126
126
|
let :expected_result do
|
127
|
-
[[{ "name"
|
128
|
-
"tags"
|
129
|
-
"values" => [{ "time"
|
127
|
+
[[{ "name" => "requests_per_minute",
|
128
|
+
"tags" => { "status_code" => "200" },
|
129
|
+
"values" => [{ "time" => "2018-04-02T00:00:00Z",
|
130
130
|
"value" => "204" }] },
|
131
|
-
{ "name"
|
132
|
-
"tags"
|
133
|
-
"values" => [{ "time"
|
131
|
+
{ "name" => "requests_per_minute",
|
132
|
+
"tags" => { "status_code" => "500" },
|
133
|
+
"values" => [{ "time" => "2018-04-02T00:00:00Z",
|
134
134
|
"value" => "204" }] }]]
|
135
135
|
end
|
136
136
|
|
@@ -49,7 +49,8 @@ describe InfluxDB::Client do
|
|
49
49
|
describe "#list_cluster_admins" do
|
50
50
|
let(:response) do
|
51
51
|
{ "results" => [{ "statement_id" => 0,
|
52
|
-
"series"
|
52
|
+
"series" => [{ "columns" => %w[user admin],
|
53
|
+
"values" => [["dbadmin", true], ["foobar", false]] }] }] }
|
53
54
|
end
|
54
55
|
let(:expected_result) { ["dbadmin"] }
|
55
56
|
|
@@ -17,10 +17,12 @@ describe InfluxDB::Client do
|
|
17
17
|
let(:database) { "testdb" }
|
18
18
|
let(:response) do
|
19
19
|
{ "results" => [{ "statement_id" => 0,
|
20
|
-
"series"
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
"series" => [{ "name" => "otherdb",
|
21
|
+
"columns" => %w[name query],
|
22
|
+
"values" => [["clicks_per_hour", "CREATE CONTINUOUS QUERY clicks_per_hour ON otherdb BEGIN SELECT count(name) INTO \"otherdb\".\"default\".clicksCount_1h FROM \"otherdb\".\"default\".clicks GROUP BY time(1h) END"]] },
|
23
|
+
{ "name" => "testdb",
|
24
|
+
"columns" => %w[name query],
|
25
|
+
"values" => [["event_counts", "CREATE CONTINUOUS QUERY event_counts ON testdb BEGIN SELECT count(type) INTO \"testdb\".\"default\".typeCount_10m_byType FROM \"testdb\".\"default\".events GROUP BY time(10m), type END"]] }] }] }
|
24
26
|
end
|
25
27
|
|
26
28
|
let(:expected_result) do
|
@@ -16,8 +16,8 @@ describe InfluxDB::Client do
|
|
16
16
|
|
17
17
|
let :response do
|
18
18
|
{ "results" => [{ "statement_id" => 0,
|
19
|
-
"series"
|
20
|
-
|
19
|
+
"series" => [{ "name" => "requests_per_minute",
|
20
|
+
"columns" => %w[time value] }] }] }
|
21
21
|
end
|
22
22
|
|
23
23
|
before do
|
@@ -6,10 +6,10 @@ describe InfluxDB::Client do
|
|
6
6
|
described_class.new(
|
7
7
|
"database",
|
8
8
|
{
|
9
|
-
host:
|
10
|
-
port:
|
11
|
-
username:
|
12
|
-
password:
|
9
|
+
host: "influxdb.test",
|
10
|
+
port: 9999,
|
11
|
+
username: "username",
|
12
|
+
password: "password",
|
13
13
|
time_precision: "s"
|
14
14
|
}.merge(args)
|
15
15
|
)
|
@@ -18,8 +18,8 @@ describe InfluxDB::Client do
|
|
18
18
|
|
19
19
|
let(:response) do
|
20
20
|
{ "results" => [{ "statement_id" => 0,
|
21
|
-
"series"
|
22
|
-
|
21
|
+
"series" => [{ "name" => "requests_per_minute",
|
22
|
+
"columns" => %w[time value] }] }] }
|
23
23
|
end
|
24
24
|
|
25
25
|
before do
|
@@ -7,10 +7,10 @@ require "json"
|
|
7
7
|
describe InfluxDB::Client do
|
8
8
|
let(:subject) do
|
9
9
|
described_class.new "database", {
|
10
|
-
host:
|
11
|
-
port:
|
12
|
-
username:
|
13
|
-
password:
|
10
|
+
host: "influxdb.test",
|
11
|
+
port: 9999,
|
12
|
+
username: "username",
|
13
|
+
password: "password",
|
14
14
|
time_precision: "s"
|
15
15
|
}.merge(args)
|
16
16
|
end
|
@@ -33,11 +33,11 @@ describe InfluxDB::Client do
|
|
33
33
|
|
34
34
|
let(:response_line_1) do
|
35
35
|
{ "results" => [{ "statement_id" => 0,
|
36
|
-
"series"
|
36
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w[time temp value], "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] }] }] }
|
37
37
|
end
|
38
38
|
let(:response_line_2) do
|
39
39
|
{ "results" => [{ "statement_id" => 0,
|
40
|
-
"series"
|
40
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "us" }, "columns" => %w[time temp value], "values" => [["2015-07-07T14:58:37Z", 92, 0.3445], ["2015-07-07T14:59:09Z", 68, 0.8787]] }] }] }
|
41
41
|
end
|
42
42
|
let(:response) do
|
43
43
|
JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2)
|
@@ -62,28 +62,48 @@ describe InfluxDB::Client do
|
|
62
62
|
|
63
63
|
let(:response_line_1) do
|
64
64
|
{ "results" => [{ "statement_id" => 0,
|
65
|
-
"series"
|
65
|
+
"series" => [{ "name" => "access_times.service_1",
|
66
|
+
"tags" => { "code" => "200", "result" => "failure", "status" => "OK" },
|
67
|
+
"columns" => %w[time value],
|
68
|
+
"values" => [["2015-07-08T07:15:22Z", 327]] }] }] }
|
66
69
|
end
|
67
70
|
let(:response_line_2) do
|
68
71
|
{ "results" => [{ "statement_id" => 0,
|
69
|
-
"series"
|
72
|
+
"series" => [{ "name" => "access_times.service_1",
|
73
|
+
"tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" },
|
74
|
+
"columns" => %w[time value],
|
75
|
+
"values" => [["2015-07-08T06:15:22Z", 873]] }] }] }
|
70
76
|
end
|
71
77
|
let(:response_line_3) do
|
72
78
|
{ "results" => [{ "statement_id" => 0,
|
73
|
-
"series"
|
79
|
+
"series" => [{ "name" => "access_times.service_2",
|
80
|
+
"tags" => { "code" => "200", "result" => "failure", "status" => "OK" },
|
81
|
+
"columns" => %w[time value],
|
82
|
+
"values" => [["2015-07-08T07:15:22Z", 943]] }] }] }
|
74
83
|
end
|
75
84
|
let(:response_line_4) do
|
76
85
|
{ "results" => [{ "statement_id" => 0,
|
77
|
-
"series"
|
86
|
+
"series" => [{ "name" => "access_times.service_2",
|
87
|
+
"tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" },
|
88
|
+
"columns" => %w[time value],
|
89
|
+
"values" => [["2015-07-08T06:15:22Z", 606]] }] }] }
|
78
90
|
end
|
79
91
|
let(:response) do
|
80
92
|
JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2) + "\n" + JSON.generate(response_line_3) + "\n" + JSON.generate(response_line_4)
|
81
93
|
end
|
82
94
|
let(:expected_result) do
|
83
|
-
[{ "name"
|
84
|
-
|
85
|
-
|
86
|
-
{ "name"
|
95
|
+
[{ "name" => "access_times.service_1",
|
96
|
+
"tags" => { "code" => "200", "result" => "failure", "status" => "OK" },
|
97
|
+
"values" => [{ "time" => "2015-07-08T07:15:22Z", "value" => 327 }] },
|
98
|
+
{ "name" => "access_times.service_1",
|
99
|
+
"tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" },
|
100
|
+
"values" => [{ "time" => "2015-07-08T06:15:22Z", "value" => 873 }] },
|
101
|
+
{ "name" => "access_times.service_2",
|
102
|
+
"tags" => { "code" => "200", "result" => "failure", "status" => "OK" },
|
103
|
+
"values" => [{ "time" => "2015-07-08T07:15:22Z", "value" => 943 }] },
|
104
|
+
{ "name" => "access_times.service_2",
|
105
|
+
"tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" },
|
106
|
+
"values" => [{ "time" => "2015-07-08T06:15:22Z", "value" => 606 }] }]
|
87
107
|
end
|
88
108
|
let(:query) { "SELECT * FROM /access_times.*/" }
|
89
109
|
|