Fix functional test for creating subnet

subnet create failed by some bad random
subnet range, so retry it with new random
range when the test failed.

Change-Id: If528ff419b51dd5c5232f81d4b26abae542bd820
This commit is contained in:
Huanxuan Ao 2017-01-17 22:33:08 +08:00 committed by Dean Troyer
parent 08ca61ba07
commit 4a8e7dbe6b

View File

@ -31,18 +31,22 @@ class FloatingIpTests(base.TestCase):
cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
cls.re_network_id = re.compile("floating_network_id\s+\|\s+(\S+)")
# Make a random subnet
cls.subnet = ".".join(map(
str,
(random.randint(0, 223) for _ in range(3))
)) + ".0/26"
# Create a network for the floating ip
raw_output = cls.openstack(
'network create --external ' + cls.NETWORK_NAME
)
cls.network_id = re.search(cls.re_id, raw_output).group(1)
# Try random subnet range for subnet creating
# Because we can not determine ahead of time what subnets are already
# in use, possibly by another test running in parallel, try 4 times
for i in range(4):
# Make a random subnet
cls.subnet = ".".join(map(
str,
(random.randint(0, 223) for _ in range(3))
)) + ".0/26"
try:
# Create a subnet for the network
raw_output = cls.openstack(
'subnet create ' +
@ -50,6 +54,15 @@ class FloatingIpTests(base.TestCase):
'--subnet-range ' + cls.subnet + ' ' +
cls.SUBNET_NAME
)
except Exception:
if (i == 3):
# raise the exception at the last time
raise
pass
else:
# break and no longer retry if create sucessfully
break
cls.subnet_id = re.search(cls.re_id, raw_output).group(1)
@classmethod