From 95db41f1e106742cc515c9b8d599fd49f792fc2a Mon Sep 17 00:00:00 2001 From: Vincent Fu Date: Mon, 3 Jun 2024 19:04:43 +0000 Subject: [PATCH] t/nvmept_fdp: add tests for plid ranges Add a few tests to make sure that parsing of ranges for placement ID indices works. Signed-off-by: Vincent Fu --- t/nvmept_fdp.py | 190 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 188 insertions(+), 2 deletions(-) diff --git a/t/nvmept_fdp.py b/t/nvmept_fdp.py index c50c14e4..1739e8fc 100755 --- a/t/nvmept_fdp.py +++ b/t/nvmept_fdp.py @@ -130,6 +130,7 @@ class FDPMultiplePLIDTest(FDPTest): mapping = { 'nruhsd': FIO_FDP_NUMBER_PLIDS, 'max_ruamw': FIO_FDP_MAX_RUAMW, + 'maxplid': FIO_FDP_NUMBER_PLIDS-1, # parameters for 400, 401 tests 'hole_size': 64*1024, 'nios_for_scheme': FIO_FDP_NUMBER_PLIDS//2, @@ -140,6 +141,10 @@ class FDPMultiplePLIDTest(FDPTest): self.fio_opts['bs'] = eval(self.fio_opts['bs'].format(**mapping)) if 'rw' in self.fio_opts and isinstance(self.fio_opts['rw'], str): self.fio_opts['rw'] = self.fio_opts['rw'].format(**mapping) + if 'plids' in self.fio_opts and isinstance(self.fio_opts['plids'], str): + self.fio_opts['plids'] = self.fio_opts['plids'].format(**mapping) + if 'fdp_pli' in self.fio_opts and isinstance(self.fio_opts['fdp_pli'], str): + self.fio_opts['fdp_pli'] = self.fio_opts['fdp_pli'].format(**mapping) super().setup(parameters) @@ -167,9 +172,17 @@ class FDPMultiplePLIDTest(FDPTest): elif 'plids' in self.fio_opts: plid_list = self.fio_opts['plids'].split(',') else: - plid_list = list(range(FIO_FDP_NUMBER_PLIDS)) + plid_list = [str(i) for i in range(FIO_FDP_NUMBER_PLIDS)] - plid_list = sorted([int(i) for i in plid_list]) + range_ids = [] + for plid in plid_list: + if '-' in plid: + [start, end] = plid.split('-') + range_ids.extend(list(range(int(start), int(end)+1))) + else: + range_ids.append(int(plid)) + + plid_list = sorted(range_ids) logging.debug("plid_list: %s", str(plid_list)) fdp_status = get_fdp_status(self.fio_opts['filename']) @@ -707,6 +720,121 @@ TEST_LIST = [ }, "test_class": FDPMultiplePLIDTest, }, + ### use 3-4 to specify plids + { + "test_id": 204, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "1,3-4", + "fdp_pli_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + { + "test_id": 205, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "dataplacement": "fdp", + "plids": "1,3-4", + "plid_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + ### use 1-3 to specify plids + { + "test_id": 206, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "1-3", + "fdp_pli_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + { + "test_id": 207, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "dataplacement": "fdp", + "plids": "1-3", + "plid_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + ### use multiple ranges to specify plids + { + "test_id": 208, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "1-2,3-3", + "fdp_pli_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + { + "test_id": 209, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "dataplacement": "fdp", + "plids": "1-2,3-3", + "plid_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + { + "test_id": 210, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "0-{maxplid}", + "fdp_pli_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, + { + "test_id": 211, + "fio_opts": { + "rw": 'randwrite', + "bs": 4096, + "number_ios": "{max_ruamw}-1", + "verify": "crc32c", + "dataplacement": "fdp", + "fdp_pli": "0-{maxplid}", + "plid_select": "random", + "output-format": "json", + }, + "test_class": FDPMultiplePLIDTest, + }, # Specify invalid options fdp=1 and dataplacement=none { "test_id": 300, @@ -771,6 +899,64 @@ TEST_LIST = [ "test_class": FDPTest, "success": SUCCESS_NONZERO, }, + ## Specify invalid ranges with start > end + { + "test_id": 304, + "fio_opts": { + "rw": 'write', + "bs": 4096, + "io_size": 4096, + "verify": "crc32c", + "fdp": 1, + "plids": "3-1", + "output-format": "normal", + }, + "test_class": FDPTest, + "success": SUCCESS_NONZERO, + }, + { + "test_id": 305, + "fio_opts": { + "rw": 'write', + "bs": 4096, + "io_size": 4096, + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "3-1", + "output-format": "normal", + }, + "test_class": FDPTest, + "success": SUCCESS_NONZERO, + }, + ## Specify too many plids + { + "test_id": 306, + "fio_opts": { + "rw": 'write', + "bs": 4096, + "io_size": 4096, + "verify": "crc32c", + "fdp": 1, + "plids": "0-65535", + "output-format": "normal", + }, + "test_class": FDPTest, + "success": SUCCESS_NONZERO, + }, + { + "test_id": 307, + "fio_opts": { + "rw": 'write', + "bs": 4096, + "io_size": 4096, + "verify": "crc32c", + "fdp": 1, + "fdp_pli": "0-65535", + "output-format": "normal", + }, + "test_class": FDPTest, + "success": SUCCESS_NONZERO, + }, # write to multiple PLIDs using scheme selection of PLIDs ## using old and new sets of options { -- 2.25.1