def test_record_with_exporter(self): exporter = mock.Mock() measure_name = "test_measure" measure_description = "test_description" measure = BaseMeasure(name=measure_name, description=measure_description) view_name = "test_view" view_description = "test_description" view_columns = ["testTag1", "testColumn2"] view_measure = measure view_aggregation = mock.Mock() View(name=view_name, description=view_description, columns=view_columns, measure=view_measure, aggregation=view_aggregation) measure_value = 5 tags = {"testTag1": "testTag1Value"} measurement_map = {measure: measure_value} timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map.exporters.append(exporter) measure_to_view_map._registered_measures = {} record = measure_to_view_map.record(tags=tags, measurement_map=measurement_map, timestamp=timestamp) self.assertNotEqual( measure, measure_to_view_map._registered_measures.get(measure.name)) self.assertIsNone(record)
def test_filter_exported_views(self): test_view_1_name = "testView1" description = "testDescription" columns = mock.Mock() measure = mock.Mock() aggregation = mock.Mock() test_view_1 = View(name=test_view_1_name, description=description, columns=columns, measure=measure, aggregation=aggregation) print("test view 1", test_view_1) test_view_2_name = "testView2" test_view_2 = View(name=test_view_2_name, description=description, columns=columns, measure=measure, aggregation=aggregation) print("test view 2", test_view_2) all_the_views = {test_view_1, test_view_2} print("all the views", all_the_views) measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() views = measure_to_view_map.filter_exported_views( all_views=all_the_views) print("filtered views", views) self.assertEqual(views, all_the_views)
def test_constructor(self): measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() self.assertEqual({}, measure_to_view_map._map) self.assertEqual({}, measure_to_view_map._registered_views) self.assertEqual({}, measure_to_view_map._registered_measures) self.assertEqual(set(), measure_to_view_map.exported_views)
def test_register_view_with_exporter(self): exporter = mock.Mock() name = "testView" description = "testDescription" columns = mock.Mock() measure = MeasureInt("measure", "description", "1") aggregation = mock.Mock() view = View(name=name, description=description, columns=columns, measure=measure, aggregation=aggregation) timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map.exporters.append(exporter) measure_to_view_map._registered_views = {} measure_to_view_map._registered_measures = {} measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertIsNone(measure_to_view_map.exported_views) self.assertEqual(measure_to_view_map._registered_views[view.name], view) self.assertEqual( measure_to_view_map._registered_measures[measure.name], measure) self.assertIsNotNone( measure_to_view_map._measure_to_view_data_list_map[ view.measure.name])
def test_export(self): exporter = mock.Mock() view_data = [] measure_name = "test_measure" measure_description = "test_description" measure = BaseMeasure( name=measure_name, description=measure_description) view_name = "test_view" view_description = "test_description" view_columns = ["testTag1", "testColumn2"] view_measure = measure view_aggregation = mock.Mock() view = View( name=view_name, description=view_description, columns=view_columns, measure=view_measure, aggregation=view_aggregation) measure_value = 5 tags = {"testTag1": "testTag1Value"} measurement_map = {measure: measure_value} timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map.exporters.append(exporter) measure_to_view_map._registered_measures = {} measure_to_view_map.export(view_data) self.assertTrue(True)
def test_record_negative_value(self): """Check that we warn and drop negative measures at record time.""" measure = mock.Mock() view_data = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map._registered_measures = {measure.name: measure} measure_to_view_map._measure_to_view_data_list_map = { measure.name: [view_data] } with self.assertRaises(AssertionError): measure_to_view_map.record(tags=mock.Mock(), measurement_map={measure: -1}, timestamp=mock.Mock()) view_data.record.assert_not_called()
def test_get_view(self): name = "testView" description = "testDescription" columns = mock.Mock() measure = mock.Mock() aggregation = mock.Mock() view = View(name=name, description=description, columns=columns, measure=measure, aggregation=aggregation) timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map._registered_views = {} no_registered_views = measure_to_view_map.get_view(view_name=name, timestamp=timestamp) self.assertEqual(None, no_registered_views) measure_to_view_map._registered_views = {name: view} measure_to_view_map._map = { view.measure.name: [ViewData(view=view, start_time=timestamp, end_time=timestamp)] } print(measure_to_view_map._map) view_data = measure_to_view_map.get_view(view_name=name, timestamp=timestamp) self.assertIsNotNone(view_data) measure_to_view_map._map = {} view_data = measure_to_view_map.get_view(view_name=name, timestamp=timestamp) self.assertIsNone(view_data) measure_to_view_map._map = { view.measure.name: [ ViewData(view=mock.Mock(), start_time=timestamp, end_time=timestamp) ] } view_data = measure_to_view_map.get_view(view_name=name, timestamp=timestamp) self.assertIsNone(view_data)
def test_register_view(self): name = "testView" description = "testDescription" columns = mock.Mock() measure = mock.Mock() aggregation = mock.Mock() view = View(name=name, description=description, columns=columns, measure=measure, aggregation=aggregation) timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map._registered_views = {} measure_to_view_map._registered_measures = {} measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertIsNone(measure_to_view_map.exported_views) self.assertEqual(measure_to_view_map._registered_views[measure.name], view) self.assertEqual( measure_to_view_map._registered_measures[measure.name], measure) self.assertIsNotNone(measure_to_view_map._map[view.measure.name]) test_measure = mock.Mock() measure_to_view_map._registered_measures = {measure.name: test_measure} test_with_registered_measures = measure_to_view_map.register_view( view=view, timestamp=timestamp) self.assertIsNone(test_with_registered_measures) self.assertIsNotNone(measure_to_view_map._map[view.measure.name]) measure_to_view_map._registered_measures = {measure.name: None} self.assertIsNone( measure_to_view_map._registered_measures.get(measure.name)) measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertEqual( measure, measure_to_view_map._registered_measures[measure.name]) self.assertIsNotNone(measure_to_view_map._map[view.measure.name]) measure_to_view_map._registered_views = {name: view} test_result_1 = measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertIsNone(test_result_1) self.assertIsNotNone(measure_to_view_map._map[view.measure.name])
def test_export_duplicates_viewdata(self): """Check that we copy view data on export.""" mtvm = measure_to_view_map_module.MeasureToViewMap() exporter = mock.Mock() mtvm.exporters.append(exporter) timestamp1 = mock.Mock() timestamp2 = mock.Mock() view_data = ViewData(REQUEST_COUNT_VIEW, timestamp1, timestamp2) mtvm.export([view_data]) mtvm.export([view_data]) self.assertEqual(exporter.export.call_count, 2) exported_call1, exported_call2 = exporter.export.call_args_list exported_vd1 = exported_call1[0][0][0] exported_vd2 = exported_call2[0][0][0] self.assertIsNot(exported_vd1, exported_vd2) self.assertIsNot(exported_vd1.end_time, view_data.end_time) self.assertIsNot(exported_vd2.end_time, view_data.end_time)
def test_record(self): measure_name = "test_measure" measure_description = "test_description" measure = BaseMeasure(name=measure_name, description=measure_description) view_name = "test_view" view_description = "test_description" view_columns = ["testTag1", "testColumn2"] view_measure = measure view_aggregation = mock.Mock() view = View(name=view_name, description=view_description, columns=view_columns, measure=view_measure, aggregation=view_aggregation) measure_value = 5 value = "testValue" tags = {"testTag1": "testTag1Value"} stats = {Measurement(measure=measure, value=measure_value): value} timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map._registered_measures = {} record = measure_to_view_map.record(tags=tags, stats=stats, timestamp=timestamp) self.assertNotEqual( measure, measure_to_view_map._registered_measures.get(measure.name)) self.assertIsNone(record) measure_to_view_map._registered_measures = {measure.name: measure} measure_to_view_map._map = {} record = measure_to_view_map.record(tags=tags, stats=stats, timestamp=timestamp) self.assertEqual( measure, measure_to_view_map._registered_measures.get(measure.name)) self.assertIsNone(record) measure_to_view_map._map = {measure.name: mock.Mock()} measure_to_view_map.record(tags=tags, stats=stats, timestamp=timestamp) self.assertEqual( measure, measure_to_view_map._registered_measures.get(measure.name)) self.assertTrue(measure.name in measure_to_view_map._map) measure_to_view_map._map = {"testing": mock.Mock()} measure_to_view_map.record(tags=tags, stats=stats, timestamp=timestamp) self.assertTrue(measure.name not in measure_to_view_map._map) measure_to_view_map_mock = mock.Mock() measure_to_view_map = measure_to_view_map_mock measure_to_view_map._registered_measures = {measure.name: measure} measure_to_view_map._map = mock.Mock() measure_to_view_map.record(tags=mock.Mock(), stats=mock.Mock(), timestamp=mock.Mock()) self.assertEqual( measure, measure_to_view_map._registered_measures.get(measure.name)) self.assertIsNotNone(measure_to_view_map.view_datas) self.assertTrue(measure_to_view_map_mock.record.called) tags = {"testTag1": "testTag1Value"} stats = {} measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() record = measure_to_view_map.record(tags=tags, stats=stats, timestamp=timestamp) self.assertIsNone(record)
def test_register_view(self): name = "testView" description = "testDescription" columns = mock.Mock() measure = MeasureInt("measure", "description", "1") aggregation = mock.Mock() view = View(name=name, description=description, columns=columns, measure=measure, aggregation=aggregation) timestamp = mock.Mock() measure_to_view_map = measure_to_view_map_module.MeasureToViewMap() measure_to_view_map._registered_views = {} measure_to_view_map._registered_measures = {} measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertIsNone(measure_to_view_map.exported_views) self.assertEqual(measure_to_view_map._registered_views[view.name], view) self.assertEqual( measure_to_view_map._registered_measures[measure.name], measure) self.assertIsNotNone( measure_to_view_map._measure_to_view_data_list_map[ view.measure.name]) # Registers a view with an existing measure. view2 = View(name="testView2", description=description, columns=columns, measure=measure, aggregation=aggregation) test_with_registered_measures = measure_to_view_map.register_view( view=view2, timestamp=timestamp) self.assertIsNone(test_with_registered_measures) self.assertEqual( measure_to_view_map._registered_measures[measure.name], measure) # Registers a view with a measure that has the same name as an existing # measure, but with different schema. measure2 and view3 should be # ignored. measure2 = MeasureInt("measure", "another measure", "ms") view3 = View(name="testView3", description=description, columns=columns, measure=measure2, aggregation=aggregation) test_with_registered_measures = measure_to_view_map.register_view( view=view3, timestamp=timestamp) self.assertIsNone(test_with_registered_measures) self.assertEqual( measure_to_view_map._registered_measures[measure2.name], measure) measure_to_view_map._registered_measures = {measure.name: None} self.assertIsNone( measure_to_view_map._registered_measures.get(measure.name)) measure_to_view_map.register_view(view=view, timestamp=timestamp) # view is already registered, measure will not be registered again. self.assertIsNone( measure_to_view_map._registered_measures.get(measure.name)) self.assertIsNotNone( measure_to_view_map._measure_to_view_data_list_map[ view.measure.name]) measure_to_view_map._registered_views = {name: view} test_result_1 = measure_to_view_map.register_view(view=view, timestamp=timestamp) self.assertIsNone(test_result_1) self.assertIsNotNone( measure_to_view_map._measure_to_view_data_list_map[ view.measure.name])