def test_open_connection(self):
        """Open a connection using TCP"""
        try:
            self.cnx.open_connection()
        except Exception as err:
            self.fail(str(err))

        config = self.getMySQLConfig()
        self._host = config['host']
        self._port = config['port']

        cases = [
            # Address, Expected Family, Should Raise, Force IPv6
        ]
        if not tests.IPV6_AVAILABLE:
            tests.MESSAGES['WARNINGS'].append(
                "MySQLTCPSocketTests.test_open_connection: "
                "Could not test IPv6. Use options "
                "--bind-address=:: --host=::1 and"
                " make sure the OS and Python supports IPv6.")
            cases.extend([
                (tests.MYSQL_CONFIG['host'], socket.AF_INET, False, False),
            ])
        else:
            # Testing IPv6
            cases.extend([
                (tests.MYSQL_CONFIG['host'], socket.AF_INET6, False, False),
                ('2001::14:06:77', socket.AF_INET6, True, False),
                ('xx:00:xx', socket.AF_INET6, True, False),
            ])

        for addr, family, should_raise, force in cases:
            try:
                sock = network.MySQLTCPSocket(host=addr,
                                              port=self._port,
                                              force_ipv6=force)
                sock.set_connection_timeout(1)
                sock.open_connection()
            except (errors.InterfaceError, socket.error) as err:
                if not should_raise:
                    self.fail(
                        '{0} incorrectly raised socket.error'.format(addr))
            else:
                if should_raise:
                    self.fail(
                        '{0} should have raised socket.error'.format(addr))
                else:
                    self.assertEqual(
                        family, sock._family,
                        "Family for {0} did not match".format(
                            addr, family, sock._family))
                sock.close_connection()
Exemple #2
0
 def _test_open_connection(self, addr, family, should_raise, force):
     try:
         sock = network.MySQLTCPSocket(host=addr,
                                       port=self._port,
                                       force_ipv6=force)
         sock.set_connection_timeout(1)
         sock.open_connection()
     except (errors.InterfaceError, socket.error):
         if not should_raise:
             self.fail('{0} incorrectly raised socket.error'.format(addr))
     else:
         if should_raise:
             self.fail('{0} should have raised socket.error'.format(addr))
         else:
             self.assertEqual(
                 family, sock._family,
                 "Family for {0} did not match".format(
                     addr, family, sock._family))
         sock.close_connection()
Exemple #3
0
 def setUp(self):
     config = self.getMySQLConfig()
     self._host = config['host']
     self._port = config['port']
     self.cnx = network.MySQLTCPSocket(host=self._host, port=self._port)
Exemple #4
0
 def setUp(self):
     config = tests.get_mysql_config()
     self._host = config['host']
     self._port = config['port']
     self.cnx = network.MySQLTCPSocket(host=self._host, port=self._port)
class MySQLTCPSocketTests(tests.MySQLConnectorTests):
    """Testing mysql.connector.network..MySQLTCPSocket"""
    def setUp(self):
        config = self.getMySQLConfig()
        self._host = config['host']
        self._port = config['port']
        self.cnx = network.MySQLTCPSocket(host=self._host, port=self._port)

    def tearDown(self):
        try:
            self.cnx.close_connection()
        except:
            pass

    def test_init(self):
        """MySQLTCPSocket initialization"""
        exp = {
            'server_host': self._host,
            'server_port': self._port,
            'force_ipv6': False,
            '_family': 0,
        }

        for key, value in exp.items():
            self.assertEqual(value, self.cnx.__dict__[key])

    def test_get_address(self):
        """Get TCP/IP address"""
        exp = "%s:%s" % (self._host, self._port)
        self.assertEqual(exp, self.cnx.get_address())

    def test_open_connection(self):
        """Open a connection using TCP"""
        try:
            self.cnx.open_connection()
        except Exception, err:
            self.fail(str(err))

        config = self.getMySQLConfig()
        self._host = config['host']
        self._port = config['port']

        cases = [
            # Address, Expected Family, Should Raise, Force IPv6
        ]
        if not tests.IPV6_AVAILABLE:
            tests.MESSAGES['WARNINGS'].append(
                "MySQLTCPSocketTests.test_open_connection: "
                "Could not test IPv6. Use options "
                "--bind-address=:: --host=::1 and"
                " make sure the OS and Python supports IPv6.")
            cases.extend([
                (tests.MYSQL_CONFIG['host'], socket.AF_INET, False, False),
            ])
        else:
            # Testing IPv6
            cases.extend([
                ('::1', socket.AF_INET6, False, False),
                ('2001::14:06:77', socket.AF_INET6, True, False),
                ('xx:00:xx', socket.AF_INET6, True, False),
            ])

        for addr, family, should_raise, force in cases:
            try:
                sock = network.MySQLTCPSocket(host=addr,
                                              port=self._port,
                                              force_ipv6=force)
                sock.set_connection_timeout(1)
                sock.open_connection()
            except (errors.InterfaceError, socket.error) as err:
                if not should_raise:
                    self.fail(
                        '{0} incorrectly raised socket.error'.format(addr))
            else:
                if should_raise:
                    self.fail(
                        '{0} should have raised socket.error'.format(addr))
                else:
                    self.assertEqual(
                        family, sock._family,
                        "Family for {0} did not match".format(
                            addr, family, sock._family))
                sock.close_connection()