MCPcopy Create free account
hub / github.com/FDio/vpp / test_cflow_packet

Method test_cflow_packet

test/test_flowprobe.py:453–532  ·  view source on GitHub ↗

verify cflow packet fields

(self)

Source from the content-addressed store, hash-verified

451 self.logger.info("FFP_TEST_FINISH_0002")
452
453 def test_cflow_packet(self):
454 """verify cflow packet fields"""
455 self.logger.info("FFP_TEST_START_0000")
456 self.pg_enable_capture(self.pg_interfaces)
457 self.pkts = []
458
459 ipfix = VppCFLOW(
460 test=self, intf="pg8", datapath="ip4", layer="l2 l3 l4", active=2
461 )
462 ipfix.add_vpp_config()
463
464 route_9001 = VppIpRoute(
465 self,
466 "9.0.0.0",
467 24,
468 [VppRoutePath(self.pg8._remote_hosts[0].ip4, self.pg8.sw_if_index)],
469 )
470 route_9001.add_vpp_config()
471
472 ipfix_decoder = IPFIXDecoder()
473 templates = ipfix.verify_templates(ipfix_decoder, count=1)
474
475 self.pkts = [
476 (
477 Ether(dst=self.pg7.local_mac, src=self.pg7.remote_mac)
478 / IP(src=self.pg7.remote_ip4, dst="9.0.0.100")
479 / TCP(sport=1234, dport=4321, flags=80)
480 / Raw(b"\xa5" * 100)
481 )
482 ]
483
484 nowUTC = int(time.time())
485 nowUNIX = nowUTC + 2208988800
486 self.send_packets(src_if=self.pg7, dst_if=self.pg8)
487
488 cflow = self.wait_for_cflow_packet(self.collector, templates[0], 10)
489 self.collector.get_capture(2)
490
491 if cflow[0].haslayer(IPFIX):
492 self.assertEqual(cflow[IPFIX].version, 10)
493 self.assertEqual(cflow[IPFIX].observationDomainID, 1)
494 self.assertEqual(cflow[IPFIX].sequenceNumber, 0)
495 self.assertAlmostEqual(cflow[IPFIX].exportTime, nowUTC, delta=5)
496 if cflow.haslayer(Data):
497 record = ipfix_decoder.decode_data_set(cflow[0].getlayer(Set))[0]
498 # ingress interface
499 self.assertEqual(int(binascii.hexlify(record[10]), 16), 8)
500 # egress interface
501 self.assertEqual(int(binascii.hexlify(record[14]), 16), 9)
502 # direction
503 self.assertEqual(int(binascii.hexlify(record[61]), 16), 1)
504 # packets
505 self.assertEqual(int(binascii.hexlify(record[2]), 16), 1)
506 # src mac
507 self.assertEqual(mac_ntop(record[56]), self.pg8.local_mac)
508 # dst mac
509 self.assertEqual(mac_ntop(record[80]), self.pg8.remote_mac)
510 flowTimestamp = int(binascii.hexlify(record[156]), 16) >> 32

Callers

nothing calls this directly

Calls 14

add_vpp_configMethod · 0.95
add_vpp_configMethod · 0.95
verify_templatesMethod · 0.95
decode_data_setMethod · 0.95
remove_vpp_configMethod · 0.95
VppIpRouteClass · 0.90
VppRoutePathClass · 0.90
IPFIXDecoderClass · 0.90
mac_ntopFunction · 0.90
VppCFLOWClass · 0.85
pg_enable_captureMethod · 0.80
wait_for_cflow_packetMethod · 0.80

Tested by

no test coverage detected