@@ -252,13 +252,41 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
252
252
self .logger .error ("Not able to find UUID in data set" )
253
253
return False
254
254
if combined :
255
- print ("+{}+" .format ("-" * (33 + 44 + 10 + 10 + 23 )))
256
- print ("{0:33} | {1:40} | {2:10} | {3:10} | {4:13} " .format ("Scenario" ,
257
- "Action" ,
258
- uuids [0 ][- 8 :],
259
- uuids [1 ][- 8 :],
260
- "% Difference" ))
261
- print ("+{}+" .format ("-" * (33 + 44 + 10 + 10 + 23 )))
255
+ errors = {}
256
+ errors [uuids [0 ]] = {}
257
+ errors [uuids [1 ]] = {}
258
+ for error in self .get_errors ("browbeat-rally-*" , uuids [0 ]):
259
+ action = error ['_source' ]['action' ]
260
+ scenario = error ['_source' ]['scenario' ]
261
+ if scenario not in errors [uuids [0 ]]:
262
+ errors [uuids [0 ]][scenario ] = {}
263
+ if action not in errors [uuids [0 ]][scenario ]:
264
+ errors [uuids [0 ]][scenario ][action ] = []
265
+ errors [uuids [0 ]][scenario ][action ].append (error ['_source' ][
266
+ 'result' ])
267
+
268
+ for error in self .get_errors ("browbeat-rally-*" , uuids [1 ]):
269
+ action = error ['_source' ]['action' ]
270
+ scenario = error ['_source' ]['scenario' ]
271
+ if scenario not in errors [uuids [1 ]]:
272
+ errors [uuids [1 ]][scenario ] = {}
273
+ if action not in errors [uuids [1 ]][scenario ]:
274
+ errors [uuids [1 ]][scenario ][action ] = []
275
+ errors [uuids [1 ]][scenario ][action ].append (error [
276
+ '_source' ]['result' ])
277
+
278
+ print ("+{}+" .format ("-" * (33 + 44 + 20 + 30 + 35 )))
279
+ err_uuid1 = " errors-%s " % uuids [0 ][- 8 :],
280
+ err_uuid2 = " errors-%s " % uuids [1 ][- 8 :],
281
+ print ("{0:34}|{1:40}|{2:20}|{3:20}|{4:10}|{5:10}|{6:13}" .format (
282
+ " Scenario " ,
283
+ " Action " ,
284
+ " %s " % err_uuid1 ,
285
+ " %s " % err_uuid2 ,
286
+ " %s " % uuids [0 ][- 8 :],
287
+ " %s " % uuids [1 ][- 8 :],
288
+ "% Difference" ))
289
+ print ("+{}+" .format ("-" * (33 + 44 + 20 + 30 + 35 )))
262
290
for scenario in data [uuids [0 ]]:
263
291
if scenario not in data [uuids [1 ]]:
264
292
missing .append (scenario )
@@ -267,27 +295,88 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
267
295
for action in data [uuids [0 ]][scenario ]:
268
296
dset = [data [uuids [0 ]][scenario ][action ],
269
297
data [uuids [1 ]][scenario ][action ]]
298
+ err0 = 0
299
+ if uuids [0 ] in errors :
300
+ if scenario in errors [uuids [0 ]] :
301
+ if action in errors [uuids [0 ]][scenario ]:
302
+ err0 = len (errors [uuids [0 ]][scenario ][action ])
303
+ err1 = 0
304
+ if uuids [1 ] in errors :
305
+ if scenario in errors [uuids [1 ]] :
306
+ if action in errors [uuids [1 ]][scenario ]:
307
+ err1 = len (errors [uuids [1 ]][scenario ][action ])
270
308
perf0 = data [uuids [0 ]][scenario ][action ]
271
309
perf1 = data [uuids [1 ]][scenario ][action ]
272
310
diff = numpy .diff (dset )[0 ] / numpy .abs (dset [:- 1 ])[0 ] * 100
273
311
274
- print ("{0:33} | {1:40} | {2:10.3f} | {3:10.3f} | {4:13.3f}" .format (scenario ,
275
- action ,
276
- perf0 ,
277
- perf1 ,
278
- diff ))
279
- print ("+{}+" .format ("-" * (33 + 44 + 10 + 10 + 26 )))
312
+ output = "{0:34}|{1:40}|{2:20}" .format (
313
+ scenario ,
314
+ action ,
315
+ err0 )
316
+ output += "|{0:20}|{1:10.3f}|{2:10.3f}|{3:13.3f}" .format (
317
+ err1 ,
318
+ perf0 ,
319
+ perf1 ,
320
+ diff )
321
+ print (output )
322
+ print ("+{}+" .format ("-" * (33 + 44 + 20 + 30 + 35 )))
280
323
else :
281
- print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 10 + 10 + 26 )))
282
- print ("{0:33} | {1:40} | {2:15} | {3:15} | {4:10} | {5:10} | {6:23}" .format (
283
- "Scenario" ,
284
- "Action" ,
285
- "times" ,
286
- "concurrency" ,
287
- uuids [0 ][- 8 :],
288
- uuids [1 ][- 8 :],
289
- "% Difference" ))
290
- print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 10 + 10 + 26 )))
324
+ errors = {}
325
+ errors [uuids [0 ]] = {}
326
+ errors [uuids [1 ]] = {}
327
+ for error in self .get_errors ("browbeat-rally-*" , uuids [0 ]):
328
+ concurrency = error ['_source' ]['rally_setup' ]['kw' ]['runner' ]['concurrency' ]
329
+ times = error ['_source' ]['rally_setup' ]['kw' ]['runner' ]['times' ]
330
+ action = error ['_source' ]['action' ]
331
+ scenario = error ['_source' ]['scenario' ]
332
+
333
+ if scenario not in errors [uuids [0 ]]:
334
+ errors [uuids [0 ]][scenario ] = {}
335
+
336
+ if times not in errors [uuids [0 ]][scenario ]:
337
+ errors [uuids [0 ]][scenario ][times ] = {}
338
+
339
+ if concurrency not in errors [uuids [0 ]][scenario ][times ]:
340
+ errors [uuids [0 ]][scenario ][times ][concurrency ] = {}
341
+
342
+ if action not in errors [uuids [0 ]][scenario ][times ][concurrency ]:
343
+ errors [uuids [0 ]][scenario ][times ][concurrency ][action ] = []
344
+
345
+ errors [uuids [0 ]][scenario ][times ][concurrency ][action ].append (error ['_source' ][
346
+ 'result' ])
347
+ for error in self .get_errors ("browbeat-rally-*" , uuids [1 ]):
348
+ concurrency = error ['_source' ]['rally_setup' ]['kw' ]['runner' ]['concurrency' ]
349
+ times = error ['_source' ]['rally_setup' ]['kw' ]['runner' ]['times' ]
350
+ action = error ['_source' ]['action' ]
351
+ scenario = error ['_source' ]['scenario' ]
352
+
353
+ if scenario not in errors [uuids [1 ]]:
354
+ errors [uuids [1 ]][scenario ] = {}
355
+
356
+ if times not in errors [uuids [1 ]][scenario ]:
357
+ errors [uuids [1 ]][scenario ][times ] = {}
358
+
359
+ if concurrency not in errors [uuids [1 ]][scenario ][times ]:
360
+ errors [uuids [1 ]][scenario ][times ][concurrency ] = {}
361
+
362
+ if action not in errors [uuids [1 ]][scenario ][times ][concurrency ]:
363
+ errors [uuids [1 ]][scenario ][times ][concurrency ][action ] = []
364
+
365
+ errors [uuids [1 ]][scenario ][times ][concurrency ][action ].append (error [
366
+ '_source' ]['result' ])
367
+
368
+ print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 50 + 10 + 26 )))
369
+ print ("{0:30}|{1:35}|{2:18}|{3:19}|{4:25}|{5:20}|{6:10}|{7:10}|{8:13}" .format (
370
+ " Scenario " ,
371
+ " Action " ,
372
+ " times " ,
373
+ " concurrency " ,
374
+ " errors-%s " % uuids [0 ][- 8 :],
375
+ " errors-%s " % uuids [1 ][- 8 :],
376
+ " %s " % uuids [0 ][- 8 :],
377
+ " %s " % uuids [1 ][- 8 :],
378
+ " % Difference " ))
379
+ print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 50 + 10 + 26 )))
291
380
for scenario in data [uuids [0 ]]:
292
381
if scenario not in data [uuids [1 ]]:
293
382
missing .append (scenario )
@@ -314,17 +403,44 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
314
403
concurrency ][action ]
315
404
perf1 = data [uuids [1 ]][scenario ][times ][
316
405
concurrency ][action ]
406
+
407
+ err0 = 0
408
+ err1 = 0
409
+ if uuids [0 ] in errors :
410
+ if scenario in errors [uuids [0 ]] :
411
+ if times in errors [uuids [0 ]][scenario ] :
412
+ if concurrency in errors [uuids [0 ]][
413
+ scenario ][times ] :
414
+ if action in errors [uuids [0 ]][
415
+ scenario ][times ][concurrency ] :
416
+ err0 = len (errors [uuids [0 ]][
417
+ scenario ][times ][concurrency ][
418
+ action ])
419
+ if uuids [1 ] in errors :
420
+ if scenario in errors [uuids [1 ]] :
421
+ if times in errors [uuids [1 ]][scenario ] :
422
+ if concurrency in errors [uuids [1 ]][
423
+ scenario ][times ] :
424
+ if action in errors [uuids [1 ]][
425
+ scenario ][times ][concurrency ] :
426
+ err1 = len (errors [uuids [1 ]][
427
+ scenario ][times ][concurrency ][
428
+ action ])
429
+
317
430
diff = numpy .diff (dset )[0 ] / numpy .abs (dset [:- 1 ])[0 ] * 100
318
- output = "{0:33} | {1:40} | {2:15} | {3:15} "
319
- output += "| {4:10.3f} | {5:10.3f} | {6:13.3f}"
431
+ output = "{0:30}|{1:35}|{2:18}|{3:19}"
432
+ output += "|{4:25}|{5:20}"
433
+ output += "|{6:10.3f}|{7:10.3f}|{8:13.3f}"
320
434
print (output .format (scenario ,
321
435
action ,
322
436
times ,
323
437
concurrency ,
438
+ err0 ,
439
+ err1 ,
324
440
perf0 ,
325
441
perf1 ,
326
442
diff ))
327
- print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 10 + 10 + 26 )))
443
+ print ("+{}+" .format ("-" * (33 + 44 + 15 + 15 + 50 + 10 + 26 )))
328
444
if metadata :
329
445
print ("+{}+" .format ("-" * (40 + 20 + 20 + 33 )))
330
446
print ("{0:40} | {1:20} | {2:20} | {3:20}" .format ("UUID" , "Version" , "Build" ,
@@ -542,17 +658,33 @@ def scroll(self, search, sid, scroll_size):
542
658
only look for errors for specific browbeat_uuids
543
659
"""
544
660
545
- def get_errors (self , index , browbeat_id ):
661
+ def get_errors (self , index , browbeat_id , action = None , times = None , concurrency = None ):
546
662
self .logger .info ("Making query against {}" .format (index ))
663
+ body = {"query" : {
664
+ "bool" : {"must" : [
665
+ {"term" : {"browbeat_uuid" : browbeat_id }},
666
+ ]}
667
+ }}
668
+ """
669
+ body = {"query": {
670
+ "bool": { "must": [
671
+ {"term": {"browbeat_uuid": browbeat_id}},
672
+ {"term": {"action": "{}".format(action)}},
673
+ {"term": {"rally_setup.kw.runner.times": times}},
674
+ {"term": {"rally_setup.kw.runner.concurrency": concurrency}}]
675
+ }}}
676
+ """
547
677
page = self .es .search (
548
678
index = index ,
549
679
doc_type = 'error' ,
550
- scroll = '2m' ,
551
- size = 5000 ,
552
- body = {"query" : {"browbeat_uuid" : browbeat_id }})
680
+ scroll = '1m' ,
681
+ size = 1000 ,
682
+ body = body ,
683
+ request_timeout = 240 )
553
684
sid = page ['_scroll_id' ]
554
685
scroll_size = page ['hits' ]['total' ]
555
- return self .scroll (sid ,scroll_size )
686
+ self .logger .info ("Searching through ES for uuid: {}" .format (browbeat_id ))
687
+ return self .scroll (page ,sid ,scroll_size )
556
688
557
689
def get_results (self , index , browbeat_uuid ):
558
690
body = {
0 commit comments