# 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.