Loading src/tests/ofc25/deploy_test_container.shdeleted 100755 → 0 +0 −176 Original line number Diff line number Diff line #!/bin/bash # Copyright 2022-2025 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. set -e # Exit on error ######################################################################################################################## # Configuration ######################################################################################################################## # Image name and tag export TEST_IMAGE_NAME=${TEST_IMAGE_NAME:-"tfs-ofc25-tests"} export TEST_IMAGE_TAG=${TEST_IMAGE_TAG:-"latest"} export TEST_CONTAINER_NAME=${TEST_CONTAINER_NAME:-"tfs-ofc25-tests"} # Results directory on host export RESULTS_DIR=${RESULTS_DIR:-"$(pwd)/src/tests/ofc25/tmp/results"} # Deployment mode: "build-only" or "build-and-run" export DEPLOY_MODE=${DEPLOY_MODE:-"build-and-run"} ######################################################################################################################## # Pre-flight checks ######################################################################################################################## echo "==========================================" echo "OFC25 Test Container Deployment" echo "==========================================" echo # Check if we're in the right directory if [ ! -f "src/tests/ofc25/Dockerfile" ]; then echo "ERROR: Must run from tfs-ctrl root directory" exit 1 fi # Check if environment variable files exist echo ">>> Checking for required environment variable files..." MISSING_FILES="" for ENV_FILE in tfs_runtime_env_vars_opt.sh tfs_runtime_env_vars_ip.sh tfs_runtime_env_vars_e2e.sh; do if [ ! -f "$ENV_FILE" ]; then MISSING_FILES="${MISSING_FILES} ${ENV_FILE}" fi done if [ -n "$MISSING_FILES" ]; then echo "ERROR: Missing required environment variable files:" echo "$MISSING_FILES" echo echo "These files are generated by deploy.sh. Please run:" echo " ./src/tests/ofc25/deploy.sh" echo exit 1 fi echo "✓ All environment variable files found" echo ######################################################################################################################## # Build Docker image ######################################################################################################################## echo ">>> Building Docker image: ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" echo "Build context: $(pwd)" echo # Determine Docker build command (support for buildx) DOCKER_BUILD="docker build" DOCKER_MAJOR_VERSION=$(docker --version | grep -o -E "Docker version [0-9]+\." | grep -o -E "[0-9]+" | cut -c 1-3) if [[ $DOCKER_MAJOR_VERSION -ge 23 ]]; then docker buildx version 1>/dev/null 2>/dev/null if [[ $? -eq 0 ]]; then DOCKER_BUILD="docker buildx build" echo "Using docker buildx for build" fi fi # Build the image $DOCKER_BUILD \ -t "${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" \ -f src/tests/ofc25/Dockerfile \ . if [ $? -ne 0 ]; then echo "ERROR: Docker build failed" exit 1 fi echo echo "✓ Docker image built successfully: ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" echo ######################################################################################################################## # Run container (if requested) ######################################################################################################################## if [ "$DEPLOY_MODE" == "build-and-run" ]; then echo ">>> Preparing to run tests..." # Create results directory mkdir -p "$RESULTS_DIR" echo "Results will be saved to: $RESULTS_DIR" echo # Stop and remove existing container if it exists if docker ps -a --format '{{.Names}}' | grep -q "^${TEST_CONTAINER_NAME}$"; then echo ">>> Removing existing container: ${TEST_CONTAINER_NAME}" docker stop "$TEST_CONTAINER_NAME" 2>/dev/null || true docker rm "$TEST_CONTAINER_NAME" 2>/dev/null || true echo fi echo ">>> Running test container: ${TEST_CONTAINER_NAME}" echo "Command: /var/teraflow/run_tests.sh" echo # Run the container docker run \ --name "$TEST_CONTAINER_NAME" \ --network host \ -v "$RESULTS_DIR:/opt/results" \ "${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" \ /var/teraflow/run_tests.sh EXIT_CODE=$? echo if [ $EXIT_CODE -eq 0 ]; then echo "==========================================" echo "✓ All tests completed successfully!" echo "==========================================" echo echo "Test results available in: $RESULTS_DIR" ls -lh "$RESULTS_DIR" else echo "==========================================" echo "✗ Tests failed with exit code: $EXIT_CODE" echo "==========================================" echo echo "Check logs with:" echo " docker logs $TEST_CONTAINER_NAME" echo echo "Test results (if any) in: $RESULTS_DIR" ls -lh "$RESULTS_DIR" 2>/dev/null || true fi echo exit $EXIT_CODE elif [ "$DEPLOY_MODE" == "build-only" ]; then echo ">>> Build complete (build-only mode)" echo echo "To run tests manually:" echo " mkdir -p $RESULTS_DIR" echo " docker run --name $TEST_CONTAINER_NAME --network host -v $RESULTS_DIR:/opt/results ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG} /var/teraflow/run_tests.sh" echo echo "To run tests interactively:" echo " docker run -it --rm --network host -v $RESULTS_DIR:/opt/results ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG} /bin/bash" echo " # Inside container:" echo " # ./run_tests.sh" echo else echo "ERROR: Unknown DEPLOY_MODE: $DEPLOY_MODE" echo "Valid values: build-only, build-and-run" exit 1 fi Loading
src/tests/ofc25/deploy_test_container.shdeleted 100755 → 0 +0 −176 Original line number Diff line number Diff line #!/bin/bash # Copyright 2022-2025 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. set -e # Exit on error ######################################################################################################################## # Configuration ######################################################################################################################## # Image name and tag export TEST_IMAGE_NAME=${TEST_IMAGE_NAME:-"tfs-ofc25-tests"} export TEST_IMAGE_TAG=${TEST_IMAGE_TAG:-"latest"} export TEST_CONTAINER_NAME=${TEST_CONTAINER_NAME:-"tfs-ofc25-tests"} # Results directory on host export RESULTS_DIR=${RESULTS_DIR:-"$(pwd)/src/tests/ofc25/tmp/results"} # Deployment mode: "build-only" or "build-and-run" export DEPLOY_MODE=${DEPLOY_MODE:-"build-and-run"} ######################################################################################################################## # Pre-flight checks ######################################################################################################################## echo "==========================================" echo "OFC25 Test Container Deployment" echo "==========================================" echo # Check if we're in the right directory if [ ! -f "src/tests/ofc25/Dockerfile" ]; then echo "ERROR: Must run from tfs-ctrl root directory" exit 1 fi # Check if environment variable files exist echo ">>> Checking for required environment variable files..." MISSING_FILES="" for ENV_FILE in tfs_runtime_env_vars_opt.sh tfs_runtime_env_vars_ip.sh tfs_runtime_env_vars_e2e.sh; do if [ ! -f "$ENV_FILE" ]; then MISSING_FILES="${MISSING_FILES} ${ENV_FILE}" fi done if [ -n "$MISSING_FILES" ]; then echo "ERROR: Missing required environment variable files:" echo "$MISSING_FILES" echo echo "These files are generated by deploy.sh. Please run:" echo " ./src/tests/ofc25/deploy.sh" echo exit 1 fi echo "✓ All environment variable files found" echo ######################################################################################################################## # Build Docker image ######################################################################################################################## echo ">>> Building Docker image: ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" echo "Build context: $(pwd)" echo # Determine Docker build command (support for buildx) DOCKER_BUILD="docker build" DOCKER_MAJOR_VERSION=$(docker --version | grep -o -E "Docker version [0-9]+\." | grep -o -E "[0-9]+" | cut -c 1-3) if [[ $DOCKER_MAJOR_VERSION -ge 23 ]]; then docker buildx version 1>/dev/null 2>/dev/null if [[ $? -eq 0 ]]; then DOCKER_BUILD="docker buildx build" echo "Using docker buildx for build" fi fi # Build the image $DOCKER_BUILD \ -t "${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" \ -f src/tests/ofc25/Dockerfile \ . if [ $? -ne 0 ]; then echo "ERROR: Docker build failed" exit 1 fi echo echo "✓ Docker image built successfully: ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" echo ######################################################################################################################## # Run container (if requested) ######################################################################################################################## if [ "$DEPLOY_MODE" == "build-and-run" ]; then echo ">>> Preparing to run tests..." # Create results directory mkdir -p "$RESULTS_DIR" echo "Results will be saved to: $RESULTS_DIR" echo # Stop and remove existing container if it exists if docker ps -a --format '{{.Names}}' | grep -q "^${TEST_CONTAINER_NAME}$"; then echo ">>> Removing existing container: ${TEST_CONTAINER_NAME}" docker stop "$TEST_CONTAINER_NAME" 2>/dev/null || true docker rm "$TEST_CONTAINER_NAME" 2>/dev/null || true echo fi echo ">>> Running test container: ${TEST_CONTAINER_NAME}" echo "Command: /var/teraflow/run_tests.sh" echo # Run the container docker run \ --name "$TEST_CONTAINER_NAME" \ --network host \ -v "$RESULTS_DIR:/opt/results" \ "${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG}" \ /var/teraflow/run_tests.sh EXIT_CODE=$? echo if [ $EXIT_CODE -eq 0 ]; then echo "==========================================" echo "✓ All tests completed successfully!" echo "==========================================" echo echo "Test results available in: $RESULTS_DIR" ls -lh "$RESULTS_DIR" else echo "==========================================" echo "✗ Tests failed with exit code: $EXIT_CODE" echo "==========================================" echo echo "Check logs with:" echo " docker logs $TEST_CONTAINER_NAME" echo echo "Test results (if any) in: $RESULTS_DIR" ls -lh "$RESULTS_DIR" 2>/dev/null || true fi echo exit $EXIT_CODE elif [ "$DEPLOY_MODE" == "build-only" ]; then echo ">>> Build complete (build-only mode)" echo echo "To run tests manually:" echo " mkdir -p $RESULTS_DIR" echo " docker run --name $TEST_CONTAINER_NAME --network host -v $RESULTS_DIR:/opt/results ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG} /var/teraflow/run_tests.sh" echo echo "To run tests interactively:" echo " docker run -it --rm --network host -v $RESULTS_DIR:/opt/results ${TEST_IMAGE_NAME}:${TEST_IMAGE_TAG} /bin/bash" echo " # Inside container:" echo " # ./run_tests.sh" echo else echo "ERROR: Unknown DEPLOY_MODE: $DEPLOY_MODE" echo "Valid values: build-only, build-and-run" exit 1 fi