def test_logs_exception_when_docker_nodes_config_is_bad( self, docker_client): """ With three nodes configured but with one bad node an error should be logged but 2 nodes should be returned """ # given (docker_conn1, docker_conn2, docker_conn3) = ClientMock().mock_two_docker_nodes(docker_client) expected_nodes = ['node-1', 'node-2'] # when # Note the very subtle ']' which results in the URL being considered as an invalid IPv6 URL. self.config.docker_nodes = [ "http://node-1/", "http://node-2/", "http://node-3]" ] self.docker_node_resolver.get_docker_nodes = MagicMock( return_value=self.config.docker_nodes) # given with LogCapture(names='connection', level=logging.ERROR) as l: connection = Connection(self.config, self.docker_node_resolver) l.check(( 'connection', 'ERROR', 'Could not obtain connection to docker node: http://node-3]. Exception: Invalid IPv6 URL' )) nodes = connection.get_nodes() self.assertTrue(len(nodes) == 2) for node in nodes: self.assertIn(node['id'], expected_nodes)
def test_get_nodes(self, docker_client): (mock_client_node1, mock_client_node2, mock_client_node3) = ClientMock().mock_two_docker_nodes(docker_client) connection = Connection(self.config) nodes = connection.get_nodes() self.assertTrue(len(nodes) == 3) self.assertIn( {"id": "node-1", "slots": {"free": 6, "used": 4, "total": 10}, "state": "healthy"}, nodes )
def test_get_nodes(self, docker_client): (mock_client_node1, mock_client_node2, mock_client_node3) = ClientMock().mock_two_docker_nodes(docker_client) connection = Connection(self.config) nodes = connection.get_nodes() self.assertTrue(len(nodes) == 3) self.assertIn( { "id": "node-1", "slots": { "free": 6, "used": 4, "total": 10 } }, nodes)
def test_logs_exception_when_docker_nodes_config_is_bad(self, docker_client): """ With three nodes configured but with one bad node an error should be logged but 2 nodes should be returned """ # given (docker_conn1, docker_conn2, docker_conn3) = ClientMock().mock_two_docker_nodes(docker_client) expected_nodes = ['node-1', 'node-2'] # when self.config.docker_nodes = ["http://node-1/", "http://node-2/", "http://node-3]"] # given with LogCapture(names='connection', level=logging.ERROR) as l: connection = Connection(self.config) l.check( ('connection', 'ERROR', 'Failed to add node from config: http://node-3]') ) nodes = connection.get_nodes() self.assertTrue(len(nodes) == 2) for node in nodes: self.assertIn(node['id'], expected_nodes)