github.com/yandex/pandora@v0.5.32/.github/workflows/perftest.yml (about) 1 name: Performance tests 2 3 on: 4 release: 5 types: [ created ] 6 7 env: 8 AWS_ENDPOINT_URL: https://storage.yandexcloud.net 9 AWS_REGION: ru-central1 10 11 jobs: 12 build-and-upload: 13 runs-on: ubuntu-latest 14 steps: 15 - uses: actions/checkout@v4 16 - uses: actions/setup-go@v5 17 with: 18 go-version: 1.21.x 19 cache: true 20 - id: test-go-setup 21 run: go test -race -covermode atomic ./... 22 - id: build 23 run: | 24 export GOOS=linux 25 export CGO_ENABLED=0 26 go build -o pandora-perf 27 - id: upload-binary 28 uses: osiegmar/s3-publisher-action@v1 29 env: 30 AWS_ACCESS_KEY_ID: ${{ secrets.YC_S3_KEY_ID }} 31 AWS_SECRET_ACCESS_KEY: ${{ secrets.YC_S3_KEY_SECRET }} 32 with: 33 dir: . 34 includes: pandora-perf 35 bucket: ${{ vars.YC_LOADTESTING_DATA_BUCKET }} 36 37 test-pandora-perf: 38 needs: [ build-and-upload ] 39 runs-on: ubuntu-latest 40 concurrency: { group: loadtesting } 41 env: 42 PERFTESTS_ROOT: "./performance-test/test-config" 43 PERFTESTS_AGENT_NAME: "agent-pandora-perf-medium" 44 TEST_LABELS: "version=${{ github.ref_name }}" 45 AGENT_FILTER: "name = 'agent-pandora-perf-medium'" 46 steps: 47 - uses: actions/checkout@v4 48 - id: run-perftests 49 name: Run Pandora Performance Tests 50 uses: yandex-cloud/yc-github-loadtesting-ci/test-suite@v1-beta 51 with: 52 action-log-level: INFO 53 auth-key-json-base64: ${{ secrets.YC_LOADTESTING_KEY_JSON_BASE64 }} 54 folder-id: ${{ vars.YC_LOADTESTING_FOLDER_ID }} 55 data-bucket: ${{ vars.YC_LOADTESTING_DATA_BUCKET }} 56 add-labels: "version=${{ github.ref_name }}" 57 agent-filter: "name='${{ env.PERFTESTS_AGENT_NAME }}'" 58 test-directories: | 59 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep0ms-overflow-false" 60 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep50ms-overflow-false" 61 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-300inst-sleep0ms-overflow-false" 62 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep0ms-overflow-true" 63 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-2000inst-sleep50ms-overflow-true" 64 "${{ env.PERFTESTS_ROOT }}/pandora-perf-grpc-300inst-sleep0ms-overflow-true" 65 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-300inst-sleep0ms-overflow-false" 66 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false" 67 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false" 68 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-300inst-sleep0ms-overflow-true" 69 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true" 70 "${{ env.PERFTESTS_ROOT }}/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true" 71 72 - uses: actions/upload-artifact@v4 73 if: always() 74 with: 75 name: perftest-artifacts 76 path: ${{ steps.run-perftests.outputs.artifacts-dir }} 77 78 - id: make-test-infos-json 79 if: always() 80 run: cp "${{ steps.run-perftests.outputs.test-infos-file }}" test-infos.json 81 82 - id: make-imbalance-md-str 83 name: Generate report 84 uses: sergeysova/jq-action@v2 85 with: 86 multiline: true 87 cmd: | 88 jq -r '.[] | "- \(.details.name): **\(.summary.imbalance_point.rps // 0 | tonumber)**"' test-infos.json > imbalance.md 89 90 - uses: actions/upload-artifact@v4 91 with: 92 name: imbalance.md 93 path: imbalance.md 94 95 - name: Update release 96 uses: tubone24/update_release@v1.3.1 97 env: 98 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 99 with: 100 body_path: imbalance.md 101 is_append_body: true 102