Commit 88303f53 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

End-to-end Test - Ryu-OpenFlow:

- Fixed mininet ping commands to be verbose
- Disabled TeraFlowSDN temporarily
parent cb33444c
Loading
Loading
Loading
Loading
+80 −75
Original line number Diff line number Diff line
@@ -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
@@ -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
    - >
@@ -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).
@@ -255,15 +255,15 @@ end2end_test ryu-openflow:
    - docker exec mininet ovs-ofctl dump-flows s5

    # Run end-to-end test: test no connectivity with ping
    - export TEST_H1_H2=$(curl -s http://172.254.252.10:5000/ping?source=h1&target=h2&count=3)
    - export TEST_H1_H2=$(curl http://172.254.252.10:5000/ping?source=h1&target=h2&count=3)
    - echo $TEST_H1_H2
    - echo $TEST_H1_H2 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'

    - export TEST_H1_H3=$(curl -s http://172.254.252.10:5000/ping?source=h1&target=h3&count=3)
    - export TEST_H1_H3=$(curl http://172.254.252.10:5000/ping?source=h1&target=h3&count=3)
    - echo $TEST_H1_H3
    - echo $TEST_H1_H3 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'

    - export TEST_H1_H4=$(curl -s http://172.254.252.10:5000/ping?source=h1&target=h4&count=3)
    - export TEST_H1_H4=$(curl http://172.254.252.10:5000/ping?source=h1&target=h4&count=3)
    - echo $TEST_H1_H4
    - echo $TEST_H1_H4 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'

@@ -333,16 +333,21 @@ end2end_test ryu-openflow:
    - docker exec mininet ovs-ofctl dump-flows s4 || true
    - docker exec mininet ovs-ofctl dump-flows s5 || true

    # Dump TeraFlowSDN component logs
    - source src/tests/${TEST_NAME}/deploy_specs.sh
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server || true
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server || true
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c frontend || true
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server || true
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server || true
    # Dump Ryu and Mininet logs (on after_script)
    - docker ps -a
    - docker logs mininet
    - docker logs ryu

#    # Dump TeraFlowSDN component logs
#    - source src/tests/${TEST_NAME}/deploy_specs.sh
#    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server || true
#    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server || true
#    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c frontend || true
#    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server || true
#    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server || true

    # Clean up
    - kubectl delete namespaces tfs || true
#    - kubectl delete namespaces tfs || true
    - docker ps --all --quiet | xargs --no-run-if-empty docker stop
    - docker container prune --force
    - docker ps --all --quiet | xargs --no-run-if-empty docker rm --force