Пример #1
0
    def test_detect_with_proc_net_should_return_none_when_no_connections_from_sockets(
            self, mocked_proc_net_parser, mocked_logger):
        finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                    'atlas')
        mocked_proc_net_parser.return_value.get_connections_from_sockets.return_value = {}
        conn_param = finder.detect_with_proc_net()

        self.assertIsNone(conn_param)
        expected_msg = 'could not detect connection string from /proc/net for postgres process 1049'
        mocked_logger.error.assert_called_once_with(expected_msg)
Пример #2
0
 def test_can_connect_with_connection_arguments_should_return_true_when_connection_ok(
         self, mocked_psycopg2_connect):
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     connection_builder = DBConnectionBuilder(host='127.0.0.1', port=5431)
     can_connect = finder.can_connect_with_connection_arguments(
         connection_builder)
     self.assertTrue(can_connect)
     mocked_psycopg2_connect.assert_called_once_with(host='127.0.0.1',
                                                     port=5431)
Пример #3
0
 def test_pick_connection_arguments_should_return_empty_when_unknown_conn_types(
         self):
     conn_args = {
         'unix1': [('/var/run/postgresql', '5432')],
         'tcp1': [('127.0.0.1', 5432)]
     }
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     available_connection = finder.pick_connection_arguments(conn_args)
     self.assertEqual({}, available_connection)
Пример #4
0
 def test_detect_db_connection_arguments_should_return_none_when_no_conn_args(
         self, mocked_proc_worker, mocked_detect_with_proc_net,
         mocked_logger):
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     mocked_proc_worker.return_value.detect_with_postmaster_pid.return_value = None
     conn_args = finder.detect_db_connection_arguments()
     self.assertIsNone(conn_args)
     mocked_logger.error.assert_called_with(
         'unable to detect connection parameters for the PostgreSQL cluster at workdir'
     )
Пример #5
0
    def test_detect_with_proc_net_should_return_result_when_connections_from_socket(
            self, mocked_proc_net_parser):
        finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                    'atlas')
        mocked_proc_net_parser.return_value.get_connections_from_sockets.return_value = {
            'unix': [('/var/run/postgresql', '5432')]
        }
        conn_param = finder.detect_with_proc_net()

        self.assertEqual({'unix': [('/var/run/postgresql', '5432')]},
                         conn_param)
Пример #6
0
 def test_detect_db_connection_arguments_should_return_params_when_detect_with_proc_net(
         self, mocked_can_connect, mocked_detect_with_proc_net):
     mocked_detect_with_proc_net.return_value = {
         'unix': [('/var/run/postgresql', '5432')],
         'tcp': [('127.0.0.1', 5432)]
     }
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     conn_args = finder.detect_db_connection_arguments()
     self.assertEqual({
         'host': '/var/run/postgresql',
         'port': '5432'
     }, conn_args)
Пример #7
0
 def test_detect_db_connection_arguments_should_return_params_when_detect_with_postmaster_pid(
         self, mocked_proc_worker, mocked_can_connect,
         mocked_detect_with_proc_net):
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     mocked_proc_worker.return_value.detect_with_postmaster_pid.return_value = {
         'unix': [('/var/run/postgresql', '5432')],
         'tcp': [('localhost', '5432')]
     }
     conn_args = finder.detect_db_connection_arguments()
     self.assertEqual({
         'host': '/var/run/postgresql',
         'port': '5432'
     }, conn_args)
Пример #8
0
 def test_detect_db_connection_arguments_should_return_none_when_not_pickable_conn_arguments(
         self, mocked_proc_worker, mocked_detect_with_proc_net,
         mocked_logger):
     finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                 'atlas')
     conn_params = {
         'unix_wrong': [('/var/run/postgresql', '5432')],
         'tcp_wrong': [('localhost', '5432')]
     }
     mocked_proc_worker.return_value.detect_with_postmaster_pid.return_value = conn_params
     conn_args = finder.detect_db_connection_arguments()
     self.assertIsNone(conn_args)
     expected_msg = "unable to connect to PostgreSQL cluster at workdir using any of the detected connection " \
                    "options: {0}".format(conn_params)
     mocked_logger.error.assert_called_with(expected_msg)
Пример #9
0
    def test_pick_connection_arguments_should_return_first_available_conn_when_multiple(
            self, mocked_can_connect):
        mocked_can_connect.side_effect = [False, True]
        conn_args = {
            'unix': [('/var/run/postgresql', '5432')],
            'tcp': [('127.0.0.1', 5431)]
        }

        finder = DBConnectionFinder('workdir', 1049, '9.3', 'username',
                                    'atlas')
        available_connection = finder.pick_connection_arguments(conn_args)
        self.assertEqual({
            'host': '127.0.0.1',
            'port': 5431
        }, available_connection)