From a20526b29c8d733bc8ff48a9f344b5b816d513d2 Mon Sep 17 00:00:00 2001 From: saimedhi Date: Thu, 26 Sep 2024 14:04:59 -0700 Subject: [PATCH] integ_tests Signed-off-by: saimedhi --- .../workflows/remote-integ-tests-workflow.yml | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 .github/workflows/remote-integ-tests-workflow.yml diff --git a/.github/workflows/remote-integ-tests-workflow.yml b/.github/workflows/remote-integ-tests-workflow.yml new file mode 100644 index 00000000..4e1bbb44 --- /dev/null +++ b/.github/workflows/remote-integ-tests-workflow.yml @@ -0,0 +1,170 @@ +name: FTR E2E FF Workbench Test + +on: [pull_request, push] + +env: + CI: 1 + # avoid warnings like "tput: No value for $TERM and no -T specified" + TERM: xterm + OPENSEARCH_DASHBOARDS_VERSION: 'main' + OPENSEARCH_VERSION: '3.0.0' + OPENSEARCH_PLUGIN_VERSION: '3.0.0.0' + +jobs: + tests: + name: Run FTR E2E FF Workbench Tests + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest ] + jdk: [ 21 ] + runs-on: ${{ matrix.os }} + + steps: + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk }} + + - name: Checkout Flow-Framework + uses: actions/checkout@v2 + with: + path: anomaly-detection + repository: opensearch-project/opensearch-flow-framework + ref: '${{ github.base_ref }}' + + + - name: Run OpenSearch with plugin + run: | + cd opensearch-flow-framework + ./gradlew run & + timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done' + shell: bash + + - name: Check OpenSearch Running on Linux + if: ${{ runner.os != 'Windows'}} + run: curl http://localhost:9200/ + shell: bash + + - name: Checkout OpenSearch Dashboards + uses: actions/checkout@v2 + with: + path: OpenSearch-Dashboards + repository: opensearch-project/OpenSearch-Dashboards + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} + fetch-depth: 0 + filter: | + cypress + test + + - name: Checkout FF in OpenSearch Dashboards Plugins Dir + uses: actions/checkout@v2 + with: + path: OpenSearch-Dashboards/plugins/dashboards-flow-framework + + - id: tool-versions + run: | + echo "node_version=$(cat .node-version)" >> $GITHUB_OUTPUT + echo "yarn_version=$(jq -r '.engines.yarn' package.json)" >> $GITHUB_OUTPUT + working-directory: OpenSearch-Dashboards + shell: bash + + - uses: actions/setup-node@v1 + with: + node-version: ${{ steps.tool-versions.outputs.node_version }} + registry-url: 'https://registry.npmjs.org' + + - name: Setup Opensearch Dashboards + run: | + npm uninstall -g yarn + echo "Installing yarn ${{ steps.tool-versions.outputs.yarn_version }}" + npm i -g yarn@${{ steps.tool-versions.outputs.yarn_version }} + yarn cache clean + yarn add sha.js + working-directory: OpenSearch-Dashboards + shell: bash + + - name: Boodstrap Opensearch Dashboards + run: | + yarn osd bootstrap --single-version=loose + working-directory: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + + - name: Run Opensearch Dashboards with FF Installed + run: | + nohup yarn start --no-base-path --no-watch --server.host="0.0.0.0" | tee dashboard.log & + working-directory: OpenSearch-Dashboards + + - name : Check If OpenSearch Dashboards Is Ready + if: ${{ runner.os == 'Linux' }} + run: | + if timeout 600 grep -q "bundles compiled successfully after" <(tail -n0 -f dashboard.log); then + echo "OpenSearch Dashboards compiled successfully." + else + echo "Timeout for 600 seconds reached. OpenSearch Dashboards did not finish compiling." + exit 1 + fi + working-directory: OpenSearch-Dashboards + + - name: Show OpenSearch Dashboards Logs + if: always() + run: cat dashboard.log + working-directory: OpenSearch-Dashboards + + - name: Health check + run: | + timeout 600 bash -c 'while [[ "$(curl -k http://localhost:5601/api/status | jq -r '.status.overall.state')" != "green" ]]; do sleep 5; done' + shell: bash + + - name: Check OpenSearch Dashboards Running on Linux + if: ${{ runner.os != 'Windows'}} + run: curl http://localhost:5601/api/status + shell: bash + + - name: Checkout Dashboards Functional Test Repo + uses: actions/checkout@v2 + with: + path: opensearch-dashboards-functional-test + repository: opensearch-project/opensearch-dashboards-functional-test + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} + fetch-depth: 0 + + - name: Install Cypress + run: | + npm install cypress --save-dev + shell: bash + working-directory: opensearch-dashboards-functional-test + + - name: Get Cypress version + id: cypress_version + run: | + echo "::set-output name=cypress_version::$(cat ./package.json | jq '.dependencies.cypress' | tr -d '"')" + working-directory: opensearch-dashboards-functional-test + + - name: Finding spec files and store to output + id: finding-files + run: | + { + echo 'FILELIST<> "$GITHUB_ENV" + working-directory: opensearch-dashboards-functional-test + + - name: Run spec files from output + run: | + env CYPRESS_NO_COMMAND_LOG=1 yarn cypress:run-without-security --browser chromium --spec 'cypress/integration/plugins/dashboards-flow-framework/*' + working-directory: opensearch-dashboards-functional-test + + - name: Capture failure screenshots + uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-screenshots-${{ matrix.os }} + path: opensearch-dashboards-functional-test/cypress/screenshots + + - name: Capture failure test video + uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-videos-${{ matrix.os }} + path: opensearch-dashboards-functional-test/cypress/videos