|
21 | 21 | require 'test_helper' |
22 | 22 |
|
23 | 23 | class QueryApiTest < MiniTest::Test |
24 | | - def setup |
25 | | - WebMock.disable_net_connect! |
26 | | - end |
27 | | - |
28 | | - SUCCESS_DATA = '#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,' \ |
29 | | - "long,string,string,string,string\n" \ |
30 | | - "#group,false,false,false,false,false,false,false,false,false,true\n" + "#default,_result,,,,,,,,,\n" \ |
31 | | - ",result,table,_start,_stop,_time,_value,_field,_measurement,host,region\n" \ |
32 | | - ",,0,1970-01-01T00:00:10Z,1970-01-01T00:00:20Z,1970-01-01T00:00:10Z,10,free,mem,A,west\n" \ |
33 | | - ",,0,1970-01-01T00:00:10Z,1970-01-01T00:00:20Z,1970-01-01T00:00:10Z,20,free,mem,B,west\n" \ |
34 | | - ",,0,1970-01-01T00:00:20Z,1970-01-01T00:00:30Z,1970-01-01T00:00:20Z,11,free,mem,A,west\n" \ |
35 | | - ',,0,1970-01-01T00:00:20Z,1970-01-01T00:00:30Z,1970-01-01T00:00:20Z,22,free,mem,B,west' |
36 | | - |
37 | | - def test_query_raw |
38 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
39 | | - .to_return(body: SUCCESS_DATA) |
40 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
41 | | - bucket: 'my-bucket', |
42 | | - org: 'my-org', |
43 | | - use_ssl: false) |
44 | | - |
45 | | - bucket = 'my-bucket' |
46 | | - result = client.create_query_api.query_raw(query: |
47 | | - 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()') |
48 | | - |
49 | | - assert_equal result, SUCCESS_DATA |
50 | | - end |
51 | | - |
52 | | - def test_parameterized_query_raw |
53 | | - body = '{"query":"from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam)) |> last()",' \ |
54 | | -'"params":{"bucketParam":"my-bucket","startParam":"1970-01-01T00:00:00.000000001Z"},' \ |
55 | | -'"dialect":{"header":true,"delimiter":",","annotations":["datatype","group","default"],' \ |
56 | | -'"commentPrefix":"#","dateTimeFormat":"RFC3339"}}' |
57 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
58 | | - .with(body: body) |
59 | | - .to_return(body: SUCCESS_DATA) |
60 | | - |
61 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
62 | | - bucket: 'my-bucket', |
63 | | - org: 'my-org', |
64 | | - use_ssl: false) |
65 | | - |
66 | | - query = 'from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam)) |> last()' |
67 | | - params = Hash['bucketParam' => 'my-bucket', 'startParam' => '1970-01-01T00:00:00.000000001Z'] |
68 | | - result = client.create_query_api.query_raw(query: query, params: params) |
69 | | - |
70 | | - assert_equal result, SUCCESS_DATA |
71 | | - end |
72 | | - |
73 | | - def test_query |
74 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
75 | | - .to_return(body: SUCCESS_DATA) |
76 | | - |
77 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
78 | | - bucket: 'my-bucket', |
79 | | - org: 'my-org', |
80 | | - use_ssl: false) |
81 | | - |
82 | | - bucket = 'my-bucket' |
83 | | - result = client.create_query_api.query(query: |
84 | | - 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()') |
85 | | - |
86 | | - assert_equal 1, result.length |
87 | | - assert_equal 4, result[0].records.length |
88 | | - |
89 | | - record1 = result[0].records[0] |
90 | | - |
91 | | - assert_equal Time.parse('1970-01-01T00:00:10Z').to_datetime.rfc3339(9), record1.time |
92 | | - assert_equal 'mem', record1.measurement |
93 | | - assert_equal 10, record1.value |
94 | | - assert_equal 'free', record1.field |
95 | | - end |
96 | | - |
97 | | - def test_parameterized_query |
98 | | - body = '{"query":"from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam)) |> last()",' \ |
99 | | -'"params":{"bucketParam":"my-bucket","startParam":"1970-01-01T00:00:00.000000001Z"},' \ |
100 | | -'"dialect":{"header":true,"delimiter":",","annotations":["datatype","group","default"],' \ |
101 | | -'"commentPrefix":"#","dateTimeFormat":"RFC3339"}}' |
102 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
103 | | - .with(body: body) |
104 | | - .to_return(body: SUCCESS_DATA) |
105 | | - |
106 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
107 | | - bucket: 'my-bucket', |
108 | | - org: 'my-org', |
109 | | - use_ssl: false) |
110 | | - |
111 | | - query = 'from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam)) |> last()' |
112 | | - params = Hash['bucketParam' => 'my-bucket', 'startParam' => '1970-01-01T00:00:00.000000001Z'] |
113 | | - |
114 | | - result = client.create_query_api.query(query: query, params: params) |
115 | | - |
116 | | - assert_equal 1, result.length |
117 | | - assert_equal 4, result[0].records.length |
118 | | - |
119 | | - record1 = result[0].records[0] |
120 | | - |
121 | | - assert_equal Time.parse('1970-01-01T00:00:10Z').to_datetime.rfc3339(9), record1.time |
122 | | - assert_equal 'mem', record1.measurement |
123 | | - assert_equal 10, record1.value |
124 | | - assert_equal 'free', record1.field |
125 | | - end |
126 | | - |
127 | | - def test_headers |
128 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
129 | | - .to_return(body: SUCCESS_DATA) |
130 | | - |
131 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
132 | | - bucket: 'my-bucket', |
133 | | - org: 'my-org', |
134 | | - use_ssl: false) |
135 | | - |
136 | | - client.create_query_api |
137 | | - .query(query: 'from(bucket:"my-bucket") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()') |
138 | | - |
139 | | - headers = { |
140 | | - 'Authorization' => 'Token my-token', |
141 | | - 'User-Agent' => "influxdb-client-ruby/#{InfluxDB2::VERSION}", |
142 | | - 'Content-Type' => 'application/json' |
143 | | - } |
144 | | - assert_requested(:post, 'http://localhost:8086/api/v2/query?org=my-org', |
145 | | - times: 1, headers: headers) |
146 | | - end |
147 | | - |
148 | | - def test_query_result_type |
149 | | - stub_request(:post, 'http://localhost:8086/api/v2/query?org=my-org') |
150 | | - .to_return(body: SUCCESS_DATA) |
151 | | - |
152 | | - client = InfluxDB2::Client.new('http://localhost:8086', 'my-token', |
153 | | - bucket: 'my-bucket', |
154 | | - org: 'my-org', |
155 | | - use_ssl: false) |
156 | | - |
157 | | - bucket = 'my-bucket' |
158 | | - result = client.create_query_api |
159 | | - .query(query: "from(bucket:\"#{bucket}\") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()") |
160 | | - |
161 | | - assert_equal 1, result.length |
162 | | - assert_equal 4, result[0].records.length |
163 | | - assert_equal Array, result.class |
164 | | - end |
165 | 24 | end |
0 commit comments