diff options
author | IWASE Yusuke <iwase.yusuke0@gmail.com> | 2017-01-23 14:18:54 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2017-01-23 22:23:23 +0900 |
commit | 8ed4e24fb17a3e38f08a83edd2441deaafa92fbc (patch) | |
tree | d9619e047b54e1255612f0aca2d48f98f473aab7 | |
parent | 0662e9024d23a61948304637ed14f55c80290453 (diff) |
test_zebra: Unit tests for Zebra packet library
The pcap files for Zebra protocol were generated by:
v2: Quagga 0.99.24.1 (Ubuntu 14.04 LST packaged version)
v3: Quagga 1.1.0 (from Git source)
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/tests/packet_data/pcap/zebra_v2.pcap | bin | 0 -> 1236 bytes | |||
-rw-r--r-- | ryu/tests/packet_data/pcap/zebra_v3.pcap | bin | 0 -> 1250 bytes | |||
-rw-r--r-- | ryu/tests/unit/packet/test_zebra.py | 66 |
3 files changed, 66 insertions, 0 deletions
diff --git a/ryu/tests/packet_data/pcap/zebra_v2.pcap b/ryu/tests/packet_data/pcap/zebra_v2.pcap Binary files differnew file mode 100644 index 00000000..b5ca677b --- /dev/null +++ b/ryu/tests/packet_data/pcap/zebra_v2.pcap diff --git a/ryu/tests/packet_data/pcap/zebra_v3.pcap b/ryu/tests/packet_data/pcap/zebra_v3.pcap Binary files differnew file mode 100644 index 00000000..f2e01a91 --- /dev/null +++ b/ryu/tests/packet_data/pcap/zebra_v3.pcap diff --git a/ryu/tests/unit/packet/test_zebra.py b/ryu/tests/unit/packet/test_zebra.py new file mode 100644 index 00000000..19ff88de --- /dev/null +++ b/ryu/tests/unit/packet/test_zebra.py @@ -0,0 +1,66 @@ +# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +import os +import sys +import unittest + +from nose.tools import eq_ +from nose.tools import ok_ +import six + +from ryu.lib import pcaplib +from ryu.lib.packet import packet +from ryu.lib.packet import zebra +from ryu.utils import binary_str + + +PCAP_DATA_DIR = os.path.join( + os.path.dirname(sys.modules[__name__].__file__), + '../../packet_data/pcap/') + + +class Test_zebra(unittest.TestCase): + """ + Test case for ryu.lib.packet.zebra. + """ + + def test_pcap(self): + files = [ + 'zebra_v2', + 'zebra_v3', + ] + + for f in files: + zebra_pcap_file = os.path.join(PCAP_DATA_DIR, f + '.pcap') + # print('*** testing %s' % zebra_pcap_file) + + for _, buf in pcaplib.Reader(open(zebra_pcap_file, 'rb')): + # Checks if Zebra message can be parsed as expected. + pkt = packet.Packet(buf) + zebra_pkts = pkt.get_protocols(zebra.ZebraMessage) + for zebra_pkt in zebra_pkts: + ok_(isinstance(zebra_pkt, zebra.ZebraMessage), + 'Failed to parse Zebra message: %s' % pkt) + ok_(not isinstance(pkt.protocols[-1], + (six.binary_type, bytearray)), + 'Some messages could not be parsed: %s' % pkt) + + # Checks if Zebra message can be serialized as expected. + pkt.serialize() + eq_(buf, pkt.data, + "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data))) |