From be500e9b92917b1d6ef5bfc6d3c285ae75900490 Mon Sep 17 00:00:00 2001 From: neha_gupta Date: Tue, 4 Jul 2023 11:20:56 +0530 Subject: [PATCH] Longevity test (#3740) Longevity test which runs every night on same repo with the latest release code. #### Does this PR need a docs update or release note? - [ ] :no_entry: No #### Type of change - [ ] :broom: Tech Debt/Cleanup #### Issue(s) * [#](https://github.com/alcionai/corso/issues/3679) #### Test Plan - [ ] :muscle: Manual --- .github/workflows/longetivity_test.yml | 118 +++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/longetivity_test.yml diff --git a/.github/workflows/longetivity_test.yml b/.github/workflows/longetivity_test.yml new file mode 100644 index 000000000..a1e5fbc19 --- /dev/null +++ b/.github/workflows/longetivity_test.yml @@ -0,0 +1,118 @@ +name: Longetivity Testing +on: + schedule: + # Run every day at 04:00 GMT (roughly 8pm PST) + - cron: "0 4 * * *" + workflow_dispatch: + inputs: + user: + description: 'User to run longetivity test on' + +permissions: + # required to retrieve AWS credentials + id-token: write + contents: write + +# cancel currently running jobs if a new version of the branch is pushed +concurrency: + group: longevity_testing-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + SetM365App: + uses: alcionai/corso/.github/workflows/accSelector.yaml@main + + Longevity-Tests: + needs: [ SetM365App ] + environment: Testing + runs-on: ubuntu-latest + env: + # Need these in the local env so that corso can read them + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_SECRET }} + AZURE_CLIENT_ID: ${{ secrets[needs.SetM365App.outputs.client_id_env] }} + AZURE_CLIENT_SECRET: ${{ secrets[needs.SetM365App.outputs.client_secret_env] }} + AZURE_TENANT_ID: ${{ secrets.TENANT_ID }} + CORSO_PASSPHRASE: ${{ secrets.INTEGRATION_TEST_CORSO_PASSPHRASE }} + # re-used values + CORSO_LOG_DIR: ${{ github.workspace }}/src/testlog + CORSO_LOG_FILE: ${{ github.workspace }}/src/testlog/run-longevity.log + RESTORE_DEST_PFX: Corso_Test_Longevity_ + TEST_USER: ${{ github.event.inputs.user != '' && github.event.inputs.user || secrets.CORSO_M365_TEST_USER_ID }} + + defaults: + run: + working-directory: src + +########################################################################################################################################## +# setup + steps: + + - name: Get version string + id: version + run: | + echo version=$(git describe --tags --abbrev=0) | tee -a $GITHUB_OUTPUT + git describe --tags --abbrev=0 + + - uses: actions/checkout@v3 + with: + ref: ${{ steps.version.outputs.version }} + + - name: Setup Golang with cache + uses: magnetikonline/action-golang-cache@v4 + with: + go-version-file: src/go.mod + + - run: go build -o corso + - run: go build -o longevity-test ./cmd/longevity_test + + - run: mkdir ${CORSO_LOG_DIR} + +########################################################################################################################################## + +# Repository commands + + - name: Version Test + run: | + ./corso --version | grep -c 'Corso version:' + + - name: Repo init test + id: repo-init + run: | + set -euo pipefail + prefix='longevity' + echo -e "\nRepo init test\n" >> ${{ env.CORSO_LOG_FILE }} + ./corso repo init s3 \ + --no-stats \ + --hide-progress \ + --prefix $prefix \ + --bucket ${{ secrets.CI_TESTS_S3_BUCKET }} \ + --succeed-if-exists \ + 2>&1 | tee ${{ env.CORSO_LOG_DIR }}/gotest-repo-init.log + + if ! grep -q 'Initialized a S3 repository within bucket' ${{ env.CORSO_LOG_DIR }}/gotest-repo-init.log + then + echo "Repo could not be initialized" + exit 1 + fi + + echo result="$prefix" >> $GITHUB_OUTPUT + + - name: Repo connect test + run: | + set -euo pipefail + echo -e "\nRepo connect test\n" >> ${{ env.CORSO_LOG_FILE }} + ./corso repo connect s3 \ + --no-stats \ + --hide-progress \ + --prefix ${{ steps.repo-init.outputs.result }} \ + --bucket ${{ secrets.CI_TESTS_S3_BUCKET }} \ + 2>&1 | tee ${{ env.CORSO_LOG_DIR }}/gotest-repo-connect.log + + if ! grep -q 'Connected to S3 bucket' ${{ env.CORSO_LOG_DIR }}/gotest-repo-connect.log + then + echo "Repo could not be connected" + exit 1 + fi + +##########################################################################################################################################