--- /dev/null
+# CSIT - Continuous System Integration Testing
+
+1. [Architecture](#architecture)
+1. [Directory Structure](#directory-structure)
+ 1. [Tests](#tests)
+ 1. [Keywords](#keywords)
+ 1. [Other Resources](#other-resources)
+1. [Quickstart](#quick-start)
+ 1. [Vagrant](#vagrant)
+ 1. [Physical Testbed](#physical-testbed)
+1. [Report](#report)
+1. [Trending](#trending)
+1. [Code Documentation](#code-documentation)
+1. [Coding Guidelines](#coding-guidelines)
+
+## Architecture
+
+FD.io CSIT system design needs to meet continuously expanding requirements of
+FD.io projects including VPP, related sub-systems (e.g. plugin applications,
+DPDK drivers) and FD.io applications (e.g. DPDK applications), as well as
+growing number of compute platforms running those applications. With CSIT
+project scope and charter including both FD.io continuous testing AND
+performance trending/comparisons, those evolving requirements further amplify
+the need for CSIT framework modularity, flexibility and usability.
+
+CSIT follows a hierarchical system design with SUTs and DUTs at the bottom level
+of the hierarchy, presentation level at the top level and a number of functional
+layers in-between. The current CSIT system design including CSIT framework is
+depicted in the figure below.
+
+![csit design](docs/report/csit_framework_documentation/csit_design_picture.svg "CSIT architecture")
+
+A brief bottom-up description is provided here:
+
+1. SUTs, DUTs, TGs
+ - SUTs - Systems Under Test;
+ - DUTs - Devices Under Test;
+ - TGs - Traffic Generators;
+1. Level-1 libraries - Robot and Python
+ - Lowest level CSIT libraries abstracting underlying test environment, SUT,
+ DUT and TG specifics;
+ - Used commonly across multiple L2 KWs;
+ - Performance and functional tests:
+ - L1 KWs (KeyWords) are implemented as RF libraries and Python
+ libraries;
+ - Performance TG L1 KWs:
+ - All L1 KWs are implemented as Python libraries:
+ - Support for TRex only today;
+ - Performance data plane traffic profiles:
+ - TG-specific stream profiles provide full control of:
+ - Packet definition – layers, MACs, IPs, ports, combinations thereof
+ e.g. IPs and UDP ports;
+ - Stream definitions - different streams can run together, delayed,
+ one after each other;
+ - Stream profiles are independent of CSIT framework and can be used
+ in any T-rex setup, can be sent anywhere to repeat tests with
+ exactly the same setup;
+ - Easily extensible – one can create a new stream profile that meets
+ tests requirements;
+ - Same stream profile can be used for different tests with the same
+ traffic needs;
+ - Functional data plane traffic scripts:
+ - Scapy specific traffic scripts;
+1. Level-2 libraries - Robot resource files
+ - Higher level CSIT libraries abstracting required functions for executing
+ tests;
+ - L2 KWs are classified into the following functional categories:
+ - Configuration, test, verification, state report;
+ - Suite setup, suite teardown;
+ - Test setup, test teardown;
+1. Tests - Robot
+ - Test suites with test cases;
+ - Functional tests using VIRL environment:
+ - VPP;
+ - Honeycomb;
+ - NSH_SFC;
+ - DMM;
+ - TLDK;
+ - Performance tests using physical testbed environment:
+ - VPP;
+ - DPDK-Testpmd;
+ - DPDK-L3Fwd;
+ - Honeycomb;
+ - VPP Container K8s orchestrated topologies;
+ - Tools:
+ - Documentation generator;
+ - Report generator;
+ - Testbed environment setup ansible playbooks;
+ - Operational debugging scripts;
+
+## Directory Structure
+
+### Tests
+
+```
+.
+└── tests
+ ├── dmm
+ │ └── func # DMM functional VIRL tests
+ ├── dpdk
+ │ ├── dpdk_scripts # DPDK helper scripts
+ │ └── perf # DPDK performance tests
+ ├── honeycomb
+ │ ├── func # Honeycomb functional VIRL tests
+ │ └── perf # Honeycomb functional performance tests
+ ├── kubernetes
+ │ └── perf # VPP K8S orchestration performance tests
+ ├── nsh_sfc
+ │ ├── func # NSH_SFC functional tests
+ │ └── sfc_scripts # NSH_SFC helper scripts
+ ├── tldk
+ │ ├── func # TLDK functional VIRL tests
+ │ ├── tldk_scripts # TLDK helper scripts
+ │ └── tldk_testconfig # TLDK test configuration
+ └── vpp
+ ├── device # VPP device tests
+ ├── func # VPP functional VIRL tests
+ └── perf # VPP performance tests
+```
+
+### Keywords
+
+```
+.
+resources
+└── libraries
+ ├── bash
+ │ ├── config
+ │ ├── entry # Main bootstrap entry directory
+ │ ├── function # Bootstrap function library
+ │ ├── qemu_patches # Custom QEMU patches (see KVM methodology)
+ │ └── shell # Various functions
+ ├── python # Python L1 KWs
+ └── robot # Robot Framework L2 KWs
+```
+
+### Other Resources
+
+```
+.
+├── docs # Main documentaion
+├── PyPI # PyPI packages provided by CSIT
+│ ├── jumpavg
+│ └── MLRsearch
+├── resources
+│ ├── templates # Templates (vpp_api_test, kubernetes, ...)
+│ ├── test_data # Robot Test configuration
+│ ├── tools
+│ │ ├── disk-image-builder # Utilities for building (DCR, VM) images
+│ │ ├── doc_gen # Code documentation generator
+│ │ ├── papi # PAPI driver
+│ │ ├── presentation # Report generator
+│ │ ├── scripts # Various tools
+│ │ ├── testbed-setup # Physical testbed setup scripts
+│ │ ├── topology # Helper scripts for topology manipulation
+│ │ ├── trex # TRex driver
+│ │ ├── vagrant # VPP device vagrant environment
+│ │ ├── virl # VIRL helper scripts
+│ │ └── wrk # WRK driver
+│ ├── topology_schemas
+│ ├── traffic_profiles # Performance tests traffic profiles
+│ │ ├── trex
+│ │ └── wrk
+│ └── traffic_scripts # Functional tests traffic profiles
+│ ├── dhcp
+│ ├── honeycomb
+│ └── lisp
+└── topologies # Linux Foundation topology files
+ ├── available
+ └── enabled
+```
+
+## Quickstart
+
+### Vagrant
+
+[Vagrant environment preparation](docs/testing_in_vagrant.rst) documentaion is
+describing local VPP Device functional testing.
+
+### Physical Testbed
+
+[Physical testbed preparation](resources/tools/testbed-setup/README.md)
+documentation is describing PXE and Ansible setup process. All the software
+requirements for running Performance Teste are part of Ansible playbooks.
+
+## Report
+
+[CSIT Report](https://docs.fd.io/csit/master/report/).
+
+## Trending
+
+[CSIT Trending](https://docs.fd.io/csit/master/trending/).
+
+## Code Documentation
+
+[CSIT Code Documentation](https://docs.fd.io/csit/master/doc/).
+
+## Coding Guidelines
+
+If you are interested in contributing, please see the
+[coding guidelines](docs/test_code_guidelines.rst).
+++ /dev/null
-
-# Directory structure re-organization
-
-## Table of contents
-
-1. [The new structure](#the-new-structure)
-1. [Tests](#tests)
- 1. [Performance](#performance)
- 1. [Functional](#functional)
-1. [Keywords](#keywords)
- 1. [L2 Robot keywords](#l2-robot-keywords)
- 1. [L1 Python keywords](#l1-python-keywords)
-
-## The new structure
-
-### Tests
-```
-$CSIT/
- tests/
- vpp/
- func/
- l2bd/
- l2xc/
- ip4/
- ip6/
- ip4_tunnels/
- ip6_tunnels/
- vm_vhost/
- crypto/
- interfaces/
- telemetry/
- honeycomb/
- perf/
- l2/
- ip4/
- ip6/
- ip4_tunnels/
- ip6_tunnels/
- vm_vhost/
- crypto/
- dpdk/
- func/
- perf/
- nsh_sfc/
- func/
- perf/
- tldk/
- func/
- perf/
-```
-
-### Keywords
-```
-$CSIT/
- resources/
- libraries/
- bash/
- python/
- packages/ (dirs): feature | area
- modules/
- robot/
- shared/
- l2/
- ip/
- overlay/
- vm/
- crypto/
- dpdk/
- nsh_sfc/
- tldk/
- honeycomb/
- performance/
- telemetry/
- features/
- fds/
-```
-
-*Notes:*
-1. **l1/** - L1 will not be created, L1 KWs will be temporarily kept in L2 (their
- current place) and asap refactored using Python
-1. **l2/** - Not needed if we do not have l1/
-
-
-### Other resources
-```
-$CSIT/
- resources/
- templates/
- vat/
- honeycomb/
- test_data/
- honeycomb/
- lisp/
- softwire/
- tools/
- disk_image_builder/
- doc_gen/
- report_gen/
- scripts/
- testbed_setup/
- topology/
- trex/
- vagrant/
- virl/
- topology_schemas/
- traffic_scripts/
- traffic_profiles/
- trex/
- ixia/
-```
-
-## Tests
-
-### Performance
-
-#### L2 Ethernet Switching
-```
-ls | grep -E "(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-l2/
- 10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
- 10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot
- 10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
- 10ge2p1x520-dot1q-l2xcbase-ndrchk.robot
- 10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot
- 10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot
- 10ge2p1x520-eth-l2xcbase-ndrchk.robot
- 10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2xcbase-pdrchk.robot
- 10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
- 40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
- 40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
- 40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
-```
-
-#### IPv4 Routed-Forwarding
-```
-ls | grep -P 'ethip4(udp|)-ip4(base|scale)[a-z0-9]*(?!-eth-[0-9]vhost).*-(ndrpdrdisc|ndrchk|pdrchk)'
-```
-```
-ip4/
- 10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot
- 10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot
- 10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot
- 10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4base-ndrchk.robot
- 10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4base-pdrchk.robot
- 10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot
- 10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot
- 10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot
- 10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot
- 10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
- 10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
-```
-
-#### IPv6 Routed-Forwarding
-```
-ls | grep -E "ethip6-ip6(base|scale)[-a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-ip6/
- 10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot
- 10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot
- 10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6base-ndrchk.robot
- 10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6base-pdrchk.robot
- 10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot
- 10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot
- 10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot
- 10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
- 10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot
- 40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot
-```
-
-#### IPv4 Overlay Tunnels
-```
-ls | grep -E "ethip4[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-ip4_tunnels/
- 10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot
- 10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
- 10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot
- 10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot
- 10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
- 10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot
- 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
- 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot
- 10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot
- 10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
- 10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot
-```
-
-#### IPv6 Overlay Tunnels
-```
-ls | grep -E "ethip6[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-ip6_tunnels/
- 10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot
- 10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
- 10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot
- 10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot
- 10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
- 10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot
-```
-
-#### VM vhost Connections
-```
-ls | grep -E ".*vhost.*-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-vm_vhost/
- 10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot
- 10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot
- 10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot
- 10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
- 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
- 10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot
- 10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
- 10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
- 40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
- 40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
- 40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
-```
-
-#### IPSec Crypto HW: IP4 Routed-Forwarding
-```
-ls | grep -E ".*ipsec.*-(ndrpdrdisc|ndrchk|pdrchk)"
-```
-```
-crypto/
- 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
- 40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
-```
-
-### Functional
-
-#### L2 Ethernet Switching
-```
-l2bd/
- eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
- eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
- eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot
- eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot
- eth2p-eth-l2bdbasemaclrn-func.robot
- eth2p-eth-l2bdbasemacstc-func.robot
- eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
-```
-
-```
-l2xc/
- eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
- eth2p-dot1ad-l2xcbase-func.robot
- eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
- eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot
- eth2p-dot1q-l2xcbase-vlantrans11-func.robot
- eth2p-eth-l2xcbase-func.robot
- eth2p-eth-l2xcbase-iaclbase-func.robot
-```
-
-#### IPv4 Routed-Forwarding
-```
-ip4/
- eth2p-dot1q-ip4base-func.robot
- eth2p-ethip4-ip4base-copblklistbase-func.robot
- eth2p-ethip4-ip4base-copwhlistbase-func.robot
- eth2p-ethip4-ip4base-func.robot
- eth2p-ethip4-ip4base-iaclbase-func.robot
- eth2p-ethip4-ip4base-ip4arp-func.robot
- eth2p-ethip4-ip4base-ip4dhcpclient-func.robot
- eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
- eth2p-ethip4-ip4base-ip4ecmp-func.robot
- eth2p-ethip4-ip4base-ip4proxyarp-func.robot
- eth2p-ethip4-ip4base-ipolicemarkbase-func.robot
- eth2p-ethip4-ip4base-rpf-func.robot
- eth2p-ethip4-ip4basevrf-func.robot
-```
-
-#### IPv6 Routed-Forwarding
-```
-ip6/
- eth2p-ethip6-ip6base-copblklistbase-func.robot
- eth2p-ethip6-ip6base-copwhlistbase-func.robot
- eth2p-ethip6-ip6base-func.robot
- eth2p-ethip6-ip6base-iaclbase-func.robot
- eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot
- eth2p-ethip6-ip6base-ip6ecmp-func.robot
- eth2p-ethip6-ip6base-ip6ra-func.robot
- eth2p-ethip6-ip6base-ipolicemarkbase-func.robot
- eth2p-ethip6-ip6basevrf-func.robot
-```
-
-#### IPv4 Overlay Tunnels
-```
-ip4_tunnels/
- gre/
- eth2p-ethip4gre-ip4base-func.robot
- lisp/
- api-crud-lisp-func.robot
- eth2p-ethip4lispgpe-ip4base-func.robot
- eth2p-ethip4lispgpe-ip4basevrf-func.robot
- eth2p-ethip4lispgpe-ip6base-func.robot
- eth2p-ethip4lispgpe-ip6basevrf-func.robot
- eth2p-ethip4lisp-ip4base-func.robot
- eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
- softwire/
- eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot
- eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot
- eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot
- vxlan/
- eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
- eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
- eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
- eth2p-ethip4vxlan-l2xcbase-func.robot
-```
-
-#### IPv6 Overlay Tunnels
-```
-ip6_tunnels/
- lisp/
- eth2p-ethip6lispgpe-ip6base-func.robot
- eth2p-ethip6lispgpe-ip6basevrf-func.robot
- eth2p-ethip6lispgpe-ip4base-func.robot
- eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
- vxlan/
- eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
- eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
-```
-
-#### VM vhost Connections
-```
-vm_vhost/
- l2bd/
- eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
- eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
- eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
- eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
- eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
- eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
- eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
- eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
- l2xc/
- eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
- ip4/
- eth2p-ethip4-ip4base-eth-2vhost-1vm.robot
- eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
- eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
- eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
- eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
- eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
- ip6/
- eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
- eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
- eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
- eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
-```
-
-#### Crypto HW: IP4 Routed-Forwarding
-```
-crypto/
- eth2p-ethip4ipsectnl-ip4base-func.robot
- eth2p-ethip4ipsectpt-ip4base-func.robot
- eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
- eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
- eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
- eth2p-ethip6ipsectnl-ip6base-func.robot
- eth2p-ethip6ipsectpt-ip6base-func.robot
- eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
- eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
-```
-
-#### Honecomb
-```
-honeycomb/
- __init__.robot
- mgmt-cfg-l2fib-apihc-apivat-func.robot
- mgmt-cfg-slaac-apihc-func.robot
- mgmt-cfg-l2bd-apihc-apivat-func.robot
- mgmt-cfg-lisp-apihc-apivat-func.robot
- mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
- mgmt-cfg-nsh-apihc-apivat-func.robot
- mgmt-cfg-proxyarp-apihc-func.robot
- mgmt-cfg-int-subint-apihc-apivat-func.robot
- mgmt-cfg-snat44-apihc-apivat-func.robot
- mgmt-cfg-vxlangpe-apihc-apivat-func.robot
- mgmt-cfg-pluginacl-apihc-apivat-func.robot
- mgmt-cfg-dhcp-apihc-apivat-func.robot
- mgmt-cfg-inttap-apihc-apivat-func.robot
- mgmt-cfg-routing-apihc-apivat-func.robot
- mgmt-cfg-spanrx-apihc-apivat-func.robot
- mgmt-cfg-vxlan-apihc-apivat-func.robot
- mgmt-cfg-policer-apihc-func.robot
- mgmt-cfg-intvhost-apihc-apivat-func.robot
- mgmt-notif-apihcnc-func.robot
- mgmt-cfg-proxynd6-apihc-func.robot
- mgmt-cfg-pbb-apihc-apivat-func.robot
- mgmt-statepersist-apihc-func.robot
- mgmt-cfg-int-apihcnc-func.robot
- mgmt-cfg-acl-apihc-apivat-func.robot
-```
-
-#### Telemetry
-```
-telemetry/
- eth2p-ethip4-ip4base-ip4ipfixbase-func.robot
- eth2p-ethip4-ip4base-ip4ipfixscale-func.robot
- eth2p-ethip4-ip4base-spanrx-func.robot
- eth2p-ethip6-ip6base-ip6ipfixbase-func.robot
- eth2p-ethip6-ip6base-ip6ipfixscale-func.robot
- eth2p-ethip6-ip6base-spanrx-func.robot
-```
-
-#### Interface
-```
-interfaces/
- api-crud-tap-func.robot
- eth2p-ethip4-ip4base-eth-1tap-func.robot
- eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
- eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
-```
-
-
-## Keywords
-
-### L2 Robot keywords
-```
-shared/
- counters.robot
- default.robot
- interfaces.robot
- traffic.robot
- testing_path.robot
- lxc.robot
-l2/
- bridge_domain.robot
- l2_traffic.robot
- l2_xconnect.robot
- tagging.robot
-ip/
- ipv4.robot
- ipv6.robot
- snat.robot
- map.robot
-overlay/
- gre.robot
- lisp_static_adjacency.robot
- lispgpe.robot
- l2lisp.robot
- lisp_api.robot
- vxlan.robot
-vm/
- double_qemu_setup.robot
- qemu.robot
-crypto/
- ipsec.robot
-dpdk/
- default.robot
-nsh_sfc/
- default.robot
-tldk/
- TLDKUtils.robot
-honeycomb/
- policer.robot
- nat.robot
- port_mirroring.robot
- vhost_user.robot
- netconf.robot
- nsh.robot
- vxlan.robot
- dhcp.robot
- slaac.robot
- notifications.robot
- routing.robot
- access_control_lists.robot
- tap.robot
- interfaces.robot
- honeycomb.robot
- persistence.robot
- sub_interface.robot
- provider_backbone_bridge.robot
- vxlan_gpe.robot
- proxyarp.robot
- bridge_domain.robot
- lisp.robot
- l2_fib.robot
-performance/
- performance_configuration.robot
- performance_utils.robot
- performance_setup.robot
-telemetry/
- span.robot
- ipfix.robot
-features/
- policer.robot
- dhcp_client.robot
- dhcp_proxy.robot
-fds/
- default.robot
-```
-
-### L1 Python keywords
-
-No changes at this stage.