예제 #1
0
 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),
     )
예제 #2
0
 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))
예제 #3
0
 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())
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
 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),
     )
예제 #7
0
 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),
     )
예제 #8
0
 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),
         ),
     )