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])