def test_try_secure_erase_successful_nocryto_nvme(self): disk_name = factory.make_name("nvme").encode("ascii") sec_info = { "format_supported": True, "writez_supported": True, "crypto_format": False, "nsze": 0, "lbaf": 0, "ms": 0, } mock_check_output = self.patch(subprocess, "check_output") self.assertTrue(try_secure_erase(disk_name, sec_info)) self.assertThat( mock_check_output, MockCalledOnceWith( [ "nvme", "format", "-s", "1", "-l", "0", "-m", "0", maas_wipe.DEV_PATH % disk_name, ] ), ) self.assertThat( self.print_flush, MockCalledOnceWith( "Secure erase was successful on NVMe drive %s" % disk_name.decode("ascii") ), )
def test_try_secure_erase_not_supported(self): disk_name = factory.make_name("disk").encode("ascii") disk_info = { b"supported": False, b"enabled": False, b"locked": False, b"frozen": False, } self.assertFalse(try_secure_erase(disk_name, disk_info)) self.assertThat( self.print_flush, MockCalledOnceWith("%s: drive does not support secure erase." % (disk_name.decode("ascii"))), )
def test_try_secure_erase_locked(self): disk_name = factory.make_name("disk").encode("ascii") disk_info = { b"supported": True, b"enabled": False, b"locked": True, b"frozen": False, } self.assertFalse(try_secure_erase(disk_name, disk_info)) self.assertThat( self.print_flush, MockCalledOnceWith( "%s: not using secure erase; drive is currently locked." % ( disk_name.decode("ascii"))))
def test_try_secure_erase_successful_erase(self): disk_name = factory.make_name("disk").encode("ascii") disk_info = { b"supported": True, b"enabled": False, b"locked": False, b"frozen": False, } self.patch(maas_wipe, "secure_erase") self.assertTrue(try_secure_erase(disk_name, disk_info)) self.assertThat( self.print_flush, MockCalledOnceWith("%s: successfully securely erased." % (disk_name.decode("ascii"))), )
def test_try_secure_erase_failed_erase(self): disk_name = factory.make_name("disk").encode("ascii") disk_info = { b"supported": True, b"enabled": False, b"locked": False, b"frozen": False, } exception = factory.make_exception() self.patch(maas_wipe, "secure_erase").side_effect = exception self.assertFalse(try_secure_erase(disk_name, disk_info)) self.assertThat( self.print_flush, MockCalledOnceWith("%s: failed to be securely erased: %s" % (disk_name.decode("ascii"), exception)), )
def test_try_secure_erase_not_supported_nvme(self): disk_name = factory.make_name("nvme").encode("ascii") sec_info = { "format_supported": False, "writez_supported": True, "crypto_format": True, "nsze": 0, "lbaf": 0, "ms": 0, } self.assertFalse(try_secure_erase(disk_name, sec_info)) self.assertThat( self.print_flush, MockCalledOnceWith("Device %s does not support formatting" % disk_name.decode("ascii")), )
def test_try_secure_erase_failed_nvme(self): disk_name = factory.make_name("nvme").encode("ascii") sec_info = { "format_supported": True, "writez_supported": True, "crypto_format": True, "nsze": 0, "lbaf": 0, "ms": 0, } mock_check_output = self.patch(subprocess, "check_output") mock_check_output.side_effect = subprocess.CalledProcessError( 1, "nvme format") self.assertFalse(try_secure_erase(disk_name, sec_info)) self.assertThat( self.print_flush, MockCalledOnceWith("Error with format command (%s)" % "1"), )