From 17681a44810710acdfc252834478f8624b45183e Mon Sep 17 00:00:00 2001 From: gifrerenom <lluis.gifre@cttc.es> Date: Wed, 14 May 2025 15:36:17 +0000 Subject: [PATCH] Tests - Ryu-OpenFlow integration test: - Testing CI/CD pipeline - Deactivated CI/CD tests, to be composed later on --- .gitlab-ci.yml | 66 +++++++++++------------ my_deploy.sh | 0 src/tests/.gitlab-ci.yml | 24 ++++----- src/tests/ryu-openflow/.gitlab-ci.yml | 22 ++++++-- src/tests/ryu-openflow/Mininet.Dockerfile | 27 ++++++++++ src/tests/ryu-openflow/Ryu.Dockerfile | 4 +- 6 files changed, 92 insertions(+), 51 deletions(-) mode change 100755 => 100644 my_deploy.sh create mode 100644 src/tests/ryu-openflow/Mininet.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a619e6514..904228d4d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,39 +21,39 @@ stages: # include the individual .gitlab-ci.yml of each micro-service and tests include: -# #- local: '/manifests/.gitlab-ci.yml' -# - local: '/src/monitoring/.gitlab-ci.yml' -# - local: '/src/nbi/.gitlab-ci.yml' -# - local: '/src/context/.gitlab-ci.yml' -# - local: '/src/device/.gitlab-ci.yml' -# - local: '/src/service/.gitlab-ci.yml' -# - local: '/src/dbscanserving/.gitlab-ci.yml' -# - local: '/src/opticalattackmitigator/.gitlab-ci.yml' -# - local: '/src/opticalattackdetector/.gitlab-ci.yml' -# - local: '/src/opticalattackmanager/.gitlab-ci.yml' -# - local: '/src/opticalcontroller/.gitlab-ci.yml' -# - local: '/src/ztp/.gitlab-ci.yml' -# - local: '/src/policy/.gitlab-ci.yml' -# - local: '/src/automation/.gitlab-ci.yml' -# - local: '/src/forecaster/.gitlab-ci.yml' -# #- local: '/src/webui/.gitlab-ci.yml' -# #- local: '/src/l3_distributedattackdetector/.gitlab-ci.yml' -# #- local: '/src/l3_centralizedattackdetector/.gitlab-ci.yml' -# #- local: '/src/l3_attackmitigator/.gitlab-ci.yml' -# - local: '/src/slice/.gitlab-ci.yml' -# #- local: '/src/interdomain/.gitlab-ci.yml' -# - local: '/src/pathcomp/.gitlab-ci.yml' -# #- local: '/src/dlt/.gitlab-ci.yml' -# - local: '/src/load_generator/.gitlab-ci.yml' -# - local: '/src/bgpls_speaker/.gitlab-ci.yml' -# - local: '/src/kpi_manager/.gitlab-ci.yml' -# - local: '/src/kpi_value_api/.gitlab-ci.yml' -# #- local: '/src/kpi_value_writer/.gitlab-ci.yml' -# #- local: '/src/telemetry/.gitlab-ci.yml' -# - local: '/src/analytics/.gitlab-ci.yml' -# - local: '/src/qos_profile/.gitlab-ci.yml' -# - local: '/src/vnt_manager/.gitlab-ci.yml' -# - local: '/src/e2e_orchestrator/.gitlab-ci.yml' + #- local: '/manifests/.gitlab-ci.yml' + - local: '/src/monitoring/.gitlab-ci.yml' + - local: '/src/nbi/.gitlab-ci.yml' + - local: '/src/context/.gitlab-ci.yml' + - local: '/src/device/.gitlab-ci.yml' + - local: '/src/service/.gitlab-ci.yml' + - local: '/src/dbscanserving/.gitlab-ci.yml' + - local: '/src/opticalattackmitigator/.gitlab-ci.yml' + - local: '/src/opticalattackdetector/.gitlab-ci.yml' + - local: '/src/opticalattackmanager/.gitlab-ci.yml' + - local: '/src/opticalcontroller/.gitlab-ci.yml' + - local: '/src/ztp/.gitlab-ci.yml' + - local: '/src/policy/.gitlab-ci.yml' + - local: '/src/automation/.gitlab-ci.yml' + - local: '/src/forecaster/.gitlab-ci.yml' + #- local: '/src/webui/.gitlab-ci.yml' + #- local: '/src/l3_distributedattackdetector/.gitlab-ci.yml' + #- local: '/src/l3_centralizedattackdetector/.gitlab-ci.yml' + #- local: '/src/l3_attackmitigator/.gitlab-ci.yml' + - local: '/src/slice/.gitlab-ci.yml' + #- local: '/src/interdomain/.gitlab-ci.yml' + - local: '/src/pathcomp/.gitlab-ci.yml' + #- local: '/src/dlt/.gitlab-ci.yml' + - local: '/src/load_generator/.gitlab-ci.yml' + - local: '/src/bgpls_speaker/.gitlab-ci.yml' + - local: '/src/kpi_manager/.gitlab-ci.yml' + - local: '/src/kpi_value_api/.gitlab-ci.yml' + #- local: '/src/kpi_value_writer/.gitlab-ci.yml' + #- local: '/src/telemetry/.gitlab-ci.yml' + - local: '/src/analytics/.gitlab-ci.yml' + - local: '/src/qos_profile/.gitlab-ci.yml' + - local: '/src/vnt_manager/.gitlab-ci.yml' + - local: '/src/e2e_orchestrator/.gitlab-ci.yml' # This should be last one: end-to-end integration tests - local: '/src/tests/.gitlab-ci.yml' diff --git a/my_deploy.sh b/my_deploy.sh old mode 100755 new mode 100644 diff --git a/src/tests/.gitlab-ci.yml b/src/tests/.gitlab-ci.yml index 3ab81e3ab..1bb67b6cd 100644 --- a/src/tests/.gitlab-ci.yml +++ b/src/tests/.gitlab-ci.yml @@ -14,16 +14,16 @@ # include the individual .gitlab-ci.yml of each end-to-end integration test include: -# - local: '/src/tests/ofc22/.gitlab-ci.yml' -# #- local: '/src/tests/oeccpsc22/.gitlab-ci.yml' -# - local: '/src/tests/ecoc22/.gitlab-ci.yml' -# #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml' -# #- local: '/src/tests/ofc23/.gitlab-ci.yml' -# - local: '/src/tests/ofc24/.gitlab-ci.yml' -# - local: '/src/tests/eucnc24/.gitlab-ci.yml' -# - local: '/src/tests/ofc25-camara-agg-net-controller/.gitlab-ci.yml' -# - local: '/src/tests/ofc25-camara-e2e-controller/.gitlab-ci.yml' -# #- local: '/src/tests/ofc25/.gitlab-ci.yml' - - local: '/src/tests/ryu-openflow/.gitlab-ci.yml' + - local: '/src/tests/ofc22/.gitlab-ci.yml' + #- local: '/src/tests/oeccpsc22/.gitlab-ci.yml' + - local: '/src/tests/ecoc22/.gitlab-ci.yml' + #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml' + #- local: '/src/tests/ofc23/.gitlab-ci.yml' + - local: '/src/tests/ofc24/.gitlab-ci.yml' + - local: '/src/tests/eucnc24/.gitlab-ci.yml' + - local: '/src/tests/ofc25-camara-agg-net-controller/.gitlab-ci.yml' + - local: '/src/tests/ofc25-camara-e2e-controller/.gitlab-ci.yml' + #- local: '/src/tests/ofc25/.gitlab-ci.yml' + #- local: '/src/tests/ryu-openflow/.gitlab-ci.yml' -# - local: '/src/tests/tools/mock_tfs_nbi_dependencies/.gitlab-ci.yml' + - local: '/src/tests/tools/mock_tfs_nbi_dependencies/.gitlab-ci.yml' diff --git a/src/tests/ryu-openflow/.gitlab-ci.yml b/src/tests/ryu-openflow/.gitlab-ci.yml index b089823f2..4f95d4661 100644 --- a/src/tests/ryu-openflow/.gitlab-ci.yml +++ b/src/tests/ryu-openflow/.gitlab-ci.yml @@ -16,6 +16,7 @@ build ryu-openflow: variables: TEST_NAME: 'ryu-openflow' + IMAGE_TAG: 'mr$CI_MERGE_REQUEST_IID' stage: build before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY @@ -25,9 +26,10 @@ build ryu-openflow: - echo "CI_PIPELINE_SOURCE = $CI_PIPELINE_SOURCE" - echo "CI_MERGE_REQUEST_ID = $CI_MERGE_REQUEST_ID" - echo "CI_MERGE_REQUEST_IID = $CI_MERGE_REQUEST_IID" - - docker buildx build -t "${TEST_NAME}:latest" -f ./src/tests/${TEST_NAME}/Dockerfile . - - docker tag "${TEST_NAME}:latest" "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" - - docker push "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" + - docker buildx build -t "$CI_REGISTRY_IMAGE/${TEST_NAME}-ryu:${IMAGE_TAG}" -f ./src/tests/${TEST_NAME}/Ryu.Dockerfile . + - docker push "$CI_REGISTRY_IMAGE/${TEST_NAME}-ryu:${IMAGE_TAG}" + - docker buildx build -t "$CI_REGISTRY_IMAGE/${TEST_NAME}-test:${IMAGE_TAG}" -f ./src/tests/${TEST_NAME}/Test.Dockerfile . + - docker push "$CI_REGISTRY_IMAGE/${TEST_NAME}-test:${IMAGE_TAG}" after_script: - docker images --filter="dangling=true" --quiet | xargs -r docker rmi rules: @@ -40,6 +42,20 @@ build ryu-openflow: - src/tests/${TEST_NAME}/Dockerfile - .gitlab-ci.yml + +# - docker rm -f na-t1 na-t2 na-r1 na-r2 +# - docker network rm -f na-br +# +# - > +# docker network create -d bridge --subnet=172.254.253.0/24 --gateway=172.254.253.254 +# --ip-range=172.254.253.0/24 na-br +# - > +# docker run -dit --init --name na-t1 --network=na-br --ip 172.254.253.101 +# --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-tp.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" +# --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_t1.xml:/confd/examples.confd/OC23/platform.xml" +# asgamb1/oc23bgp.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh + + ## Deploy TeraFlowSDN and Execute end-2-end test #end2end_test ryu-openflow: # timeout: 90m diff --git a/src/tests/ryu-openflow/Mininet.Dockerfile b/src/tests/ryu-openflow/Mininet.Dockerfile new file mode 100644 index 000000000..97927e9e2 --- /dev/null +++ b/src/tests/ryu-openflow/Mininet.Dockerfile @@ -0,0 +1,27 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && \ + apt-get install -y --no-install-recommends iproute2 net-tools openvswitch-switch ca-certificates && \ + apt-get install -y --no-install-recommends mininet=2.3.0-1ubuntu1 && \ + apt-get autoremove -y && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY custom_pentagon_topology.py /opt/custom_pentagon_topology.py + +CMD ["python3", "/opt/custom_pentagon_topology.py"] diff --git a/src/tests/ryu-openflow/Ryu.Dockerfile b/src/tests/ryu-openflow/Ryu.Dockerfile index 37248f8b7..ad162d8af 100644 --- a/src/tests/ryu-openflow/Ryu.Dockerfile +++ b/src/tests/ryu-openflow/Ryu.Dockerfile @@ -14,7 +14,7 @@ FROM python:3.9-slim -RUN apt-get update && apt-get install -y --no-install-recommends iproute2 tree git && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y --no-install-recommends git iproute2 && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir --upgrade pip # NOTE: Ryu 4.34 expects eventlet.wsgi.ALREADY_HANDLED, which disappears in Eventlet ≥ 0.30.3. @@ -26,6 +26,4 @@ WORKDIR /opt/ryu-apps # --- OpenFlow & Ryu REST API ports --- EXPOSE 6653/tcp 8080/tcp -RUN tree -a /usr/local/lib/python3.9/site-packages/ryu/app/gui_topology/ - CMD ["ryu-manager", "--verbose", "--observe-links", "ryu.app.ofctl_rest", "ryu.app.gui_topology.gui_topology"] -- GitLab