From 38034172ff56059df14e3066f7e6054558f5d8c9 Mon Sep 17 00:00:00 2001 From: Alex Krzos Date: Wed, 23 Mar 2016 16:10:42 -0400 Subject: [PATCH] Adding more perfkit. + Use a specific version of perfkit (v1.4.0). + Ensure names are unique to avoid name conflict with results directory. + Adjust the validator mapping + Reduce number of time stamp variables for readability Change-Id: Iad9e4417ff0800985914a57dd3d00bfc44dd9c07 --- ansible/install/roles/browbeat/tasks/main.yml | 14 +++++- browbeat-complete.yaml | 4 +- browbeat-config.yaml | 4 +- conf/browbeat-perfkit-complete.yaml | 22 ++++----- lib/PerfKit.py | 48 ++++++++----------- lib/validate.yaml | 4 +- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/ansible/install/roles/browbeat/tasks/main.yml b/ansible/install/roles/browbeat/tasks/main.yml index 7ea619766..8d7ce1215 100644 --- a/ansible/install/roles/browbeat/tasks/main.yml +++ b/ansible/install/roles/browbeat/tasks/main.yml @@ -58,10 +58,20 @@ pip: requirements={{ browbeat_path }}/requirements.txt virtualenv={{ browbeat_venv }} - name: Clone PerfKitBenchmarker on undercloud - git: repo=https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git dest={{ perfkit_venv }}/PerfKitBenchmarker + git: + repo=https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git + dest={{ perfkit_venv }}/PerfKitBenchmarker + version=v1.4.0 + +- name: Install PerfKitBenchmarker requirements into perfkit-venv + pip: + requirements={{ perfkit_venv }}/PerfKitBenchmarker/requirements.txt + virtualenv={{ perfkit_venv }} - name: Install PerfKitBenchmarker Openstack requirements into perfkit-venv - pip: requirements={{ perfkit_venv }}/PerfKitBenchmarker/perfkitbenchmarker/providers/openstack/requirements.txt virtualenv={{ perfkit_venv }} + pip: + requirements={{ perfkit_venv }}/PerfKitBenchmarker/requirements-openstack.txt + virtualenv={{ perfkit_venv }} - name: Install rally into rally-venv pip: name=rally virtualenv={{ rally_venv }} diff --git a/browbeat-complete.yaml b/browbeat-complete.yaml index 7e77cadb4..2e1dd92ff 100644 --- a/browbeat-complete.yaml +++ b/browbeat-complete.yaml @@ -44,8 +44,8 @@ perfkit: machine_type: m1.small os_type: rhel openstack_image_username: centos - openstack_public_network: browbeat_public - openstack_private_network: browbeat_private + openstack_floating_ip_pool: browbeat_public + openstack_network: browbeat_private benchmarks: - name: fio-centos-m1-small enabled: false diff --git a/browbeat-config.yaml b/browbeat-config.yaml index a99a261df..603a471f3 100644 --- a/browbeat-config.yaml +++ b/browbeat-config.yaml @@ -44,8 +44,8 @@ perfkit: machine_type: m1.small os_type: rhel openstack_image_username: centos - openstack_public_network: browbeat_public - openstack_private_network: browbeat_private + openstack_floating_ip_pool: browbeat_public + openstack_network: browbeat_private benchmarks: - name: fio-centos-m1-small enabled: false diff --git a/conf/browbeat-perfkit-complete.yaml b/conf/browbeat-perfkit-complete.yaml index 958deca04..cba37ae1d 100644 --- a/conf/browbeat-perfkit-complete.yaml +++ b/conf/browbeat-perfkit-complete.yaml @@ -33,23 +33,23 @@ perfkit: machine_type: m1.small os_type: rhel openstack_image_username: centos - openstack_public_network: browbeat_public - openstack_private_network: browbeat_private + openstack_floating_ip_pool: browbeat_public + openstack_network: browbeat_private benchmarks: - name: aerospike-centos-m1-small enabled: false benchmarks: aerospike - - name: block_storage_workload-centos-m1-small - enabled: false - benchmarks: block_storage_workload - data_disk_size: 20 - workload_mode: logging - - name: block_storage_workload-centos-m1-small + - name: block_storage_workload-database-centos-m1-small enabled: false benchmarks: block_storage_workload data_disk_size: 20 workload_mode: database - - name: block_storage_workload-centos-m1-small + - name: block_storage_workload-logging-centos-m1-small + enabled: false + benchmarks: block_storage_workload + data_disk_size: 20 + workload_mode: logging + - name: block_storage_workload-streaming-centos-m1-small enabled: true benchmarks: block_storage_workload data_disk_size: 20 @@ -62,8 +62,8 @@ perfkit: machine_type: m1.small os_type: rhel openstack_image_username: centos - openstack_public_network: browbeat_public - openstack_private_network: browbeat_private + openstack_floating_ip_pool: browbeat_public + openstack_network: browbeat_private - name: cluster_boot-centos-m1-small enabled: false benchmarks: cluster_boot diff --git a/lib/PerfKit.py b/lib/PerfKit.py index 1603204c7..4137fbfd4 100644 --- a/lib/PerfKit.py +++ b/lib/PerfKit.py @@ -1,15 +1,16 @@ from Connmon import Connmon -from Tools import Tools from Grafana import Grafana +from Tools import Tools from WorkloadBase import WorkloadBase +import datetime import glob import logging -import datetime import os import shutil import subprocess import time + class PerfKit(WorkloadBase): def __init__(self, config): @@ -25,8 +26,7 @@ class PerfKit(WorkloadBase): def _log_details(self): self.logger.info( - "Current number of Perkit scenarios executed: {}".format( - self.scenario_count)) + "Current number of Perkit scenarios executed: {}".format(self.scenario_count)) self.logger.info("Current number of Perfkit test(s) executed: {}".format(self.test_count)) self.logger.info("Current number of Perfkit test(s) succeeded: {}".format(self.pass_count)) self.logger.info("Current number of Perfkit test failures: {}".format(self.error_count)) @@ -73,20 +73,17 @@ class PerfKit(WorkloadBase): if self.config['connmon']['enabled']: self.connmon.start_connmon() - # Run PerfKit - from_ts = int(time.time() * 1000) - if 'sleep_before' in self.config['perfkit']: - time.sleep(self.config['perfkit']['sleep_before']) self.logger.info("Running Perfkit Command: {}".format(cmd)) stdout_file = open("{}/pkb.stdout.log".format(result_dir), 'w') stderr_file = open("{}/pkb.stderr.log".format(result_dir), 'w') - from_time = time.time() + from_ts = time.time() + if 'sleep_before' in self.config['perfkit']: + time.sleep(self.config['perfkit']['sleep_before']) process = subprocess.Popen(cmd, shell=True, stdout=stdout_file, stderr=stderr_file) process.communicate() - to_time = time.time() if 'sleep_after' in self.config['perfkit']: time.sleep(self.config['perfkit']['sleep_after']) - to_ts = int(time.time() * 1000) + to_ts = time.time() # Stop connmon at end of perfkit task if self.config['connmon']['enabled']: @@ -96,6 +93,7 @@ class PerfKit(WorkloadBase): self.connmon.connmon_graphs(result_dir, test_name) except: self.logger.error("Connmon Result data missing, Connmon never started") + workload = self.__class__.__name__ new_test_name = test_name.split('-') new_test_name = new_test_name[2:] @@ -108,27 +106,17 @@ class PerfKit(WorkloadBase): self.update_pass_tests() self.update_total_pass_tests() self.get_time_dict( - to_time, - from_time, - benchmark_config['benchmarks'], - new_test_name, - workload, - "pass") - + to_ts, from_ts, benchmark_config['benchmarks'], new_test_name, + workload, "pass") else: self.logger.error("Benchmark failed.") self.update_fail_tests() self.update_total_fail_tests() self.get_time_dict( - to_time, - from_time, - benchmark_config['benchmarks'], - new_test_name, - workload, - "fail") + to_ts, from_ts, benchmark_config['benchmarks'], new_test_name, + workload, "fail") except IOError: - self.logger.error( - "File missing: {}/pkb.stderr.log".format(result_dir)) + self.logger.error("File missing: {}/pkb.stderr.log".format(result_dir)) # Copy all results for perfkit_file in glob.glob("/tmp/perfkitbenchmarker/run_browbeat/*"): @@ -137,9 +125,11 @@ class PerfKit(WorkloadBase): shutil.rmtree("/tmp/perfkitbenchmarker/run_browbeat") # Grafana integration - self.grafana.print_dashboard_url(from_ts, to_ts, test_name) - self.grafana.log_snapshot_playbook_cmd( - from_ts, to_ts, result_dir, test_name) + self.grafana.create_grafana_urls( + {'from_ts': int(from_ts * 1000), + 'to_ts': int(to_ts * 1000)}) + self.grafana.print_dashboard_url(test_name) + self.grafana.log_snapshot_playbook_cmd(from_ts, to_ts, result_dir, test_name) self.grafana.run_playbook(from_ts, to_ts, result_dir, test_name) def start_workloads(self): diff --git a/lib/validate.yaml b/lib/validate.yaml index 5c1323e85..d4e18c877 100644 --- a/lib/validate.yaml +++ b/lib/validate.yaml @@ -108,10 +108,10 @@ mapping: openstack_image_username: type: str required: True - openstack_public_network: + openstack_floating_ip_pool: type: str required: True - openstack_private_network: + openstack_network: type: str required: True benchmarks: