diff --git a/.github/workflows/openvidu-ce-test.yml b/.github/workflows/openvidu-ce-test.yml new file mode 100644 index 00000000..7010d93f --- /dev/null +++ b/.github/workflows/openvidu-ce-test.yml @@ -0,0 +1,102 @@ +name: OpenVidu CE Tests +on: + push: + paths: + - '!openvidu-components-angular/**' + - '!openvidu-server/docker/**' + - '!openvidu-server/deployments/**' + pull_request: + branches: + - master + workflow_dispatch: + inputs: + KURENTO_MEDIA_SERVER_IMAGE: + description: 'Docker image of kurento-media-server' + required: true + default: 'kurento/kurento-media-server:dev-6.18.0' + MEDIASOUP_CONTROLLER_VERSION: + description: 'Tag of image openvidu/mediasoup-controller' + required: true + default: 'master' + KURENTO_JAVA_COMMIT: + description: 'Commit to use in kurento-java dependencies. If "default" the release version declared in property "version.kurento" of openvidu-parent/pom.xml will be used' + required: true + default: 'master' + DOCKER_RECORDING_VERSION: + description: 'Force version of openvidu/openvidu-recording container' + required: true + default: 'default' + CHROME_VERSION: + description: 'Version of Chrome to use. Must be a valid image tag from https://hub.docker.com/r/selenium/standalone-chrome/tags' + required: true + default: latest + FIREFOX_VERSION: + description: 'Version of Firefox to use. Must be a valid image tag from https://hub.docker.com/r/selenium/standalone-firefox/tags' + required: true + default: latest + OPERA_VERSION: + description: 'Version of Opera to use. Must be a valid image tag from https://hub.docker.com/r/selenium/standalone-opera/tags' + required: true + default: latest + EDGE_VERSION: + description: 'Version of Edge to use. Must be a valid image tag from https://hub.docker.com/r/selenium/standalone-opera/tags' + required: true + default: latest +jobs: + main: + runs-on: ubuntu-latest + container: + image: openvidu/openvidu-test-e2e:focal + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /opt/openvidu:/opt/openvidu + env: + KURENTO_SNAPSHOTS_URL: ${{ secrets.KURENTO_SNAPSHOTS_URL }} + KURENTO_MEDIA_SERVER_IMAGE: ${{ github.event.inputs.KURENTO_MEDIA_SERVER_IMAGE }} + MEDIASOUP_CONTROLLER_VERSION: ${{ github.event.inputs.MEDIASOUP_CONTROLLER_VERSION }} + KURENTO_JAVA_COMMIT: ${{ github.event.inputs.KURENTO_JAVA_COMMIT }} + DOCKER_RECORDING_VERSION: ${{ github.event.inputs.DOCKER_RECORDING_VERSION }} + CHROME_VERSION: ${{ github.event.inputs.CHROME_VERSION }} + FIREFOX_VERSION: ${{ github.event.inputs.FIREFOX_VERSION }} + OPERA_VERSION: ${{ github.event.inputs.OPERA_VERSION }} + EDGE_VERSION: ${{ github.event.inputs.EDGE_VERSION }} + steps: + - uses: actions/checkout@v2 + - name: Setting up CI + run: ci-scripts/openvidu-e2e-tests.sh --prepare + - name: OpenVidu Browser build + run: ci-scripts/openvidu-e2e-tests.sh --build-openvidu-browser + - name: OpenVidu Node Client build + run: ci-scripts/openvidu-e2e-tests.sh --build-openvidu-node-client + - name: OpenVidu Java Client build + run: ci-scripts/openvidu-e2e-tests.sh --build-openvidu-java-client + - name: OpenVidu TestApp build + run: ci-scripts/openvidu-e2e-tests.sh --build-openvidu-testapp + - name: OpenVidu Server dashboard build + run: ci-scripts/openvidu-e2e-tests.sh --build-dashboard + - name: OpenVidu Server pre-build + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-server-pre-build + - name: OpenVidu Server unit tests + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-server-unit-tests + - name: OpenVidu Server integration tests + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-server-integration-tests + - name: OpenVidu Server E2E build tests + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-test-e2e-build + - name: OpenVidu Server Build + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-server-build + - name: Environment launch Kurento + run: ci-scripts/openvidu-e2e-tests.sh --environment-launch-kurento + - name: OpenVidu E2E Tests Kurento + run: ci-scripts/openvidu-e2e-tests.sh --openvidu-e2e-tests-kurento + - name: Test reports + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + report_paths: '**/target/surefire-reports/TEST-*.xml' + - name: Upload logs + uses: actions/upload-artifact@v3 + if: always() # always run even if the previous step fails + with: + name: Logs + path: | + /opt/openvidu/*.log \ No newline at end of file diff --git a/ci-scripts/kurento-snapshots.xml b/ci-scripts/kurento-snapshots.xml new file mode 100644 index 00000000..5b765b74 --- /dev/null +++ b/ci-scripts/kurento-snapshots.xml @@ -0,0 +1,43 @@ + + + + + + + + + default + + true + + + + kurento-github-public + Kurento GitHub Maven packages (public access) + KURENTO_SNAPSHOTS_URL + + false + + + true + + + + + + kurento-github-public + Kurento GitHub Maven packages (public access) + KURENTO_SNAPSHOTS_URL + + false + + + true + + + + + + diff --git a/ci-scripts/openvidu-e2e-tests.sh b/ci-scripts/openvidu-e2e-tests.sh new file mode 100755 index 00000000..8010b418 --- /dev/null +++ b/ci-scripts/openvidu-e2e-tests.sh @@ -0,0 +1,450 @@ +#!/bin/bash -x +set -eu -o pipefail + +# Ci flags +PREPARE=false +BUILD_OV_BROWSER=false +BUILD_OV_NODE_CLIENT=false +BUILD_OV_JAVA_CLIENT=false +BUILD_OV_TESTAPP=false +BUILD_OV_DASHBOARD=false +OV_PRE_BUILD=false +OV_INTEGRATION_TESTS=false +OV_UNIT_TESTS=false +OV_E2E_TESTS_BUILD=false +OV_SERVER_BUILD=false +LAUNCH_OV_KURENTO=false +OV_E2E_KURENTO=false +LAUNCH_OV_MEDIASOUP=false +OV_E2E_MEDIASOUP=false +EXECUTE_ALL=false + +function environmentLaunch { + local MEDIA_SERVER="$1" + + # Get e2e container id + local E2E_CONTAINER_ID + E2E_CONTAINER_ID="$(docker ps | grep 'openvidu/openvidu-test-e2e:*' | awk '{ print $1 }')" + + # Get e2e container IP so services running can be accessed by browser and media server containers + local E2E_CONTAINER_IP + E2E_CONTAINER_IP="$(docker inspect "$E2E_CONTAINER_ID" | awk '/bridge/,/IPAddress/' | grep IPAddress | cut -d'"' -f4)" + + # Kurento and mediasoup needs to run as network host, so we need Docker host IP. + local DOCKER_HOST_IP + DOCKER_HOST_IP="$(docker network inspect bridge | grep Gateway | cut -d'"' -f4)" + openssl req -newkey rsa:2048 \ + -new -nodes -x509 -days 3650 \ + -subj "/CN=www.mydom.com/O=My Company LTD./C=US" \ + -keyout /opt/openvidu/testapp/key.pem \ + -out /opt/openvidu/testapp/cert.pem + pushd /opt/openvidu/testapp + http-server -S -p 4200 &> /opt/openvidu/testapp.log & + if [[ "${MEDIA_SERVER}" == "kurento" ]]; then + docker run -e KMS_UID=$(id -u) --network=host --detach=true --volume=/opt/openvidu/recordings:/opt/openvidu/recordings "${KURENTO_MEDIA_SERVER_IMAGE}" + while true; do + RC="$(curl \ + --silent \ + --no-buffer \ + --write-out '%{http_code}' \ + --header "Connection: Upgrade" \ + --header "Upgrade: websocket" \ + --header "Host: ${DOCKER_HOST_IP}" \ + --header "Origin: ${DOCKER_HOST_IP}" \ + "http://${DOCKER_HOST_IP}:8888/kurento" || echo '')" + + if [[ "$RC" == "500" ]]; then + break + else + echo "Waiting for ${MEDIA_SERVER}..." + sleep 1 + fi + done + elif [[ "${MEDIA_SERVER}" == "mediasoup" ]]; then + docker run --network=host --restart=always --detach=true \ + --env=KMS_MIN_PORT=40000 \ + --env=KMS_MAX_PORT=65535 \ + --env=OPENVIDU_PRO_LICENSE="${OPENVIDU_PRO_LICENSE}" \ + --env=OPENVIDU_PRO_LICENSE_API="${OPENVIDU_PRO_LICENSE_API}" \ + --env=WEBRTC_LISTENIPS_0_ANNOUNCEDIP="${DOCKER_HOST_IP}" \ + --env=WEBRTC_LISTENIPS_0_IP="${DOCKER_HOST_IP}" \ + --volume=/opt/openvidu/recordings:/opt/openvidu/recordings \ + openvidu/mediasoup-controller:"${MEDIASOUP_CONTROLLER_VERSION}" + until $(curl --insecure --output /dev/null --silent http://${DOCKER_HOST_IP}:8888/kurento); do echo "Waiting for ${MEDIA_SERVER}..."; sleep 1; done + else + echo "Not valid media server" + exit 1 + fi + + if [ "${DOCKER_RECORDING_VERSION}" != "default" ]; then + echo "Using custom openvidu-recording tag: ${DOCKER_RECORDING_VERSION}" + java -jar -DKMS_URIS="[\"ws://${DOCKER_HOST_IP}:8888/kurento\"]" \ + -DDOMAIN_OR_PUBLIC_IP="${E2E_CONTAINER_IP}" \ + -DOPENVIDU_SECRET=MY_SECRET -DHTTPS_PORT=4443 -DOPENVIDU_RECORDING=true \ + -DOPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/test-layouts \ + -DOPENVIDU_RECORDING_VERSION="${DOCKER_RECORDING_VERSION}" -DOPENVIDU_WEBHOOK=true \ + -DOPENVIDU_WEBHOOK_ENDPOINT=http://127.0.0.1:7777/webhook \ + /opt/openvidu/openvidu-server-*.jar &> /opt/openvidu/openvidu-server-"${MEDIA_SERVER}".log & + else + echo "Using default openvidu-recording tag" + java -jar -DKMS_URIS="[\"ws://${DOCKER_HOST_IP}:8888/kurento\"]" \ + -DDOMAIN_OR_PUBLIC_IP="${E2E_CONTAINER_IP}" \ + -DOPENVIDU_SECRET=MY_SECRET -DHTTPS_PORT=4443 -DOPENVIDU_RECORDING=true \ + -DOPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/test-layouts -DOPENVIDU_WEBHOOK=true \ + -DOPENVIDU_WEBHOOK_ENDPOINT=http://127.0.0.1:7777/webhook \ + /opt/openvidu/openvidu-server-*.jar &> /opt/openvidu/openvidu-server-"${MEDIA_SERVER}".log & + fi + until $(curl --insecure --output /dev/null --silent --head --fail https://OPENVIDUAPP:MY_SECRET@localhost:4443/); do echo "Waiting for openvidu-server..."; sleep 2; done + popd +} + +function openviduE2ETests { + local MEDIA_SERVER="$1" + + # Get e2e container id + local E2E_CONTAINER_ID + E2E_CONTAINER_ID="$(docker ps | grep 'openvidu/openvidu-test-e2e:*' | awk '{ print $1 }')" + + # Get e2e container IP so services running can be accessed by browser and media server containers + local E2E_CONTAINER_IP + E2E_CONTAINER_IP="$(docker inspect "$E2E_CONTAINER_ID" | awk '/bridge/,/IPAddress/' | grep IPAddress | cut -d'"' -f4)" + + # Kurento and mediasoup needs to run as network host, so we need Docker host IP. + local DOCKER_HOST_IP + DOCKER_HOST_IP="$(docker network inspect bridge | grep Gateway | cut -d'"' -f4)" + + + pushd openvidu-test-e2e + if [[ "${MEDIA_SERVER}" == "kurento" ]]; then + + mvn -DMEDIA_SERVER_IMAGE="${KURENTO_MEDIA_SERVER_IMAGE}" \ + -DOPENVIDU_URL="https://${E2E_CONTAINER_IP}:4443" \ + -DCHROME_VERSION="${CHROME_VERSION}" \ + -DFIREFOX_VERSION="${FIREFOX_VERSION}" \ + -DOPERA_VERSION="${OPERA_VERSION}" \ + -DEDGE_VERSION="${EDGE_VERSION}" \ + -Dtest=OpenViduTestAppE2eTest \ + -DAPP_URL="https://${E2E_CONTAINER_IP}:4200" \ + -DEXTERNAL_CUSTOM_LAYOUT_URL="http://${E2E_CONTAINER_IP}:4114" \ + -DREMOTE_URL_CHROME="http://${DOCKER_HOST_IP}:6666/wd/hub/" \ + -DREMOTE_URL_FIREFOX="http://${DOCKER_HOST_IP}:6667/wd/hub/" \ + -DREMOTE_URL_OPERA="http://${DOCKER_HOST_IP}:6668/wd/hub/" \ + -DREMOTE_URL_EDGE="http://${DOCKER_HOST_IP}:6669/wd/hub/" \ + -DEXTERNAL_CUSTOM_LAYOUT_PARAMS="sessionId,CUSTOM_LAYOUT_SESSION,secret,MY_SECRET" test + + elif [[ "${MEDIA_SERVER}" == "mediasoup" ]]; then + + mvn -DMEDIA_SERVER_IMAGE="openvidu/mediasoup-controller:${MEDIASOUP_CONTROLLER_VERSION}" \ + -DOPENVIDU_URL="https://${E2E_CONTAINER_IP}:4443" \ + -DCHROME_VERSION="${CHROME_VERSION}" \ + -DFIREFOX_VERSION="${FIREFOX_VERSION}" \ + -DOPERA_VERSION="${OPERA_VERSION}" \ + -DEDGE_VERSION="${EDGE_VERSION}" \ + -Dtest=OpenViduTestAppE2eTest \ + -DAPP_URL="https://${E2E_CONTAINER_IP}:4200" \ + -DEXTERNAL_CUSTOM_LAYOUT_URL="http://${E2E_CONTAINER_IP}:4114" \ + -DREMOTE_URL_CHROME="http://${DOCKER_HOST_IP}:6666/wd/hub/" \ + -DREMOTE_URL_FIREFOX="http://${DOCKER_HOST_IP}:6667/wd/hub/" \ + -DREMOTE_URL_OPERA="http://${DOCKER_HOST_IP}:6668/wd/hub/" \ + -DREMOTE_URL_EDGE="http://${DOCKER_HOST_IP}:6669/wd/hub/" \ + -DEXTERNAL_CUSTOM_LAYOUT_PARAMS="sessionId,CUSTOM_LAYOUT_SESSION,secret,MY_SECRET" \ + -DOPENVIDU_PRO_LICENSE="${OPENVIDU_PRO_LICENSE}" \ + -DOPENVIDU_PRO_LICENSE_API="${OPENVIDU_PRO_LICENSE_API}" test + + else + echo "Not valid media server" + exit 1 + fi + stopMediaServer + kill -9 $(pgrep -f /opt/openvidu/openvidu-server) || true + popd +} + +function stopMediaServer { + # Remove Kurento Media Server + declare -a arr=("kurento/kurento-media-server" + "openvidu/mediasoup-controller:") + for image in "${arr[@]}" + do + docker ps -a | awk '{ print $1,$2 }' | grep "${image}" | awk '{ print $1 }' | xargs -I {} docker rm -f {} || true + done + docker ps -a +} + +# Environment variables +if [[ -n ${1:-} ]]; then + while : + do + case "${1:-}" in + --prepare ) + PREPARE=true + shift 1 + ;; + --build-openvidu-browser ) + BUILD_OV_BROWSER=true + shift 1 + ;; + --build-openvidu-node-client ) + BUILD_OV_NODE_CLIENT=true + shift 1 + ;; + --build-openvidu-java-client ) + BUILD_OV_JAVA_CLIENT=true + shift 1 + ;; + --build-openvidu-testapp ) + BUILD_OV_TESTAPP=true + shift 1 + ;; + --build-dashboard ) + BUILD_OV_DASHBOARD=true + shift 1 + ;; + --openvidu-server-pre-build ) + OV_PRE_BUILD=true + shift 1 + ;; + --openvidu-server-unit-tests ) + OV_UNIT_TESTS=true + shift 1 + ;; + --openvidu-server-integration-tests ) + OV_INTEGRATION_TESTS=true + shift 1 + ;; + --openvidu-test-e2e-build ) + OV_E2E_TESTS_BUILD=true + shift 1 + ;; + --openvidu-server-build ) + OV_SERVER_BUILD=true + shift 1 + ;; + --environment-launch-kurento ) + LAUNCH_OV_KURENTO=true + shift 1 + ;; + --openvidu-e2e-tests-kurento ) + OV_E2E_KURENTO=true + shift 1 + ;; + --environment-launch-mediasoup ) + LAUNCH_OV_MEDIASOUP=true + shift 1 + ;; + --openvidu-e2e-test-mediasoup ) + OV_E2E_MEDIASOUP=true + shift 1 + ;; + *) + break + ;; + esac + done +else + EXECUTE_ALL=true +fi + + +# ------------- +# 1. Prepare build +# ------------- +if [[ "${PREPARE}" == true || "${EXECUTE_ALL}" == true ]]; then + + # Connect e2e test container to network bridge so it is vissible for browser and media server containers + E2E_CONTAINER_ID="$(docker ps | grep 'openvidu/openvidu-test-e2e:*' | awk '{ print $1 }')" + docker network connect bridge "${E2E_CONTAINER_ID}" + + # Pull browser images + docker pull selenium/standalone-chrome:"${CHROME_VERSION}" + docker pull selenium/standalone-firefox:"${FIREFOX_VERSION}" + docker pull selenium/standalone-opera:"${OPERA_VERSION}" + docker pull selenium/standalone-edge:"${EDGE_VERSION}" + + # Pull mediasoup and kurento + docker pull openvidu/mediasoup-controller:"${MEDIASOUP_CONTROLLER_VERSION}" + docker pull "${KURENTO_MEDIA_SERVER_IMAGE}" + + # Prepare directory Openvidu + sudo mkdir -p /opt/openvidu/recordings && sudo chmod 777 /opt/openvidu/recordings + + + # Configure Snapshots repository + if [[ -n "${KURENTO_SNAPSHOTS_URL}" ]]; then + pushd ci-scripts + sed -i "s|KURENTO_SNAPSHOTS_URL|${KURENTO_SNAPSHOTS_URL}|g" kurento-snapshots.xml + rm /etc/maven/settings.xml + mv kurento-snapshots.xml /etc/maven/settings.xml + popd + fi + + # Download fake videos + FAKE_VIDEO1=/opt/openvidu/barcode.y4m + FAKE_VIDEO2=/opt/openvidu/girl.mjpeg + if [ ! -f ${FAKE_VIDEO1} ]; then + sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/barcode.y4m --create-dirs --output /opt/openvidu/barcode.y4m + else + echo "File ${FAKE_VIDEO1} already exists" + fi + if [ ! -f ${FAKE_VIDEO2} ]; then + sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/girl.mjpeg --create-dirs --output /opt/openvidu/girl.mjpeg + else + echo "File ${FAKE_VIDEO2} already exists" + fi + + # Download fake audio + FAKE_AUDIO=/opt/openvidu/fakeaudio.wav + if [ ! -f ${FAKE_AUDIO} ]; then + sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/fakeaudio.wav --create-dirs --output /opt/openvidu/fakeaudio.wav + else + echo "File ${FAKE_AUDIO} already exists" + fi + curl --location https://raw.githubusercontent.com/OpenVidu/openvidu/master/openvidu-test-e2e/docker/my-custom-layout/index.html --create-dirs --output /opt/openvidu/test-layouts/layout1/index.html + chmod -R 777 /opt/openvidu + +fi + +# ------------- +# 2. OpenVidu Browser build +# ------------- +if [[ "${BUILD_OV_BROWSER}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-browser || exit 1 + npm install + npm run build + npm link + popd +fi + +# ------------- +# 3. OpenVidu Node client build +# ------------- +if [[ "${BUILD_OV_NODE_CLIENT}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-node-client + npm install --legacy-peer-deps + npm run build + npm link + popd +fi + +# ------------- +# 4. OpenVidu Java client build +# ------------- +if [[ "${BUILD_OV_JAVA_CLIENT}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-java-client + mvn -B versions:set -DnewVersion=TEST + mvn -B clean compile package + mvn -B install:install-file -Dfile=target/openvidu-java-client-TEST.jar -DgroupId=io.openvidu -DartifactId=openvidu-java-client -Dversion=TEST -Dpackaging=jar + popd +fi + +# ------------- +# 5. OpenVidu Test App build +# ------------- +if [[ "${BUILD_OV_TESTAPP}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-testapp + npm install --legacy-peer-deps + npm link --legacy-peer-deps openvidu-browser openvidu-node-client + export NG_CLI_ANALYTICS="false" && ./node_modules/@angular/cli/bin/ng build --prod --output-path=/opt/openvidu/testapp + popd +fi + +# ------------- +# 6. OpenVidu Dashboard build +# ------------- +if [[ "${BUILD_OV_DASHBOARD}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-server/src/dashboard + npm install + npm link openvidu-browser openvidu-node-client + npm run build-prod + popd +fi + +# ------------- +# 7. OpenVidu Pre build +# ------------- +if [[ "${OV_PRE_BUILD}" == true || "${EXECUTE_ALL}" == true ]]; then + if [[ ${KURENTO_JAVA_COMMIT} != "default" ]]; then + git clone https://github.com/Kurento/kurento-java.git + pushd kurento-java + git checkout -f "${KURENTO_JAVA_COMMIT}" + MVN_VERSION="$(grep -oPm1 "(?<=)[^<]+" "pom.xml")" + mvn -B -Dmaven.artifact.threads=1 clean install + popd + rm -rf kurento-java + mvn -B versions:set-property -Dproperty=version.kurento -DnewVersion="${MVN_VERSION}" + fi + + mvn -B versions:set-property -Dproperty=version.openvidu.java.client -DnewVersion=TEST + mvn -B -DskipTests=true clean install + +fi + +# ------------- +# 8. OpenVidu Unit tests +# ------------- +if [[ "${OV_UNIT_TESTS}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-server + mvn -B -Dtest=io.openvidu.server.test.unit.*Test test + popd +fi + +# ------------- +# 9. OpenVidu Unit tests +# ------------- +if [[ "${OV_INTEGRATION_TESTS}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-server + mvn -B -Dtest=io.openvidu.server.test.integration.*Test test + popd +fi + +# ------------- +# 10. OpenVidu E2E Tests build +# ------------- +if [[ "${OV_E2E_TESTS_BUILD}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-test-browsers + mvn -B versions:set -DnewVersion=TEST && mvn -B clean install + popd + mvn -B versions:set-property -Dproperty=version.openvidu.java.client -DnewVersion=TEST + mvn -B versions:set-property -Dproperty=version.openvidu.test.browsers -DnewVersion=TEST + pushd openvidu-test-e2e + mvn -B -DskipTests=true clean install + popd +fi + +# ------------- +# 11. OpenVidu Server build +# ------------- +if [[ "${OV_SERVER_BUILD}" == true || "${EXECUTE_ALL}" == true ]]; then + pushd openvidu-server + mvn -B -DskipTests=true package + cp target/openvidu-server*.jar /opt/openvidu + popd +fi + +# ------------- +# 12. Environment launch Kurento +# ------------- +if [[ "${LAUNCH_OV_KURENTO}" == true || "${EXECUTE_ALL}" == true ]]; then + environmentLaunch "kurento" +fi + +# ------------- +# 13. OpenVidu E2E Tests Kurento +# ------------- +if [[ "${OV_E2E_KURENTO}" == true || "${EXECUTE_ALL}" == true ]]; then + openviduE2ETests "kurento" +fi + +# ------------- +# 14. Environment launch mediasoup +# ------------- +if [[ "${LAUNCH_OV_MEDIASOUP}" == true || "${EXECUTE_ALL}" == true ]]; then + environmentLaunch "mediasoup" +fi + +# ------------- +# 15. OpenVidu E2E Tests Kurento +# ------------- +if [[ "${OV_E2E_MEDIASOUP}" == true || "${EXECUTE_ALL}" == true ]]; then + openviduE2ETests "mediasoup" +fi \ No newline at end of file