Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.5.29 #193

Merged
merged 3 commits into from
Jun 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/[email protected]
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
Loading