Have scenario tests use ipv4

The scenario tests currently use the first ip address (or in the
case of clusters, all) that is found. Unfortunately some datastores
don't support IPV6, so if a non-ipv4 ip is used, the test will fail.
Until all datastores support IPV6 (or we can come up with a strategy
to intelligently decide which to use) we should only use the IPV4 ips,
so the tests have been changed to accomodate this.

Closes-Bug: 1642741
Depends-On: Ia4fc545a10c7c16532aefd73818dd7d90c9c271b
Change-Id: I6aff776680c9c0632d8965c3ed70ed26db0a63f2
This commit is contained in:
Peter Stachowski 2016-11-17 16:20:33 -05:00
parent 0d514081c9
commit 7b36391800
3 changed files with 19 additions and 13 deletions

View File

@ -168,13 +168,12 @@ class ClusterActionsRunner(TestRunner):
instance['id'])
self.assert_true(root_enabled_test.rootEnabled)
for ip in cluster.ip:
self.report.log("Pinging cluster as superuser via node: %s" % ip)
for ipv4 in self.extract_ipv4s(cluster.ip):
self.report.log("Pinging cluster as superuser via node: %s" % ipv4)
ping_response = self.test_helper.ping(
ip,
ipv4,
username=self.current_root_creds[0],
password=self.current_root_creds[1]
)
password=self.current_root_creds[1])
self.assert_true(ping_response)
def run_add_initial_cluster_data(self, data_type=DataType.tiny):
@ -185,7 +184,7 @@ class ClusterActionsRunner(TestRunner):
def assert_add_cluster_data(self, data_type, cluster_id):
cluster = self.auth_client.clusters.get(cluster_id)
self.test_helper.add_data(data_type, cluster.ip[0])
self.test_helper.add_data(data_type, self.extract_ipv4s(cluster.ip)[0])
def run_verify_initial_cluster_data(self, data_type=DataType.tiny):
self.assert_verify_cluster_data(data_type, self.cluster_id)
@ -195,9 +194,9 @@ class ClusterActionsRunner(TestRunner):
def assert_verify_cluster_data(self, data_type, cluster_id):
cluster = self.auth_client.clusters.get(cluster_id)
for ip in cluster.ip:
self.report.log("Verifying cluster data via node: %s" % ip)
self.test_helper.verify_data(data_type, ip)
for ipv4 in self.extract_ipv4s(cluster.ip):
self.report.log("Verifying cluster data via node: %s" % ipv4)
self.test_helper.verify_data(data_type, ipv4)
def run_remove_initial_cluster_data(self, data_type=DataType.tiny):
self.assert_remove_cluster_data(data_type, self.cluster_id)
@ -207,7 +206,8 @@ class ClusterActionsRunner(TestRunner):
def assert_remove_cluster_data(self, data_type, cluster_id):
cluster = self.auth_client.clusters.get(cluster_id)
self.test_helper.remove_data(data_type, cluster.ip[0])
self.test_helper.remove_data(
data_type, self.extract_ipv4s(cluster.ip)[0])
def run_cluster_grow(self, expected_task_name='GROWING_CLUSTER',
expected_http_code=202):

View File

@ -206,8 +206,7 @@ class ReplicationRunner(TestRunner):
def assert_verify_replica_data(self, master_id, data_type):
replica_ids = self._get_replica_set(master_id)
for replica_id in replica_ids:
replica_instance = self.get_instance(replica_id)
host = str(replica_instance._info['ip'][0])
host = self.get_instance_host(replica_id)
self.report.log("Checking data on host %s" % host)
self.assert_verify_replication_data(data_type, host)

View File

@ -14,6 +14,7 @@
# under the License.
import datetime
import netaddr
import os
import proboscis
import time as timer
@ -628,10 +629,16 @@ class TestRunner(object):
client = client or self.auth_client
return client.instances.get(instance_id)
def extract_ipv4s(self, ips):
ipv4s = [str(ip) for ip in ips if netaddr.valid_ipv4(ip)]
if not ipv4s:
self.fail("No IPV4 ip found")
return ipv4s
def get_instance_host(self, instance_id=None):
instance_id = instance_id or self.instance_info.id
instance = self.get_instance(instance_id)
host = str(instance._info['ip'][0])
host = self.extract_ipv4s(instance._info['ip'])[0]
self.report.log("Found host %s for instance %s." % (host, instance_id))
return host