Loading src/tests/osm_end2end/.gitlab-ci.yml +62 −61 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ build osm_end2end: - changes: - src/common/**/*.py - proto/*.proto - src/tests/${TEST_NAME}/**/*.{py,in,sh,yml} - src/tests/${TEST_NAME}/**/*.{py,in,sh,yml,json,cfg} - src/tests/${TEST_NAME}/Dockerfile - .gitlab-ci.yml Loading Loading @@ -184,84 +184,85 @@ end2end_test osm_end2end: - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server - | dump_router_configs() { local LABEL=$1 echo "==== ${LABEL} ====" 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\"" } 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} echo "PASSED ${SRC}->${DST_IP}" return 0 fi echo "$OUTPUT" | grep -E "$PATTERN" echo "FAILED ${SRC}->${DST_IP}" return 1 } # Run end-to-end test: onboard scenario - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --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\"" assert_no_connectivity() { local SRC=$1 LOCAL_IP=$2 LOCAL_GW=$3 REMOTE_GW=$4 REMOTE_IP=$5 ping_check "${SRC}" "${LOCAL_IP}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${LOCAL_GW}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" ping_check "${SRC}" "${REMOTE_GW}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" ping_check "${SRC}" "${REMOTE_IP}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" } # 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.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" assert_connectivity() { local SRC=$1 LOCAL_IP=$2 LOCAL_GW=$3 REMOTE_GW=$4 REMOTE_IP=$5 ping_check "${SRC}" "${LOCAL_IP}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${LOCAL_GW}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${REMOTE_GW}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${REMOTE_IP}" "3 packets transmitted, 3 received, 0% packet loss" } # Run end-to-end test: configure OSM service - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-osm-service-create.sh run_osm_test() { local ACTION=$1 VARIANT=$2 docker run -t --rm --name "${TEST_NAME}-${VARIANT}-${ACTION}" --network=host \ --env OSM_SERVICE_VARIANT="${VARIANT}" \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" \ "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" "/var/teraflow/run-osm-service-${ACTION}.sh" } # Give time to routers for being configured and stabilized - sleep 60 run_variant_cycle() { local VARIANT=$1 SRC=$2 LOCAL_IP=$3 LOCAL_GW=$4 REMOTE_GW=$5 REMOTE_IP=$6 # Dump configuration of the routers (after configure OSM 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\"" echo "==== Starting ${VARIANT} OSM service cycle ====" assert_no_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" # Run end-to-end test: test connectivity with ping - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.1.1" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 3 received, 0% packet loss" run_osm_test create "${VARIANT}" sleep 60 dump_router_configs "after configuring ${VARIANT} OSM service" assert_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" # Run end-to-end test: deconfigure OSM service - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-osm-service-remove.sh run_osm_test remove "${VARIANT}" sleep 60 dump_router_configs "after removing ${VARIANT} OSM service" assert_no_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" } # Give time to routers for being configured and stabilized - sleep 60 # Run end-to-end test: onboard scenario docker run -t --rm --name ${TEST_NAME}-onboarding --network=host \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --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 deconfigure OSM 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\"" dump_router_configs "after onboarding scenario" # 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.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" # Run end-to-end test: first untagged connectivity, then tagged connectivity run_variant_cycle "untagged" "dc1_untagged" "172.16.1.10" "172.16.1.1" "172.16.3.1" "172.16.3.10" run_variant_cycle "tagged" "dc3_tagged" "172.17.1.10" "172.17.1.1" "172.17.3.1" "172.17.3.10" # Run end-to-end test: cleanup scenario - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" docker run -t --rm --name ${TEST_NAME}-cleanup --network=host \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" \ $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-cleanup.sh after_script: Loading src/tests/osm_end2end/README.md +22 −8 Original line number Diff line number Diff line Loading @@ -56,23 +56,37 @@ docker exec -it clab-osm_end2end-r3 Cli ## Configure ContainerLab clients ```bash docker exec -it clab-osm_end2end-dc1 bash docker exec -it clab-osm_end2end-dc1_untagged bash ip link set address 00:c1:ab:00:01:0b dev eth1 ip link set eth1 up ip address add 172.16.1.10/24 dev eth1 ip route add 172.16.3.0/24 via 172.16.1.1 ping 172.16.3.10 docker exec -it clab-osm_end2end-dc2_untagged bash ip link set address 00:c1:ab:00:02:0b dev eth1 ip link set eth1 up ip address add 172.16.3.10/24 dev eth1 ip route add 172.16.1.0/24 via 172.16.3.1 ping 172.16.1.10 docker exec -it clab-osm_end2end-dc3_tagged bash ip link set address 00:c1:ab:00:01:0a dev eth1 ip link set eth1 up ip link add link eth1 name eth1.125 type vlan id 125 ip address add 172.16.1.10/24 dev eth1.125 ip address add 172.17.1.10/24 dev eth1.125 ip link set eth1.125 up ip route add 172.16.2.0/24 via 172.16.1.1 ping 172.16.2.10 ip route add 172.17.3.0/24 via 172.17.1.1 ping 172.17.3.10 docker exec -it clab-osm_end2end-dc2 bash docker exec -it clab-osm_end2end-dc4_tagged bash ip link set address 00:c1:ab:00:02:0a dev eth1 ip link set eth1 up ip link add link eth1 name eth1.125 type vlan id 125 ip address add 172.16.2.10/24 dev eth1.125 ip address add 172.17.3.10/24 dev eth1.125 ip link set eth1.125 up ip route add 172.16.1.0/24 via 172.16.2.1 ping 172.16.1.10 ip route add 172.17.1.0/24 via 172.17.3.1 ping 172.17.1.10 ``` ## Install gNMIc Loading src/tests/osm_end2end/clab/osm_end2end.clab.yml +29 −9 Original line number Diff line number Diff line Loading @@ -53,30 +53,50 @@ topology: mgmt-ipv4: 172.20.20.103 startup-config: r3-startup.cfg dc1: dc1_untagged: kind: linux mgmt-ipv4: 172.20.20.201 exec: - ip link set address 00:c1:ab:00:01:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.16.1.10/24 dev eth1.125 - ip link set eth1.125 up - ip address add 172.16.1.10/24 dev eth1 - ip route add 172.16.3.0/24 via 172.16.1.1 dc2: dc2_untagged: kind: linux mgmt-ipv4: 172.20.20.202 exec: - ip link set address 00:c1:ab:00:02:0a dev eth1 - ip link set eth1 up - ip address add 172.16.3.10/24 dev eth1 - ip route add 172.16.1.0/24 via 172.16.3.1 dc3_tagged: kind: linux mgmt-ipv4: 172.20.20.203 exec: - ip link set address 00:c1:ab:00:03:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.16.3.10/24 dev eth1.125 - ip address add 172.17.1.10/24 dev eth1.125 - ip link set eth1.125 up - ip route add 172.16.1.0/24 via 172.16.3.1 - ip route add 172.17.3.0/24 via 172.17.1.1 dc4_tagged: kind: linux mgmt-ipv4: 172.20.20.204 exec: - ip link set address 00:c1:ab:00:04:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.17.3.10/24 dev eth1.125 - ip link set eth1.125 up - ip route add 172.17.1.0/24 via 172.17.3.1 links: - endpoints: ["r1:eth2", "r2:eth1"] - endpoints: ["r2:eth3", "r3:eth2"] - endpoints: ["r1:eth10", "dc1:eth1"] - endpoints: ["r3:eth10", "dc2:eth1"] - endpoints: ["r1:eth10", "dc1_untagged:eth1"] - endpoints: ["r3:eth10", "dc2_untagged:eth1"] - endpoints: ["r1:eth11", "dc3_tagged:eth1"] - endpoints: ["r3:eth11", "dc4_tagged:eth1"] src/tests/osm_end2end/clab/r1-startup.cfg +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ interface Ethernet2 ! interface Ethernet10 ! interface Ethernet11 ! interface Management0 ip address 172.20.20.101/24 ! Loading src/tests/osm_end2end/clab/r3-startup.cfg +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ interface Ethernet2 ! interface Ethernet10 ! interface Ethernet11 ! interface Management0 ip address 172.20.20.103/24 ! Loading Loading
src/tests/osm_end2end/.gitlab-ci.yml +62 −61 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ build osm_end2end: - changes: - src/common/**/*.py - proto/*.proto - src/tests/${TEST_NAME}/**/*.{py,in,sh,yml} - src/tests/${TEST_NAME}/**/*.{py,in,sh,yml,json,cfg} - src/tests/${TEST_NAME}/Dockerfile - .gitlab-ci.yml Loading Loading @@ -184,84 +184,85 @@ end2end_test osm_end2end: - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server - | dump_router_configs() { local LABEL=$1 echo "==== ${LABEL} ====" 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\"" } 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} echo "PASSED ${SRC}->${DST_IP}" return 0 fi echo "$OUTPUT" | grep -E "$PATTERN" echo "FAILED ${SRC}->${DST_IP}" return 1 } # Run end-to-end test: onboard scenario - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --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\"" assert_no_connectivity() { local SRC=$1 LOCAL_IP=$2 LOCAL_GW=$3 REMOTE_GW=$4 REMOTE_IP=$5 ping_check "${SRC}" "${LOCAL_IP}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${LOCAL_GW}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" ping_check "${SRC}" "${REMOTE_GW}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" ping_check "${SRC}" "${REMOTE_IP}" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" } # 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.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" assert_connectivity() { local SRC=$1 LOCAL_IP=$2 LOCAL_GW=$3 REMOTE_GW=$4 REMOTE_IP=$5 ping_check "${SRC}" "${LOCAL_IP}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${LOCAL_GW}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${REMOTE_GW}" "3 packets transmitted, 3 received, 0% packet loss" ping_check "${SRC}" "${REMOTE_IP}" "3 packets transmitted, 3 received, 0% packet loss" } # Run end-to-end test: configure OSM service - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-osm-service-create.sh run_osm_test() { local ACTION=$1 VARIANT=$2 docker run -t --rm --name "${TEST_NAME}-${VARIANT}-${ACTION}" --network=host \ --env OSM_SERVICE_VARIANT="${VARIANT}" \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" \ "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" "/var/teraflow/run-osm-service-${ACTION}.sh" } # Give time to routers for being configured and stabilized - sleep 60 run_variant_cycle() { local VARIANT=$1 SRC=$2 LOCAL_IP=$3 LOCAL_GW=$4 REMOTE_GW=$5 REMOTE_IP=$6 # Dump configuration of the routers (after configure OSM 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\"" echo "==== Starting ${VARIANT} OSM service cycle ====" assert_no_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" # Run end-to-end test: test connectivity with ping - ping_check "dc1" "172.16.1.10" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.1.1" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 3 received, 0% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 3 received, 0% packet loss" run_osm_test create "${VARIANT}" sleep 60 dump_router_configs "after configuring ${VARIANT} OSM service" assert_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" # Run end-to-end test: deconfigure OSM service - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-osm-service-remove.sh run_osm_test remove "${VARIANT}" sleep 60 dump_router_configs "after removing ${VARIANT} OSM service" assert_no_connectivity "${SRC}" "${LOCAL_IP}" "${LOCAL_GW}" "${REMOTE_GW}" "${REMOTE_IP}" } # Give time to routers for being configured and stabilized - sleep 60 # Run end-to-end test: onboard scenario docker run -t --rm --name ${TEST_NAME}-onboarding --network=host \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --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 deconfigure OSM 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\"" dump_router_configs "after onboarding scenario" # 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.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.1" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" - ping_check "dc1" "172.16.3.10" "3 packets transmitted, 0 received,( [\+]{0,1}[0-9]+ error[s]{0,1},)? 100% packet loss" # Run end-to-end test: first untagged connectivity, then tagged connectivity run_variant_cycle "untagged" "dc1_untagged" "172.16.1.10" "172.16.1.1" "172.16.3.1" "172.16.3.10" run_variant_cycle "tagged" "dc3_tagged" "172.17.1.10" "172.17.1.1" "172.17.3.1" "172.17.3.10" # Run end-to-end test: cleanup scenario - > docker run -t --rm --name ${TEST_NAME} --network=host --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" docker run -t --rm --name ${TEST_NAME}-cleanup --network=host \ --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" \ --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" \ $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-cleanup.sh after_script: Loading
src/tests/osm_end2end/README.md +22 −8 Original line number Diff line number Diff line Loading @@ -56,23 +56,37 @@ docker exec -it clab-osm_end2end-r3 Cli ## Configure ContainerLab clients ```bash docker exec -it clab-osm_end2end-dc1 bash docker exec -it clab-osm_end2end-dc1_untagged bash ip link set address 00:c1:ab:00:01:0b dev eth1 ip link set eth1 up ip address add 172.16.1.10/24 dev eth1 ip route add 172.16.3.0/24 via 172.16.1.1 ping 172.16.3.10 docker exec -it clab-osm_end2end-dc2_untagged bash ip link set address 00:c1:ab:00:02:0b dev eth1 ip link set eth1 up ip address add 172.16.3.10/24 dev eth1 ip route add 172.16.1.0/24 via 172.16.3.1 ping 172.16.1.10 docker exec -it clab-osm_end2end-dc3_tagged bash ip link set address 00:c1:ab:00:01:0a dev eth1 ip link set eth1 up ip link add link eth1 name eth1.125 type vlan id 125 ip address add 172.16.1.10/24 dev eth1.125 ip address add 172.17.1.10/24 dev eth1.125 ip link set eth1.125 up ip route add 172.16.2.0/24 via 172.16.1.1 ping 172.16.2.10 ip route add 172.17.3.0/24 via 172.17.1.1 ping 172.17.3.10 docker exec -it clab-osm_end2end-dc2 bash docker exec -it clab-osm_end2end-dc4_tagged bash ip link set address 00:c1:ab:00:02:0a dev eth1 ip link set eth1 up ip link add link eth1 name eth1.125 type vlan id 125 ip address add 172.16.2.10/24 dev eth1.125 ip address add 172.17.3.10/24 dev eth1.125 ip link set eth1.125 up ip route add 172.16.1.0/24 via 172.16.2.1 ping 172.16.1.10 ip route add 172.17.1.0/24 via 172.17.3.1 ping 172.17.1.10 ``` ## Install gNMIc Loading
src/tests/osm_end2end/clab/osm_end2end.clab.yml +29 −9 Original line number Diff line number Diff line Loading @@ -53,30 +53,50 @@ topology: mgmt-ipv4: 172.20.20.103 startup-config: r3-startup.cfg dc1: dc1_untagged: kind: linux mgmt-ipv4: 172.20.20.201 exec: - ip link set address 00:c1:ab:00:01:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.16.1.10/24 dev eth1.125 - ip link set eth1.125 up - ip address add 172.16.1.10/24 dev eth1 - ip route add 172.16.3.0/24 via 172.16.1.1 dc2: dc2_untagged: kind: linux mgmt-ipv4: 172.20.20.202 exec: - ip link set address 00:c1:ab:00:02:0a dev eth1 - ip link set eth1 up - ip address add 172.16.3.10/24 dev eth1 - ip route add 172.16.1.0/24 via 172.16.3.1 dc3_tagged: kind: linux mgmt-ipv4: 172.20.20.203 exec: - ip link set address 00:c1:ab:00:03:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.16.3.10/24 dev eth1.125 - ip address add 172.17.1.10/24 dev eth1.125 - ip link set eth1.125 up - ip route add 172.16.1.0/24 via 172.16.3.1 - ip route add 172.17.3.0/24 via 172.17.1.1 dc4_tagged: kind: linux mgmt-ipv4: 172.20.20.204 exec: - ip link set address 00:c1:ab:00:04:0a dev eth1 - ip link set eth1 up - ip link add link eth1 name eth1.125 type vlan id 125 - ip address add 172.17.3.10/24 dev eth1.125 - ip link set eth1.125 up - ip route add 172.17.1.0/24 via 172.17.3.1 links: - endpoints: ["r1:eth2", "r2:eth1"] - endpoints: ["r2:eth3", "r3:eth2"] - endpoints: ["r1:eth10", "dc1:eth1"] - endpoints: ["r3:eth10", "dc2:eth1"] - endpoints: ["r1:eth10", "dc1_untagged:eth1"] - endpoints: ["r3:eth10", "dc2_untagged:eth1"] - endpoints: ["r1:eth11", "dc3_tagged:eth1"] - endpoints: ["r3:eth11", "dc4_tagged:eth1"]
src/tests/osm_end2end/clab/r1-startup.cfg +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ interface Ethernet2 ! interface Ethernet10 ! interface Ethernet11 ! interface Management0 ip address 172.20.20.101/24 ! Loading
src/tests/osm_end2end/clab/r3-startup.cfg +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ interface Ethernet2 ! interface Ethernet10 ! interface Ethernet11 ! interface Management0 ip address 172.20.20.103/24 ! Loading