Skip to content

Commit 97a2262

Browse files
committed
First commit
1 parent ad96a23 commit 97a2262

File tree

6,973 files changed

+1234690
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

6,973 files changed

+1234690
-0
lines changed

Dockerfile

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
FROM centos:centos8
2+
3+
# Update
4+
RUN dnf update -y
5+
6+
# install python 3.9 - take several minutes
7+
RUN dnf install -y python3.9 \
8+
&& echo alias python=python3.9 >> ~/.bashrc
9+
10+
# install & run benchmark-runner
11+
RUN python3.9 -m pip install --upgrade pip && pip install benchmark-runner
12+
13+
# install oc Client tools for OpenShift
14+
ARG oc_version=4.7.0-0.okd-2021-05-22-050008
15+
RUN curl -L https://github.com/openshift/okd/releases/download/${oc_version}/openshift-client-linux-${oc_version}.tar.gz -o ~/openshift-client-linux-${oc_version}.tar.gz \
16+
&& tar -xzvf ~/openshift-client-linux-${oc_version}.tar.gz -C ~/ \
17+
&& rm ~/openshift-client-linux-${oc_version}.tar.gz \
18+
&& echo alias oc=~/./oc >> ~/.bashrc
19+
20+
# install virtctl for VNC
21+
ARG virtctl_version=0.34.2
22+
RUN curl -L https://github.com/kubevirt/kubevirt/releases/download/v${virtctl_version}/virtctl-v${virtctl_version}-linux-amd64 -o ~/virtctl \
23+
&& chmod +x ~/virtctl \
24+
&& echo alias virtctl=~/./virtctl >> ~/.bashrc
25+
26+
# Activate alias
27+
RUN . ~/.bashrc
28+
29+
# Create folder for config file (kubeconfig)
30+
RUN mkdir -p ~/.kube
31+
32+
# benchmark-operator
33+
# install helm
34+
RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
35+
&& chmod 700 get_helm.sh \
36+
&& ./get_helm.sh
37+
38+
# download benchmark-operator
39+
RUN dnf install -y git \
40+
&& git clone https://github.com/cloud-bulldozer/benchmark-operator
41+
# && cd benchmark-operator/charts/benchmark-operator \
42+
# && helm install benchmark-operator . -n my-ripsaw --create-namespace
43+
# && oc adm policy -n my-ripsaw add-scc-to-user privileged -z benchmark-operator
44+
45+
# Add main
46+
ADD benchmark_runner/benchmark_operator/templates /usr/local/benchmark_runner/benchmark_operator/templates/
47+
COPY benchmark_runner/main/main.py /usr/local/benchmark_runner/main.py
48+
49+
CMD [ "python3.9", "/usr/local/benchmark_runner/main.py"]
50+
51+
52+
# oc: https://www.ibm.com/docs/en/fci/6.5.1?topic=steps-setting-up-installation-server
53+
# sudo podman build -t quay.io/ebattat/benchmark-runner:latest . --no-cache
54+
# sudo podman run --rm -it -v /root/.kube/:/root/.kube/ -v /etc/hosts:/etc/hosts --privileged quay.io/ebattat/benchmark-runner:latest /bin/bash

MANIFEST.in

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
include benchmark_runner/benchmark_operator/templates/hammerdb/*.yaml
2+
include benchmark_runner/benchmark_operator/templates/stressng/*.yaml
3+
include benchmark_runner/benchmark_operator/templates/uperf/*.yaml
4+
include tests/integrations/benchmark_runner/templates/*.yaml
5+
6+
7+
8+

README.md

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
[![Actions Status](https://github.com/redhat-performance/cloud-governance/workflows/CI/badge.svg)](https://github.com/redhat-performance/cloud-governance/actions)
3+
[![Coverage Status](https://coveralls.io/repos/github/redhat-performance/cloud-governance/badge.svg?branch=master)](https://coveralls.io/github/redhat-performance/cloud-governance?branch=master)
4+
5+
<h3 align="right">![](media/op.png)
6+
7+
<h3 align="center">Benchmark-Runner ![](media/run.png) </h3>
8+
9+
This tool provides a lightweight and flexible framework for running benchmark workloads
10+
on Kubernetes/OpenShift Pod or VM.
11+
12+
This tool support the following workloads:
13+
14+
* [hammerdb](https://hammerdb.com/): running hammerdb workload on the following databases: MSSQL, Mariadb, Postgresql on Pod and VM with [Configuration](benchmark_runner/benchmark_operator/templates/hammerdb)
15+
* [stressng](https://wiki.ubuntu.com/Kernel/Reference/stress-ng): running stressng workload on Pod or VM with [Configuration](benchmark_runner/benchmark_operator/templates/stressng)
16+
* [uperf](http://uperf.org/): running uperf workload on Pod or VM with [Configuration](benchmark_runner/benchmark_operator/templates/uperf)
17+
18+
** First Phase: support [benchmark-operator workload](https://github.com/cloud-bulldozer/benchmark-operator)
19+
20+
![](media/kiban.png)
21+
22+
Reference:
23+
* The benchmark-runner package is located in [PyPi](https://pypi.org/project/benchmark-runner)
24+
* The benchmark-runner container image is located in [Quay.io](https://quay.io/repository/ebattat/benchmark-runner)
25+
26+
![](media/docker1.png)
27+
28+
_**Table of Contents**_
29+
30+
<!-- TOC -->
31+
- [Installation](#installation)
32+
- [Run workload using Docker/Podman](#run-policy-using-docker-podman)
33+
- [Run workload in Pod using Kubernetes/OpenShift](#run-policy-using-pod)
34+
- [Post Installation](#post-installation)
35+
36+
<!-- /TOC -->
37+
38+
## Installation
39+
40+
#### Download benchmark-runner image from quay.io
41+
```sh
42+
sudo podman pull quay.io/ebattat/benchmark-runner:latest
43+
```
44+
45+
#### Environment variables description:
46+
47+
`mandatory:`KUBEADMIN_PASSWORD=$kubeadmin_password
48+
49+
`mandatory:`WORKLOAD=$workload
50+
51+
Choose one from the following list:
52+
53+
`['stressng_pod', 'stressng_vm','uperf_pod', 'uperf_vm', 'hammerdb_pod_mariadb', 'hammerdb_pod_mssql', 'hammerdb_pod_postgres', 'hammerdb_vm_mariadb', 'hammerdb_vm_mssql', 'hammerdb_vm_postgres']`
54+
55+
`mandatory:`ELASTICSEARCH=$elasticsearch
56+
57+
`mandatory:`ELASTICSEARCH_PORT=$elasticsearch_port
58+
59+
`optional:`PIN_NODE1=$pin_node1
60+
61+
`optional:`PIN_NODE2=$pin_node2
62+
63+
## Run workload using Podman/Docker
64+
```sh
65+
sudo podman run --rm -it -e WORKLOAD=stressng_pod -e KUBEADMIN_PASSWORD=$kubeadmin_password -e ELASTICSEARCH=$elasticsearch -e ELASTICSEARCH_PORT=$elasticsearch_port -e PIN_NODE1=$pin_node1 -v /root/.kube/config:/root/.kube/config -e log_level=INFO --privileged quay.io/ebattat/benchmark-runner:latest
66+
67+
# For custom workload data configuration add:
68+
-v /home/user/stressng/stressng_data.yaml:/benchmark_runner/benchmark_operator/template/stressng/stressng_data.yaml
69+
```
70+
![](media/demo1.gif)
71+
## Run workload in Pod using Kubernetes/OpenShift]
72+
[TBD]
73+
74+
## Post Installation
75+
76+
#### Delete benchmark-runner image
77+
```sh
78+
sudo podman rmi quay.io/ebattat/benchmark-runner:latest
79+
```

SECURITY.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
## Reporting a Vulnerability

__init__.py

Whitespace-only changes.

benchmark_runner.egg-info/PKG-INFO

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
Metadata-Version: 2.1
2+
Name: benchmark-runner
3+
Version: 1.0.15
4+
Summary: Benchmark Runner Tool
5+
Home-page: UNKNOWN
6+
Author: Red Hat
7+
Author-email: [email protected]
8+
License: UNKNOWN
9+
Platform: UNKNOWN
10+
Classifier: Programming Language :: Python :: 3
11+
Classifier: Programming Language :: Python :: 3.6
12+
Classifier: Programming Language :: Python :: 3.7
13+
Classifier: Programming Language :: Python :: 3.8
14+
Classifier: Programming Language :: Python :: 3.9
15+
Description-Content-Type: text/markdown
16+
17+
18+
[![Actions Status](https://github.com/redhat-performance/cloud-governance/workflows/CI/badge.svg)](https://github.com/redhat-performance/cloud-governance/actions)
19+
[![Coverage Status](https://coveralls.io/repos/github/redhat-performance/cloud-governance/badge.svg?branch=master)](https://coveralls.io/github/redhat-performance/cloud-governance?branch=master)
20+
21+
<h3 align="right">![](media/op.png)
22+
23+
<h3 align="center">Benchmark-Runner ![](media/run.png) </h3>
24+
25+
This tool provides a lightweight and flexible framework for running benchmark workloads
26+
on Kubernetes/OpenShift Pod or VM.
27+
28+
This tool support the following workloads:
29+
30+
* [hammerdb](https://hammerdb.com/): running hammerdb workload on the following databases: MSSQL, Mariadb, Postgresql on Pod and VM with [Configuration](benchmark_runner/benchmark_operator/templates/hammerdb)
31+
* [stressng](https://wiki.ubuntu.com/Kernel/Reference/stress-ng): running stressng workload on Pod or VM with [Configuration](benchmark_runner/benchmark_operator/templates/stressng)
32+
* [uperf](http://uperf.org/): running uperf workload on Pod or VM with [Configuration](benchmark_runner/benchmark_operator/templates/uperf)
33+
34+
** First Phase: support [benchmark-operator workload](https://github.com/cloud-bulldozer/benchmark-operator)
35+
36+
![](media/kiban.png)
37+
38+
Reference:
39+
* The benchmark-runner package is located in [PyPi](https://pypi.org/project/benchmark-runner)
40+
* The benchmark-runner container image is located in [Quay.io](https://quay.io/repository/ebattat/benchmark-runner)
41+
42+
![](media/docker1.png)
43+
44+
_**Table of Contents**_
45+
46+
<!-- TOC -->
47+
- [Installation](#installation)
48+
- [Run workload using Docker/Podman](#run-policy-using-docker-podman)
49+
- [Run workload in Pod using Kubernetes/OpenShift](#run-policy-using-pod)
50+
- [Post Installation](#post-installation)
51+
52+
<!-- /TOC -->
53+
54+
## Installation
55+
56+
#### Download benchmark-runner image from quay.io
57+
```sh
58+
sudo podman pull quay.io/ebattat/benchmark-runner:latest
59+
```
60+
61+
#### Environment variables description:
62+
63+
`mandatory:`KUBEADMIN_PASSWORD=$kubeadmin_password
64+
65+
`mandatory:`WORKLOAD=$workload
66+
67+
Choose one from the following list:
68+
69+
`['stressng_pod', 'stressng_vm','uperf_pod', 'uperf_vm', 'hammerdb_pod_mariadb', 'hammerdb_pod_mssql', 'hammerdb_pod_postgres', 'hammerdb_vm_mariadb', 'hammerdb_vm_mssql', 'hammerdb_vm_postgres']`
70+
71+
`mandatory:`ELASTICSEARCH=$elasticsearch
72+
73+
`mandatory:`ELASTICSEARCH_PORT=$elasticsearch_port
74+
75+
`optional:`PIN_NODE1=$pin_node1
76+
77+
`optional:`PIN_NODE2=$pin_node2
78+
79+
## Run workload using Podman/Docker
80+
```sh
81+
sudo podman run --rm -it -e WORKLOAD=stressng_pod -e KUBEADMIN_PASSWORD=$kubeadmin_password -e ELASTICSEARCH=$elasticsearch -e ELASTICSEARCH_PORT=$elasticsearch_port -e PIN_NODE1=$pin_node1 -v /root/.kube/config:/root/.kube/config -v /etc/hosts:/etc/hosts -e log_level=INFO --privileged quay.io/ebattat/benchmark-runner:latest
82+
# for custom workload data configuration add:
83+
-v /home/user/stressng/stressng_data.yaml:/benchmark_runner/benchmark_operator/template/stressng/stressng_data.yaml
84+
```
85+
86+
## Run workload in Pod using Kubernetes/OpenShift]
87+
[TBD]
88+
89+
## Post Installation
90+
91+
#### Delete benchmark-runner image
92+
```sh
93+
sudo podman rmi quay.io/ebattat/benchmark-runner:latest
94+
```
95+
96+

benchmark_runner.egg-info/SOURCES.txt

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MANIFEST.in
2+
README.md
3+
setup.cfg
4+
setup.py
5+
benchmark_runner/__init__.py
6+
benchmark_runner.egg-info/PKG-INFO
7+
benchmark_runner.egg-info/SOURCES.txt
8+
benchmark_runner.egg-info/dependency_links.txt
9+
benchmark_runner.egg-info/not-zip-safe
10+
benchmark_runner.egg-info/requires.txt
11+
benchmark_runner.egg-info/top_level.txt
12+
benchmark_runner/benchmark_operator/__init__.py
13+
benchmark_runner/benchmark_operator/benchmark_operator_workloads.py
14+
benchmark_runner/benchmark_operator/current_run/__init__.py
15+
benchmark_runner/benchmark_operator/templates/__init__.py
16+
benchmark_runner/benchmark_operator/templates/generate_yaml_from_templates.py
17+
benchmark_runner/benchmark_operator/templates/hammerdb/hammerdb_data_template.yaml
18+
benchmark_runner/benchmark_operator/templates/hammerdb/hammerdb_pod_template.yaml
19+
benchmark_runner/benchmark_operator/templates/hammerdb/hammerdb_vm_template.yaml
20+
benchmark_runner/benchmark_operator/templates/hammerdb/mariadb_template.yaml
21+
benchmark_runner/benchmark_operator/templates/hammerdb/mssql_template.yaml
22+
benchmark_runner/benchmark_operator/templates/hammerdb/postgres_template.yaml
23+
benchmark_runner/benchmark_operator/templates/stressng/stressng_data_template.yaml
24+
benchmark_runner/benchmark_operator/templates/stressng/stressng_pod_template.yaml
25+
benchmark_runner/benchmark_operator/templates/stressng/stressng_vm_template.yaml
26+
benchmark_runner/benchmark_operator/templates/uperf/uperf_data_template.yaml
27+
benchmark_runner/benchmark_operator/templates/uperf/uperf_pod_template.yaml
28+
benchmark_runner/benchmark_operator/templates/uperf/uperf_vm_template.yaml
29+
benchmark_runner/common/__init__.py
30+
benchmark_runner/common/analyze/__init__.py
31+
benchmark_runner/common/analyze/analyze_data.py
32+
benchmark_runner/common/elasticshearch/__init__.py
33+
benchmark_runner/common/elasticshearch/elasticsearch_exceptions.py
34+
benchmark_runner/common/elasticshearch/es_operations.py
35+
benchmark_runner/common/logger/__init__.py
36+
benchmark_runner/common/logger/init_logger.py
37+
benchmark_runner/common/logger/logger_exceptions.py
38+
benchmark_runner/common/logger/logger_time_stamp.py
39+
benchmark_runner/common/oc/__init__.py
40+
benchmark_runner/common/oc/oc.py
41+
benchmark_runner/common/oc/oc_exceptions.py
42+
benchmark_runner/common/ssh/__init__.py
43+
benchmark_runner/common/ssh/ssh.py
44+
benchmark_runner/common/ssh/ssh_exceptions.py
45+
benchmark_runner/custom_workloads/__init__.py
46+
benchmark_runner/main/__init__.py
47+
benchmark_runner/main/environment_variables.py
48+
benchmark_runner/main/main.py
49+
benchmark_runner/main/update_data_template_yaml_with_environment_variables.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
typing==3.7.4.3
2+
typeguard
3+
elasticsearch==7.13.2
4+
elasticsearch_dsl==7.3.0
5+
pandas
6+
jinja2==3.0.1
7+
typeguard==2.12.1
8+
PyYAML==5.4.1
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
benchmark_runner

benchmark_runner.log

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
Method name: main {} , Start time: 2021-07-14 01:21:10
2+
Method name: login {} , Start time: 2021-07-14 01:21:10
3+
Method name: login , End time: 2021-07-14 01:21:15 , Total time: 4.77 sec
4+
Method name: run_workload {'workload': 'stressng_pod'} , Start time: 2021-07-14 01:21:15
5+
Method name: helm_install_benchmark_operator {} , Start time: 2021-07-14 01:21:15
6+
Method name: wait_for_pod_create {'pod_name': 'benchmark-operator'} , Start time: 2021-07-14 01:21:26
7+
Method name: wait_for_pod_create , End time: 2021-07-14 01:21:26 , Total time: 0.73 sec
8+
Method name: helm_install_benchmark_operator , End time: 2021-07-14 01:21:26 , Total time: 11.36 sec
9+
Method name: run_workload_func {'workload_full_name': 'stressng_pod'} , Start time: 2021-07-14 01:21:26
10+
Method name: generate_workload_yamls {'workload': 'stressng_pod'} , Start time: 2021-07-14 01:21:26
11+
Method name: generate_workload_yamls , End time: 2021-07-14 01:21:26 , Total time: 0.01 sec
12+
Method name: stressng_pod {} , Start time: 2021-07-14 01:21:26
13+
Method name: create_pod_sync {'yaml': '/home/ebattat/PycharmProjects/benchmark-runner/benchmark_runner/benchmark_operator/current_run/stressng_pod.yaml', 'pod_name': 'stressng-workload'} , Start time: 2021-07-14 01:21:26
14+
Method name: wait_for_pod_create {'pod_name': 'stressng-workload', 'namespace': 'my-ripsaw', 'timeout': 300} , Start time: 2021-07-14 01:21:27
15+
Method name: wait_for_pod_create , End time: 2021-07-14 01:22:01 , Total time: 33.85 sec
16+
Method name: create_pod_sync , End time: 2021-07-14 01:22:01 , Total time: 34.5 sec
17+
Method name: wait_for_initialized {'label': 'app=stressng_workload'} , Start time: 2021-07-14 01:22:01
18+
Method name: wait_for_initialized , End time: 2021-07-14 01:22:03 , Total time: 1.64 sec
19+
Method name: wait_for_ready {'label': 'app=stressng_workload'} , Start time: 2021-07-14 01:22:03
20+
Method name: wait_for_ready , End time: 2021-07-14 01:22:04 , Total time: 1.84 sec
21+
Method name: wait_for_completed {'label': 'app=stressng_workload'} , Start time: 2021-07-14 01:22:04
22+
Method name: wait_for_completed , End time: 2021-07-14 01:22:27 , Total time: 23.06 sec
23+
Method name: get_long_uuid {} , Start time: 2021-07-14 01:22:27
24+
Method name: get_long_uuid , End time: 2021-07-14 01:22:28 , Total time: 0.7 sec
25+
Method name: get_long_uuid {} , Start time: 2021-07-14 01:22:28
26+
Method name: get_long_uuid , End time: 2021-07-14 01:22:29 , Total time: 0.73 sec
27+
Method name: verify_es_data_uploaded {'index': 'ripsaw-stressng-results', 'uuid': 'e7d53cdf-61c5-5da5-87fb-ac8354fa9224'} , Start time: 2021-07-14 01:22:29
28+
Data with index: ripsaw-stressng-results and uuid=e7d53cdf-61c5-5da5-87fb-ac8354fa9224 was uploaded to ElasticSearch successfully
29+
Method name: verify_es_data_uploaded , End time: 2021-07-14 01:22:30 , Total time: 0.81 sec
30+
Method name: delete_pod_sync {'yaml': '/home/ebattat/PycharmProjects/benchmark-runner/benchmark_runner/benchmark_operator/current_run/stressng_pod.yaml', 'pod_name': 'stressng-workload'} , Start time: 2021-07-14 01:22:30
31+
Method name: wait_for_pod_terminate {'pod_name': 'stressng-workload', 'namespace': 'my-ripsaw', 'timeout': 300} , Start time: 2021-07-14 01:22:31
32+
Method name: wait_for_pod_terminate , End time: 2021-07-14 01:22:32 , Total time: 0.72 sec
33+
Method name: delete_pod_sync , End time: 2021-07-14 01:22:32 , Total time: 2.56 sec
34+
Method name: stressng_pod , End time: 2021-07-14 01:22:32 , Total time: 65.84 sec
35+
Method name: run_workload_func , End time: 2021-07-14 01:22:32 , Total time: 65.84 sec
36+
Method name: helm_delete_benchmark_operator {} , Start time: 2021-07-14 01:22:32
37+
Method name: wait_for_pod_terminate {'pod_name': 'benchmark-operator'} , Start time: 2021-07-14 01:22:38
38+
Method name: wait_for_pod_terminate , End time: 2021-07-14 01:23:11 , Total time: 33.28 sec
39+
Method name: helm_delete_benchmark_operator , End time: 2021-07-14 01:23:11 , Total time: 38.6 sec
40+
Method name: run_workload , End time: 2021-07-14 01:23:11 , Total time: 115.81 sec
41+
Method name: main , End time: 2021-07-14 01:23:11 , Total time: 120.58 sec

benchmark_runner/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.

benchmark_runner/benchmark_operator/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)