Commit 71ea0da4 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

End-to-end test - L2 VPN gNMI OpenConfig:

- Removed VLAN 100
- Updated IETF L2 VPN to use Mock OSM
- Upgraded ping_checks in CI/CD pipeline test
parent 63f109b4
Loading
Loading
Loading
Loading
+40 −36
Original line number Diff line number Diff line
@@ -183,6 +183,20 @@ end2end_test l2_vpn_gnmi_oc:
    #  done
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server

    - |
      ping_check() {
        local SRC=$1 DST_IP=$2 PATTERN=$3
        local OUTPUT
        OUTPUT=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=${SRC} --cmd "ping -n -c3 ${DST_IP}" --format json)
        echo "$OUTPUT"
        if echo "$OUTPUT" | grep -E "$PATTERN" >/dev/null; then
          echo "PASSED ${SRC}->${DST_IP}
        else
          echo "FAILED ${SRC}->${DST_IP}
        fi
        echo "$OUTPUT" | grep -E "$PATTERN"
      }

    # Run end-to-end test: onboard scenario
    - >
      docker run -t --rm --name ${TEST_NAME} --network=host 
@@ -190,6 +204,16 @@ end2end_test l2_vpn_gnmi_oc:
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-onboarding.sh

    # Dump configuration of the routers (after configure TFS service)
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""

    # Run end-to-end test: test no connectivity with ping
    - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.20" "3 packets transmitted, 0 received, 100% packet loss"
    - ping_check "dc1" "172.16.1.30" "3 packets transmitted, 0 received, 100% packet loss"

    # Run end-to-end test: configure service TFS
    - >
      docker run -t --rm --name ${TEST_NAME} --network=host 
@@ -203,24 +227,9 @@ end2end_test l2_vpn_gnmi_oc:
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""

    # Run end-to-end test: test connectivity with ping
    - export TEST1_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json)
    - echo $TEST1_10
    - echo $TEST1_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST1_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.1' --format json)
    - echo $TEST1_1
    - echo $TEST1_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST2_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.1' --format json)
    - echo $TEST2_1
    - echo $TEST2_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST2_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.10' --format json)
    - echo $TEST2_10
    - echo $TEST2_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST3_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.1' --format json)
    - echo $TEST3_1
    - echo $TEST3_1 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
    - export TEST3_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.10' --format json)
    - echo $TEST3_10
    - echo $TEST3_10 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
    - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.20" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.30" "3 packets transmitted, 0 received, 100% packet loss"

    # Run end-to-end test: deconfigure service TFS
    - >
@@ -234,6 +243,11 @@ end2end_test l2_vpn_gnmi_oc:
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""

    # Run end-to-end test: test no connectivity with ping
    - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.20" "3 packets transmitted, 0 received, 100% packet loss"
    - ping_check "dc1" "172.16.1.30" "3 packets transmitted, 0 received, 100% packet loss"

    # Run end-to-end test: configure service IETF
    - >
      docker run -t --rm --name ${TEST_NAME} --network=host
@@ -247,24 +261,9 @@ end2end_test l2_vpn_gnmi_oc:
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""

    # Run end-to-end test: test connectivity with ping
    - export TEST1_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json)
    - echo $TEST1_10
    - echo $TEST1_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST1_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.1' --format json)
    - echo $TEST1_1
    - echo $TEST1_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST2_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.1' --format json)
    - echo $TEST2_1
    - echo $TEST2_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST2_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.10' --format json)
    - echo $TEST2_10
    - echo $TEST2_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    - export TEST3_1=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.1' --format json)
    - echo $TEST3_1
    - echo $TEST3_1 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
    - export TEST3_10=$(containerlab exec --name ${TEST_NAME} --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.10' --format json)
    - echo $TEST3_10
    - echo $TEST3_10 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
    - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.20" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.30" "3 packets transmitted, 0 received, 100% packet loss"

    # Run end-to-end test: deconfigure service IETF
    - >
@@ -278,6 +277,11 @@ end2end_test l2_vpn_gnmi_oc:
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
    - containerlab exec --name ${TEST_NAME} --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""

    # Run end-to-end test: test no connectivity with ping
    - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss"
    - ping_check "dc1" "172.16.1.20" "3 packets transmitted, 0 received, 100% packet loss"
    - ping_check "dc1" "172.16.1.30" "3 packets transmitted, 0 received, 100% packet loss"

    # Run end-to-end test: cleanup scenario
    - >
      docker run -t --rm --name ${TEST_NAME} --network=host 
+0 −6
Original line number Diff line number Diff line
@@ -57,9 +57,6 @@ topology:
      mgmt-ipv4: 172.20.20.201
      exec:
        - ip link set address 00:c1:ab:00:01:0a dev eth1
        - ip link add link eth1 name eth1.100 type vlan id 100
        - ip addr add 172.16.1.10/24 dev eth1.100
        - ip link set eth1.100 up
        - ip link add link eth1 name eth1.125 type vlan id 125
        - ip addr add 172.16.2.10/24 dev eth1.125
        - ip link set eth1.125 up
@@ -69,9 +66,6 @@ topology:
      mgmt-ipv4: 172.20.20.202
      exec:
        - ip link set address 00:c1:ab:00:01:14 dev eth1
        - ip link add link eth1 name eth1.100 type vlan id 100
        - ip addr add 172.16.1.20/24 dev eth1.100
        - ip link set eth1.100 up
        - ip link add link eth1 name eth1.125 type vlan id 125
        - ip addr add 172.16.2.20/24 dev eth1.125
        - ip link set eth1.125 up
+0 −63
Original line number Diff line number Diff line
{
    "ietf-l2vpn-svc:l2vpn-svc": {
        "vpn-services": {"vpn-service": [{"vpn-id": "ietf-l2vpn-svc"}]},
        "sites": {
            "site": [
                {
                    "site-id": "site_DC1",
                    "management": {"type": "ietf-l2vpn-svc:provider-managed"},
                    "locations": {"location": [{"location-id": "DC1"}]},
                    "devices": {"device": [{"device-id": "dc1", "location": "DC1"}]},
                    "site-network-accesses": {
                        "site-network-access": [
                            {
                                "site-network-access-id": "eth1",
                                "site-network-access-type": "ietf-l2vpn-svc:multipoint",
                                "device-reference": "dc1",
                                "vpn-attachment": {"vpn-id": "ietf-l2vpn-svc", "site-role": "ietf-l2vpn-svc:spoke-role"},
                                "service": {
                                    "svc-mtu": 1500,
                                    "svc-input-bandwidth": 1000000000,
                                    "svc-output-bandwidth": 1000000000,
                                    "qos": {"qos-profile": {"classes": {"class": [{
                                        "class-id": "qos-realtime",
                                        "direction": "ietf-l2vpn-svc:both",
                                        "latency": {"latency-boundary": 10},
                                        "bandwidth": {"guaranteed-bw-percent": 100}
                                    }]}}}
                                }
                            }
                        ]
                    }
                },
                {
                    "site-id": "site_DC2",
                    "management": {"type": "ietf-l2vpn-svc:provider-managed"},
                    "locations": {"location": [{"location-id": "DC2"}]},
                    "devices": {"device": [{"device-id": "dc2", "location": "DC2"}]},
                    "site-network-accesses": {
                        "site-network-access": [
                            {
                                "site-network-access-id": "eth1",
                                "site-network-access-type": "ietf-l2vpn-svc:multipoint",
                                "device-reference": "dc2",
                                "vpn-attachment": {"vpn-id": "ietf-l2vpn-svc", "site-role": "ietf-l2vpn-svc:hub-role"},
                                "service": {
                                    "svc-mtu": 1500,
                                    "svc-input-bandwidth": 1000000000,
                                    "svc-output-bandwidth": 1000000000,
                                    "qos": {"qos-profile": {"classes": {"class": [{
                                        "class-id": "qos-realtime",
                                        "direction": "ietf-l2vpn-svc:both",
                                        "latency": {"latency-boundary": 10},
                                        "bandwidth": {"guaranteed-bw-percent": 100}
                                    }]}}}
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}
+0 −21
Original line number Diff line number Diff line
{
    "services": [
        {
            "service_id": {
                "context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "tfs-l2vpn-svc-100"}
            },
            "service_type": "SERVICETYPE_L2NM",
            "service_status": {"service_status": "SERVICESTATUS_PLANNED"},
            "service_endpoint_ids": [
                {"device_id": {"device_uuid": {"uuid": "dc1"}}, "endpoint_uuid": {"uuid": "int"}},
                {"device_id": {"device_uuid": {"uuid": "dc2"}}, "endpoint_uuid": {"uuid": "int"}}
            ],
            "service_config": {"config_rules": [
                {"action": "CONFIGACTION_SET", "custom": {
                    "resource_key": "/settings",
                    "resource_value": {"vlan_id": 100, "access_vlan_tagged": true}
                }}
            ]}
        }
    ]
}
+0 −21
Original line number Diff line number Diff line
{
    "services": [
        {
            "service_id": {
                "context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "tfs-l2vpn-svc-100"}
            },
            "service_type": "SERVICETYPE_L2NM",
            "service_status": {"service_status": "SERVICESTATUS_PLANNED"},
            "service_endpoint_ids": [
                {"device_id": {"device_uuid": {"uuid": "dc1"}}, "endpoint_uuid": {"uuid": "int"}},
                {"device_id": {"device_uuid": {"uuid": "dc2"}}, "endpoint_uuid": {"uuid": "int"}}
            ],
            "service_config": {"config_rules": [
                {"action": "CONFIGACTION_SET", "custom": {
                    "resource_key": "/settings",
                    "resource_value": {"vlan_id": 100}
                }}
            ]}
        }
    ]
}
Loading