Merge "Fix network functional tests for sdk 0.9.12"

This commit is contained in:
Jenkins 2017-01-14 23:11:28 +00:00 committed by Gerrit Code Review
commit d35374e33f

@ -10,164 +10,173 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import re import json
import uuid import uuid
import testtools
from openstackclient.tests.functional import base from openstackclient.tests.functional import base
class NetworkTests(base.TestCase): class NetworkTests(base.TestCase):
"""Functional tests for network""" """Functional tests for network"""
@classmethod
def setUpClass(cls):
# Set up some regex for matching below
cls.re_id = re.compile("id\s+\|\s+(\S+)")
cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
cls.re_enabled = re.compile("admin_state_up\s+\|\s+(\S+)")
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
cls.re_external = re.compile("router:external\s+\|\s+(\S+)")
cls.re_default = re.compile("is_default\s+\|\s+(\S+)")
cls.re_port_security = re.compile(
"port_security_enabled\s+\|\s+(\S+)"
)
def test_network_delete(self): def test_network_delete(self):
"""Test create, delete multiple""" """Test create, delete multiple"""
name1 = uuid.uuid4().hex name1 = uuid.uuid4().hex
raw_output = self.openstack( cmd_output = json.loads(self.openstack(
'network create ' + 'network create -f json ' +
'--description aaaa ' + '--description aaaa ' +
name1 name1
) ))
self.assertIsNotNone(cmd_output["id"])
self.assertEqual( self.assertEqual(
'aaaa', 'aaaa',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
name2 = uuid.uuid4().hex name2 = uuid.uuid4().hex
raw_output = self.openstack( cmd_output = json.loads(self.openstack(
'network create ' + 'network create -f json ' +
'--description bbbb ' + '--description bbbb ' +
name2 name2
) ))
self.assertIsNotNone(cmd_output["id"])
self.assertEqual( self.assertEqual(
'bbbb', 'bbbb',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
del_output = self.openstack('network delete ' + name1 + ' ' + name2) del_output = self.openstack('network delete ' + name1 + ' ' + name2)
self.assertOutput('', del_output) self.assertOutput('', del_output)
@testtools.skip('broken SDK testing')
def test_network_list(self): def test_network_list(self):
"""Test create defaults, list filters, delete""" """Test create defaults, list filters, delete"""
name1 = uuid.uuid4().hex name1 = uuid.uuid4().hex
raw_output = self.openstack( cmd_output = json.loads(self.openstack(
'network create ' + 'network create -f json ' +
'--description aaaa ' + '--description aaaa ' +
name1 name1
) ))
self.addCleanup(self.openstack, 'network delete ' + name1) self.addCleanup(self.openstack, 'network delete ' + name1)
self.assertIsNotNone(cmd_output["id"])
self.assertEqual( self.assertEqual(
'aaaa', 'aaaa',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
# Check the default values # Check the default values
self.assertEqual( self.assertEqual(
'UP', 'UP',
re.search(self.re_enabled, raw_output).group(1), cmd_output["admin_state_up"],
) )
self.assertEqual( self.assertEqual(
'False', False,
re.search(self.re_shared, raw_output).group(1), cmd_output["shared"],
) )
self.assertEqual( self.assertEqual(
'Internal', 'Internal',
re.search(self.re_external, raw_output).group(1), cmd_output["router:external"],
) )
# NOTE(dtroyer): is_default is not present in the create output # NOTE(dtroyer): is_default is not present in the create output
# so make sure it stays that way. # so make sure it stays that way.
self.assertIsNone(re.search(self.re_default, raw_output)) # NOTE(stevemar): is_default *is* present in SDK 0.9.11 and newer,
# but the value seems to always be None, regardless
# of the --default or --no-default value.
# self.assertEqual('x', cmd_output)
if ('is_default' in cmd_output):
self.assertEqual(
None,
cmd_output["is_default"],
)
self.assertEqual( self.assertEqual(
'True', True,
re.search(self.re_port_security, raw_output).group(1), cmd_output["port_security_enabled"],
) )
name2 = uuid.uuid4().hex name2 = uuid.uuid4().hex
raw_output = self.openstack( cmd_output = json.loads(self.openstack(
'network create ' + 'network create -f json ' +
'--description bbbb ' + '--description bbbb ' +
'--disable ' + '--disable ' +
'--share ' + '--share ' +
name2 name2
) ))
self.addCleanup(self.openstack, 'network delete ' + name2) self.addCleanup(self.openstack, 'network delete ' + name2)
self.assertIsNotNone(cmd_output["id"])
self.assertEqual( self.assertEqual(
'bbbb', 'bbbb',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
self.assertEqual( self.assertEqual(
'DOWN', 'DOWN',
re.search(self.re_enabled, raw_output).group(1), cmd_output["admin_state_up"],
) )
self.assertEqual( self.assertEqual(
'True', True,
re.search(self.re_shared, raw_output).group(1), cmd_output["shared"],
)
if ('is_default' in cmd_output):
self.assertEqual(
None,
cmd_output["is_default"],
)
self.assertEqual(
True,
cmd_output["port_security_enabled"],
) )
# Test list --long # Test list --long
raw_output = self.openstack('network list --long') cmd_output = json.loads(self.openstack(
self.assertIsNotNone( "network list -f json " +
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output) "--long"
) ))
self.assertIsNotNone( col_name = [x["Name"] for x in cmd_output]
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output) self.assertIn(name1, col_name)
) self.assertIn(name2, col_name)
# Test list --long --enable # Test list --long --enable
raw_output = self.openstack('network list --long --enable') cmd_output = json.loads(self.openstack(
self.assertIsNotNone( "network list -f json " +
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output) "--enable " +
) "--long"
self.assertIsNone( ))
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output) col_name = [x["Name"] for x in cmd_output]
) self.assertIn(name1, col_name)
self.assertNotIn(name2, col_name)
# Test list --long --disable # Test list --long --disable
raw_output = self.openstack('network list --long --disable') cmd_output = json.loads(self.openstack(
self.assertIsNone( "network list -f json " +
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output) "--disable " +
) "--long"
self.assertIsNotNone( ))
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output) col_name = [x["Name"] for x in cmd_output]
) self.assertNotIn(name1, col_name)
self.assertIn(name2, col_name)
# Test list --long --share # Test list --long --share
raw_output = self.openstack('network list --long --share') cmd_output = json.loads(self.openstack(
self.assertIsNone( "network list -f json " +
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output) "--share " +
) "--long"
self.assertIsNotNone( ))
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output) col_name = [x["Name"] for x in cmd_output]
) self.assertNotIn(name1, col_name)
self.assertIn(name2, col_name)
# Test list --long --no-share # Test list --long --no-share
raw_output = self.openstack('network list --long --no-share') cmd_output = json.loads(self.openstack(
self.assertIsNotNone( "network list -f json " +
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output) "--no-share " +
) "--long"
self.assertIsNone( ))
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output) col_name = [x["Name"] for x in cmd_output]
) self.assertIn(name1, col_name)
self.assertNotIn(name2, col_name)
@testtools.skip('broken SDK testing')
def test_network_set(self): def test_network_set(self):
"""Tests create options, set, show, delete""" """Tests create options, set, show, delete"""
name = uuid.uuid4().hex name = uuid.uuid4().hex
raw_output = self.openstack( cmd_output = json.loads(self.openstack(
'network create ' + 'network create -f json ' +
'--description aaaa ' + '--description aaaa ' +
'--enable ' + '--enable ' +
'--no-share ' + '--no-share ' +
@ -175,30 +184,38 @@ class NetworkTests(base.TestCase):
'--no-default ' + '--no-default ' +
'--enable-port-security ' + '--enable-port-security ' +
name name
) ))
self.addCleanup(self.openstack, 'network delete ' + name) self.addCleanup(self.openstack, 'network delete ' + name)
self.assertIsNotNone(cmd_output["id"])
self.assertEqual( self.assertEqual(
'aaaa', 'aaaa',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
self.assertEqual( self.assertEqual(
'UP', 'UP',
re.search(self.re_enabled, raw_output).group(1), cmd_output["admin_state_up"],
) )
self.assertEqual( self.assertEqual(
'False', False,
re.search(self.re_shared, raw_output).group(1), cmd_output["shared"],
) )
self.assertEqual( self.assertEqual(
'Internal', 'Internal',
re.search(self.re_external, raw_output).group(1), cmd_output["router:external"],
) )
# NOTE(dtroyer): is_default is not present in the create output # NOTE(dtroyer): is_default is not present in the create output
# so make sure it stays that way. # so make sure it stays that way.
self.assertIsNone(re.search(self.re_default, raw_output)) # NOTE(stevemar): is_default *is* present in SDK 0.9.11 and newer,
# but the value seems to always be None, regardless
# of the --default or --no-default value.
if ('is_default' in cmd_output):
self.assertEqual(
None,
cmd_output["is_default"],
)
self.assertEqual( self.assertEqual(
'True', True,
re.search(self.re_port_security, raw_output).group(1), cmd_output["port_security_enabled"],
) )
raw_output = self.openstack( raw_output = self.openstack(
@ -212,32 +229,34 @@ class NetworkTests(base.TestCase):
) )
self.assertOutput('', raw_output) self.assertOutput('', raw_output)
raw_output = self.openstack('network show ' + name) cmd_output = json.loads(self.openstack(
'network show -f json ' + name
))
self.assertEqual( self.assertEqual(
'cccc', 'cccc',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
self.assertEqual( self.assertEqual(
'DOWN', 'DOWN',
re.search(self.re_enabled, raw_output).group(1), cmd_output["admin_state_up"],
) )
self.assertEqual( self.assertEqual(
'True', True,
re.search(self.re_shared, raw_output).group(1), cmd_output["shared"],
) )
self.assertEqual( self.assertEqual(
'External', 'External',
re.search(self.re_external, raw_output).group(1), cmd_output["router:external"],
) )
# why not 'None' like above?? # why not 'None' like above??
self.assertEqual( self.assertEqual(
'False', False,
re.search(self.re_default, raw_output).group(1), cmd_output["is_default"],
) )
self.assertEqual( self.assertEqual(
'False', False,
re.search(self.re_port_security, raw_output).group(1), cmd_output["port_security_enabled"],
) )
# NOTE(dtroyer): There is ambiguity around is_default in that # NOTE(dtroyer): There is ambiguity around is_default in that
@ -252,14 +271,16 @@ class NetworkTests(base.TestCase):
) )
self.assertOutput('', raw_output) self.assertOutput('', raw_output)
raw_output = self.openstack('network show ' + name) cmd_output = json.loads(self.openstack(
'network show -f json ' + name
))
self.assertEqual( self.assertEqual(
'cccc', 'cccc',
re.search(self.re_description, raw_output).group(1), cmd_output["description"],
) )
# NOTE(dtroyer): This should be 'True' # NOTE(dtroyer): This should be 'True'
self.assertEqual( self.assertEqual(
'False', False,
re.search(self.re_default, raw_output).group(1), cmd_output["port_security_enabled"],
) )