From a5d0491b47fd1bab27fa603353861ea8eaba8da5 Mon Sep 17 00:00:00 2001 From: JingLu5 Date: Fri, 13 Oct 2017 08:15:18 +0000 Subject: Fio: support input job file configuration Change-Id: I4bb15a398819e54f7fb3e9eac17daa4059c03376 Signed-off-by: JingLu5 --- tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml | 8 ++++++-- yardstick/benchmark/scenarios/storage/fio.py | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml index 81b42dc4d..fe244e81c 100644 --- a/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml @@ -13,7 +13,8 @@ description: > Yardstick TC006 config file; Measure volume storage IOPS, throughput and latency using fio with job file. -{% set directory = directory or "/FIO_Test" %} +{% set job_file_config = job_file_config or '["[random-writers]", ioengine=libaio, rw=randwrite, size=128m, bs=32k, direct=0, size=64m, numjobs=4]' %} +{% set directory = directory or '/FIO_Test' %} {% set volume_size = volume_size or 200 %} {% set provider = provider or none %} {% set physical_network = physical_network or 'physnet1' %} @@ -25,7 +26,10 @@ scenarios: - type: Fio options: - job_file: "job_file.ini" + # input the content of a fio job file directly + job_file_config: {{ job_file_config }} + # or input the job file name + #job_file: "job_file.ini" directory: {{ directory }} host: fio.yardstick-TC006 diff --git a/yardstick/benchmark/scenarios/storage/fio.py b/yardstick/benchmark/scenarios/storage/fio.py index 98fe26973..125bc7ed4 100644 --- a/yardstick/benchmark/scenarios/storage/fio.py +++ b/yardstick/benchmark/scenarios/storage/fio.py @@ -32,6 +32,10 @@ class Fio(base.Scenario): type: string unit: na default: None + job_file_config - content of job configuration file + type: list + unit: na + default: None directory - mount directoey for test volume type: string unit: na @@ -90,15 +94,26 @@ class Fio(base.Scenario): self.client.wait(timeout=600) self.job_file = self.options.get("job_file", None) + config_lines = self.options.get("job_file_config", None) if self.job_file: self.job_file_script = pkg_resources.resource_filename( "yardstick.resources", 'files/' + self.job_file) - # copy script to host + # copy job file to host self.client._put_file_shell(self.job_file_script, '~/job_file.ini') + elif config_lines: + LOG.debug("Job file configuration received, Fio job file will be created.") + self.job_file = 'tmp_job_file.ini' + self.job_file_script = pkg_resources.resource_filename( + "yardstick.resources", 'files/' + self.job_file) + with open(self.job_file_script, 'w') as f: + f.write('\n'.join(str(line) for line in config_lines)) + # copy job file to host + self.client._put_file_shell(self.job_file_script, '~/job_file.ini') else: + LOG.debug("No job file configuration received, Fio will use parameters.") self.target_script = pkg_resources.resource_filename( "yardstick.benchmark.scenarios.storage", Fio.TARGET_SCRIPT) -- cgit 1.2.3-korg