def test_get_host_address(self, mock_check_yaml, mock_get, *args): kubernetes_config = {'instances': [{'kubelet_port': 1337}]} pod_list = { 'items': [{ 'status': { 'podIP': '127.0.0.1', 'containerStatuses': [ {'containerID': 'docker://389dc8a4361f3d6c866e9e9a7b6972b26a31c589c4e2f097375d55656a070bc9'} ] } }] } # (inspect, tpl_var, expected_result) ip_address_inspects = [ ({'NetworkSettings': {}}, 'host', None), ({'NetworkSettings': {'IPAddress': ''}}, 'host', None), ({'NetworkSettings': {'IPAddress': '127.0.0.1'}}, 'host', '127.0.0.1'), ({'NetworkSettings': {'IPAddress': '127.0.0.1', 'Networks': {}}}, 'host', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {'bridge': {'IPAddress': '127.0.0.1'}}}}, 'host', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '', 'Networks': {'bridge': {'IPAddress': '127.0.0.1'}}}}, 'host_bridge', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'}}}}, 'host', '172.17.0.2'), ({'NetworkSettings': {'Networks': {}}}, 'host', None), ({'NetworkSettings': {'Networks': {}}}, 'host_bridge', None), ({'NetworkSettings': {'Networks': {'bridge': {}}}}, 'host', None), ({'NetworkSettings': {'Networks': {'bridge': {}}}}, 'host_bridge', None), ({'NetworkSettings': { 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'} }}}, 'host_bridge', '172.17.0.2'), ({'NetworkSettings': { 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'} }}}, 'host_foo', '192.168.0.2') ] mock_check_yaml.return_value = kubernetes_config mock_get.return_value = Response(pod_list) for c_ins, tpl_var, expected_ip in ip_address_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) self.assertEquals(sd_backend._get_host_address(state, 'container id', tpl_var), expected_ip) clear_singletons(self.auto_conf_agentConfig)
def test_get_host_address(self, mock_check_yaml, mock_get, *args): kubernetes_config = {'instances': [{'kubelet_port': 1337}]} pod_list = { 'items': [{ 'status': { 'podIP': '127.0.0.1', 'containerStatuses': [ {'containerID': 'docker://389dc8a4361f3d6c866e9e9a7b6972b26a31c589c4e2f097375d55656a070bc9'} ] } }] } # (inspect, tpl_var, expected_result) ip_address_inspects = [ ({'NetworkSettings': {}}, 'host', None), ({'NetworkSettings': {'IPAddress': ''}}, 'host', None), ({'NetworkSettings': {'IPAddress': '127.0.0.1'}}, 'host', '127.0.0.1'), ({'NetworkSettings': {'IPAddress': '127.0.0.1', 'Networks': {}}}, 'host', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {'bridge': {'IPAddress': '127.0.0.1'}}}}, 'host', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '', 'Networks': {'bridge': {'IPAddress': '127.0.0.1'}}}}, 'host_bridge', '127.0.0.1'), ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'}}}}, 'host', '172.17.0.2'), ({'NetworkSettings': {'Networks': {}}}, 'host', None), ({'NetworkSettings': {'Networks': {}}}, 'host_bridge', None), ({'NetworkSettings': {'Networks': {'bridge': {}}}}, 'host', None), ({'NetworkSettings': {'Networks': {'bridge': {}}}}, 'host_bridge', None), ({'NetworkSettings': { 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'} }}}, 'host_bridge', '172.17.0.2'), ({'NetworkSettings': { 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'} }}}, 'host_foo', '192.168.0.2') ] mock_check_yaml.return_value = kubernetes_config mock_get.return_value = Response(pod_list) for c_ins, tpl_var, expected_ip in ip_address_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) self.assertEquals(sd_backend._get_host_address(state, 'container id', tpl_var), expected_ip) clear_singletons(self.auto_conf_agentConfig)
def test_get_container_pid(self, *args): for c_ins, _, var_tpl, _, _, expected_pid in self.container_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) self.assertEquals( sd_backend._get_container_pid(state, 'container id', var_tpl), expected_pid) clear_singletons(self.auto_conf_agentConfig)
def test_get_port(self, *args): for c_ins, _, var_tpl, expected_ports, _ in self.container_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) if isinstance(expected_ports, str): self.assertEquals(sd_backend._get_port(state, 'container id', var_tpl), expected_ports) else: self.assertRaises(expected_ports, sd_backend._get_port, state, 'c_id', var_tpl) clear_singletons(self.auto_conf_agentConfig)
def test_get_port(self, *args): for c_ins, _, var_tpl, expected_ports, _, _ in self.container_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) if isinstance(expected_ports, str): self.assertEquals(sd_backend._get_port(state, 'container id', var_tpl), expected_ports) else: self.assertRaises(expected_ports, sd_backend._get_port, state, 'c_id', var_tpl) clear_singletons(self.auto_conf_agentConfig)
def test_get_check_configs(self, *args): """Test get_check_config with mocked container inspect and config template""" c_id = self.docker_container_inspect.get('Id') for image in self.mock_templates.keys(): sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) state = _SDDockerBackendConfigFetchState(_get_container_inspect) self.assertEquals( sd_backend._get_check_configs(state, c_id, image)[0], self.mock_templates[image][1]) clear_singletons(self.auto_conf_agentConfig)
def test_get_check_configs(self, *args): """Test get_check_config with mocked container inspect and config template""" c_id = self.docker_container_inspect.get('Id') for image in self.mock_templates.keys(): sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) state = _SDDockerBackendConfigFetchState(_get_container_inspect) self.assertEquals( sd_backend._get_check_configs(state, c_id, image)[0], self.mock_templates[image][1]) clear_singletons(self.auto_conf_agentConfig)
def test_get_kube_tags(self, *args): inspect = { 'Id': 'eae3f1f47eea2527be52b5380f8bfa6db34764bcc05da7506dbcf42f92a40a0e', 'Image': 'sha256:c3eb149853f0ec3390629c547c0ed75c020d91db8511927d7d13deb456de1997', 'Name': '/k8s_redis_redis-3073568142-z7gxl_default_c50800e9-dbf7-11e7-807b-06809d17eee8_0', 'Config': { "Labels": { "io.kubernetes.container.name": "redis", "io.kubernetes.docker.type": "container", "io.kubernetes.pod.name": "redis-3073568142-z7gxl", "io.kubernetes.pod.namespace": "default", "io.kubernetes.sandbox.id": "f8ca7c0144ecab47fd13713b93eb1d2cc1ac143726d66027fd5d83b4e583be29" }, }, 'NetworkSettings': {'IPAddress': '', 'Ports': None} } kube_pods = [{ "metadata": { "name": "redis-3073568142-z7gxl", "generateName": "redis-3073568142-", "namespace": "default", "uid": "c50800e9-dbf7-11e7-807b-06809d17eee8", "labels": { "pod-template-hash": "3073568142", "run": "redis" } }, "status": {"containerStatuses": [ {"name": "redis", "image": "redis:latest", "imageID": "docker-pullable://redis@sha256:de4e675f62e4f3f71f43e98ae46a67dba92459ff950de4428d13289b69328f96", "containerID": "docker://eae3f1f47eea2527be52b5380f8bfa6db34764bcc05da7506dbcf42f92a40a0e"} ]}}] clear_singletons(self.auto_conf_agentConfig) state = _SDDockerBackendConfigFetchState(lambda _: inspect, kube_pods) docker = SDDockerBackend(self.auto_conf_agentConfig) tags = docker.get_tags(state, inspect["Id"]) self.assertIn('kube_container_name:redis', tags) self.assertIn('kube_namespace:default', tags) self.assertIn('run:redis', tags) self.assertIn('pod-template-hash:3073568142', tags)
def test_fill_tpl(self, *args): """Test _fill_tpl with mocked docker client""" valid_configs = [ # ((inspect, instance_tpl, variables, tags), (expected_instance_tpl, expected_var_values)) (({}, { 'host': 'localhost' }, [], None), ({ 'host': 'localhost' }, {})), (({ 'NetworkSettings': { 'IPAddress': '' } }, { 'host': 'localhost' }, [], None), ({ 'host': 'localhost' }, {})), (({ 'NetworkSettings': { 'Networks': {} } }, { 'host': 'localhost' }, [], None), ({ 'host': 'localhost' }, {})), (({ 'NetworkSettings': { 'Networks': { 'bridge': {} } } }, { 'host': 'localhost' }, [], None), ({ 'host': 'localhost' }, {})), ( ({ 'NetworkSettings': { 'IPAddress': '127.0.0.1' } }, { 'host': '%%host%%', 'port': 1337 }, ['host'], ['foo', 'bar:baz']), ({ 'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host': '127.0.0.1' }), ), ( ({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {} } }, { 'host': '%%host%%', 'port': 1337 }, ['host'], ['foo', 'bar:baz']), ({ 'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host': '127.0.0.1' }), ), ( ({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': { 'bridge': { 'IPAddress': '172.17.0.2' } } } }, { 'host': '%%host%%', 'port': 1337 }, ['host'], ['foo', 'bar:baz']), ({ 'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host': '172.17.0.2' }), ), ( ({ 'NetworkSettings': { 'IPAddress': '', 'Networks': { 'bridge': { 'IPAddress': '172.17.0.2' }, 'foo': { 'IPAddress': '192.168.0.2' } } } }, { 'host': '%%host_bridge%%', 'port': 1337 }, ['host_bridge'], ['foo', 'bar:baz']), ({ 'host': '%%host_bridge%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host_bridge': '172.17.0.2' }), ), ( ({ 'NetworkSettings': { 'IPAddress': '', 'Networks': { 'bridge': { 'IPAddress': '172.17.0.2' }, 'foo': { 'IPAddress': '192.168.0.2' } } } }, { 'host': '%%host_foo%%', 'port': 1337 }, ['host_foo'], ['foo', 'bar:baz']), ({ 'host': '%%host_foo%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host_foo': '192.168.0.2' }), ), (({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Ports': { '42/tcp': None, '22/tcp': None } } }, { 'host': '%%host%%', 'port': '%%port_1%%', 'tags': ['env:test'] }, ['host', 'port_1'], ['foo', 'bar:baz']), ({ 'host': '%%host%%', 'port': '%%port_1%%', 'tags': ['env:test', 'foo', 'bar:baz'] }, { 'host': '127.0.0.1', 'port_1': '42' })) ] # should not fail but return something specific edge_cases = [ # ((inspect, instance_tpl, variables, tags), (expected_instance_tpl, expected_var_values)) # specify bridge but there is also a default IPAddress (networks should be preferred) (({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': { 'bridge': { 'IPAddress': '172.17.0.2' } } } }, { 'host': '%%host_bridge%%', 'port': 1337 }, ['host_bridge'], ['foo', 'bar:baz']), ({ 'host': '%%host_bridge%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host_bridge': '172.17.0.2' })), # specify index but there is a default IPAddress (there's a specifier, even if it's wrong, walking networks should be preferred) ( ({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': { 'bridge': { 'IPAddress': '172.17.0.2' } } } }, { 'host': '%%host_0%%', 'port': 1337 }, ['host_0'], ['foo', 'bar:baz']), ({ 'host': '%%host_0%%', 'port': 1337, 'tags': ['foo', 'bar:baz'] }, { 'host_0': '172.17.0.2' }), ), # missing key for host, bridge network should be preferred ( ({ 'NetworkSettings': { 'Networks': { 'bridge': { 'IPAddress': '127.0.0.1' }, 'foo': { 'IPAddress': '172.17.0.2' } } } }, { 'host': '%%host_bar%%', 'port': 1337 }, ['host_bar'], []), ({ 'host': '%%host_bar%%', 'port': 1337 }, { 'host_bar': '127.0.0.1' }), ), # missing index for port (({ 'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Ports': { '42/tcp': None, '22/tcp': None } } }, { 'host': '%%host%%', 'port': '%%port_2%%', 'tags': ['env:test'] }, ['host', 'port_2'], ['foo', 'bar:baz']), ({ 'host': '%%host%%', 'port': '%%port_2%%', 'tags': ['env:test', 'foo', 'bar:baz'] }, { 'host': '127.0.0.1', 'port_2': '42' })) ] # should raise invalid_config = [ # ((inspect, instance_tpl, variables, tags), expected_exception) # template variable but no IPAddress available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': '%%host%%', 'port': 1337 }, ['host'], ['foo', 'bar:baz']), Exception, ), # index but no IPAddress available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': '%%host_0%%', 'port': 1337 }, ['host_0'], ['foo', 'bar:baz']), Exception, ), # key but no IPAddress available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': '%%host_foo%%', 'port': 1337 }, ['host_foo'], ['foo', 'bar:baz']), Exception, ), # template variable but no port available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': 'localhost', 'port': '%%port%%' }, ['port'], []), Exception, ), # index but no port available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': 'localhost', 'port_0': '%%port%%' }, ['port_0'], []), Exception, ), # key but no port available ( ({ 'NetworkSettings': { 'Networks': {} } }, { 'host': 'localhost', 'port': '%%port_foo%%' }, ['port_foo'], []), Exception, ) ] for ac in self.agentConfigs: sd_backend = get_sd_backend(agentConfig=ac) try: for co in valid_configs + edge_cases: inspect, tpl, variables, tags = co[0] state = _SDDockerBackendConfigFetchState(lambda _: inspect) instance_tpl, var_values = sd_backend._fill_tpl( state, 'c_id', tpl, variables, tags) for key in instance_tpl.keys(): if isinstance(instance_tpl[key], list): self.assertEquals(len(instance_tpl[key]), len(co[1][0].get(key))) for elem in instance_tpl[key]: self.assertTrue(elem in co[1][0].get(key)) else: self.assertEquals(instance_tpl[key], co[1][0].get(key)) self.assertEquals(var_values, co[1][1]) for co in invalid_config: inspect, tpl, variables, tags = co[0] state = _SDDockerBackendConfigFetchState(lambda _: inspect) self.assertRaises( co[1], sd_backend._fill_tpl(state, 'c_id', tpl, variables, tags)) finally: clear_singletons(ac)
def test_fill_tpl(self, *args): """Test _fill_tpl with mocked docker client""" valid_configs = [ # ((inspect, instance_tpl, variables, tags), (expected_instance_tpl, expected_var_values)) (({}, {'host': 'localhost'}, [], None), ({'host': 'localhost'}, {})), ( ({'NetworkSettings': {'IPAddress': ''}}, {'host': 'localhost'}, [], None), ({'host': 'localhost'}, {}) ), ( ({'NetworkSettings': {'Networks': {}}}, {'host': 'localhost'}, [], None), ({'host': 'localhost'}, {}) ), ( ({'NetworkSettings': {'Networks': {'bridge': {}}}}, {'host': 'localhost'}, [], None), ({'host': 'localhost'}, {}) ), ( ({'NetworkSettings': {'IPAddress': '127.0.0.1'}}, {'host': '%%host%%', 'port': 1337}, ['host'], ['foo', 'bar:baz']), ({'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host': '127.0.0.1'}), ), ( ({'NetworkSettings': {'IPAddress': '127.0.0.1', 'Networks': {}}}, {'host': '%%host%%', 'port': 1337}, ['host'], ['foo', 'bar:baz']), ({'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host': '127.0.0.1'}), ), ( ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {'bridge': {'IPAddress': '172.17.0.2'}}} }, {'host': '%%host%%', 'port': 1337}, ['host'], ['foo', 'bar:baz']), ({'host': '%%host%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host': '172.17.0.2'}), ), ( ({'NetworkSettings': { 'IPAddress': '', 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'} }} }, {'host': '%%host_bridge%%', 'port': 1337}, ['host_bridge'], ['foo', 'bar:baz']), ({'host': '%%host_bridge%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host_bridge': '172.17.0.2'}), ), ( ({'NetworkSettings': { 'IPAddress': '', 'Networks': { 'bridge': {'IPAddress': '172.17.0.2'}, 'foo': {'IPAddress': '192.168.0.2'} }} }, {'host': '%%host_foo%%', 'port': 1337}, ['host_foo'], ['foo', 'bar:baz']), ({'host': '%%host_foo%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host_foo': '192.168.0.2'}), ), ( ({'NetworkSettings': {'IPAddress': '127.0.0.1', 'Ports': {'42/tcp': None, '22/tcp': None}}}, {'host': '%%host%%', 'port': '%%port_1%%', 'tags': ['env:test']}, ['host', 'port_1'], ['foo', 'bar:baz']), ({'host': '%%host%%', 'port': '%%port_1%%', 'tags': ['env:test', 'foo', 'bar:baz']}, {'host': '127.0.0.1', 'port_1': '42'}) ) ] # should not fail but return something specific edge_cases = [ # ((inspect, instance_tpl, variables, tags), (expected_instance_tpl, expected_var_values)) # specify bridge but there is also a default IPAddress (networks should be preferred) ( ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {'bridge': {'IPAddress': '172.17.0.2'}}}}, {'host': '%%host_bridge%%', 'port': 1337}, ['host_bridge'], ['foo', 'bar:baz']), ({'host': '%%host_bridge%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host_bridge': '172.17.0.2'}) ), # specify index but there is a default IPAddress (there's a specifier, even if it's wrong, walking networks should be preferred) ( ({'NetworkSettings': { 'IPAddress': '127.0.0.1', 'Networks': {'bridge': {'IPAddress': '172.17.0.2'}}}}, {'host': '%%host_0%%', 'port': 1337}, ['host_0'], ['foo', 'bar:baz']), ({'host': '%%host_0%%', 'port': 1337, 'tags': ['foo', 'bar:baz']}, {'host_0': '172.17.0.2'}), ), # missing key for host, bridge network should be preferred ( ({'NetworkSettings': {'Networks': { 'bridge': {'IPAddress': '127.0.0.1'}, 'foo': {'IPAddress': '172.17.0.2'}}}}, {'host': '%%host_bar%%', 'port': 1337}, ['host_bar'], []), ({'host': '%%host_bar%%', 'port': 1337}, {'host_bar': '127.0.0.1'}), ), # missing index for port ( ({'NetworkSettings': {'IPAddress': '127.0.0.1', 'Ports': {'42/tcp': None, '22/tcp': None}}}, {'host': '%%host%%', 'port': '%%port_2%%', 'tags': ['env:test']}, ['host', 'port_2'], ['foo', 'bar:baz']), ({'host': '%%host%%', 'port': '%%port_2%%', 'tags': ['env:test', 'foo', 'bar:baz']}, {'host': '127.0.0.1', 'port_2': '42'}) ) ] # should raise invalid_config = [ # ((inspect, instance_tpl, variables, tags), expected_exception) # template variable but no IPAddress available ( ({'NetworkSettings': {'Networks': {}}}, {'host': '%%host%%', 'port': 1337}, ['host'], ['foo', 'bar:baz']), Exception, ), # index but no IPAddress available ( ({'NetworkSettings': {'Networks': {}}}, {'host': '%%host_0%%', 'port': 1337}, ['host_0'], ['foo', 'bar:baz']), Exception, ), # key but no IPAddress available ( ({'NetworkSettings': {'Networks': {}}}, {'host': '%%host_foo%%', 'port': 1337}, ['host_foo'], ['foo', 'bar:baz']), Exception, ), # template variable but no port available ( ({'NetworkSettings': {'Networks': {}}}, {'host': 'localhost', 'port': '%%port%%'}, ['port'], []), Exception, ), # index but no port available ( ({'NetworkSettings': {'Networks': {}}}, {'host': 'localhost', 'port_0': '%%port%%'}, ['port_0'], []), Exception, ), # key but no port available ( ({'NetworkSettings': {'Networks': {}}}, {'host': 'localhost', 'port': '%%port_foo%%'}, ['port_foo'], []), Exception, ) ] for ac in self.agentConfigs: sd_backend = get_sd_backend(agentConfig=ac) try: for co in valid_configs + edge_cases: inspect, tpl, variables, tags = co[0] state = _SDDockerBackendConfigFetchState(lambda _: inspect) instance_tpl, var_values = sd_backend._fill_tpl(state, 'c_id', tpl, variables, tags) for key in instance_tpl.keys(): if isinstance(instance_tpl[key], list): self.assertEquals(len(instance_tpl[key]), len(co[1][0].get(key))) for elem in instance_tpl[key]: self.assertTrue(elem in co[1][0].get(key)) else: self.assertEquals(instance_tpl[key], co[1][0].get(key)) self.assertEquals(var_values, co[1][1]) for co in invalid_config: inspect, tpl, variables, tags = co[0] state = _SDDockerBackendConfigFetchState(lambda _: inspect) self.assertRaises(co[1], sd_backend._fill_tpl(state, 'c_id', tpl, variables, tags)) finally: clear_singletons(ac)
def test_get_container_pid(self, *args): for c_ins, _, var_tpl, _, _, expected_pid in self.container_inspects: state = _SDDockerBackendConfigFetchState(lambda _: c_ins) sd_backend = get_sd_backend(agentConfig=self.auto_conf_agentConfig) self.assertEquals(sd_backend._get_container_pid(state, 'container id', var_tpl), expected_pid) clear_singletons(self.auto_conf_agentConfig)