Commit 661301aa authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Test Ryu-OpenFlow:

- Reactivated TeraFlowSDN deployment and tests
parent 02bc44d4
Loading
Loading
Loading
Loading
+90 −76
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).
@@ -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"
@@ -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"
@@ -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