diff options
Diffstat (limited to 'fluent-bit/lib/librdkafka-2.1.0/tests/performance_plot.py')
-rwxr-xr-x | fluent-bit/lib/librdkafka-2.1.0/tests/performance_plot.py | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/fluent-bit/lib/librdkafka-2.1.0/tests/performance_plot.py b/fluent-bit/lib/librdkafka-2.1.0/tests/performance_plot.py deleted file mode 100755 index b699377f1..000000000 --- a/fluent-bit/lib/librdkafka-2.1.0/tests/performance_plot.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python3 -# - -import sys -import json -import numpy as np -import matplotlib.pyplot as plt - -from collections import defaultdict - - -def semver2int(semver): - if semver == 'trunk': - semver = '0.10.0.0' - vi = 0 - i = 0 - for v in reversed(semver.split('.')): - vi += int(v) * (i * 10) - i += 1 - return vi - - -def get_perf_data(perfname, stats): - """ Return [labels,x,y,errs] for perfname 'mb_per_sec' as a numpy arrays - labels: broker versions - x: list with identical value (to plot on same x point) - y: perfname counter (average) - errs: errors - """ - ver = defaultdict(list) - - # Per version: - # * accumulate values - # * calculate average - # * calculate error - - # Accumulate values per version - for x in stats: - v = str(x[0]) - ver[v].append(x[1][perfname]) - print('%s is %s' % (perfname, ver)) - - labels0 = sorted(ver.keys(), key=semver2int) - y0 = list() - errs0 = list() - - # Maintain order by using labels0 - for v in labels0: - # Calculate average - avg = sum(ver[v]) / float(len(ver[v])) - y0.append(avg) - # Calculate error - errs0.append(max(ver[v]) - avg) - - labels = np.array(labels0) - y1 = np.array(y0) - x1 = np.array(range(0, len(labels))) - errs = np.array(errs0) - return [labels, x1, y1, errs] - - -def plot(description, name, stats, perfname, outfile=None): - labels, x, y, errs = get_perf_data(perfname, stats) - plt.title('%s: %s %s' % (description, name, perfname)) - plt.xlabel('Kafka version') - plt.ylabel(perfname) - plt.errorbar(x, y, yerr=errs, alpha=0.5) - plt.xticks(x, labels, rotation='vertical') - plt.margins(0.2) - plt.subplots_adjust(bottom=0.2) - if outfile is None: - plt.show() - else: - plt.savefig(outfile, bbox_inches='tight') - return - - -if __name__ == '__main__': - - outfile = sys.argv[1] - - reports = [] - for rf in sys.argv[2:]: - with open(rf) as f: - reports.append(json.load(f)) - - stats = defaultdict(list) - - # Extract performance test data - for rep in reports: - perfs = rep.get( - 'tests', - dict()).get( - '0038_performance', - list).get( - 'report', - None) - if perfs is None: - continue - - for perf in perfs: - for n in ['producer', 'consumer']: - o = perf.get(n, None) - if o is None: - print('no %s in %s' % (n, perf)) - continue - - stats[n].append((rep.get('broker_version', 'unknown'), o)) - - for t in ['producer', 'consumer']: - for perfname in ['mb_per_sec', 'records_per_sec']: - plot('librdkafka 0038_performance test: %s (%d samples)' % - (outfile, len(reports)), - t, stats[t], perfname, outfile='%s_%s_%s.png' % ( - outfile, t, perfname)) |