diff --git a/perfkitbenchmarker/sample.py b/perfkitbenchmarker/sample.py index 90f8da5873..dece5c1298 100644 --- a/perfkitbenchmarker/sample.py +++ b/perfkitbenchmarker/sample.py @@ -137,7 +137,7 @@ def __new__( timestamp = time.time() metadata = metadata or {} - metadata = metadata.copy() + metadata = dict(metadata) return super().__new__( cls, metric, diff --git a/tests/sample_test.py b/tests/sample_test.py index e983eeb3d3..f60f0332bf 100644 --- a/tests/sample_test.py +++ b/tests/sample_test.py @@ -15,6 +15,7 @@ import unittest +import immutabledict from perfkitbenchmarker import sample @@ -61,6 +62,16 @@ def testValuesShouldBeFloats(self): self.assertIsInstance(instance.value, float) self.assertEqual(1.0, instance.value) + def testImmutableMetadataConvertedToDict(self): + metadata = immutabledict.immutabledict({'origin': 'unit test'}) + instance = sample.Sample( + metric='Test', value=1.0, unit='Mbps', metadata=metadata + ) + self.assertIsInstance(instance.metadata, dict) + self.assertNotIsInstance(instance.metadata, immutabledict.immutabledict) + instance.metadata['new_key'] = 'new_value' + self.assertEqual(instance.metadata['new_key'], 'new_value') + class TestPercentileCalculator(unittest.TestCase):