From 00a957314a5beb658e87d151239e317629a693f5 Mon Sep 17 00:00:00 2001 From: Genadi Date: Sun, 3 Jun 2018 12:57:03 +0300 Subject: [PATCH] Testing VM to loadBalancer service connectivity Creating function in base class for creating VM with relevant objects Using function for existing VM to pod connectivity test Creating function for VM to service connectivity Change-Id: I98e9c1fc1e2136ee1f9428fa3736dc49d5784e98 --- kuryr_tempest_plugin/config.py | 3 +- kuryr_tempest_plugin/tests/scenario/base.py | 38 ++++++++++++++----- .../tests/scenario/test_cross_ping.py | 22 +---------- .../tests/scenario/test_service.py | 14 ++++++- 4 files changed, 45 insertions(+), 32 deletions(-) diff --git a/kuryr_tempest_plugin/config.py b/kuryr_tempest_plugin/config.py index d431380c..9c7163ba 100644 --- a/kuryr_tempest_plugin/config.py +++ b/kuryr_tempest_plugin/config.py @@ -32,7 +32,8 @@ port_pool_enabled = cfg.BoolOpt("port_pool_enabled", lb_build_timeout = cfg.IntOpt("lb_build_timeout", default=900, - help="The max time it should take to create LB") + help="The max time (in seconds) it should take " + "to create LB") namespace_enabled = cfg.BoolOpt("namespace_enabled", default=False, diff --git a/kuryr_tempest_plugin/tests/scenario/base.py b/kuryr_tempest_plugin/tests/scenario/base.py index b35d6b05..ac4e87d9 100644 --- a/kuryr_tempest_plugin/tests/scenario/base.py +++ b/kuryr_tempest_plugin/tests/scenario/base.py @@ -249,20 +249,26 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest): @classmethod def create_setup_for_service_test(cls, pod_num=2, spec_type="ClusterIP", - label=None): + label=None, namespace="default", + get_ip=True): label = label or data_utils.rand_name('kuryr-app') for i in range(pod_num): pod_name, pod = cls.create_pod( - labels={"app": label}, image='kuryr/demo') - cls.addClassResourceCleanup(cls.delete_pod, pod_name) + labels={"app": label}, namespace=namespace) + cls.addClassResourceCleanup(cls.delete_pod, pod_name, + namespace=namespace) service_name, service_obj = cls.create_service( - pod_label=pod.metadata.labels, spec_type=spec_type) - cls.service_ip = cls.get_service_ip(service_name, spec_type=spec_type) - cls.verify_lbaas_endpoints_configured(service_name) - cls.wait_service_status( - cls.service_ip, CONF.kuryr_kubernetes.lb_build_timeout) + pod_label=pod.metadata.labels, spec_type=spec_type, + namespace=namespace) + if get_ip: + cls.service_ip = cls.get_service_ip( + service_name, spec_type=spec_type, namespace=namespace) + cls.verify_lbaas_endpoints_configured(service_name) + cls.wait_service_status( + cls.service_ip, CONF.kuryr_kubernetes.lb_build_timeout) - cls.addClassResourceCleanup(cls.delete_service, service_name) + cls.addClassResourceCleanup(cls.delete_service, service_name, + namespace=namespace) @classmethod def create_namespace(cls, name=None): @@ -332,3 +338,17 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest): LOG.info("Waiting till %s will appears " "in ep=%s annotation ", ann_string, ep_name) continue + + def create_vm_for_connectivity_test(self): + keypair = self.create_keypair() + sec_grp = self._create_security_group() + security_groups = [ + {'name': sec_grp['name']} + ] + server = self.create_server(name=data_utils.rand_name(prefix='kuryr'), + key_name=keypair['name'], + security_groups=security_groups) + fip = self.create_floating_ip(server) + ssh_client = self.get_remote_client(fip['floating_ip_address'], + private_key=keypair['private_key']) + return ssh_client, fip diff --git a/kuryr_tempest_plugin/tests/scenario/test_cross_ping.py b/kuryr_tempest_plugin/tests/scenario/test_cross_ping.py index ceeba047..3c524c27 100644 --- a/kuryr_tempest_plugin/tests/scenario/test_cross_ping.py +++ b/kuryr_tempest_plugin/tests/scenario/test_cross_ping.py @@ -14,7 +14,6 @@ from oslo_log import log as logging from tempest import config -from tempest.lib.common.utils import data_utils from tempest.lib import decorators from tempest.lib import exceptions @@ -34,22 +33,13 @@ class TestCrossPingScenario(base.BaseKuryrScenarioTest): @decorators.idempotent_id('bddf5441-1244-449d-a125-b5fddfb1a1a8') def test_vm_pod_ping(self): - keypair = self.create_keypair() - security_groups = [ - {'name': self._create_security_group()['name']} - ] - server = self.create_server(name=data_utils.rand_name(prefix='kuryr'), - key_name=keypair['name'], - security_groups=security_groups) - fip = self.create_floating_ip(server) pod_name, pod = self.create_pod() self.addCleanup(self.delete_pod, pod_name, pod) pod_fip = self.assign_fip_to_pod(pod_name) + ssh_client, fip = self.create_vm_for_connectivity_test() # check connectivity from VM to Pod - ssh_client = self.get_remote_client(fip['floating_ip_address'], - private_key=keypair['private_key']) cmd = ("ping -c4 -w4 %s &> /dev/null; echo $?" % pod_fip['floatingip']['floating_ip_address']) @@ -67,15 +57,7 @@ class TestCrossPingScenario(base.BaseKuryrScenarioTest): @decorators.idempotent_id('bddf5441-1244-449d-a125-b5fddfb1a1a8') def test_pod_vm_ping(self): - keypair = self.create_keypair() - security_groups = [ - {'name': self._create_security_group()['name']} - ] - server = self.create_server(name=data_utils.rand_name(prefix='kuryr'), - key_name=keypair['name'], - security_groups=security_groups) - fip = self.create_floating_ip(server) - + _, fip = self.create_vm_for_connectivity_test() pod_name, pod = self.create_pod() self.addCleanup(self.delete_pod, pod_name, pod) diff --git a/kuryr_tempest_plugin/tests/scenario/test_service.py b/kuryr_tempest_plugin/tests/scenario/test_service.py index 42982aff..5d8d7890 100644 --- a/kuryr_tempest_plugin/tests/scenario/test_service.py +++ b/kuryr_tempest_plugin/tests/scenario/test_service.py @@ -91,7 +91,8 @@ class TestLoadBalancerServiceScenario(base.BaseKuryrScenarioTest): cls.create_setup_for_service_test(spec_type="LoadBalancer") @decorators.idempotent_id('bddf5441-1244-449d-a175-b5fdcfc2a1a9') - def test_lb_service_curl(self): + def test_lb_service_http(self): + LOG.info("Trying to curl the service IP %s" % self.service_ip) cmd = "curl -Ss {dst_ip}".format(dst_ip=self.service_ip) @@ -102,5 +103,14 @@ class TestLoadBalancerServiceScenario(base.BaseKuryrScenarioTest): LOG.error("Checking output of curl to the service IP %s " "failed" % self.service_ip) raise lib_exc.UnexpectedResponseCode() - + self._run_and_assert_fn(curl) + + @decorators.idempotent_id('bddf5441-1244-449d-a125-b5fdcfa1b5a9') + def test_vm_service_http(self): + ssh_client, fip = self.create_vm_for_connectivity_test() + LOG.info("Trying to curl the service IP %s from VM" % self.service_ip) + cmd = ("curl {dst_ip}".format(dst_ip=self.service_ip)) + + def curl(): + return ssh_client.exec_command(cmd) self._run_and_assert_fn(curl)