Commit 49ae9c6b authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Test Ryu-OpenFlow:

- Fixed skeleton of gitlab-ci
parent 98d9fe53
Loading
Loading
Loading
Loading
+99 −47
Original line number Original line Diff line number Diff line
@@ -246,7 +246,7 @@ end2end_test ryu-openflow:
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-onboarding.sh
      "${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)
    # Dump configuration of the switches (OpenFlow rules configured) (before configure IETF L3VPN services)
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s2
    - docker exec mininet ovs-ofctl dump-flows s2
@@ -268,14 +268,14 @@ 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=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'
    - 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
    # Run end-to-end test: configure IETF L3VPN service between h1-h3
    - >
    - >
      docker run -t --rm --name ${TEST_NAME} --network=host 
      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/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh"
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create.sh
      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create-h1-h3.sh


    # Dump configuration of the switches (OpenFlow rules configured) (after configure IETF service)
    # Dump configuration of the switches (OpenFlow rules configured) (after configure IETF L3VPN service between h1-h3)
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s2
    - docker exec mininet ovs-ofctl dump-flows s2
@@ -283,7 +283,7 @@ end2end_test ryu-openflow:
    - docker exec mininet ovs-ofctl dump-flows s4
    - docker exec mininet ovs-ofctl dump-flows s4
    - docker exec mininet ovs-ofctl dump-flows s5
    - docker exec mininet ovs-ofctl dump-flows s5


    # Run end-to-end test: test connectivity with ping
    # Run end-to-end test: test connectivity with ping (h1-h3 should work, rest should not work)
    - 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=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=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=h1&target=h4&count=3' | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
@@ -297,34 +297,14 @@ 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=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'
    - 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
    # Run end-to-end test: configure IETF L3VPN service between h2-h4
    #- 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
      docker run -t --rm --name ${TEST_NAME} --network=host 
    #- echo $TEST1_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
      --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh"
    #- export TEST1_1=$(containerlab exec --name ryu-openflow --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.1' --format json)
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
    #- echo $TEST1_1
      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-service-ietf-create-h2-h4.sh
    #- echo $TEST1_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
    #- export TEST2_1=$(containerlab exec --name ryu-openflow --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 ryu-openflow --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 ryu-openflow --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 ryu-openflow --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'

#    # Run end-to-end test: deconfigure 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-remove.sh


    # Dump configuration of the switches (OpenFlow rules configured) (after deconfigure IETF service)
    # Dump configuration of the switches (OpenFlow rules configured) (after configure IETF L3VPN service between h2-h4)
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s2
    - docker exec mininet ovs-ofctl dump-flows s2
@@ -332,12 +312,84 @@ end2end_test ryu-openflow:
    - docker exec mininet ovs-ofctl dump-flows s4
    - docker exec mininet ovs-ofctl dump-flows s4
    - docker exec mininet ovs-ofctl dump-flows s5
    - docker exec mininet ovs-ofctl dump-flows s5


#    # Run end-to-end test: cleanup scenario
    # Run end-to-end test: test connectivity with ping (h1-h3 should work, h2-h4 should work, rest should not work)
#    - >
    - 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'
#      docker run -t --rm --name ${TEST_NAME} --network=host 
    - 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'
#      --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh"
    - 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'
#      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
    - 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'
#      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-cleanup.sh
    - 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: deconfigure IETF L3VPN service h1-h3
    - >
      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-remove-h1-h3.sh

    # Dump configuration of the switches (OpenFlow rules configured) (after deconfigure IETF L3VPN service between h1-h3)
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s2
    - docker exec mininet ovs-ofctl dump-flows s3
    - 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 (h2-h4 should work, rest should not work)
    - 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: deconfigure IETF L3VPN service h2-h4
    - >
      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-remove-h2-h4.sh

    # Dump configuration of the switches (OpenFlow rules configured) (after deconfigure IETF L3VPN service between h2-h4)
    - docker exec mininet bash -c "ovs-vsctl show"
    - docker exec mininet ovs-ofctl dump-flows s1
    - docker exec mininet ovs-ofctl dump-flows s2
    - docker exec mininet ovs-ofctl dump-flows s3
    - docker exec mininet ovs-ofctl dump-flows s4
    - docker exec mininet ovs-ofctl dump-flows s5

    # Run end-to-end test: test no 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: 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"
      "${CI_REGISTRY_IMAGE}/${TEST_NAME}-test:${IMAGE_TAG}" /var/teraflow/run-cleanup.sh


  after_script:
  after_script:
    # Dump configuration of the switches (OpenFlow rules configured) (on after_script)
    # Dump configuration of the switches (OpenFlow rules configured) (on after_script)
@@ -353,16 +405,16 @@ end2end_test ryu-openflow:
    - docker logs mininet
    - docker logs mininet
    - docker logs ryu
    - docker logs ryu


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


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