-#!/usr/bin/env python
+#!/usr/bin/env python3
import unittest
import socket
super(TestClassifier, cls).setUpClass()
cls.acl_active_table = ''
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifier, cls).tearDownClass()
+
def setUp(self):
"""
Perform test setup before test case.
def tearDown(self):
"""Run standard test teardown and acl related log."""
if not self.vpp_dead:
- self.logger.info(self.vapi.ppcli("show inacl type ip6"))
- self.logger.info(self.vapi.ppcli("show outacl type ip6"))
- self.logger.info(self.vapi.cli("show classify table verbose"))
- self.logger.info(self.vapi.cli("show ip fib"))
if self.acl_active_table == 'ip6_out':
self.output_acl_set_interface(
self.pg0, self.acl_tbl_idx.get(self.acl_active_table), 0)
super(TestClassifier, self).tearDown()
+ def show_commands_at_teardown(self):
+ self.logger.info(self.vapi.ppcli("show inacl type ip6"))
+ self.logger.info(self.vapi.ppcli("show outacl type ip6"))
+ self.logger.info(self.vapi.cli("show classify table verbose"))
+ self.logger.info(self.vapi.cli("show ip fib"))
+
def create_stream(self, src_if, dst_if, packet_sizes,
proto_l=UDP(sport=1234, dport=5678)):
"""Create input packet stream for defined interfaces.
try:
ip6_received = packet[IPv6]
proto_received = packet[proto_l]
- payload_info = self.payload_to_info(str(packet[Raw]))
+ payload_info = self.payload_to_info(packet[Raw])
packet_index = payload_info.index
self.assertEqual(payload_info.dst, dst_sw_if_index)
self.logger.debug(
:param str dst_port: destination port number <0-ffff>
"""
- return ('{:0>14}{:0>34}{:0>32}{:0>4}{:0>4}'.format(
+ return ('{!s:0>14}{!s:0>34}{!s:0>32}{!s:0>4}{!s:0>4}'.format(
nh, src_ip, dst_ip, src_port, dst_port)).rstrip('0')
@staticmethod
:param int dst_port: destination port number "x"
"""
if src_ip:
- src_ip = socket.inet_pton(socket.AF_INET6, src_ip).encode('hex')
+ if sys.version_info[0] == 2:
+ src_ip = binascii.hexlify(socket.inet_pton(
+ socket.AF_INET6, src_ip))
+ else:
+ src_ip = socket.inet_pton(socket.AF_INET6, src_ip).hex()
+
if dst_ip:
- dst_ip = socket.inet_pton(socket.AF_INET6, dst_ip).encode('hex')
+ if sys.version_info[0] == 2:
+ dst_ip = binascii.hexlify(socket.inet_pton(
+ socket.AF_INET6, dst_ip))
+ else:
+ dst_ip = socket.inet_pton(socket.AF_INET6, dst_ip).hex()
- return ('{:0>14}{:0>34}{:0>32}{:0>4}{:0>4}'.format(
+ return ('{!s:0>14}{!s:0>34}{!s:0>32}{!s:0>4}{!s:0>4}'.format(
hex(nh)[2:], src_ip, dst_ip, hex(src_port)[2:],
hex(dst_port)[2:])).rstrip('0')
:param str ether_type: ethernet type <0-ffff>
"""
- return ('{:0>12}{:0>12}{:0>4}'.format(dst_mac, src_mac,
- ether_type)).rstrip('0')
+ return ('{!s:0>12}{!s:0>12}{!s:0>4}'.format(
+ dst_mac, src_mac, ether_type)).rstrip('0')
@staticmethod
def build_mac_match(dst_mac='', src_mac='', ether_type=''):
if src_mac:
src_mac = src_mac.replace(':', '')
- return ('{:0>12}{:0>12}{:0>4}'.format(dst_mac, src_mac,
- ether_type)).rstrip('0')
+ return ('{!s:0>12}{!s:0>12}{!s:0>4}'.format(
+ dst_mac, src_mac, ether_type)).rstrip('0')
def create_classify_table(self, key, mask, data_offset=0):
"""Create Classify Table
miss_next_index=0,
current_data_flag=1,
current_data_offset=data_offset)
- self.assertIsNotNone(r, msg='No response msg for add_del_table')
+ self.assertIsNotNone(r, 'No response msg for add_del_table')
self.acl_tbl_idx[key] = r.new_table_index
def create_classify_session(self, table_index, match, vrfid=0, is_add=1):
binascii.unhexlify(match),
opaque_index=0,
metadata=vrfid)
- self.assertIsNotNone(r, msg='No response msg for add_del_session')
+ self.assertIsNotNone(r, 'No response msg for add_del_session')
def input_acl_set_interface(self, intf, table_index, is_add=1):
"""Configure Input ACL interface
is_add,
intf.sw_if_index,
ip6_table_index=table_index)
- self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+ self.assertIsNotNone(r, 'No response msg for acl_set_interface')
def output_acl_set_interface(self, intf, table_index, is_add=1):
"""Configure Output ACL interface
is_add,
intf.sw_if_index,
ip6_table_index=table_index)
- self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+ self.assertIsNotNone(r, 'No response msg for acl_set_interface')
class TestClassifierIP6(TestClassifier):
""" Classifier IP6 Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(TestClassifierIP6, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifierIP6, cls).tearDownClass()
+
def test_iacl_src_ip(self):
""" Source IP6 iACL test
class TestClassifierIP6UDP(TestClassifier):
""" Classifier IP6 UDP proto Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(TestClassifierIP6UDP, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifierIP6UDP, cls).tearDownClass()
+
def test_iacl_proto_udp(self):
""" IP6 UDP protocol iACL test
class TestClassifierIP6TCP(TestClassifier):
""" Classifier IP6 TCP proto Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(TestClassifierIP6TCP, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifierIP6TCP, cls).tearDownClass()
+
def test_iacl_proto_tcp(self):
""" IP6 TCP protocol iACL test
class TestClassifierIP6Out(TestClassifier):
""" Classifier output IP6 Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(TestClassifierIP6Out, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifierIP6Out, cls).tearDownClass()
+
def test_acl_ip_out(self):
""" Output IP6 ACL test
class TestClassifierIP6MAC(TestClassifier):
""" Classifier IP6 MAC Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(TestClassifierIP6MAC, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestClassifierIP6MAC, cls).tearDownClass()
+
def test_acl_mac(self):
""" IP6 MAC iACL test