aboutsummaryrefslogtreecommitdiffstats
path: root/docker/benchmarking
diff options
context:
space:
mode:
Diffstat (limited to 'docker/benchmarking')
-rw-r--r--docker/benchmarking/Dockerfile16
-rw-r--r--docker/benchmarking/plotperf.py.patch42
-rw-r--r--docker/benchmarking/testcases.yaml11
3 files changed, 69 insertions, 0 deletions
diff --git a/docker/benchmarking/Dockerfile b/docker/benchmarking/Dockerfile
index 04101ce5..7025be8b 100644
--- a/docker/benchmarking/Dockerfile
+++ b/docker/benchmarking/Dockerfile
@@ -1,4 +1,20 @@
FROM opnfv/functest-kubernetes-smoke:v1.21
+ARG NETPERF_TAG=8a5a7a23f2165b29e46b4d32aad7d5f85e4b9516
+ARG PLOTPERF_TAG=2455313f4b9581795a8f642243acaad472d91804
+
+COPY plotperf.py.patch /tmp/plotperf.py.patch
+RUN apk --no-cache add --update py3-matplotlib && \
+ apk --no-cache add --virtual .build-deps --update patch go && \
+ ln -s /usr/bin/python3 /usr/bin/python && \
+ git clone https://github.com/kubernetes/perf-tests && \
+ (cd perf-tests && git checkout $NETPERF_TAG) && \
+ (cd perf-tests/network/benchmarks/netperf && go build -o /usr/local/bin/launch launch.go) && \
+ curl https://raw.githubusercontent.com/girishkalele/pyplot-docker/$PLOTPERF_TAG/plotperf.py \
+ --output /usr/local/bin/plotperf.py && \
+ (cd /usr/local/bin && patch -p0 < /tmp/plotperf.py.patch && \
+ mv plotperf.py plotperf && chmod a+x plotperf) && \
+ rm -rf perf-tests /tmp/plotperf.py.patch && \
+ apk del .build-deps
COPY testcases.yaml /usr/lib/python3.8/site-packages/xtesting/ci/testcases.yaml
CMD ["run_tests", "-t", "all"]
diff --git a/docker/benchmarking/plotperf.py.patch b/docker/benchmarking/plotperf.py.patch
new file mode 100644
index 00000000..45a64e1e
--- /dev/null
+++ b/docker/benchmarking/plotperf.py.patch
@@ -0,0 +1,42 @@
+--- plotperf.py.orig 2021-05-09 10:42:17.858983226 +0200
++++ plotperf.py 2021-05-09 10:43:09.410934186 +0200
+@@ -18,11 +18,13 @@
+ # Generates matplotlib line and bar charts from the netperf.csv raw data file
+ #
+
++from __future__ import print_function
++from builtins import range
+ try:
+ import matplotlib.pyplot as plt
+-except Exception, e:
++except Exception as e:
+ # Translate the traceback to a more friendly error message
+- print "Exception (%s) while importing matplotlib - install with apt-get install python-matplotlib (or equivalent package manager)" % e
++ print("Exception (%s) while importing matplotlib - install with apt-get install python-matplotlib (or equivalent package manager)" % e)
+ raise
+
+ import numpy
+@@ -93,7 +95,7 @@
+ for ext in [ "png", "svg" ]:
+ fname = os.path.join(options.outputdir, "{0}.{1}".format(options.suffix, ext))
+ plt.savefig(fname, dpi=100)
+- print "Saved {0}".format(fname)
++ print("Saved {0}".format(fname))
+
+ barlabels = []
+ barvalues = []
+@@ -105,7 +107,7 @@
+ barvalues.append(float(data[n][1]))
+
+ plt.clf()
+- plt.barh(bottom=range(0, len(data)-1),
++ plt.barh(list(range(0, len(data)-1)),
+ height=0.5,
+ width=barvalues,
+ align='center')
+@@ -117,4 +119,4 @@
+ for ext in [ "png", "svg" ]:
+ fname = os.path.join(options.outputdir, "{0}.bar.{1}".format(options.suffix, ext))
+ plt.savefig(fname, dpi=100)
+- print "Saved {0}".format(fname)
++ print("Saved {0}".format(fname))
diff --git a/docker/benchmarking/testcases.yaml b/docker/benchmarking/testcases.yaml
index 1a850e22..bcf40d45 100644
--- a/docker/benchmarking/testcases.yaml
+++ b/docker/benchmarking/testcases.yaml
@@ -20,3 +20,14 @@ tiers:
times: 10
concurrency: 4
namespaces_count: 3
+ - case_name: netperf
+ project_name: functest
+ criteria: 100
+ blocking: false
+ description: >-
+ A standardized benchmark to measure Kubernetes networking performance
+ on multiple host platforms and network stacks.
+ dependencies:
+ - DEPLOY_SCENARIO: "k8-*"
+ run:
+ name: netperf