def test_allow_attr_access(self): config = IntegrationConfig(Config()) config.setting = 'value' # Can be accessed both as item and attr accessor assert config.setting == 'value' assert config['setting'] == 'value'
def test_allow_both_access(self): config = IntegrationConfig(Config()) config.setting = 'value' assert config['setting'] == 'value' assert config.setting == 'value' config['setting'] = 'new-value' assert config.setting == 'new-value' assert config['setting'] == 'new-value'
def test_deepcopy(self): ic = IntegrationConfig( self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5, deep={"field": "sodeep"} ) cpy = deepcopy(ic) assert isinstance(cpy, IntegrationConfig) assert cpy == ic assert cpy.deep["field"] == ic.deep["field"] ic.deep["field"] = "" assert cpy.deep["field"] != ic.deep["field"]
def test_allow_exist_both_global_and_integration_config(self): global_config = Config() integration_config = IntegrationConfig(global_config) global_config.trace_headers('global_header') assert integration_config.header_is_traced('global_header') integration_config.http.trace_headers('integration_header') assert integration_config.header_is_traced('integration_header') assert not integration_config.header_is_traced('global_header') assert not global_config.header_is_traced('integration_header')
def test_analytics_enabled_attribute(self): """" Confirm environment variable and kwargs are handled properly """ ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True) self.assertTrue(ic.analytics_enabled) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='True')): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled)
def test_copy(self): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5) copy = ic.copy() assert isinstance(copy, IntegrationConfig) for key in ic: assert key in copy for key in copy: assert key in ic assert ic == copy
def test_config_attr_and_key(self): """ This is a regression test for when mixing attr attribute and key access we would set the value of the attribute but not the key """ integration_config = IntegrationConfig(config) # Our key and attribute do not exist self.assertFalse(hasattr(integration_config, 'distributed_tracing')) self.assertNotIn('distributed_tracing', integration_config) # Initially set and access integration_config['distributed_tracing'] = True self.assertTrue(integration_config['distributed_tracing']) self.assertTrue(integration_config.get('distributed_tracing')) self.assertTrue(integration_config.distributed_tracing) # Override by key and access integration_config['distributed_tracing'] = False self.assertFalse(integration_config['distributed_tracing']) self.assertFalse(integration_config.get('distributed_tracing')) self.assertFalse(integration_config.distributed_tracing) # Override by attr and access integration_config.distributed_tracing = None self.assertIsNone(integration_config['distributed_tracing']) self.assertIsNone(integration_config.get('distributed_tracing')) self.assertIsNone(integration_config.distributed_tracing)
def test_get_analytics_sample_rate(self): """" Check method for accessing sample rate based on configuration """ ic = IntegrationConfig(self.config, "foo", analytics_enabled=True, analytics_sample_rate=0.5) self.assertEqual(ic.get_analytics_sample_rate(), 0.5) ic = IntegrationConfig(self.config, "foo", analytics_enabled=True) self.assertEqual(ic.get_analytics_sample_rate(), 1.0) ic = IntegrationConfig(self.config, "foo", analytics_enabled=False) self.assertIsNone(ic.get_analytics_sample_rate()) with self.override_env(dict(DD_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "foo") self.assertEqual(ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "foo") self.assertEqual(ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "foo") self.assertIsNone(ic.get_analytics_sample_rate(use_global_config=True)) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "foo") self.assertIsNone(ic.get_analytics_sample_rate(use_global_config=True))
def test_allow_configuring_http(self): global_config = Config() integration_config = IntegrationConfig(global_config) integration_config.http.trace_headers('integration_header') assert integration_config.http.header_is_traced('integration_header') assert not integration_config.http.header_is_traced('other_header')
def test_get_analytics_sample_rate_deprecated_name(self): """Check method for accessing sample rate based on configuration""" with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertEqual(ic.get_analytics_sample_rate(), 1.0) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertEqual(ic.get_analytics_sample_rate(), 1.0) with self.override_env( dict(DD_FOO_ANALYTICS_ENABLED="True", DD_FOO_ANALYTICS_SAMPLE_RATE="0.5")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertEqual(ic.get_analytics_sample_rate(), 0.5) with self.override_env( dict(DD_FOO_ANALYTICS_ENABLED="True", DD_TRACE_FOO_ANALYTICS_SAMPLE_RATE="0.5")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertEqual(ic.get_analytics_sample_rate(), 0.5) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertIsNone(ic.get_analytics_sample_rate()) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "bar", _deprecated_name="foo") self.assertIsNone(ic.get_analytics_sample_rate())
class TestIntegrationConfig(BaseTestCase): def setUp(self): self.config = Config() self.integration_config = IntegrationConfig(self.config, 'test') def test_is_a_dict(self): assert isinstance(self.integration_config, dict) def test_allow_item_access(self): self.integration_config['setting'] = 'value' # Can be accessed both as item and attr accessor assert self.integration_config.setting == 'value' assert self.integration_config['setting'] == 'value' def test_allow_attr_access(self): self.integration_config.setting = 'value' # Can be accessed both as item and attr accessor assert self.integration_config.setting == 'value' assert self.integration_config['setting'] == 'value' def test_allow_both_access(self): self.integration_config.setting = 'value' assert self.integration_config['setting'] == 'value' assert self.integration_config.setting == 'value' self.integration_config['setting'] = 'new-value' assert self.integration_config.setting == 'new-value' assert self.integration_config['setting'] == 'new-value' def test_allow_configuring_http(self): self.integration_config.http.trace_headers('integration_header') assert self.integration_config.http.header_is_traced( 'integration_header') assert not self.integration_config.http.header_is_traced( 'other_header') def test_allow_exist_both_global_and_integration_config(self): self.config.trace_headers('global_header') assert self.integration_config.header_is_traced('global_header') self.integration_config.http.trace_headers('integration_header') assert self.integration_config.header_is_traced('integration_header') assert not self.integration_config.header_is_traced('global_header') assert not self.config.header_is_traced('integration_header') def test_environment_analytics_enabled(self): # default self.assertFalse(self.config.analytics_enabled) self.assertIsNone(self.config.foo.analytics_enabled) with self.override_env(dict(DD_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.analytics_enabled) self.assertIsNone(config.foo.analytics_enabled) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.analytics_enabled) self.assertIsNone(config.foo.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 1.0) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 1.0) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='False')): config = Config() self.assertFalse(config.foo.analytics_enabled) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED='False')): config = Config() self.assertFalse(config.foo.analytics_enabled) with self.override_env( dict(DD_FOO_ANALYTICS_ENABLED='True', DD_FOO_ANALYTICS_SAMPLE_RATE='0.5')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 0.5) with self.override_env( dict(DD_TRACE_FOO_ANALYTICS_ENABLED='True', DD_TRACE_FOO_ANALYTICS_SAMPLE_RATE='0.5')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 0.5) def test_analytics_enabled_attribute(self): """" Confirm environment variable and kwargs are handled properly """ ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True) self.assertTrue(ic.analytics_enabled) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='True')): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED='True')): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) def test_get_analytics_sample_rate(self): """" Check method for accessing sample rate based on configuration """ ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5) self.assertEqual(ic.get_analytics_sample_rate(), 0.5) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True) self.assertEqual(ic.get_analytics_sample_rate(), 1.0) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertIsNone(ic.get_analytics_sample_rate()) with self.override_env(dict(DD_ANALYTICS_ENABLED='True')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertEqual( ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED='True')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertEqual( ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_ANALYTICS_ENABLED='False')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertIsNone( ic.get_analytics_sample_rate(use_global_config=True)) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED='False')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertIsNone( ic.get_analytics_sample_rate(use_global_config=True)) def test_deepcopy(self): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5, deep={"field": "sodeep"}) cpy = deepcopy(ic) assert isinstance(cpy, IntegrationConfig) assert cpy == ic assert cpy.deep["field"] == ic.deep["field"] ic.deep["field"] = "" assert cpy.deep["field"] != ic.deep["field"] def test_copy(self): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5) copy = ic.copy() assert isinstance(copy, IntegrationConfig) for key in ic: assert key in copy for key in copy: assert key in ic assert ic == copy def test_service(self): ic = IntegrationConfig(self.config, "foo") assert ic.service is None @BaseTestCase.run_in_subprocess( env_overrides=dict(DD_FOO_SERVICE="foo-svc")) def test_service_env_var(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess( env_overrides=dict(DATADOG_FOO_SERVICE="foo-svc")) def test_service_env_var_legacy(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess( env_overrides=dict(DD_FOO_SERVICE_NAME="foo-svc")) def test_service_name_env_var(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess( env_overrides=dict(DATADOG_FOO_SERVICE_NAME="foo-svc")) def test_service_name_env_var_legacy(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc"
def test_is_a_dict(self): integration_config = IntegrationConfig(Config()) assert isinstance(integration_config, dict)
def integration_config(self, config): yield IntegrationConfig(config, "test")
def test_service_name_env_var_legacy(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc"
def test_service(self): ic = IntegrationConfig(self.config, "foo") assert ic.service is None
def setUp(self): self.config = Config() self.integration_config = IntegrationConfig(self.config, "test")
class TestIntegrationConfig(BaseTestCase): def setUp(self): self.config = Config() self.integration_config = IntegrationConfig(self.config, "test") def test_is_a_dict(self): assert isinstance(self.integration_config, dict) def test_allow_item_access(self): self.integration_config["setting"] = "value" # Can be accessed both as item and attr accessor assert self.integration_config.setting == "value" assert self.integration_config["setting"] == "value" def test_allow_attr_access(self): self.integration_config.setting = "value" # Can be accessed both as item and attr accessor assert self.integration_config.setting == "value" assert self.integration_config["setting"] == "value" def test_allow_both_access(self): self.integration_config.setting = "value" assert self.integration_config["setting"] == "value" assert self.integration_config.setting == "value" self.integration_config["setting"] = "new-value" assert self.integration_config.setting == "new-value" assert self.integration_config["setting"] == "new-value" def test_allow_configuring_http(self): self.integration_config.http.trace_headers("integration_header") assert self.integration_config.http.header_is_traced("integration_header") assert not self.integration_config.http.header_is_traced("other_header") def test_allow_exist_both_global_and_integration_config(self): self.config.trace_headers("global_header") assert self.integration_config.header_is_traced("global_header") self.integration_config.http.trace_headers("integration_header") assert self.integration_config.header_is_traced("integration_header") assert not self.integration_config.header_is_traced("global_header") assert not self.config.header_is_traced("integration_header") def test_environment_analytics_enabled(self): # default self.assertFalse(self.config.analytics_enabled) self.assertIsNone(self.config.foo.analytics_enabled) with self.override_env(dict(DD_ANALYTICS_ENABLED="True")): config = Config() self.assertTrue(config.analytics_enabled) self.assertIsNone(config.foo.analytics_enabled) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED="True")): config = Config() self.assertTrue(config.analytics_enabled) self.assertIsNone(config.foo.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="True")): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 1.0) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="True")): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 1.0) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="False")): config = Config() self.assertFalse(config.foo.analytics_enabled) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="False")): config = Config() self.assertFalse(config.foo.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="True", DD_FOO_ANALYTICS_SAMPLE_RATE="0.5")): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 0.5) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="True", DD_TRACE_FOO_ANALYTICS_SAMPLE_RATE="0.5")): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 0.5) def test_analytics_enabled_attribute(self): """" Confirm environment variable and kwargs are handled properly """ ic = IntegrationConfig(self.config, "foo", analytics_enabled=True) self.assertTrue(ic.analytics_enabled) ic = IntegrationConfig(self.config, "foo", analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED="True")): ic = IntegrationConfig(self.config, "foo", analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_TRACE_FOO_ANALYTICS_ENABLED="True")): ic = IntegrationConfig(self.config, "foo", analytics_enabled=False) self.assertFalse(ic.analytics_enabled) def test_get_analytics_sample_rate(self): """" Check method for accessing sample rate based on configuration """ ic = IntegrationConfig(self.config, "foo", analytics_enabled=True, analytics_sample_rate=0.5) self.assertEqual(ic.get_analytics_sample_rate(), 0.5) ic = IntegrationConfig(self.config, "foo", analytics_enabled=True) self.assertEqual(ic.get_analytics_sample_rate(), 1.0) ic = IntegrationConfig(self.config, "foo", analytics_enabled=False) self.assertIsNone(ic.get_analytics_sample_rate()) with self.override_env(dict(DD_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "foo") self.assertEqual(ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED="True")): config = Config() ic = IntegrationConfig(config, "foo") self.assertEqual(ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "foo") self.assertIsNone(ic.get_analytics_sample_rate(use_global_config=True)) with self.override_env(dict(DD_TRACE_ANALYTICS_ENABLED="False")): config = Config() ic = IntegrationConfig(config, "foo") self.assertIsNone(ic.get_analytics_sample_rate(use_global_config=True)) def test_service(self): ic = IntegrationConfig(self.config, "foo") assert ic.service is None @BaseTestCase.run_in_subprocess(env_overrides=dict(DD_FOO_SERVICE="foo-svc")) def test_service_env_var(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess(env_overrides=dict(DATADOG_FOO_SERVICE="foo-svc")) def test_service_env_var_legacy(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess(env_overrides=dict(DD_FOO_SERVICE_NAME="foo-svc")) def test_service_name_env_var(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc" @BaseTestCase.run_in_subprocess(env_overrides=dict(DATADOG_FOO_SERVICE_NAME="foo-svc")) def test_service_name_env_var_legacy(self): ic = IntegrationConfig(self.config, "foo") assert ic.service == "foo-svc"
class TestIntegrationConfig(BaseTestCase): def setUp(self): self.config = Config() self.integration_config = IntegrationConfig(self.config, 'test') def test_is_a_dict(self): assert isinstance(self.integration_config, dict) def test_allow_item_access(self): self.integration_config['setting'] = 'value' # Can be accessed both as item and attr accessor assert self.integration_config.setting == 'value' assert self.integration_config['setting'] == 'value' def test_allow_attr_access(self): self.integration_config.setting = 'value' # Can be accessed both as item and attr accessor assert self.integration_config.setting == 'value' assert self.integration_config['setting'] == 'value' def test_allow_both_access(self): self.integration_config.setting = 'value' assert self.integration_config['setting'] == 'value' assert self.integration_config.setting == 'value' self.integration_config['setting'] = 'new-value' assert self.integration_config.setting == 'new-value' assert self.integration_config['setting'] == 'new-value' def test_allow_configuring_http(self): self.integration_config.http.trace_headers('integration_header') assert self.integration_config.http.header_is_traced( 'integration_header') assert not self.integration_config.http.header_is_traced( 'other_header') def test_allow_exist_both_global_and_integration_config(self): self.config.trace_headers('global_header') assert self.integration_config.header_is_traced('global_header') self.integration_config.http.trace_headers('integration_header') assert self.integration_config.header_is_traced('integration_header') assert not self.integration_config.header_is_traced('global_header') assert not self.config.header_is_traced('integration_header') def test_environment_analytics_enabled(self): # default self.assertFalse(self.config.analytics_enabled) self.assertIsNone(self.config.foo.analytics_enabled) with self.override_env(dict(DD_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.analytics_enabled) self.assertIsNone(config.foo.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='True')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 1.0) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='False')): config = Config() self.assertFalse(config.foo.analytics_enabled) with self.override_env( dict(DD_FOO_ANALYTICS_ENABLED='True', DD_FOO_ANALYTICS_SAMPLE_RATE='0.5')): config = Config() self.assertTrue(config.foo.analytics_enabled) self.assertEqual(config.foo.analytics_sample_rate, 0.5) def test_analytics_enabled_attribute(self): """" Confirm environment variable and kwargs are handled properly """ ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True) self.assertTrue(ic.analytics_enabled) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) with self.override_env(dict(DD_FOO_ANALYTICS_ENABLED='True')): ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertFalse(ic.analytics_enabled) def test_get_analytics_sample_rate(self): """" Check method for accessing sample rate based on configuration """ ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True, analytics_sample_rate=0.5) self.assertEqual(ic.get_analytics_sample_rate(), 0.5) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=True) self.assertEqual(ic.get_analytics_sample_rate(), 1.0) ic = IntegrationConfig(self.config, 'foo', analytics_enabled=False) self.assertIsNone(ic.get_analytics_sample_rate()) with self.override_env(dict(DD_ANALYTICS_ENABLED='True')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertEqual( ic.get_analytics_sample_rate(use_global_config=True), 1.0) with self.override_env(dict(DD_ANALYTICS_ENABLED='False')): config = Config() ic = IntegrationConfig(config, 'foo') self.assertIsNone( ic.get_analytics_sample_rate(use_global_config=True))