Skip to content

Commit

Permalink
Merge pull request #193 from yandex/dev
Browse files Browse the repository at this point in the history
v0.5.29
  • Loading branch information
oke11o authored Jun 28, 2024
2 parents 14c0cf1 + 14d9dd0 commit d98ede5
Show file tree
Hide file tree
Showing 64 changed files with 2,926 additions and 267 deletions.
3 changes: 3 additions & 0 deletions .changes/v0.5.27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## v0.5.27 - 2024-06-18
### Added
* Performance test on release
3 changes: 3 additions & 0 deletions .changes/v0.5.28.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## v0.5.28 - 2024-06-24
### Changed
* `discard_overflow` logic. Waiter wait 2 seconds sliding window before skip payload
3 changes: 3 additions & 0 deletions .changes/v0.5.29.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## v0.5.29 - 2024-06-25
### Added
* HTTP scenario var/header postprocessor use multiple pipes
25 changes: 25 additions & 0 deletions .github/actions/setup-yc/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: 'Setup YC tools'
description: 'Setup and configure required tools'
runs:
using: "composite"
steps:
- name: Check secret is set
shell: bash
run: |
if [[ -z "$YC_LT_AUTHORIZED_KEY_JSON" ]]; then echo "YC_LT_AUTHORIZED_KEY_JSON is empty" && exit 1; else echo "YC_LT_AUTHORIZED_KEY_JSON is set"; fi
- name: install utilities
shell: bash
run: |
sudo DEBIAN_FRONTEND=noninteractive apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y curl jq
sudo curl -f -s -LO https://storage.yandexcloud.net/yandexcloud-yc/install.sh
sudo bash install.sh -i /usr/local/yandex-cloud -n
sudo ln -sf /usr/local/yandex-cloud/bin/yc /usr/local/bin/yc
- name: configure yc cli
shell: bash
run: |
echo "$YC_LT_AUTHORIZED_KEY_JSON" > key.json
yc config profile create sa-profile
yc config set service-account-key ./key.json
yc config set format json
yc config set folder-id "$YC_LT_FOLDER_ID"
127 changes: 127 additions & 0 deletions .github/workflows/yc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Performance tests

on:
release:
types: [ created ]
env:
YC_LT_FOLDER_ID: b1gacohsvc2kc4d76tu5
YC_LT_AUTHORIZED_KEY_JSON: ${{ secrets.YC_LOADTESTING_CI_AUTHORIZED_KEY_JSON }}
YC_LT_TEST_AGENT_FILTER: "name = 'agent-pandora-perf-medium'"
YC_LT_TEST_EXTRA_DESCRIPTION: "GitHub Actions workflow - ${{github.run_id}}"
YC_LT_SKIP_TEST_CHECK: "1"
YC_LT_DATA_BUCKET: ${{ secrets.YC_LT_DATA_BUCKET }}
YC_LT_OUTPUT_DIR: ${{github.workspace}}/performance-test/output

jobs:
build-and-upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-yc
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.21.x
cache: true
- name: Test
run: go test -race -covermode atomic ./...
- name: Build
run: |
export GOOS=linux
export CGO_ENABLED=0
go build -o pandora_perf_2
- name: Upload
run: |
source performance-test/automation/_functions.sh && source performance-test/automation/_variables.sh; yc_s3_upload ./pandora_perf_2 pandora-perf ${YC_LT_DATA_BUCKET}
test-pandora-perf:
needs: [ build-and-upload ]
runs-on: ubuntu-latest
concurrency: { group: loadtesting }
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-yc
- name: Run Test HTTP-300inst-sleep0ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-false
- name: Run Test HTTP-2000inst-sleep0ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false
- name: Run Test HTTP-2000inst-sleep50ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false
- name: Run Test HTTP-300inst-sleep0ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-true
- name: Run Test HTTP-2000inst-sleep0ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true
- name: Run Test HTTP-2000inst-sleep50ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true
- name: Run Test GRPC-2000inst-sleep50ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false
- name: Run Test GRPC-2000inst-sleep50ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false
- name: Run Test GRPC-300inst-sleep0ms-overflow-false
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false
- name: Run Test GRPC-2000inst-sleep50ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true
- name: Run Test GRPC-2000inst-sleep50ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true
- name: Run Test GRPC-300inst-sleep0ms-overflow-true
run: |
stripped_tag="${{ github.event.release.tag_name }}"
STRIPPED_TAG=${stripped_tag:1}
YC_LT_TEST_EXTRA_LABELS="version=${STRIPPED_TAG}" ./performance-test/automation/test.sh ./performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true
- name: Upload Artifacts GRPC 300inst-sleep0ms
uses: actions/upload-artifact@v4
with:
name: pandora-perf-grpc-300inst-sleep0ms
path: ${{ env.YC_LT_OUTPUT_DIR }}

- name: Parse to Release 2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_ID: 161082234
run: |
cat <<EOF > imbalance.md
## Performance tests
EOF
find $YC_LT_OUTPUT_DIR -name 'summary.json' -exec jq -r '"- \(.details.name): **\(.summary.imbalance_point.rps // "0" | tonumber)**"' {} \; | sort >> imbalance.md
- name: Update release
id: update_release
uses: tubone24/update_release@v1.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
body_path: ./imbalance.md
is_append_body: true
48 changes: 47 additions & 1 deletion .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@
".changes/v0.5.24.md":"load/projects/pandora/.changes/v0.5.24.md",
".changes/v0.5.25.md":"load/projects/pandora/.changes/v0.5.25.md",
".changes/v0.5.26.md":"load/projects/pandora/.changes/v0.5.26.md",
".changes/v0.5.27.md":"load/projects/pandora/.changes/v0.5.27.md",
".changes/v0.5.28.md":"load/projects/pandora/.changes/v0.5.28.md",
".changes/v0.5.29.md":"load/projects/pandora/.changes/v0.5.29.md",
".changie.yaml":"load/projects/pandora/.changie.yaml",
".github/actions/setup-yc/action.yml":"load/projects/pandora/.github/actions/setup-yc/action.yml",
".github/workflows/release.yml":"load/projects/pandora/.github/workflows/release.yml",
".github/workflows/test.yml":"load/projects/pandora/.github/workflows/test.yml",
".github/workflows/yc.yml":"load/projects/pandora/.github/workflows/yc.yml",
".gitignore":"load/projects/pandora/.gitignore",
".goxc.json":"load/projects/pandora/.goxc.json",
".travis.yml":"load/projects/pandora/.travis.yml",
Expand Down Expand Up @@ -290,7 +295,6 @@
"docs/index.md":"load/projects/pandora/docs/index.md",
"docs/rus/architecture.md":"load/projects/pandora/docs/rus/architecture.md",
"docs/rus/best-practices.md":"load/projects/pandora/docs/rus/best-practices.md",
"docs/rus/best_practices.md":"load/projects/pandora/docs/rus/best_practices.md",
"docs/rus/best_practices/discard-overflow.md":"load/projects/pandora/docs/rus/best_practices/discard-overflow.md",
"docs/rus/best_practices/rps-per-instance.md":"load/projects/pandora/docs/rus/best_practices/rps-per-instance.md",
"docs/rus/best_practices/shared-client.md":"load/projects/pandora/docs/rus/best_practices/shared-client.md",
Expand Down Expand Up @@ -379,6 +383,48 @@
"lib/zaputil/stack_extract_core.go":"load/projects/pandora/lib/zaputil/stack_extract_core.go",
"lib/zaputil/stack_extract_core_test.go":"load/projects/pandora/lib/zaputil/stack_extract_core_test.go",
"main.go":"load/projects/pandora/main.go",
"performance-test/automation/_agent_create.sh":"load/projects/pandora/performance-test/automation/_agent_create.sh",
"performance-test/automation/_agent_delete.sh":"load/projects/pandora/performance-test/automation/_agent_delete.sh",
"performance-test/automation/_compose_test_create_args.sh":"load/projects/pandora/performance-test/automation/_compose_test_create_args.sh",
"performance-test/automation/_functions.sh":"load/projects/pandora/performance-test/automation/_functions.sh",
"performance-test/automation/_test_check.sh":"load/projects/pandora/performance-test/automation/_test_check.sh",
"performance-test/automation/_test_run.sh":"load/projects/pandora/performance-test/automation/_test_run.sh",
"performance-test/automation/_variables.sh":"load/projects/pandora/performance-test/automation/_variables.sh",
"performance-test/automation/agent.sh":"load/projects/pandora/performance-test/automation/agent.sh",
"performance-test/automation/default_check_report.sh":"load/projects/pandora/performance-test/automation/default_check_report.sh",
"performance-test/automation/default_check_summary.sh":"load/projects/pandora/performance-test/automation/default_check_summary.sh",
"performance-test/automation/s3_upload.sh":"load/projects/pandora/performance-test/automation/s3_upload.sh",
"performance-test/automation/test.sh":"load/projects/pandora/performance-test/automation/test.sh",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/payload.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/payload.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep0ms-overflow-true/test-config.yaml",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/payload.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/payload.json",
"performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-2000inst-sleep50ms-overflow-true/test-config.yaml",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/payload.json",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/payload.json":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/payload.json",
"performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-grpc-300inst-sleep0ms-overflow-true/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep0ms-overflow-true/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-2000inst-sleep50ms-overflow-true/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-false/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-false/meta.json",
"performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-false/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-false/test-config.yaml",
"performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-true/meta.json":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-true/meta.json",
"performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-true/test-config.yaml":"load/projects/pandora/performance-test/test-config/pandora-perf-http-uri-300inst-sleep0ms-overflow-true/test-config.yaml",
"script/checkfmt.sh":"load/projects/pandora/script/checkfmt.sh",
"script/coverage.sh":"load/projects/pandora/script/coverage.sh",
"tests/acceptance/common.go":"load/projects/pandora/tests/acceptance/common.go",
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
and is generated by [Changie](https://github.com/miniscruff/changie).


## v0.5.29 - 2024-06-25
### Added
* HTTP scenario var/header postprocessor use multiple pipes

## v0.5.28 - 2024-06-24
### Changed
* `discard_overflow` logic. Waiter wait 2 seconds sliding window before skip payload

## v0.5.27 - 2024-06-18
### Added
* Performance test on release

## v0.5.26 - 2024-05-21
### Added
* scenario config local block in yaml
Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,17 @@ pandora myconfig.yaml
Or use Pandora with [Yandex.Tank](https://yandextank.readthedocs.io/en/latest/core_and_modules.html#pandora) and
[Overload](https://overload.yandex.net).

## Performance tests

These tests are run when a release is created from a tag. See [.github/workflows/yc.yml](.github/workflows/yc.yml)

The scripts used to run are [performance-test/automation](performance-test/automation)

And the tests are in the following directory - [performance-test/test-config](performance-test/test-config).
Where one directory is one test.
Each test has a autostop point configured.
When all tests pass, all their autostop points will be written in the release description.

## Changelog

Install https://github.com/miniscruff/changie
Expand Down
2 changes: 1 addition & 1 deletion cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"go.uber.org/zap/zapcore"
)

const Version = "0.5.26"
const Version = "0.5.29"
const defaultConfigFile = "load"
const stdinConfigSelector = "-"

Expand Down
Loading

0 comments on commit d98ede5

Please sign in to comment.