|
4 | 4 |
|
5 | 5 | from ddtrace import config |
6 | 6 | from ddtrace.pin import Pin |
| 7 | +from ddtrace.settings import IntegrationConfig |
7 | 8 |
|
8 | 9 |
|
9 | 10 | class InstanceConfigTestCase(TestCase): |
@@ -100,3 +101,32 @@ def test_configuration_copy_upside_down(self): |
100 | 101 | cfg = config.get_from(instance) |
101 | 102 | # it should have users updated value |
102 | 103 | eq_(cfg['service_name'], 'metrics') |
| 104 | + |
| 105 | + def test_config_attr_and_key(self): |
| 106 | + """ |
| 107 | + This is a regression test for when mixing attr attribute and key |
| 108 | + access we would set the value of the attribute but not the key |
| 109 | + """ |
| 110 | + integration_config = IntegrationConfig(config) |
| 111 | + |
| 112 | + # Our key and attribute do not exist |
| 113 | + self.assertFalse(hasattr(integration_config, 'distributed_tracing')) |
| 114 | + self.assertNotIn('distributed_tracing', integration_config) |
| 115 | + |
| 116 | + # Initially set and access |
| 117 | + integration_config['distributed_tracing'] = True |
| 118 | + self.assertTrue(integration_config['distributed_tracing']) |
| 119 | + self.assertTrue(integration_config.get('distributed_tracing')) |
| 120 | + self.assertTrue(integration_config.distributed_tracing) |
| 121 | + |
| 122 | + # Override by key and access |
| 123 | + integration_config['distributed_tracing'] = False |
| 124 | + self.assertFalse(integration_config['distributed_tracing']) |
| 125 | + self.assertFalse(integration_config.get('distributed_tracing')) |
| 126 | + self.assertFalse(integration_config.distributed_tracing) |
| 127 | + |
| 128 | + # Override by attr and access |
| 129 | + integration_config.distributed_tracing = None |
| 130 | + self.assertIsNone(integration_config['distributed_tracing']) |
| 131 | + self.assertIsNone(integration_config.get('distributed_tracing')) |
| 132 | + self.assertIsNone(integration_config.distributed_tracing) |
0 commit comments