Loading src/tests/ryu-openflow/.gitlab-ci.yml +90 −76 Original line number Diff line number Diff line Loading @@ -65,47 +65,47 @@ end2end_test ryu-openflow: - docker volume prune --all --force - docker buildx prune --force # # Check MicroK8s is ready # - microk8s status --wait-ready # - LOOP_MAX_ATTEMPTS=10 # - LOOP_COUNTER=0 # - > # while ! kubectl get pods --all-namespaces &> /dev/null; do # printf "%c" "." # sleep 1 # LOOP_COUNTER=$((LOOP_COUNTER + 1)) # if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then # echo "Max attempts reached, exiting the loop." # exit 1 # fi # done # - kubectl get pods --all-namespaces # # # Always delete Kubernetes namespaces # - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}') # - echo "K8S_NAMESPACES=${K8S_NAMESPACES}" # # - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats') # - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}" # - > # for ns in ${OLD_NATS_NAMESPACES}; do # if [[ "$ns" == nats* ]]; then # if helm3 status "$ns" &>/dev/null; then # helm3 uninstall "$ns" -n "$ns" # else # echo "Release '$ns' not found, skipping..." # fi # fi # done # - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)') # - echo "OLD_NAMESPACES=${OLD_NAMESPACES}" # - kubectl delete namespace ${OLD_NAMESPACES} || true # # # Clean-up Kubernetes Failed pods # - > # kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed # -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | # xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace # Check MicroK8s is ready - microk8s status --wait-ready - LOOP_MAX_ATTEMPTS=10 - LOOP_COUNTER=0 - > while ! kubectl get pods --all-namespaces &> /dev/null; do printf "%c" "." sleep 1 LOOP_COUNTER=$((LOOP_COUNTER + 1)) if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then echo "Max attempts reached, exiting the loop." exit 1 fi done - kubectl get pods --all-namespaces # Always delete Kubernetes namespaces - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}') - echo "K8S_NAMESPACES=${K8S_NAMESPACES}" - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats') - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}" - > for ns in ${OLD_NATS_NAMESPACES}; do if [[ "$ns" == nats* ]]; then if helm3 status "$ns" &>/dev/null; then helm3 uninstall "$ns" -n "$ns" else echo "Release '$ns' not found, skipping..." fi fi done - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)') - echo "OLD_NAMESPACES=${OLD_NAMESPACES}" - kubectl delete namespace ${OLD_NAMESPACES} || true # Clean-up Kubernetes Failed pods - > kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace # Login Docker repository - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY Loading @@ -116,21 +116,21 @@ end2end_test ryu-openflow: - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}-mininet:${IMAGE_TAG}" - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" # # Check MicroK8s is ready # - microk8s status --wait-ready # - LOOP_MAX_ATTEMPTS=10 # - LOOP_COUNTER=0 # - > # while ! kubectl get pods --all-namespaces &> /dev/null; do # printf "%c" "." # sleep 1 # LOOP_COUNTER=$((LOOP_COUNTER + 1)) # if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then # echo "Max attempts reached, exiting the loop." # exit 1 # fi # done # - kubectl get pods --all-namespaces # Check MicroK8s is ready - microk8s status --wait-ready - LOOP_MAX_ATTEMPTS=10 - LOOP_COUNTER=0 - > while ! kubectl get pods --all-namespaces &> /dev/null; do printf "%c" "." sleep 1 LOOP_COUNTER=$((LOOP_COUNTER + 1)) if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then echo "Max attempts reached, exiting the loop." exit 1 fi done - kubectl get pods --all-namespaces # Deploy Docker network - > Loading Loading @@ -206,19 +206,19 @@ end2end_test ryu-openflow: #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml # - source src/tests/${TEST_NAME}/deploy_specs.sh - source src/tests/${TEST_NAME}/deploy_specs.sh #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}" #- export TFS_SKIP_BUILD="YES" #- export TFS_IMAGE_TAG="latest" #- echo "TFS_REGISTRY_IMAGES=${CI_REGISTRY_IMAGE}" # # Deploy TeraFlowSDN # - ./deploy/crdb.sh # - ./deploy/nats.sh # - ./deploy/kafka.sh # #- ./deploy/qdb.sh # - ./deploy/tfs.sh # - ./deploy/show.sh # Deploy TeraFlowSDN - ./deploy/crdb.sh - ./deploy/nats.sh - ./deploy/kafka.sh #- ./deploy/qdb.sh - ./deploy/tfs.sh - ./deploy/show.sh ## Wait for Context to be subscribed to NATS ## WARNING: this loop is infinite if there is no subscriber (such as monitoring). Loading @@ -239,12 +239,12 @@ end2end_test ryu-openflow: # done #- kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server # # 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}-test:${IMAGE_TAG}" /var/teraflow/run-onboarding.sh # 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}-test:${IMAGE_TAG}" /var/teraflow/run-onboarding.sh # Dump configuration of the switches (OpenFlow rules configured) (before configure IETF service) - docker exec mininet bash -c "ovs-vsctl show" Loading @@ -268,12 +268,12 @@ end2end_test ryu-openflow: - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h3&count=3' | grep -E '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 # --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}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create.sh # Run end-to-end test: configure service IETF - > 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}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create.sh # Dump configuration of the switches (OpenFlow rules configured) (after configure IETF service) - docker exec mininet bash -c "ovs-vsctl show" Loading @@ -283,6 +283,20 @@ end2end_test ryu-openflow: - docker exec mininet ovs-ofctl dump-flows s4 - docker exec mininet ovs-ofctl dump-flows s5 # Run end-to-end test: test connectivity with ping - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' ## Run end-to-end test: test connectivity with ping #- export TEST1_10=$(containerlab exec --name ryu-openflow --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json) #- echo $TEST1_10 Loading Loading
src/tests/ryu-openflow/.gitlab-ci.yml +90 −76 Original line number Diff line number Diff line Loading @@ -65,47 +65,47 @@ end2end_test ryu-openflow: - docker volume prune --all --force - docker buildx prune --force # # Check MicroK8s is ready # - microk8s status --wait-ready # - LOOP_MAX_ATTEMPTS=10 # - LOOP_COUNTER=0 # - > # while ! kubectl get pods --all-namespaces &> /dev/null; do # printf "%c" "." # sleep 1 # LOOP_COUNTER=$((LOOP_COUNTER + 1)) # if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then # echo "Max attempts reached, exiting the loop." # exit 1 # fi # done # - kubectl get pods --all-namespaces # # # Always delete Kubernetes namespaces # - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}') # - echo "K8S_NAMESPACES=${K8S_NAMESPACES}" # # - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats') # - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}" # - > # for ns in ${OLD_NATS_NAMESPACES}; do # if [[ "$ns" == nats* ]]; then # if helm3 status "$ns" &>/dev/null; then # helm3 uninstall "$ns" -n "$ns" # else # echo "Release '$ns' not found, skipping..." # fi # fi # done # - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)') # - echo "OLD_NAMESPACES=${OLD_NAMESPACES}" # - kubectl delete namespace ${OLD_NAMESPACES} || true # # # Clean-up Kubernetes Failed pods # - > # kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed # -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | # xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace # Check MicroK8s is ready - microk8s status --wait-ready - LOOP_MAX_ATTEMPTS=10 - LOOP_COUNTER=0 - > while ! kubectl get pods --all-namespaces &> /dev/null; do printf "%c" "." sleep 1 LOOP_COUNTER=$((LOOP_COUNTER + 1)) if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then echo "Max attempts reached, exiting the loop." exit 1 fi done - kubectl get pods --all-namespaces # Always delete Kubernetes namespaces - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}') - echo "K8S_NAMESPACES=${K8S_NAMESPACES}" - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats') - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}" - > for ns in ${OLD_NATS_NAMESPACES}; do if [[ "$ns" == nats* ]]; then if helm3 status "$ns" &>/dev/null; then helm3 uninstall "$ns" -n "$ns" else echo "Release '$ns' not found, skipping..." fi fi done - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)') - echo "OLD_NAMESPACES=${OLD_NAMESPACES}" - kubectl delete namespace ${OLD_NAMESPACES} || true # Clean-up Kubernetes Failed pods - > kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace # Login Docker repository - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY Loading @@ -116,21 +116,21 @@ end2end_test ryu-openflow: - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}-mininet:${IMAGE_TAG}" - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" # # Check MicroK8s is ready # - microk8s status --wait-ready # - LOOP_MAX_ATTEMPTS=10 # - LOOP_COUNTER=0 # - > # while ! kubectl get pods --all-namespaces &> /dev/null; do # printf "%c" "." # sleep 1 # LOOP_COUNTER=$((LOOP_COUNTER + 1)) # if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then # echo "Max attempts reached, exiting the loop." # exit 1 # fi # done # - kubectl get pods --all-namespaces # Check MicroK8s is ready - microk8s status --wait-ready - LOOP_MAX_ATTEMPTS=10 - LOOP_COUNTER=0 - > while ! kubectl get pods --all-namespaces &> /dev/null; do printf "%c" "." sleep 1 LOOP_COUNTER=$((LOOP_COUNTER + 1)) if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then echo "Max attempts reached, exiting the loop." exit 1 fi done - kubectl get pods --all-namespaces # Deploy Docker network - > Loading Loading @@ -206,19 +206,19 @@ end2end_test ryu-openflow: #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml # - source src/tests/${TEST_NAME}/deploy_specs.sh - source src/tests/${TEST_NAME}/deploy_specs.sh #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}" #- export TFS_SKIP_BUILD="YES" #- export TFS_IMAGE_TAG="latest" #- echo "TFS_REGISTRY_IMAGES=${CI_REGISTRY_IMAGE}" # # Deploy TeraFlowSDN # - ./deploy/crdb.sh # - ./deploy/nats.sh # - ./deploy/kafka.sh # #- ./deploy/qdb.sh # - ./deploy/tfs.sh # - ./deploy/show.sh # Deploy TeraFlowSDN - ./deploy/crdb.sh - ./deploy/nats.sh - ./deploy/kafka.sh #- ./deploy/qdb.sh - ./deploy/tfs.sh - ./deploy/show.sh ## Wait for Context to be subscribed to NATS ## WARNING: this loop is infinite if there is no subscriber (such as monitoring). Loading @@ -239,12 +239,12 @@ end2end_test ryu-openflow: # done #- kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server # # 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}-test:${IMAGE_TAG}" /var/teraflow/run-onboarding.sh # 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}-test:${IMAGE_TAG}" /var/teraflow/run-onboarding.sh # Dump configuration of the switches (OpenFlow rules configured) (before configure IETF service) - docker exec mininet bash -c "ovs-vsctl show" Loading @@ -268,12 +268,12 @@ end2end_test ryu-openflow: - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h3&count=3' | grep -E '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 # --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}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create.sh # Run end-to-end test: configure service IETF - > 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}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create.sh # Dump configuration of the switches (OpenFlow rules configured) (after configure IETF service) - docker exec mininet bash -c "ovs-vsctl show" Loading @@ -283,6 +283,20 @@ end2end_test ryu-openflow: - docker exec mininet ovs-ofctl dump-flows s4 - docker exec mininet ovs-ofctl dump-flows s5 # Run end-to-end test: test connectivity with ping - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h1&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h2&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h3&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h1&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h2&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' - curl -s 'http://172.254.252.11:5000/ping?source=h4&target=h3&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss' ## Run end-to-end test: test connectivity with ping #- export TEST1_10=$(containerlab exec --name ryu-openflow --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json) #- echo $TEST1_10 Loading