Re: [PATCH 17/17] t/latency_percentiles.py: add tests for the new cmdprio_bssplit format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/1/22 06:13, Niklas Cassel wrote:
> From: Niklas Cassel <niklas.cassel@xxxxxxx>
> 
> Add two new test cases for the new cmdprio_bssplit format.
> 
> While at it, fixup some small typos in the existing code.
> 
> Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx>
> ---
>  t/latency_percentiles.py | 93 ++++++++++++++++++++++++++++++++--------
>  1 file changed, 75 insertions(+), 18 deletions(-)
> 
> diff --git a/t/latency_percentiles.py b/t/latency_percentiles.py
> index 62c4cc91..9e37d9fe 100755
> --- a/t/latency_percentiles.py
> +++ b/t/latency_percentiles.py
> @@ -126,7 +126,8 @@ class FioLatTest():
>              "--output-format={output-format}".format(**self.test_options),
>          ]
>          for opt in ['slat_percentiles', 'clat_percentiles', 'lat_percentiles',
> -                    'unified_rw_reporting', 'fsync', 'fdatasync', 'numjobs', 'cmdprio_percentage']:
> +                    'unified_rw_reporting', 'fsync', 'fdatasync', 'numjobs',
> +                    'cmdprio_percentage', 'bssplit', 'cmdprio_bssplit']:
>              if opt in self.test_options:
>                  option = '--{0}={{{0}}}'.format(opt)
>                  fio_args.append(option.format(**self.test_options))
> @@ -761,7 +762,7 @@ class Test008(FioLatTest):
>          job = self.json_data['jobs'][0]
>  
>          retval = True
> -        if 'read' in job or 'write'in job or 'trim' in job:
> +        if 'read' in job or 'write' in job or 'trim' in job:
>              print("Unexpected data direction found in fio output")
>              retval = False
>          if not self.check_nocmdprio_lat(job):
> @@ -953,7 +954,7 @@ class Test019(FioLatTest):
>          job = self.json_data['jobs'][0]
>  
>          retval = True
> -        if 'read' in job or 'write'in job or 'trim' in job:
> +        if 'read' in job or 'write' in job or 'trim' in job:
>              print("Unexpected data direction found in fio output")
>              retval = False
>  
> @@ -963,6 +964,27 @@ class Test019(FioLatTest):
>          return retval
>  
>  
> +class Test021(FioLatTest):
> +    """Test object for Test 21."""
> +
> +    def check(self):
> +        """Check Test 21 output."""
> +
> +        job = self.json_data['jobs'][0]
> +
> +        retval = True
> +        if not self.check_empty(job['trim']):
> +            print("Unexpected trim data found in output")
> +            retval = False
> +
> +        retval &= self.check_latencies(job['read'], 0, slat=False, tlat=False, plus=True)
> +        retval &= self.check_latencies(job['write'], 1, slat=False, tlat=False, plus=True)
> +        retval &= self.check_prio_latencies(job['read'], clat=True, plus=True)
> +        retval &= self.check_prio_latencies(job['write'], clat=True, plus=True)
> +
> +        return retval
> +
> +
>  def parse_args():
>      """Parse command-line arguments."""
>  
> @@ -1007,7 +1029,7 @@ def main():
>              # randread, null
>              # enable slat, clat, lat
>              # only clat and lat will appear because
> -            # because the null ioengine is syncrhonous
> +            # because the null ioengine is synchronous
>              "test_id": 1,
>              "runtime": 2,
>              "output-format": "json",
> @@ -1047,7 +1069,7 @@ def main():
>          {
>              # randread, aio
>              # enable slat, clat, lat
> -            # all will appear because liaio is asynchronous
> +            # all will appear because libaio is asynchronous
>              "test_id": 4,
>              "runtime": 5,
>              "output-format": "json+",
> @@ -1153,9 +1175,9 @@ def main():
>              # randread, null
>              # enable slat, clat, lat
>              # only clat and lat will appear because
> -            # because the null ioengine is syncrhonous
> -            # same as Test 1 except
> -            # numjobs = 4 to test sum_thread_stats() changes
> +            # because the null ioengine is synchronous
> +            # same as Test 1 except add numjobs = 4 to test
> +            # sum_thread_stats() changes
>              "test_id": 12,
>              "runtime": 2,
>              "output-format": "json",
> @@ -1170,9 +1192,9 @@ def main():
>          {
>              # randread, aio
>              # enable slat, clat, lat
> -            # all will appear because liaio is asynchronous
> -            # same as Test 4 except
> -            # numjobs = 4 to test sum_thread_stats() changes
> +            # all will appear because libaio is asynchronous
> +            # same as Test 4 except add numjobs = 4 to test
> +            # sum_thread_stats() changes
>              "test_id": 13,
>              "runtime": 5,
>              "output-format": "json+",
> @@ -1187,8 +1209,8 @@ def main():
>          {
>              # 50/50 r/w, aio, unified_rw_reporting
>              # enable slat, clat, lata
> -            # same as Test 8 except
> -            # numjobs = 4 to test sum_thread_stats() changes
> +            # same as Test 8 except add numjobs = 4 to test
> +            # sum_thread_stats() changes
>              "test_id": 14,
>              "runtime": 5,
>              "output-format": "json+",
> @@ -1204,7 +1226,7 @@ def main():
>          {
>              # randread, aio
>              # enable slat, clat, lat
> -            # all will appear because liaio is asynchronous
> +            # all will appear because libaio is asynchronous
>              # same as Test 4 except add cmdprio_percentage
>              "test_id": 15,
>              "runtime": 5,
> @@ -1278,8 +1300,8 @@ def main():
>          {
>              # 50/50 r/w, aio, unified_rw_reporting
>              # enable slat, clat, lat
> -            # same as Test 19 except
> -            # add numjobs = 4 to test sum_thread_stats() changes
> +            # same as Test 19 except add numjobs = 4 to test
> +            # sum_thread_stats() changes
>              "test_id": 20,
>              "runtime": 5,
>              "output-format": "json+",
> @@ -1293,6 +1315,40 @@ def main():
>              'numjobs': 4,
>              "test_obj": Test019,
>          },
> +        {
> +            # r/w, aio
> +            # enable only clat
> +            # test bssplit and cmdprio_bssplit
> +            "test_id": 21,
> +            "runtime": 5,
> +            "output-format": "json+",
> +            "slat_percentiles": 0,
> +            "clat_percentiles": 1,
> +            "lat_percentiles": 0,
> +            "ioengine": aio,
> +            'rw': 'randrw',
> +            'bssplit': '64k/40:1024k/60',
> +            'cmdprio_bssplit': '64k/25/1/1:64k/75/3/2:1024k/0',
> +            "test_obj": Test021,
> +        },
> +        {
> +            # r/w, aio
> +            # enable only clat
> +            # same as Test 21 except add numjobs = 4 to test
> +            # sum_thread_stats() changes
> +            "test_id": 22,
> +            "runtime": 5,
> +            "output-format": "json+",
> +            "slat_percentiles": 0,
> +            "clat_percentiles": 1,
> +            "lat_percentiles": 0,
> +            "ioengine": aio,
> +            'rw': 'randrw',
> +            'bssplit': '64k/40:1024k/60',
> +            'cmdprio_bssplit': '64k/25/1/1:64k/75/3/2:1024k/0',
> +            'numjobs': 4,
> +            "test_obj": Test021,
> +        },
>      ]
>  
>      passed = 0
> @@ -1304,9 +1360,10 @@ def main():
>             (args.run_only and test['test_id'] not in args.run_only):
>              skipped = skipped + 1
>              outcome = 'SKIPPED (User request)'
> -        elif (platform.system() != 'Linux' or os.geteuid() != 0) and 'cmdprio_percentage' in test:
> +        elif (platform.system() != 'Linux' or os.geteuid() != 0) and \
> +             ('cmdprio_percentage' in test or 'cmdprio_bssplit' in test):
>              skipped = skipped + 1
> -            outcome = 'SKIPPED (Linux root required for cmdprio_percentage tests)'
> +            outcome = 'SKIPPED (Linux root required for cmdprio tests)'
>          else:
>              test_obj = test['test_obj'](artifact_root, test, args.debug)
>              status = test_obj.run_fio(fio)

Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>



-- 
Damien Le Moal
Western Digital Research



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux