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
This commit is contained in:
Genadi 2018-06-03 12:57:03 +03:00
parent 8db1cbc44c
commit 00a957314a
4 changed files with 45 additions and 32 deletions

View File

@ -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,

View File

@ -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

View File

@ -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)

View File

@ -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)