Skip to content

Commit 14341e5

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Count number of errors per action"
2 parents 418c46b + 3c8a40e commit 14341e5

File tree

1 file changed

+163
-31
lines changed

1 file changed

+163
-31
lines changed

browbeat/elastic.py

Lines changed: 163 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,41 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
252252
self.logger.error("Not able to find UUID in data set")
253253
return False
254254
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)))
262290
for scenario in data[uuids[0]]:
263291
if scenario not in data[uuids[1]]:
264292
missing.append(scenario)
@@ -267,27 +295,88 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
267295
for action in data[uuids[0]][scenario]:
268296
dset = [data[uuids[0]][scenario][action],
269297
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])
270308
perf0 = data[uuids[0]][scenario][action]
271309
perf1 = data[uuids[1]][scenario][action]
272310
diff = numpy.diff(dset)[0] / numpy.abs(dset[:-1])[0] * 100
273311

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)))
280323
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)))
291380
for scenario in data[uuids[0]]:
292381
if scenario not in data[uuids[1]]:
293382
missing.append(scenario)
@@ -314,17 +403,44 @@ def compare_rally_results(self, data, uuids, combined, metadata=None):
314403
concurrency][action]
315404
perf1 = data[uuids[1]][scenario][times][
316405
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+
317430
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}"
320434
print(output.format(scenario,
321435
action,
322436
times,
323437
concurrency,
438+
err0,
439+
err1,
324440
perf0,
325441
perf1,
326442
diff))
327-
print("+{}+".format("-" * (33 + 44 + 15 + 15 + 10 + 10 + 26)))
443+
print("+{}+".format("-" * (33 + 44 + 15 + 15 + 50 + 10 + 26)))
328444
if metadata:
329445
print("+{}+".format("-" * (40 + 20 + 20 + 33)))
330446
print("{0:40} | {1:20} | {2:20} | {3:20}".format("UUID", "Version", "Build",
@@ -542,17 +658,33 @@ def scroll(self, search, sid, scroll_size):
542658
only look for errors for specific browbeat_uuids
543659
"""
544660

545-
def get_errors(self, index, browbeat_id):
661+
def get_errors(self, index, browbeat_id, action=None, times=None, concurrency=None):
546662
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+
"""
547677
page = self.es.search(
548678
index=index,
549679
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)
553684
sid = page['_scroll_id']
554685
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)
556688

557689
def get_results(self, index, browbeat_uuid):
558690
body = {

0 commit comments

Comments
 (0)