From mboxrd@z Thu Jan 1 00:00:00 1970 From: kenneth.heitke@intel.com (Heitke, Kenneth) Date: Tue, 30 Apr 2019 12:56:08 -0600 Subject: [nvme-cli 2/9] tests/nvme_writeuncor_test.py: check if write uncorrectable is supported In-Reply-To: <20190430060554.24368-3-hare@suse.de> References: <20190430060554.24368-1-hare@suse.de> <20190430060554.24368-3-hare@suse.de> Message-ID: <45c91e1f-004b-aa4e-69fe-82949eed166e@intel.com> On 4/30/2019 12:05 AM, Hannes Reinecke wrote: > Before testing the WRITE UNCORRECTABLE command we should be testing the > ONCS value of the IDENTIFY CONTROLLER command to figure out if > the command is supported. > > Signed-off-by: Hannes Reinecke > --- > tests/nvme_test.py | 24 ++++++++++++++++++++++++ > tests/nvme_writeuncor_test.py | 11 ++++++----- > 2 files changed, 30 insertions(+), 5 deletions(-) > > diff --git a/tests/nvme_test.py b/tests/nvme_test.py > index 1c17ba1..7db277f 100644 > --- a/tests/nvme_test.py > +++ b/tests/nvme_test.py > @@ -276,6 +276,30 @@ class TestNVMe(object): > return int(oncs, 16) & 8 > > @tools.nottest > + def get_oncs_write_uncorr(self): > + """ Wrapper for extracting write uncorrectable command support. > + - Args: > + - None > + - Returns: > + - true if supported. > + """ > + pattern = re.compile("^oncs[ ]+: [0-9]", re.IGNORECASE) > + oncs = 0 > + get_ctrl_id = "nvme id-ctrl " + self.ctrl > + proc = subprocess.Popen(get_ctrl_id, > + shell=True, > + stdout=subprocess.PIPE) > + err = proc.wait() > + assert_equal(err, 0, "ERROR : reading oncs value failed") > + > + for line in proc.stdout: > + if pattern.match(line): > + oncs = line.split(":")[1].strip() > + break > + > + return int(oncs, 16) & 2 > + > + @tools.nottest > def delete_all_ns(self): > """ Wrapper for deleting all the namespaces. > - Args: > diff --git a/tests/nvme_writeuncor_test.py b/tests/nvme_writeuncor_test.py > index 9f96f63..e4dc7b4 100644 > --- a/tests/nvme_writeuncor_test.py > +++ b/tests/nvme_writeuncor_test.py > @@ -69,8 +69,9 @@ class TestNVMeUncor(TestNVMeIO): > > def test_write_uncor(self): > """ Testcase main """ > - assert_equal(self.nvme_read(), 0) > - assert_equal(self.write_uncor(), 0) > - assert_not_equal(self.nvme_read(), 0) > - assert_equal(self.nvme_write(), 0) > - assert_equal(self.nvme_read(), 0) > + if self.get_oncs_write_uncorr() == 1: I think this needs to be '== 0x2' or change the get_oncs_write_uncorr function to shift the bit down, or check for a True condition > + assert_equal(self.nvme_read(), 0) > + assert_equal(self.write_uncor(), 0) > + assert_not_equal(self.nvme_read(), 0) > + assert_equal(self.nvme_write(), 0) > + assert_equal(self.nvme_read(), 0) >