Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
        )
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)