From 3421e71156d1eaca416ac648534934f00b3959ce Mon Sep 17 00:00:00 2001 From: Peter Stachowski Date: Wed, 23 Nov 2016 12:18:10 -0500 Subject: [PATCH] Have api tests use IPv4 Setting up the connection to mysql doesn't work if the host is a IPv6 address. Make sure we only use IPv4 addresses at the moment. Also removed pool_recycle and echo kwargs from EngineFacade as they are no longer supported. Change-Id: I6464c0031ba5b504ff103d8f62093d252deb87bb --- trove/tests/api/configurations.py | 8 +++++++- trove/tests/api/instances.py | 10 ++++++++-- trove/tests/util/mysql.py | 3 +-- trove/tests/util/server_connection.py | 9 ++++++++- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/trove/tests/api/configurations.py b/trove/tests/api/configurations.py index 0382fe4735..40a5023eff 100644 --- a/trove/tests/api/configurations.py +++ b/trove/tests/api/configurations.py @@ -16,6 +16,7 @@ from datetime import datetime import json +import netaddr from time import sleep import uuid @@ -24,6 +25,7 @@ from proboscis.asserts import assert_equal from proboscis.asserts import assert_not_equal from proboscis.asserts import assert_raises from proboscis.asserts import assert_true +from proboscis.asserts import fail from proboscis import before_class from proboscis.decorators import time_out from proboscis import SkipTest @@ -84,7 +86,11 @@ def _execute_query(host, user_name, password, query): def _get_address(instance_id): result = instance_info.dbaas_admin.mgmt.instances.show(instance_id) - return result.ip[0] + try: + return next(str(ip) for ip in result.ip + if netaddr.valid_ipv4(ip)) + except StopIteration: + fail("No IPV4 ip found") def _test_configuration_is_applied_to_instance(instance, configuration_id): diff --git a/trove/tests/api/instances.py b/trove/tests/api/instances.py index 161bdd2a46..ec3781ddc2 100644 --- a/trove/tests/api/instances.py +++ b/trove/tests/api/instances.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. +import netaddr import os import re import time @@ -126,9 +127,14 @@ class InstanceTestInfo(object): def get_address(self): result = self.dbaas_admin.mgmt.instances.show(self.id) if not hasattr(result, 'hostname'): - return result.ip[0] + try: + return next(str(ip) for ip in result.ip + if netaddr.valid_ipv4(ip)) + except StopIteration: + fail("No IPV4 ip found") else: - return result.server['addresses'] + return [str(ip) for ip in result.server['addresses'] + if netaddr.valid_ipv4(ip)] def get_local_id(self): mgmt_instance = self.dbaas_admin.management.show(self.id) diff --git a/trove/tests/util/mysql.py b/trove/tests/util/mysql.py index 218e3910a0..2d91433796 100644 --- a/trove/tests/util/mysql.py +++ b/trove/tests/util/mysql.py @@ -115,8 +115,7 @@ class SqlAlchemyConnection(object): @staticmethod def _init_engine(user, password, host): return session.EngineFacade( - "mysql+pymysql://%s:%s@%s:3306" % (user, password, host), - pool_recycle=1800, echo=True + "mysql+pymysql://%s:%s@%s:3306" % (user, password, host) ).get_engine() diff --git a/trove/tests/util/server_connection.py b/trove/tests/util/server_connection.py index 8956c251de..6eed36633a 100644 --- a/trove/tests/util/server_connection.py +++ b/trove/tests/util/server_connection.py @@ -13,7 +13,9 @@ # License for the specific language governing permissions and limitations # under the License. +import netaddr import os +from proboscis.asserts import fail from trove import tests from trove.tests import util @@ -33,7 +35,12 @@ class ServerSSHConnection(object): self.user = util.test_config.users.find_user(req_admin) self.dbaas_admin = util.create_dbaas_client(self.user) self.instance = self.dbaas_admin.management.show(self.instance_id) - self.ip_address = self.instance.ip[0] + try: + self.ip_address = [str(ip) for ip in self.instance.ip + if netaddr.valid_ipv4(ip)][0] + except Exception: + fail("No IPV4 ip found") + TROVE_TEST_SSH_USER = os.environ.get('TROVE_TEST_SSH_USER') if TROVE_TEST_SSH_USER and '@' not in self.ip_address: self.ip_address = TROVE_TEST_SSH_USER + '@' + self.ip_address