- ## Pick first received frame and check if is corectly encapsulated.
- out = self.pg_get_capture(0)
- self.assertEqual(len(out), 1,
- 'Invalid number of packets on '
- 'output: {}'.format(len(out)))
- rcvd = out[0]
- self.check_encapsulation(rcvd)
-
- ## Get original frame from received packet and check if is same as
- # sended frame.
- rcvd_payload = self.decapsulate(rcvd)
- # TODO: add error messages
- self.assertEqual(rcvd_payload[Ether].src, self.payload_1_0[Ether].src)
- self.assertEqual(rcvd_payload[Ether].dst, self.payload_1_0[Ether].dst)
- self.assertEqual(rcvd_payload[IP].src, self.payload_1_0[IP].src)
- self.assertEqual(rcvd_payload[IP].dst, self.payload_1_0[IP].dst)
- self.assertEqual(rcvd_payload[UDP].sport, self.payload_1_0[UDP].sport)
- self.assertEqual(rcvd_payload[UDP].dport, self.payload_1_0[UDP].dport)
- self.assertEqual(rcvd_payload[Raw], self.payload_1_0[Raw])
+ # Pick first received frame and check if it's corectly encapsulated.
+ out = self.pg0.get_capture(1)
+ pkt = out[0]
+ 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)
+
+ def test_mcast_rcv(self):
+ """ Multicast receive test
+ Send 20 encapsulated frames from pg0 only 10 match unicast tunnels
+ Verify receipt of 10 decap frames on pg2
+ """
+ mac = self.pg0.remote_mac
+ ip_range_start = 10
+ ip_range_end = 30
+ mcast_stream = [
+ self.encap_mcast(self.frame_request, ip, mac, self.mcast_flood_bd)
+ 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()
+ out = self.pg2.get_capture(10)
+ for pkt in out:
+ self.assert_eq_pkts(pkt, self.frame_request)