You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by re...@apache.org on 2015/10/09 01:49:28 UTC
[05/12] git commit: updated refs/heads/master to ca9e934
CLOUDSTACK-8915 - Improve routers tests
- Add egress tests in order to check if VMs can reach the outside world
- Increase the wait when testing redundant routers: they fight to become master
- Make sure the clean up is done properly
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7c7c0149
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7c7c0149
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7c7c0149
Branch: refs/heads/master
Commit: 7c7c0149b25435548118c1ddbb3895866fb161ad
Parents: 260ff83
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Authored: Wed Sep 30 10:29:46 2015 +0200
Committer: Wilder Rodrigues <wr...@schubergphilis.com>
Committed: Tue Oct 6 16:41:14 2015 +0200
----------------------------------------------------------------------
.../integration/component/test_vpc_redundant.py | 64 +++++++++++++++-----
.../component/test_vpc_router_nics.py | 56 +++++++++++++++--
2 files changed, 100 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c7c0149/test/integration/component/test_vpc_redundant.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_vpc_redundant.py b/test/integration/component/test_vpc_redundant.py
index 149baf7..04670c3 100644
--- a/test/integration/component/test_vpc_redundant.py
+++ b/test/integration/component/test_vpc_redundant.py
@@ -236,7 +236,7 @@ class TestVPCRedundancy(cloudstackTestCase):
admin=True,
domainid=self.domain.id)
- self.cleanup = [self.account]
+ self._cleanup = [self.account]
self.debug("Creating a VPC offering..")
self.vpc_off = VpcOffering.create(
self.apiclient,
@@ -256,13 +256,6 @@ class TestVPCRedundancy(cloudstackTestCase):
domainid=self.account.domainid)
return
- def tearDown(self):
- try:
- cleanup_resources(self.apiclient, self.cleanup)
- except Exception as e:
- self.debug("Warning: Exception during cleanup : %s" % e)
- return
-
def query_routers(self, count=2, showall=False):
self.routers = list_routers(self.apiclient,
account=self.account.name,
@@ -318,7 +311,6 @@ class TestVPCRedundancy(cloudstackTestCase):
conservemode=False)
nw_off.update(self.apiclient, state='Enabled')
- self._cleanup.append(nw_off)
self.debug('Created and Enabled NetworkOffering')
self.services["network"]["name"] = "NETWORK-" + str(gateway)
@@ -333,6 +325,7 @@ class TestVPCRedundancy(cloudstackTestCase):
gateway=gateway,
vpcid=vpc.id if vpc else self.vpc.id
)
+
self.debug("Created network with ID: %s" % obj_network.id)
except Exception, e:
self.fail('Unable to create a Network with offering=%s because of %s ' % (net_offerring, e))
@@ -419,16 +412,16 @@ class TestVPCRedundancy(cloudstackTestCase):
self.fail("Failed to SSH into VM - %s" % (public_ip.ipaddress.ipaddress))
@attr(tags=["advanced", "intervlan"], required_hardware="true")
- def test_01a_create_redundant_VPC(self):
- """ Create a redundant vpc with two networks with two vms in each network """
- self.debug("Starting est 1a")
+ def test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL(self):
+ """ Create a redundant VPC with two networks with two VMs in each network """
+ self.debug("Starting test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL")
self.query_routers()
self.networks.append(self.create_network(self.services["network_offering"], "10.1.1.1"))
self.networks.append(self.create_network(self.services["network_offering_no_lb"], "10.1.2.1"))
+ time.sleep(30)
self.check_master_status(2)
self.add_nat_rules()
self.do_vpc_test(False)
- time.sleep(15)
self.stop_router("MASTER")
# wait for the backup router to transit to master state
@@ -437,15 +430,29 @@ class TestVPCRedundancy(cloudstackTestCase):
self.do_vpc_test(False)
self.delete_nat_rules()
+ time.sleep(45)
self.check_master_status(1)
self.do_vpc_test(True)
self.start_router()
self.add_nat_rules()
- time.sleep(15)
+ time.sleep(45)
self.check_master_status(2)
self.do_vpc_test(False)
+ @attr(tags=["advanced", "intervlan"], required_hardware="true")
+ def test_02_redundant_VPC_default_routes(self):
+ """ Create a redundant VPC with two networks with two VMs in each network and check default routes"""
+ self.debug("Starting test_02_redundant_VPC_default_routes")
+ self.query_routers()
+ self.networks.append(self.create_network(self.services["network_offering"], "10.1.1.1"))
+ self.networks.append(self.create_network(self.services["network_offering_no_lb"], "10.1.2.1"))
+ time.sleep(30)
+ self.check_master_status(2)
+ self.add_nat_rules()
+ self.test_default_routes()
+
+
def delete_nat_rules(self):
for o in self.networks:
for vm in o.get_vms():
@@ -470,6 +477,35 @@ class TestVPCRedundancy(cloudstackTestCase):
for vm in o.get_vms():
self.check_ssh_into_vm(vm.get_vm(), vm.get_ip(), expectFail=expectFail, retries=retries)
+ def test_default_routes(self):
+ for o in self.networks:
+ for vmObj in o.get_vms():
+ ssh_command = "ping -c 3 8.8.8.8"
+
+ # Should be able to SSH VM
+ result = 'failed'
+ try:
+ vm = vmObj.get_vm()
+ public_ip = vmObj.get_ip()
+ self.debug("SSH into VM: %s" % public_ip.ipaddress.ipaddress)
+
+ ssh = vm.get_ssh_client(ipaddress=public_ip.ipaddress.ipaddress)
+
+ self.debug("Ping to google.com from VM")
+ result = ssh.execute(ssh_command)
+
+ self.debug("SSH result: %s" % str(result))
+ except Exception as e:
+ self.fail("SSH Access failed for %s: %s" % \
+ (vmObj.get_ip(), e)
+ )
+
+ self.assertEqual(
+ result.count("0% packet loss"),
+ 1,
+ "Ping to outside world from VM should be successful"
+ )
+
class networkO(object):
def __init__(self, net):
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c7c0149/test/integration/component/test_vpc_router_nics.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_vpc_router_nics.py b/test/integration/component/test_vpc_router_nics.py
index 4cabd16..ce5a622 100644
--- a/test/integration/component/test_vpc_router_nics.py
+++ b/test/integration/component/test_vpc_router_nics.py
@@ -279,7 +279,6 @@ class TestVPCNics(cloudstackTestCase):
conservemode=False)
nw_off.update(self.apiclient, state='Enabled')
- self._cleanup.append(nw_off)
self.debug('Created and Enabled NetworkOffering')
self.services["network"]["name"] = "NETWORK-" + str(gateway)
@@ -294,6 +293,7 @@ class TestVPCNics(cloudstackTestCase):
gateway=gateway,
vpcid=vpc.id if vpc else self.vpc.id
)
+
self.debug("Created network with ID: %s" % obj_network.id)
except Exception, e:
self.fail('Unable to create a Network with offering=%s because of %s ' % (net_offerring, e))
@@ -369,8 +369,8 @@ class TestVPCNics(cloudstackTestCase):
@attr(tags=["advanced", "intervlan"], required_hardware="true")
def test_01_VPC_nics_after_destroy(self):
- """ Create a vpc with two networks with two vms in each network """
- self.debug("Starting test 1")
+ """ Create a VPC with two networks with one VM in each network and test nics after destroy"""
+ self.debug("Starting test_01_VPC_nics_after_destroy")
self.query_routers()
net1 = self.create_network(self.services["network_offering"], "10.1.1.1")
@@ -380,7 +380,7 @@ class TestVPCNics(cloudstackTestCase):
self.networks.append(net2)
self.add_nat_rules()
- self.do_vpc_test()
+ self.test_ssh_to_vm()
self.stop_router()
self.destroy_router()
@@ -388,7 +388,22 @@ class TestVPCNics(cloudstackTestCase):
net1.add_vm(self.deployvm_in_network(net1.get_net()))
self.add_nat_rules()
- self.do_vpc_test()
+ self.test_ssh_to_vm()
+
+ @attr(tags=["advanced", "intervlan"], required_hardware="true")
+ def test_02_VPC_default_routes(self):
+ """ Create a VPC with two networks with one VM in each network and test default routes"""
+ self.debug("Starting test_02_VPC_default_routes")
+ self.query_routers()
+
+ net1 = self.create_network(self.services["network_offering"], "10.1.1.1")
+ net2 = self.create_network(self.services["network_offering_no_lb"], "10.1.2.1")
+
+ self.networks.append(net1)
+ self.networks.append(net2)
+
+ self.add_nat_rules()
+ self.test_default_routes()
def delete_nat_rules(self):
for o in self.networks:
@@ -406,11 +421,40 @@ class TestVPCNics(cloudstackTestCase):
vm.set_nat(self.create_natrule(vm.get_vm(), vm.get_ip(), o.get_net()))
time.sleep(5)
- def do_vpc_test(self):
+ def test_ssh_to_vm(self):
for o in self.networks:
for vm in o.get_vms():
self.check_ssh_into_vm(vm.get_vm(), vm.get_ip())
+ def test_default_routes(self):
+ for o in self.networks:
+ for vmObj in o.get_vms():
+ ssh_command = "ping -c 3 8.8.8.8"
+
+ # Should be able to SSH VM
+ result = 'failed'
+ try:
+ vm = vmObj.get_vm()
+ public_ip = vmObj.get_ip()
+ self.debug("SSH into VM: %s" % public_ip.ipaddress.ipaddress)
+
+ ssh = vm.get_ssh_client(ipaddress=public_ip.ipaddress.ipaddress)
+
+ self.debug("Ping to google.com from VM")
+ result = ssh.execute(ssh_command)
+
+ self.debug("SSH result: %s" % str(result))
+ except Exception as e:
+ self.fail("SSH Access failed for %s: %s" % \
+ (vmObj.get_ip(), e)
+ )
+
+ self.assertEqual(
+ result.count("0% packet loss"),
+ 1,
+ "Ping to outside world from VM should be successful"
+ )
+
class networkO(object):
def __init__(self, net):