7
7
import time
8
8
import json
9
9
from gzip import GzipFile
10
+ from random import randint
10
11
11
12
from influxdb import InfluxDBClient
12
13
import influxdb .exceptions
@@ -34,10 +35,10 @@ def setup_db(self):
34
35
"tags" : {},
35
36
"time" : _time ,
36
37
"fields" : {
37
- "value" : 1 ,
38
+ "value" : self . series_values [ i ] ,
38
39
}
39
40
}
40
- for series in self .series
41
+ for i , series in enumerate ( self .series )
41
42
for _time in [
42
43
(self .end_time - datetime .timedelta (minutes = 30 )).strftime ("%Y-%m-%dT%H:%M:%SZ" ),
43
44
(self .end_time - datetime .timedelta (minutes = 2 )).strftime ("%Y-%m-%dT%H:%M:%SZ" ),
@@ -72,6 +73,7 @@ def setUp(self):
72
73
'integration_test.agg_path.last' ,
73
74
'integration_test.agg_path.sum' ,
74
75
]
76
+ self .series_values = [randint (1 ,100 ) for _ in self .series ]
75
77
self .setup_db ()
76
78
self .finder = influxgraph .InfluxDBFinder (self .config )
77
79
@@ -108,6 +110,19 @@ def test_configured_deltas(self):
108
110
msg = "Expected exactly %s data points - got %s instead" % (
109
111
3601 , len (data [self .series1 ])))
110
112
113
+ def test_multi_series_data (self ):
114
+ reader = influxgraph .InfluxDBReader (InfluxDBClient (
115
+ database = self .db_name ), '' , influxgraph .utils .NullStatsd ())
116
+ nodes = [influxgraph .classes .leaf .InfluxDBLeafNode (path , reader )
117
+ for path in self .series ]
118
+ _ , data = self .finder .fetch_multi (nodes ,
119
+ int (self .start_time .strftime ("%s" )),
120
+ int (self .end_time .strftime ("%s" )))
121
+ self .assertEqual (len (data ), len (self .series ))
122
+ for i , node in enumerate (nodes ):
123
+ self .assertTrue (node .path in data )
124
+ self .assertTrue (data [node .path ][- 1 ] == self .series_values [i ])
125
+
111
126
def test_find_branch (self ):
112
127
"""Test getting branch of metric path"""
113
128
query = Query ('fakeyfakeyfakefake' )
@@ -170,7 +185,7 @@ def test_find_series_wildcard(self):
170
185
self .assertTrue (self .metric_prefix in nodes ,
171
186
msg = "Node list does not contain prefix '%s' - %s" % (
172
187
self .metric_prefix , nodes ))
173
-
188
+
174
189
def test_find_series_glob_expansion (self ):
175
190
"""Test finding metric prefix by glob expansion"""
176
191
query = Query ('{%s}' % (self .metric_prefix ))
@@ -286,6 +301,7 @@ def test_multi_fetch_data(self):
286
301
self .assertTrue (len (datapoints ) == self .num_datapoints ,
287
302
msg = "Expected %s datapoints - got %s" % (
288
303
self .num_datapoints , len (datapoints ),))
304
+ self .assertTrue (datapoints [- 1 ] == self .series_values [0 ])
289
305
290
306
def test_single_fetch_data (self ):
291
307
"""Test single fetch data for a series by name"""
@@ -337,14 +353,15 @@ def test_multi_fetch_data_multi_series(self):
337
353
int (self .end_time .strftime ("%s" )),
338
354
self .step ),
339
355
msg = "Time info and step do not match our requested values" )
340
- for series in [self .series1 , self .series2 ]:
356
+ for i , series in enumerate ( [self .series1 , self .series2 ]) :
341
357
self .assertTrue (self .steps == len (data [series ]),
342
358
msg = "Expected %s datapoints, got %s instead" % (
343
359
self .steps , len (data [series ]),))
344
360
datapoints = [v for v in data [series ] if v ]
345
361
self .assertTrue (len (datapoints ) == self .num_datapoints ,
346
362
msg = "Expected %s datapoints for series %s - got %s" % (
347
363
self .num_datapoints , series , len (datapoints ),))
364
+ self .assertTrue (datapoints [- 1 ] == self .series_values [i ])
348
365
349
366
def test_get_non_existant_series (self ):
350
367
"""Test single fetch data for a series by name"""
@@ -395,7 +412,7 @@ def test_multi_fetch_data_multi_series_configured_aggregation_functions(self):
395
412
self .assertTrue (nodes [0 ].path in data ,
396
413
msg = "Did not get data for requested series %s - got data for %s" % (
397
414
nodes [0 ].path , data .keys (),))
398
- for suffix in ['min' , 'max' , 'last' , 'sum' ]:
415
+ for i , suffix in enumerate ( ['min' , 'max' , 'last' , 'sum' ]) :
399
416
series = self .metric_prefix + ".agg_path.%s" % (suffix ,)
400
417
nodes = list (self .finder .find_nodes (Query (series )))
401
418
time_info , data = self .finder .fetch_multi (nodes ,
@@ -404,6 +421,7 @@ def test_multi_fetch_data_multi_series_configured_aggregation_functions(self):
404
421
self .assertTrue (series in data ,
405
422
msg = "Did not get data for requested series %s - got data for %s" % (
406
423
series , data .keys (),))
424
+ self .assertTrue (data [series ][- 1 ] == self .series_values [i - 4 ])
407
425
408
426
def test_memcache_configuration_off_by_default (self ):
409
427
self .assertFalse (self .finder .memcache )
0 commit comments