X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=test%2Ftemplate_bd.py;h=39f71438ab0a3470cf9d583758c1b35ae456f9c1;hp=ae17135198462cad9b627025240e4384d9557290;hb=8feeaff56;hpb=da505f608e0919c45089dc80f9e3e16330a6551a diff --git a/test/template_bd.py b/test/template_bd.py index ae171351984..39f71438ab0 100644 --- a/test/template_bd.py +++ b/test/template_bd.py @@ -1,6 +1,7 @@ #!/usr/bin/env python -from abc import abstractmethod, ABCMeta +import abc +import six from scapy.layers.l2 import Ether, Raw from scapy.layers.inet import IP, UDP @@ -8,9 +9,9 @@ from scapy.layers.inet import IP, UDP from util import ip4_range +@six.add_metaclass(abc.ABCMeta) class BridgeDomain(object): """ Bridge domain abstraction """ - __metaclass__ = ABCMeta @property def frame_request(self): @@ -28,22 +29,27 @@ class BridgeDomain(object): UDP(sport=20000, dport=10000) / Raw('\xa5' * 100)) - @abstractmethod + @abc.abstractmethod + def ip_range(self, start, end): + """ range of remote ip's """ + pass + + @abc.abstractmethod def encap_mcast(self, pkt, src_ip, src_mac, vni): """ Encapsulate mcast packet """ pass - @abstractmethod + @abc.abstractmethod def encapsulate(self, pkt, vni): """ Encapsulate packet """ pass - @abstractmethod + @abc.abstractmethod def decapsulate(self, pkt): """ Decapsulate packet """ pass - @abstractmethod + @abc.abstractmethod def check_encapsulation(self, pkt, vni, local_only=False): """ Verify the encapsulation """ pass @@ -92,7 +98,7 @@ class BridgeDomain(object): self.pg_start() - # Pick first received frame and check if it's corectly encapsulated. + # Pick first received frame and check if it's correctly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] self.check_encapsulation(pkt, self.single_tunnel_bd) @@ -111,7 +117,7 @@ class BridgeDomain(object): self.pg_start() - # Get packet from each tunnel and assert it's corectly encapsulated. + # Get packet from each tunnel and assert it's correctly encapsulated. out = self.pg0.get_capture(self.n_ucast_tunnels) for pkt in out: self.check_encapsulation(pkt, self.ucast_flood_bd, True) @@ -129,10 +135,11 @@ class BridgeDomain(object): self.pg_start() - # Pick first received frame and check if it's corectly encapsulated. + # Pick first received frame and check if it's correctly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] - self.check_encapsulation(pkt, self.mcast_flood_bd, True) + self.check_encapsulation(pkt, self.mcast_flood_bd, + local_only=False, mcast_pkt=True) payload = self.decapsulate(pkt) self.assert_eq_pkts(payload, self.frame_reply) @@ -147,8 +154,7 @@ class BridgeDomain(object): ip_range_end = 30 mcast_stream = [ self.encap_mcast(self.frame_request, ip, mac, self.mcast_flood_bd) - for ip in ip4_range(self.pg0.remote_ip4, - ip_range_start, ip_range_end)] + for ip in self.ip_range(ip_range_start, ip_range_end)] self.pg0.add_stream(mcast_stream) self.pg2.enable_capture() self.pg_start()