def test_no_errors_found(self, popen): # Expect no MetricData returned when no errors found popen.return_value = MagicMock(spec=subprocess.Popen, communicate=lambda: (None, output1)) with patch('swiftlm.utils.metricdata.timestamp', lambda *args: self.fake_time): results = drive_audit.main() scenarios = (({'kernel_device': 'sdc', 'mount_point': '/srv/node/sdc1'}, Severity.ok, 'No errors found on device mounted at: /srv/node/sdc1'), ({'kernel_device': 'sdd', 'mount_point': '/srv/node/sdd1'}, Severity.ok, 'No errors found on device mounted at: /srv/node/sdd1')) expected = [] for scenario in scenarios: expected_dimensions = dict(self.expected_dimensions_base) expected_dimensions.update(scenario[0]) expected_value_meta = dict(msg=scenario[2]) expected_metric = dict(self.expected_metric_base) expected_metric.update(dict(dimensions=expected_dimensions, value=scenario[1], value_meta=expected_value_meta)) expected.append(expected_metric) self.assertEqual(len(expected), len(results), results) for result in results: self.assertTrue(result.metric() in expected, result.metric()) # consume expected result once it has been matched expected.remove(result.metric()) self.assertFalse(expected)
def test_errors_found_but_not_devices(self, popen): popen.return_value = MagicMock(spec=subprocess.Popen, communicate=lambda: (None, output2)) with patch('swiftlm.utils.metricdata.timestamp', lambda *args: self.fake_time): result = drive_audit.main() self.assertTrue(isinstance(result, MetricData)) expected_dimensions = dict(self.expected_dimensions_base) expected_value_meta = dict(msg='No devices found') expected_metric = dict(self.expected_metric_base) expected_metric.update(dict(dimensions=expected_dimensions, value=Severity.warn, value_meta=expected_value_meta)) self.assertEquals(expected_metric, result.metric())