def test__tests_all_scsi_bus_nums(self): device = factory.make_name('device') self.mock_check_smart_support.return_value = (device, [1, 2, 3]) self.assertTrue(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat( self.mock_check_smart_support, MockCallsMatch( call(self.blockdevice), call(self.blockdevice, '%s,1' % device), call(self.blockdevice, '%s,2' % device), call(self.blockdevice, '%s,3' % device), )) self.assertThat( self.mock_run_smartctl_selftest, MockCallsMatch( call(self.blockdevice, self.test, '%s,1' % device), call(self.blockdevice, self.test, '%s,2' % device), call(self.blockdevice, self.test, '%s,3' % device), )) self.assertThat( self.mock_wait_smartctl_selftest, MockCallsMatch( call(self.blockdevice, self.test, '%s,1' % device), call(self.blockdevice, self.test, '%s,2' % device), call(self.blockdevice, self.test, '%s,3' % device), )) self.assertThat( self.mock_check_smartctl, MockCallsMatch( call(self.blockdevice, '%s,1' % device), call(self.blockdevice, '%s,2' % device), call(self.blockdevice, '%s,3' % device), ))
def test_returns_false_when_unable_to_check_device(self): device = factory.make_name("device") self.mock_check_smart_support.return_value = (device, [42]) self.mock_check_smartctl.side_effect = (random.choice([ TimeoutExpired("smartctl", 60), CalledProcessError(42, "smartctl"), ]), ) device = "%s,42" % device self.assertFalse(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat( self.mock_check_smart_support, MockCallsMatch(call(self.blockdevice), call(self.blockdevice, device)), ) self.assertThat( self.mock_run_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device), ) self.assertThat( self.mock_wait_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device), ) self.assertThat( self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice, device), )
def test__doesnt_run_testing_when_validating(self): self.mock_check_smart_support.return_value = (None, []) self.assertTrue(smartctl.execute_smartctl(self.blockdevice, 'validate')) self.assertThat(self.mock_run_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_wait_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice))
def test__returns_true(self): self.mock_check_smart_support.return_value = (None, []) self.assertTrue(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat(self.mock_run_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test)) self.assertThat(self.mock_wait_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test)) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice))
def test__returns_false_with_check_smart_support_error(self): self.mock_check_smart_support.side_effect = random.choice([ TimeoutExpired('smartctl', 60), CalledProcessError(42, 'smartctl'), ]) self.assertFalse(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat(self.mock_run_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_wait_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_check_smartctl, MockNotCalled())
def test__returns_false_when_starting_test_fails(self): self.mock_check_smart_support.return_value = (None, []) self.mock_run_smartctl_selftest.side_effect = random.choice([ TimeoutExpired('smartctl', 60), CalledProcessError(42, 'smartctl'), ]) self.assertFalse(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat(self.mock_run_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test)) self.assertThat(self.mock_wait_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice))
def test__doesnt_run_testing_when_validating_device(self): device = factory.make_name('device') self.mock_check_smart_support.return_value = (device, [42]) device = '%s,42' % device self.assertTrue(smartctl.execute_smartctl(self.blockdevice, 'validate')) self.assertThat( self.mock_check_smart_support, MockCallsMatch( call(self.blockdevice), call(self.blockdevice, device), )) self.assertThat(self.mock_run_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_wait_smartctl_selftest, MockNotCalled()) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice, device))
def test__returns_true_with_device(self): device = factory.make_name('device') self.mock_check_smart_support.return_value = (device, [42]) device = '%s,42' % device self.assertTrue(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat( self.mock_check_smart_support, MockCallsMatch( call(self.blockdevice), call(self.blockdevice, device), )) self.assertThat( self.mock_run_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device)) self.assertThat( self.mock_wait_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device)) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice, device))
def test__returns_false_when_unable_to_wait_start_device_test(self): device = factory.make_name('device') self.mock_check_smart_support.return_value = (device, [42]) self.mock_wait_smartctl_selftest.side_effect = random.choice([ TimeoutExpired('smartctl', 60), CalledProcessError(42, 'smartctl'), ]), device = '%s,42' % device self.assertFalse(smartctl.execute_smartctl(self.blockdevice, self.test)) self.assertThat( self.mock_check_smart_support, MockCallsMatch( call(self.blockdevice), call(self.blockdevice, device), )) self.assertThat( self.mock_run_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device)) self.assertThat( self.mock_wait_smartctl_selftest, MockCalledOnceWith(self.blockdevice, self.test, device)) self.assertThat(self.mock_check_smartctl, MockCalledOnceWith(self.blockdevice, device))