Jsonify meter and meter rule functional tests
Some functional tests try to parse the CLI table output format, that cause much work on parse string by using regular expression. Using json format in functional tests is better and easier way, this patch reworks for meter and meter rule related tests. Change-Id: I1f2a95c873a4ed23dd1afa4040900a1c7704d0bf
This commit is contained in:
parent
a93440023b
commit
289f15a814
openstackclient/tests/functional/network/v2
@ -13,7 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import re
|
||||
import json
|
||||
import uuid
|
||||
|
||||
from openstackclient.tests.functional import base
|
||||
@ -27,37 +27,45 @@ class TestMeter(base.TestCase):
|
||||
# has its own needs and there are collisions when running
|
||||
# tests in parallel.
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
# Set up some regex for matching below
|
||||
cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
|
||||
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
|
||||
cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
|
||||
|
||||
def test_meter_delete(self):
|
||||
"""Test create, delete multiple"""
|
||||
name1 = uuid.uuid4().hex
|
||||
name2 = uuid.uuid4().hex
|
||||
|
||||
raw_output = self.openstack(
|
||||
'network meter create ' + name1,
|
||||
description = 'fakedescription'
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter create -f json ' + name1 + ' --description '
|
||||
+ description)
|
||||
)
|
||||
self.assertEqual(
|
||||
name1,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
json_output.get('name'),
|
||||
)
|
||||
# Check if default shared values
|
||||
self.assertEqual(
|
||||
'False',
|
||||
re.search(self.re_shared, raw_output).group(1)
|
||||
False,
|
||||
json_output.get('shared')
|
||||
)
|
||||
self.assertEqual(
|
||||
'fakedescription',
|
||||
json_output.get('description')
|
||||
)
|
||||
|
||||
raw_output = self.openstack(
|
||||
'network meter create ' + name2,
|
||||
json_output_2 = json.loads(self.openstack(
|
||||
'network meter create -f json ' + name2 + ' --description '
|
||||
+ description)
|
||||
)
|
||||
self.assertEqual(
|
||||
name2,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
json_output_2.get('name'),
|
||||
)
|
||||
# Check if default shared values
|
||||
self.assertEqual(
|
||||
False,
|
||||
json_output_2.get('shared')
|
||||
)
|
||||
self.assertEqual(
|
||||
'fakedescription',
|
||||
json_output_2.get('description')
|
||||
)
|
||||
|
||||
raw_output = self.openstack(
|
||||
@ -68,35 +76,83 @@ class TestMeter(base.TestCase):
|
||||
def test_meter_list(self):
|
||||
"""Test create, list filters, delete"""
|
||||
name1 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'network meter create --description Test1 --share ' + name1,
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter create -f json --description Test1 --share '
|
||||
+ name1)
|
||||
)
|
||||
self.addCleanup(self.openstack, 'network meter delete ' + name1)
|
||||
|
||||
self.assertEqual(
|
||||
'Test1',
|
||||
re.search(self.re_description, raw_output).group(1),
|
||||
json_output.get('description'),
|
||||
)
|
||||
self.assertEqual(
|
||||
'True',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
True,
|
||||
json_output.get('shared'),
|
||||
)
|
||||
|
||||
name2 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'network meter create --description Test2 --no-share ' + name2,
|
||||
json_output_2 = json.loads(self.openstack(
|
||||
'network meter create -f json --description Test2 --no-share '
|
||||
+ name2)
|
||||
)
|
||||
self.addCleanup(self.openstack, 'network meter delete ' + name2)
|
||||
|
||||
self.assertEqual(
|
||||
'Test2',
|
||||
re.search(self.re_description, raw_output).group(1),
|
||||
json_output_2.get('description')
|
||||
)
|
||||
self.assertEqual(
|
||||
'False',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
False,
|
||||
json_output_2.get('shared')
|
||||
)
|
||||
|
||||
raw_output = self.openstack('network meter list')
|
||||
self.assertIsNotNone(re.search(name1 + "\s+\|\s+Test1", raw_output))
|
||||
self.assertIsNotNone(re.search(name2 + "\s+\|\s+Test2", raw_output))
|
||||
raw_output = json.loads(self.openstack('network meter list -f json'))
|
||||
name_list = [item.get('Name') for item in raw_output]
|
||||
self.assertIn(name1, name_list)
|
||||
self.assertIn(name2, name_list)
|
||||
|
||||
def test_meter_show(self):
|
||||
"""Test create, show, delete"""
|
||||
name1 = uuid.uuid4().hex
|
||||
description = 'fakedescription'
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter create -f json ' + name1 + ' --description '
|
||||
+ description)
|
||||
)
|
||||
meter_id = json_output.get('id')
|
||||
self.addCleanup(self.openstack, 'network meter delete ' + name1)
|
||||
|
||||
# Test show with ID
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter show -f json ' + meter_id)
|
||||
)
|
||||
self.assertEqual(
|
||||
False,
|
||||
json_output.get('shared')
|
||||
)
|
||||
self.assertEqual(
|
||||
'fakedescription',
|
||||
json_output.get('description')
|
||||
)
|
||||
self.assertEqual(
|
||||
name1,
|
||||
json_output.get('name')
|
||||
)
|
||||
|
||||
# Test show with name
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter show -f json ' + name1)
|
||||
)
|
||||
self.assertEqual(
|
||||
meter_id,
|
||||
json_output.get('id')
|
||||
)
|
||||
self.assertEqual(
|
||||
False,
|
||||
json_output.get('shared')
|
||||
)
|
||||
self.assertEqual(
|
||||
'fakedescription',
|
||||
json_output.get('description')
|
||||
)
|
||||
|
@ -13,7 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import re
|
||||
import json
|
||||
import uuid
|
||||
|
||||
from openstackclient.tests.functional import base
|
||||
@ -27,19 +27,11 @@ class TestMeterRule(base.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
# Set up some regex for matching below
|
||||
cls.re_id = re.compile("id\s+\|\s+(\S+)")
|
||||
cls.re_direction = re.compile("direction\s+\|\s+(\S+)")
|
||||
cls.re_ip_prefix = re.compile(
|
||||
"remote_ip_prefix\s+\|\s+([^|]+?)\s+\|"
|
||||
)
|
||||
cls.re_meter_id = re.compile("metering_label_id\s+\|\s+(\S+)")
|
||||
json_output = json.loads(cls.openstack(
|
||||
'network meter create -f json ' + cls.METER_NAME
|
||||
))
|
||||
|
||||
raw_output = cls.openstack(
|
||||
'network meter create ' + cls.METER_NAME
|
||||
)
|
||||
|
||||
cls.METER_ID = re.search(cls.re_id, raw_output).group(1)
|
||||
cls.METER_ID = json_output.get('id')
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
@ -49,58 +41,81 @@ class TestMeterRule(base.TestCase):
|
||||
def test_meter_rule_delete(self):
|
||||
"""test create, delete"""
|
||||
|
||||
raw_output = self.openstack(
|
||||
'network meter rule create ' +
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter rule create -f json ' +
|
||||
'--remote-ip-prefix 10.0.0.0/8 ' +
|
||||
self.METER_ID
|
||||
)
|
||||
rule_id = re.search(self.re_id, raw_output).group(1)
|
||||
re_ip = re.search(self.re_ip_prefix, raw_output)
|
||||
))
|
||||
rule_id = json_output.get('id')
|
||||
re_ip = json_output.get('remote_ip_prefix')
|
||||
|
||||
self.addCleanup(self.openstack,
|
||||
'network meter rule delete ' + rule_id)
|
||||
self.assertIsNotNone(re_ip)
|
||||
self.assertIsNotNone(rule_id)
|
||||
self.assertEqual(
|
||||
'10.0.0.0/8', re_ip
|
||||
)
|
||||
|
||||
def test_meter_rule_list(self):
|
||||
"""Test create, list, delete"""
|
||||
raw_output = self.openstack(
|
||||
'network meter rule create ' +
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter rule create -f json ' +
|
||||
'--remote-ip-prefix 10.0.0.0/8 ' +
|
||||
self.METER_ID
|
||||
)
|
||||
rule_id = re.search(self.re_id, raw_output).group(1)
|
||||
))
|
||||
rule_id_1 = json_output.get('id')
|
||||
self.addCleanup(self.openstack,
|
||||
'network meter rule delete ' + rule_id)
|
||||
'network meter rule delete ' + rule_id_1)
|
||||
self.assertEqual(
|
||||
'10.0.0.0/8',
|
||||
re.search(self.re_ip_prefix, raw_output).group(1)
|
||||
json_output.get('remote_ip_prefix')
|
||||
)
|
||||
|
||||
raw_output = self.openstack('network meter rule list')
|
||||
self.assertIsNotNone(re.search(rule_id + "|\s+\|\s+\|\s+10.0.0.0/8",
|
||||
raw_output))
|
||||
json_output_1 = json.loads(self.openstack(
|
||||
'network meter rule create -f json ' +
|
||||
'--remote-ip-prefix 11.0.0.0/8 ' +
|
||||
self.METER_ID
|
||||
))
|
||||
rule_id_2 = json_output_1.get('id')
|
||||
self.addCleanup(self.openstack,
|
||||
'network meter rule delete ' + rule_id_2)
|
||||
self.assertEqual(
|
||||
'11.0.0.0/8',
|
||||
json_output_1.get('remote_ip_prefix')
|
||||
)
|
||||
|
||||
json_output = json.loads(self.openstack('network meter rule list -f '
|
||||
'json'))
|
||||
rule_id_list = [item.get('ID') for item in json_output]
|
||||
ip_prefix_list = [item.get('Remote IP Prefix') for item in json_output]
|
||||
self.assertIn(rule_id_1, rule_id_list)
|
||||
self.assertIn(rule_id_2, rule_id_list)
|
||||
self.assertIn('10.0.0.0/8', ip_prefix_list)
|
||||
self.assertIn('11.0.0.0/8', ip_prefix_list)
|
||||
|
||||
def test_meter_rule_show(self):
|
||||
|
||||
"""Test create, show, delete"""
|
||||
raw_output = self.openstack(
|
||||
'network meter rule create ' +
|
||||
json_output = json.loads(self.openstack(
|
||||
'network meter rule create -f json ' +
|
||||
'--remote-ip-prefix 10.0.0.0/8 ' +
|
||||
'--egress ' +
|
||||
self.METER_ID
|
||||
)
|
||||
rule_id = re.search(self.re_id, raw_output).group(1)
|
||||
))
|
||||
rule_id = json_output.get('id')
|
||||
|
||||
self.assertEqual(
|
||||
'egress',
|
||||
re.search(self.re_direction, raw_output).group(1)
|
||||
json_output.get('direction')
|
||||
)
|
||||
|
||||
raw_output = self.openstack('network meter rule show ' + rule_id)
|
||||
json_output = json.loads(self.openstack('network meter rule show'
|
||||
' -f json ' + rule_id))
|
||||
|
||||
self.assertEqual(
|
||||
'10.0.0.0/8',
|
||||
re.search(self.re_ip_prefix, raw_output).group(1)
|
||||
json_output.get('remote_ip_prefix')
|
||||
)
|
||||
self.assertIsNotNone(rule_id)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user