7.1. Overview


This section includes an abbreviated version of the VPP Test Framework overview maintained within the VPP project. Complete overview can be found in VPP test framework documentation.

7.1.1. VPP Unit Test Framework

VPP Test Framework is used to ease writing, running and debugging unit tests for the VPP. It is based on python as a high level language to allow rapid test development. scapy_ is used as a tool for creating and dissecting packets.

VPP Test Framework does not send any packets to VPP directly. Traffic is instead injected using VPP packet-generator interfaces. Packets are written into a temporary .pcap file, which is then read by the VPP code with packets getting injected into the VPP processing nodes.

Similarly, VPP does not send any packets to VPP Test Framework directly. Instead, VPP packet capture feature is used to capture and write packets to a temporary .pcap file, which is then read and analyzed by the VPP Test Framework.

For complete description of the VPP Test Framework including anatomy of a test case and detailed documentation of existing VPP unit test cases please refer to the VPP test framework documentation

7.1.2. Unit Tests Coverage

Following VPP functional test areas are covered in VPP unit test code included in VPP rls1704 with results listed in this report:

  • CRUD Loopback - create, read, update, delete Loopback interfaces.
  • Flow-per-packet plugin - collect and report L2 and IP4 flow statistics.
  • DHCP - DHCPv4 and DHCPv6 Proxy.
  • IP4 VRF Multi-instance - create, read, update, delete and verify IPv4 VRFs.
  • Load Balancer - IP4 GRE4, IP4 GRE6, IP6 GRE4, IP6 GRE6.
  • FIB Unit Tests.
  • Bidirectional Forwarding Detection (BFD) IPv4 - baseline BFD session operation.
  • Bidirectional Forwarding Detection (BFD) IPv6 - baseline BFD session operation.
  • Bidirectional Forwarding Detection (BFD) - API tests.
  • Bidirectional Forwarding Detection (BFD) - changing authorization.
  • Bidirectional Forwarding Detection (BFD) - SHA1 authentication.
  • IPv6 Tests - baseline FIB operations, NS/RS exception handling.
  • SPAN Test - Switched Port Analyzer packet mirroring.
  • GRE Tests - GRE tunnel tests.
  • SNAT Test Cases - SNAT44 tests.
  • Deterministic NAT Test Cases - Carrier Grade NAT tests.
  • NAT64 Test Cases - NAT64 static and dynamic translation tests.
  • L2XC Multi-instance - L2 cross-connect multi-instance tests.
  • IPv4 Tests - baseline FIB tests.
  • IPv4 FIB CRUD - add/update/delete IPv4 routes.
  • IRB Tests - Integrated Routing and Bridging tests.
  • ACL plugin - stateful and stateless security-groups access-control-lists.
  • MPLS Tests - MPLS baseline tests.
  • MPLS PIC edge convergence - prefix independent convergence tests for MPLS PE.
  • L2XC Tests - L2 cross-connect baseline tests incl. single- and dual-loop.
  • MFIB Unit Tests.
  • IP Multicast Tests - IPv4/IPv6 multicast replication, connected source check.
  • Classifier - classification with IP ACL, MAC ACL, IP PBR.
  • VXLAN Tests - baseline VXLAN tunneling.
  • VXLAN-GPE Test Cases - baseline VXLAN-GPE tunneling tests including multicast.
  • VTR Test Case - VLAN tag manipulation tests.
  • L2 FIB CRUD - add/update/delete L2 MAC entries.
  • L2BD Tests - L2 Bridge-Domain baseline tests incl. single- and dual-loop.
  • Flowprobe tests.
  • GTPU Test Cases - baseline GTPU tests.