Fio: support input job file configuration 45/45445/1
authorJingLu5 <lvjing5@huawei.com>
Fri, 13 Oct 2017 08:15:18 +0000 (08:15 +0000)
committerJing Lu <lvjing5@huawei.com>
Wed, 18 Oct 2017 05:59:30 +0000 (05:59 +0000)
Change-Id: I4bb15a398819e54f7fb3e9eac17daa4059c03376
Signed-off-by: JingLu5 <lvjing5@huawei.com>
(cherry picked from commit a5d0491b47fd1bab27fa603353861ea8eaba8da5)

tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml
yardstick/benchmark/scenarios/storage/fio.py

index 81b42dc..fe244e8 100644 (file)
@@ -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
index 98fe269..125bc7e 100644 (file)
@@ -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)