def test_get_disk_security_info_failed_os_nvme(self): mock_check_output = self.patch(subprocess, "check_output") mock_check_output.side_effect = OSError( -2, "No such file or directory" ) disk_name = factory.make_name("nvme").encode("ascii") observered = get_disk_security_info(disk_name) self.assertThat( self.print_flush, MockCalledOnceWith( "OS error when running nvme-cli (No such file or directory)" ), ) self.assertEqual( { "format_supported": False, "writez_supported": False, "crypto_format": False, "nsze": 0, "lbaf": 0, "ms": 0, }, observered, )
def test_get_disk_security_info_noformat_nowritez_nvme(self): nvme_cli_output = ( NVME_IDCTRL_PROLOGUE + NVME_IDCTRL_OACS_FORMAT_UNSUPPORTED + NVME_IDCTRL_ONCS_WRITEZ_UNSUPPORTED + NVME_IDCTRL_FNA_CRYPTFORMAT_UNSUPPORTED + NVME_IDCTRL_EPILOGUE ) mock_check_output = self.patch(subprocess, "check_output") mock_check_output.return_value = nvme_cli_output disk_name = factory.make_name("nvme").encode("ascii") observered = get_disk_security_info(disk_name) self.assertThat( mock_check_output, MockCallsMatch( call(["nvme", "id-ctrl", maas_wipe.DEV_PATH % disk_name]), call(["nvme", "id-ns", maas_wipe.DEV_PATH % disk_name]), ), ) self.assertEqual( { "format_supported": False, "writez_supported": False, "crypto_format": False, "nsze": 0, "lbaf": 0, "ms": 0, }, observered, )
def test_get_disk_security_info_missing(self): hdparm_output = HDPARM_BEFORE_SECURITY + HDPARM_AFTER_SECURITY mock_check_output = self.patch(subprocess, "check_output") mock_check_output.return_value = hdparm_output disk_name = factory.make_name("disk").encode('ascii') observered = get_disk_security_info(disk_name) self.assertThat( mock_check_output, MockCalledOnceWith([b'hdparm', b'-I', b'/dev/%s' % disk_name])) self.assertEqual({ b"supported": False, b"enabled": False, b"locked": False, b"frozen": False, }, observered)
def test_get_disk_security_info_all_true(self): hdparm_output = (HDPARM_BEFORE_SECURITY + HDPARM_SECURITY_ALL_TRUE + HDPARM_AFTER_SECURITY) mock_check_output = self.patch(subprocess, "check_output") mock_check_output.return_value = hdparm_output disk_name = factory.make_name("disk").encode("ascii") observered = get_disk_security_info(disk_name) self.assertThat( mock_check_output, MockCalledOnceWith([b"hdparm", b"-I", b"/dev/%s" % disk_name]), ) self.assertEqual( { b"supported": True, b"enabled": True, b"locked": True, b"frozen": True, }, observered, )
def test_get_disk_security_info_failed_cmd_nvme(self): mock_check_output = self.patch(subprocess, "check_output") mock_check_output.side_effect = subprocess.CalledProcessError( 1, "nvme id-ctrl") disk_name = factory.make_name("nvme").encode("ascii") observered = get_disk_security_info(disk_name) self.assertThat( self.print_flush, MockCalledOnceWith("Error on nvme id-ctrl (%s)" % "1"), ) self.assertEqual( { "format_supported": False, "writez_supported": False, "crypto_format": False, "nsze": 0, "lbaf": 0, "ms": 0, }, observered, )