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)