Blame tests/nvme_read_write_test.py

Packit Service b7b338
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
Packit Service b7b338
#
Packit Service b7b338
# This program is free software; you can redistribute it and/or
Packit Service b7b338
# modify it under the terms of the GNU General Public License
Packit Service b7b338
# as published by the Free Software Foundation; either version 2
Packit Service b7b338
# of the License, or (at your option) any later version.
Packit Service b7b338
#
Packit Service b7b338
# This program is distributed in the hope that it will be useful,
Packit Service b7b338
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service b7b338
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service b7b338
# GNU General Public License for more details.
Packit Service b7b338
#
Packit Service b7b338
# You should have received a copy of the GNU General Public License
Packit Service b7b338
# along with this program; if not, write to the Free Software
Packit Service b7b338
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
Packit Service b7b338
# MA  02110-1301, USA.
Packit Service b7b338
#
Packit Service b7b338
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
Packit Service b7b338
#
Packit Service b7b338
"""
Packit Service b7b338
NVMe Read/Write Testcae:-
Packit Service b7b338
Packit Service b7b338
    1. Create data file with specific pattern outside of the device under test.
Packit Service b7b338
    2. Write data file on the namespace under test.
Packit Service b7b338
    3. Read the data from the namespace under test into different file.
Packit Service b7b338
    4. Compare file in #1 and #3.
Packit Service b7b338
"""
Packit Service b7b338
Packit Service b7b338
import filecmp
Packit Service b7b338
from nose.tools import assert_equal
Packit Service b7b338
from nvme_test_io import TestNVMeIO
Packit Service b7b338
Packit Service b7b338
Packit Service b7b338
class TestNVMeReadWriteTest(TestNVMeIO):
Packit Service b7b338
Packit Service b7b338
    """
Packit Service b7b338
    Represents NVMe read, write testcase.
Packit Service b7b338
Packit Service b7b338
        - Attributes:
Packit Service b7b338
              - start_block : starting block of to perform IO.
Packit Service b7b338
              - compare_file : data file to use in nvme compare command.
Packit Service b7b338
              - test_log_dir : directory for logs, temp files.
Packit Service b7b338
    """
Packit Service b7b338
    def __init__(self):
Packit Service b7b338
        """ Pre Section for TestNVMeReadWriteTest """
Packit Service b7b338
        TestNVMeIO.__init__(self)
Packit Service b7b338
        self.start_block = 1023
Packit Service b7b338
        self.test_log_dir = self.log_dir + "/" + self.__class__.__name__
Packit Service b7b338
        self.setup_log_dir(self.__class__.__name__)
Packit Service b7b338
        self.write_file = self.test_log_dir + "/" + self.write_file
Packit Service b7b338
        self.read_file = self.test_log_dir + "/" + self.read_file
Packit Service b7b338
        self.create_data_file(self.write_file, self.data_size, "15")
Packit Service b7b338
        open(self.read_file, 'a').close()
Packit Service b7b338
Packit Service b7b338
    def __del__(self):
Packit Service b7b338
        """ Post Section for TestNVMeReadWriteTest """
Packit Service b7b338
        TestNVMeIO.__del__(self)
Packit Service b7b338
Packit Service b7b338
    def read_validate(self):
Packit Service b7b338
        """ Validate the data file read
Packit Service b7b338
            - Args:
Packit Service b7b338
                - None
Packit Service b7b338
            - Returns:
Packit Service b7b338
                - returns 0 on success, 1 on failure.
Packit Service b7b338
        """
Packit Service b7b338
        return 0 if filecmp.cmp(self.read_file, self.write_file) else 1
Packit Service b7b338
Packit Service b7b338
    def test_nvme_write(self):
Packit Service b7b338
        """ Testcaes main  """
Packit Service b7b338
        assert_equal(self.nvme_write(), 0)
Packit Service b7b338
        assert_equal(self.nvme_read(), 0)
Packit Service b7b338
        assert_equal(self.read_validate(), 0)