def test_publish_multiple_binaries(self, dump_string_to_file, makedirs): del makedirs context = Mock() context.get_full_output_path.return_value = 'output/path' metric_1 = Mock() metric_2 = Mock() binary_1 = Mock() binary_2 = Mock() metric_1.get_binary = Mock(return_value=binary_1) metric_2.get_binary = Mock(return_value=binary_2) metric_1.name = 'metric_1' metric_2.name = 'metric_2' publisher = ProtoMetricPublisher( context, publishes_binary=True, publishes_ascii=False, publishes_descriptor_binary=False, publishes_descriptor_ascii=False) publisher.publish([metric_1, metric_2]) file_path_1 = ('output/path/metrics/metric_1.' + ProtoMetricPublisher.BINARY_EXTENSION) file_path_2 = ('output/path/metrics/metric_2.' + ProtoMetricPublisher.BINARY_EXTENSION) call_1 = call(binary_1, file_path_1, mode='wb') call_2 = call(binary_2, file_path_2, mode='wb') dump_string_to_file.assert_has_calls([call_1, call_2])
def test_get_output_path(self): context = Mock() context.get_full_output_path.return_value = 'output/path' publisher = ProtoMetricPublisher(context) output_path = publisher.get_output_path() metrics_output_path = 'output/path/metrics' self.assertEqual(output_path, metrics_output_path) context.get_full_output_path.assert_called_once_with()
def test_publish_all_disabled(self, dump_string_to_file, makedirs): del makedirs context = Mock() context.get_full_output_path.return_value = 'output/path' metrics = [Mock()] publisher = ProtoMetricPublisher( context, publishes_binary=False, publishes_ascii=False, publishes_descriptor_binary=False, publishes_descriptor_ascii=False) publisher.publish(metrics) assert not dump_string_to_file.called
def test_publish_makes_dirs(self, dump_string_to_file, makedirs): del dump_string_to_file context = Mock() context.get_full_output_path.return_value = 'output/path' metrics = [Mock()] publisher = ProtoMetricPublisher( context, publishes_binary=False, publishes_ascii=False, publishes_descriptor_binary=False, publishes_descriptor_ascii=False) publisher.publish(metrics) metrics_output_path= 'output/path/metrics' makedirs.assert_called_once_with(metrics_output_path, exist_ok=True)
def test_default_init_publishes_everything(self): context = Mock() context.get_full_output_path.return_value = 'output/path' publisher = ProtoMetricPublisher(context) self.assertEqual(publisher.publishes_binary, True) self.assertEqual(publisher.publishes_ascii, True) self.assertEqual(publisher.publishes_descriptor_binary, True) self.assertEqual(publisher.publishes_descriptor_ascii, True)
def test_publish_ascii_descriptor(self, dump_string_to_file, makedirs): del makedirs context = Mock() context.get_full_output_path.return_value = 'output/path' metric = Mock() descriptor_ascii = Mock() metric.get_ascii = Mock(return_value=descriptor_ascii) metric.name = 'metric' publisher = ProtoMetricPublisher( context, publishes_binary=False, publishes_ascii=True, publishes_descriptor_binary=False, publishes_descriptor_ascii=False) publisher.publish([metric]) file_path = ('output/path/metrics/metric.' + ProtoMetricPublisher.ASCII_EXTENSION) dump_string_to_file.assert_called_once_with( descriptor_ascii, file_path)
def test_init_attributes(self): context = Mock() context.get_full_output_path.return_value = 'output/path' publishes_binary = Mock() publishes_ascii = Mock() publishes_descriptor_binary = Mock() publishes_descriptor_ascii = Mock() publisher = ProtoMetricPublisher( context, publishes_binary=publishes_binary, publishes_ascii=publishes_ascii, publishes_descriptor_binary=publishes_descriptor_binary, publishes_descriptor_ascii=publishes_descriptor_ascii) self.assertEqual(publisher.context, context) self.assertEqual(publisher.publishes_binary, publishes_binary) self.assertEqual(publisher.publishes_ascii, publishes_ascii) self.assertEqual(publisher.publishes_descriptor_binary, publishes_descriptor_binary) self.assertEqual(publisher.publishes_descriptor_ascii, publishes_descriptor_ascii)
def _get_default_publisher(self, _): """Get the default publisher for the given event.""" return ProtoMetricPublisher(self.context)