def testUsesUnionOfMetaKeys(self): instance = publisher.CSVPublisher(self.tf.name) samples = [{ 'test': 'testb', 'metric': '1', 'value': 1.0, 'unit': 'MB', 'metadata': { 'key1': 'value1' } }, { 'test': 'testb', 'metric': '2', 'value': 14.0, 'unit': 'MB', 'metadata': { 'key1': 'value2' } }, { 'test': 'testa', 'metric': '3', 'value': 47.0, 'unit': 'us', 'metadata': { 'key3': 'value3' } }] instance.PublishSamples(samples) self.tf.seek(0) reader = csv.DictReader(self.tf) rows = list(reader) self.assertEqual(['key1', 'key3'], reader.fieldnames[-2:]) self.assertEqual(3, len(rows))
def testWritesToStream(self): instance = publisher.CSVPublisher(self.tf.name) samples = [{ 'test': 'testb', 'metric': '1', 'value': 1.0, 'unit': 'MB', 'metadata': {} }, { 'test': 'testb', 'metric': '2', 'value': 14.0, 'unit': 'MB', 'metadata': {} }, { 'test': 'testa', 'metric': '3', 'value': 47.0, 'unit': 'us', 'metadata': {} }] instance.PublishSamples(samples) self.tf.seek(0) rows = list(csv.DictReader(self.tf)) six.assertCountEqual(self, ['1', '2', '3'], [i['metric'] for i in rows])