From 3990aecb6f70f9060ed025ff12801ab0dda7ae0a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:10:35 -0700 Subject: [PATCH 001/153] finish step 1 --- .github/workflows/tests.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2873b0c202..5bb520f4e9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -461,3 +461,37 @@ jobs: working-directory: test/metrics - run: python3 test_${{ matrix.suffix }}.py working-directory: test/metrics + + foo: + runs-on: ubuntu-24.04 + steps: + - name: Get test-enqueue + uses: actions/checkout@v4 + with: + repository: citrusleaf/qe-tools + token: ${{ secrets.CLIENT_BOT_PAT }} + path: qe-tools + sparse-checkout: | + bin/test-enqueue + sparse-checkout-cone-mode: false + + - name: Add test-enqueue to PATH + run: echo $(realpath .):$PATH >> $GITHUB_ENV + working-directory: bin + + - uses: actions/checkout@v4 + with: + path: aerospike-client-python + sparse-checkout: | + test/client_perf.yaml + sparse-checkout-cone-mode: false + + - name: Allow test-enqueue to connect to Aerospike VPN + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + aws-region: us-west-1 + + - run: test-enqueue --config staging --deployment perf_client client_perf.yaml + working-directory: test/ From 887408345ce380aa91ae6f32fd4e5910a8338ba3 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:13:40 -0700 Subject: [PATCH 002/153] fix --- .github/workflows/tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5bb520f4e9..3a58c8619a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -476,8 +476,7 @@ jobs: sparse-checkout-cone-mode: false - name: Add test-enqueue to PATH - run: echo $(realpath .):$PATH >> $GITHUB_ENV - working-directory: bin + run: echo $(realpath qe-tools/bin):$PATH >> $GITHUB_ENV - uses: actions/checkout@v4 with: From cb602a962e7b8c8f0a4f1bc97ba79761d23cb96e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:16:10 -0700 Subject: [PATCH 003/153] do this way --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3a58c8619a..914d263c5e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -476,7 +476,7 @@ jobs: sparse-checkout-cone-mode: false - name: Add test-enqueue to PATH - run: echo $(realpath qe-tools/bin):$PATH >> $GITHUB_ENV + run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - uses: actions/checkout@v4 with: From af6406e2a8af3409a1f11e2bbe774b8df5239e7b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:26:51 -0700 Subject: [PATCH 004/153] 2nd repo probably needs to be cd'd into --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 914d263c5e..9e9dcc9860 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -493,4 +493,4 @@ jobs: aws-region: us-west-1 - run: test-enqueue --config staging --deployment perf_client client_perf.yaml - working-directory: test/ + working-directory: aerospike-client-python/test/ From 1a0bc99db85fe654f110b8c7195e641b70f97e6f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:31:59 -0700 Subject: [PATCH 005/153] forgot yaml --- test/client_perf.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 test/client_perf.yaml diff --git a/test/client_perf.yaml b/test/client_perf.yaml new file mode 100644 index 0000000000..ff909c2df0 --- /dev/null +++ b/test/client_perf.yaml @@ -0,0 +1,15 @@ +build: + repo: citrusleaf/aerospike-server + ref: + - 8.0.0.8 + + script: enterprise + target: + - x86-ubuntu-22.04 + +scenarios: + std: + - perfasd +definitions: + std: + - perf_new_configs2@perf_regression/kvs_basic:50 From 48b33605d82260e0d38c4aed522e0c91fa40513a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:54:42 -0700 Subject: [PATCH 006/153] install testctl --- .github/workflows/tests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9e9dcc9860..1e24051e07 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -478,6 +478,13 @@ jobs: - name: Add test-enqueue to PATH run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + + - run: go install aerospike.jfrog.io/artifactory/qe-go-dev-local/testctl.amd64.linux + - uses: actions/checkout@v4 with: path: aerospike-client-python From c221ab73d8a456928b253a6684f0a11b9dd87eef Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:55:17 -0700 Subject: [PATCH 007/153] fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1e24051e07..c14f8fffad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,7 +483,7 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: go install aerospike.jfrog.io/artifactory/qe-go-dev-local/testctl.amd64.linux + - run: go install aerospike.jfrog.io/artifactory/qe-go-dev-local/testctl.amd64.linux@latest - uses: actions/checkout@v4 with: From ad02e193d54bcda6cb07b8e735893f1eafd9f0fd Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:57:01 -0700 Subject: [PATCH 008/153] use jf cli instead --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c14f8fffad..612e808f39 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,7 +483,7 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: go install aerospike.jfrog.io/artifactory/qe-go-dev-local/testctl.amd64.linux@latest + - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl - uses: actions/checkout@v4 with: From 89a502a823f99d86005acbad137842c9bf433060 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:58:18 -0700 Subject: [PATCH 009/153] +x --- .github/workflows/tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 612e808f39..d73f60f700 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,7 +483,9 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl + - run: | + jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl + chmod u+x testctl - uses: actions/checkout@v4 with: From c38359587c5b28b24745f4bbe93fc422343a087a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:59:00 -0700 Subject: [PATCH 010/153] chmod inside new shell --- .github/workflows/tests.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d73f60f700..dcd95aa4d7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,10 +483,8 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: | - jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl - chmod u+x testctl - + - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl + - run: chmod u+x testctl - uses: actions/checkout@v4 with: path: aerospike-client-python From 47f93c9aafe50be9433ab877e17a178471abb42a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:02:43 -0700 Subject: [PATCH 011/153] .local/bin doesnt exist in PATH? --- .github/workflows/tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dcd95aa4d7..668753a7fd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,8 +483,10 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/.local/bin/testctl - - run: chmod u+x testctl + - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/bin/testctl + - run: chmod u+x ./testctl + working-directory: ~/bin + - run: echo "$(realpath ~/bin)" >> $GITHUB_PATH - uses: actions/checkout@v4 with: path: aerospike-client-python From 97d75f1f27a68c215c5a5469b49f880e0d5308ee Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:04:46 -0700 Subject: [PATCH 012/153] just install in default loc --- .github/workflows/tests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 668753a7fd..3d1773aa5d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,10 +483,9 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: jf rt download qe-go-dev-local/testctl.amd64.linux ~/bin/testctl + - run: jf rt download qe-go-dev-local/testctl.amd64.linux ./testctl - run: chmod u+x ./testctl - working-directory: ~/bin - - run: echo "$(realpath ~/bin)" >> $GITHUB_PATH + - run: echo "$(realpath ./testctl)" >> $GITHUB_PATH - uses: actions/checkout@v4 with: path: aerospike-client-python From 46b25fcd18014e41441cf8e59e8f0f7f5104c32a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:07:45 -0700 Subject: [PATCH 013/153] just install in qe-tools/bin --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3d1773aa5d..e6e31e736b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -483,9 +483,9 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: jf rt download qe-go-dev-local/testctl.amd64.linux ./testctl + - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl - run: chmod u+x ./testctl - - run: echo "$(realpath ./testctl)" >> $GITHUB_PATH + working-directory: qe-tools/bin - uses: actions/checkout@v4 with: path: aerospike-client-python From e1a8f443103c1e0a898a581fb3801954eb12d280 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:09:58 -0700 Subject: [PATCH 014/153] debug --- .github/workflows/tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e6e31e736b..473d3d3694 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -500,5 +500,7 @@ jobs: aws-secret-access-key: ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} aws-region: us-west-1 + - run: ls ~/.aws/credentials + - run: test-enqueue --config staging --deployment perf_client client_perf.yaml working-directory: aerospike-client-python/test/ From 7b3950a10d64265620d3cb3447a46f406d83a31c Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:20:28 -0700 Subject: [PATCH 015/153] action only supports env, but we need the cred file --- .github/workflows/tests.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 473d3d3694..32db6145d9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -493,12 +493,13 @@ jobs: test/client_perf.yaml sparse-checkout-cone-mode: false - - name: Allow test-enqueue to connect to Aerospike VPN - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} - aws-region: us-west-1 + - name: Add AWS credentials + run: | + mkdir -p ~/.aws + echo "[default]" > ~/.aws/credentials + echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} >> ~/.aws/credentials + echo "aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }}" >> ~/.aws/credentials + echo "region = us-west-1" >> ~/.aws/credentials - run: ls ~/.aws/credentials From 7c34a09e6eafcaaf0344ae69284130dec84371d5 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:21:15 -0700 Subject: [PATCH 016/153] fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 32db6145d9..a68a40735d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -497,7 +497,7 @@ jobs: run: | mkdir -p ~/.aws echo "[default]" > ~/.aws/credentials - echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} >> ~/.aws/credentials + echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }}" >> ~/.aws/credentials echo "aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }}" >> ~/.aws/credentials echo "region = us-west-1" >> ~/.aws/credentials From 01cb33468895f222f16d3e1c87ee5108a2076e18 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:25:27 -0700 Subject: [PATCH 017/153] debug --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a68a40735d..94bdf8e534 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -503,5 +503,8 @@ jobs: - run: ls ~/.aws/credentials + - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client + working-directory: aerospike-client-python/test/ + - run: test-enqueue --config staging --deployment perf_client client_perf.yaml working-directory: aerospike-client-python/test/ From 41165dedb4892475b688a867c74123eb128c35b6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:27:26 -0700 Subject: [PATCH 018/153] show version --- .github/workflows/tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94bdf8e534..cbd36301de 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -503,6 +503,8 @@ jobs: - run: ls ~/.aws/credentials + - run: testctl --version + - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client working-directory: aerospike-client-python/test/ From 5b1406644076ff3594c2f2c720a8b6029344cf0d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 18:15:13 -0700 Subject: [PATCH 019/153] add qe section --- .github/workflows/tests.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cbd36301de..0d48c508ac 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -496,10 +496,15 @@ jobs: - name: Add AWS credentials run: | mkdir -p ~/.aws - echo "[default]" > ~/.aws/credentials - echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }}" >> ~/.aws/credentials - echo "aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }}" >> ~/.aws/credentials - echo "region = us-west-1" >> ~/.aws/credentials + sections=("default" "qe") + for section in ${sections[@]}; + do + echo "[$section]" > ~/.aws/credentials + echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }}" >> ~/.aws/credentials + echo "aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }}" >> ~/.aws/credentials + echo "region = us-west-1" >> ~/.aws/credentials + done + shell: bash - run: ls ~/.aws/credentials From 276537aca5f6d16248d1c1b56289597baa6c7ba2 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 25 Jun 2025 18:19:11 -0700 Subject: [PATCH 020/153] print out test runs --- .github/workflows/tests.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0d48c508ac..edae11a5dc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -506,12 +506,12 @@ jobs: done shell: bash - - run: ls ~/.aws/credentials - - run: testctl --version - - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client - working-directory: aerospike-client-python/test/ + # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client + # working-directory: aerospike-client-python/test/ - run: test-enqueue --config staging --deployment perf_client client_perf.yaml working-directory: aerospike-client-python/test/ + + - run: testctl --config staging ps --since 10m From 1518ff3523c39825fcfade3cb3063aa636960eec Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 27 Jun 2025 14:26:42 -0700 Subject: [PATCH 021/153] Potential fix for code scanning alert no. 76: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index edae11a5dc..7a42ba97ca 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,8 @@ name: PR tests +permissions: + contents: read + env: LOWEST_SUPPORTED_PY_VERSION: '3.9' # pull_request event doesn't support inputs From 07c701a86cddb591a2a6722d85c70587968d40ba Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 30 Jun 2025 16:30:07 -0700 Subject: [PATCH 022/153] try running custom test now --- test/client_perf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index ff909c2df0..273a7272ba 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,4 +12,4 @@ scenarios: - perfasd definitions: std: - - perf_new_configs2@perf_regression/kvs_basic:50 + - perf_new_configs2@perf_regression/client_centered_kvs:50 From a2060f13373e645c9c274bdc80148dc70e35a46f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 13:55:42 -0700 Subject: [PATCH 023/153] use test definition registered in bob --- test/client_perf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index 273a7272ba..b556c89e8f 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,4 +12,4 @@ scenarios: - perfasd definitions: std: - - perf_new_configs2@perf_regression/client_centered_kvs:50 + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs From a10524a3fc22ad52eec9d0de64432186e1057018 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 14:10:41 -0700 Subject: [PATCH 024/153] use env var to always get the right test run id --- .github/workflows/tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7a42ba97ca..1bb2df288c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -514,7 +514,10 @@ jobs: # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client # working-directory: aerospike-client-python/test/ + - name: Allows us to get the exact test run id that was created by test-enqueue. + run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV + - run: test-enqueue --config staging --deployment perf_client client_perf.yaml working-directory: aerospike-client-python/test/ - - run: testctl --config staging ps --since 10m + - run: testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 From 6b8cab4a258b163dab6777d52869059321d1edab Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:10:31 -0700 Subject: [PATCH 025/153] poll test run, then download and print test results --- .github/workflows/tests.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1bb2df288c..3c8b5045fe 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -520,4 +520,24 @@ jobs: - run: test-enqueue --config staging --deployment perf_client client_perf.yaml working-directory: aerospike-client-python/test/ - - run: testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 + - name: Wait for test run to finish + id: poll-run-id + run: | + while true; do + run_id=$(testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') + if [[ -n "$run_id" ]]; then + echo "Test has not finished yet..." + sleep 2 + else + echo "Test has finished." + break + fi + done + echo "run_id=$run_id" >> "$GITHUB_OUTPUT" + + # We don't want to save the test results to the full run id + # Just use the shortened id so it's easier to CD into the directory below + - run: testctl download ${{ steps.poll-run-id.outputs.run-id }} --dest ${{ steps.poll-run-id.outputs.run-id }} + + - run: cat test_stdout + working-directory: ${{ steps.poll-run-id.outputs.run-id }} From a661af22ace888ec38b44c3bb2c086677184880e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:11:51 -0700 Subject: [PATCH 026/153] print cmds for debugging --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3c8b5045fe..a2051efdcf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -523,6 +523,7 @@ jobs: - name: Wait for test run to finish id: poll-run-id run: | + set -x while true; do run_id=$(testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') if [[ -n "$run_id" ]]; then From 81005fecb5bf7e9ca04dcc64cd6d073e0641ea9f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:12:51 -0700 Subject: [PATCH 027/153] fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a2051efdcf..3caa0648fe 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -526,7 +526,7 @@ jobs: set -x while true; do run_id=$(testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') - if [[ -n "$run_id" ]]; then + if [[ -z "$run_id" ]]; then echo "Test has not finished yet..." sleep 2 else From 0b209634171a7b1211b6dd1f9872e16368710d5c Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:17:57 -0700 Subject: [PATCH 028/153] wrong output name --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3caa0648fe..6514f5b47f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -538,7 +538,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl download ${{ steps.poll-run-id.outputs.run-id }} --dest ${{ steps.poll-run-id.outputs.run-id }} + - run: testctl download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} - run: cat test_stdout - working-directory: ${{ steps.poll-run-id.outputs.run-id }} + working-directory: ${{ steps.poll-run-id.outputs.run_id }} From e8f9b3b3ad2e53277ee51e6c86b3427c5b18f09c Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:19:09 -0700 Subject: [PATCH 029/153] rm debug step --- .github/workflows/tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6514f5b47f..bc097ed94a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -523,7 +523,6 @@ jobs: - name: Wait for test run to finish id: poll-run-id run: | - set -x while true; do run_id=$(testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') if [[ -z "$run_id" ]]; then From 72784916d1340b54f758c0c1009ee2559154cb47 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:21:01 -0700 Subject: [PATCH 030/153] disable color to fix --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bc097ed94a..e53eef3920 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -524,7 +524,8 @@ jobs: id: poll-run-id run: | while true; do - run_id=$(testctl --config staging ps --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') + # Color messes up the run_id's string + run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') if [[ -z "$run_id" ]]; then echo "Test has not finished yet..." sleep 2 From a87759bbf2ad9746b9cd4ef5318e4c5238f58f0f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:24:12 -0700 Subject: [PATCH 031/153] show test run string --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e53eef3920..3bd786aa45 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -527,10 +527,10 @@ jobs: # Color messes up the run_id's string run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') if [[ -z "$run_id" ]]; then - echo "Test has not finished yet..." + echo "Test run has not finished yet..." sleep 2 else - echo "Test has finished." + echo "Test run $run_id has finished." break fi done From 2057362eee1c81f0ec4ad2c73717e866d45f5375 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:28:18 -0700 Subject: [PATCH 032/153] trim whitespace --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3bd786aa45..ed11098273 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -525,7 +525,8 @@ jobs: run: | while true; do # Color messes up the run_id's string - run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d') + # Use xargs to trim whitespace from testctl's output + run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) if [[ -z "$run_id" ]]; then echo "Test run has not finished yet..." sleep 2 From 4366903e934b70ca277ae56c663277ef7257b00d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:30:26 -0700 Subject: [PATCH 033/153] testctl wrong configf --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ed11098273..1dc5d7f6dd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -539,7 +539,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} + - run: testctl --config staging download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} - run: cat test_stdout working-directory: ${{ steps.poll-run-id.outputs.run_id }} From 7933e3798b6d0002e89e2226cd33f8401215e97d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:33:14 -0700 Subject: [PATCH 034/153] try skipping downloading build packages since we dont have vpn access --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1dc5d7f6dd..b1216c8ded 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -539,7 +539,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl --config staging download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} + - run: testctl --config staging --skip-build-download download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} - run: cat test_stdout working-directory: ${{ steps.poll-run-id.outputs.run_id }} From 6799c6b6bc6293fdf6a7b0dea7cc8a26d1683d0a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:36:12 -0700 Subject: [PATCH 035/153] flag not in right order --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b1216c8ded..759f038cfe 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -539,7 +539,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl --config staging --skip-build-download download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} + - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} - run: cat test_stdout working-directory: ${{ steps.poll-run-id.outputs.run_id }} From 99ed17ed718599d551849084307906f58b24f17a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:38:36 -0700 Subject: [PATCH 036/153] fix order of args --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 759f038cfe..16c50f968c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -539,7 +539,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} -dest ${{ steps.poll-run-id.outputs.run_id }} + - run: testctl --config staging download --skip-build-download -dest ${{ steps.poll-run-id.outputs.run_id }} ${{ steps.poll-run-id.outputs.run_id }} - run: cat test_stdout working-directory: ${{ steps.poll-run-id.outputs.run_id }} From a28094c770a2fc6de611474c56db463aaafbcf28 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:41:44 -0700 Subject: [PATCH 037/153] workaround --- .github/workflows/tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 16c50f968c..19d1fc64bb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -539,7 +539,7 @@ jobs: # We don't want to save the test results to the full run id # Just use the shortened id so it's easier to CD into the directory below - - run: testctl --config staging download --skip-build-download -dest ${{ steps.poll-run-id.outputs.run_id }} ${{ steps.poll-run-id.outputs.run_id }} + # Need to skip downloading builds since we don't have VPN access (TODO check) + - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - - run: cat test_stdout - working-directory: ${{ steps.poll-run-id.outputs.run_id }} + - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout From 0151a549dc67175d373980d04626e5029a4f0efd Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:21:07 -0700 Subject: [PATCH 038/153] revise commenting --- .github/workflows/tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 19d1fc64bb..6e342e49cf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -537,9 +537,7 @@ jobs: done echo "run_id=$run_id" >> "$GITHUB_OUTPUT" - # We don't want to save the test results to the full run id - # Just use the shortened id so it's easier to CD into the directory below - # Need to skip downloading builds since we don't have VPN access (TODO check) + # Downloading builds doesn't work here, so we disable it - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout From 29d8a8f968eda0f1948cc87bb39c4df385814a8a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:27:00 -0700 Subject: [PATCH 039/153] set job status --- .github/workflows/tests.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6e342e49cf..c747cf1359 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -541,3 +541,12 @@ jobs: - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout + + - name: Set Github job status + run: | + run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + if [[ "$run_status" == "Failure" ]]; then + exit 1 + else + exit 0 + fi From 53de49d9fc3520280c9def0de264fddbea639119 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:30:17 -0700 Subject: [PATCH 040/153] fail fast on test-enqueue step --- .github/workflows/tests.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c747cf1359..ec4f784e75 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -517,7 +517,13 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - run: test-enqueue --config staging --deployment perf_client client_perf.yaml + - name: Enqueue test run and fail fast if unable to enqueue + run: | + enqueue_count=$(test-enqueue --config staging --deployment perf_client client_perf.yaml | grep "COUNT:" | sed 's/COUNT\://' | xargs) + if [[ "$enqueue_count" != "1" ]]; then + echo "We expected 1 test run to be enqueued, not $enqueue_count" + exit 1 + fi working-directory: aerospike-client-python/test/ - name: Wait for test run to finish From d6e57fa9bb5f5815778a9845d745170f959f9250 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:32:57 -0700 Subject: [PATCH 041/153] set test def to a bogus one --- test/client_perf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index b556c89e8f..8581f73dec 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,4 +12,4 @@ scenarios: - perfasd definitions: std: - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvsa From 48c197690491d1bc32b0c0ac834543bba4be840d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:33:36 -0700 Subject: [PATCH 042/153] revert --- test/client_perf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index 8581f73dec..b556c89e8f 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,4 +12,4 @@ scenarios: - perfasd definitions: std: - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvsa + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs From f13043b727f6ebf4ce85fee2c6863c2713f37ee7 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:37:06 -0700 Subject: [PATCH 043/153] improve err msg --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ec4f784e75..4c292329bf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -521,7 +521,7 @@ jobs: run: | enqueue_count=$(test-enqueue --config staging --deployment perf_client client_perf.yaml | grep "COUNT:" | sed 's/COUNT\://' | xargs) if [[ "$enqueue_count" != "1" ]]; then - echo "We expected 1 test run to be enqueued, not $enqueue_count" + echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." exit 1 fi working-directory: aerospike-client-python/test/ From 173d5fd881971844bfb865b82ac13f9f40fd56a0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:47:23 -0700 Subject: [PATCH 044/153] use heredoc to add aws credentials --- .github/workflows/tests.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4c292329bf..4f4faf2438 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -499,13 +499,16 @@ jobs: - name: Add AWS credentials run: | mkdir -p ~/.aws + cd ~/.aws sections=("default" "qe") for section in ${sections[@]}; do - echo "[$section]" > ~/.aws/credentials - echo "aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }}" >> ~/.aws/credentials - echo "aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }}" >> ~/.aws/credentials - echo "region = us-west-1" >> ~/.aws/credentials + cat << EOF >> credentials + [$section] + aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + region = us-west-1 + EOF done shell: bash From 682a6682455a8a6eaef07af6c50aa9f0fd13e1c1 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:55:25 -0700 Subject: [PATCH 045/153] heredoc contents maybe needs to be tabbed? --- .github/workflows/tests.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4f4faf2438..4016608403 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -503,11 +503,11 @@ jobs: sections=("default" "qe") for section in ${sections[@]}; do - cat << EOF >> credentials - [$section] - aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} - aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} - region = us-west-1 + cat <> credentials + [$section] + aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + region = us-west-1 EOF done shell: bash From 891afb3374c4cf116267ecda22fbde010af08713 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 19:57:49 -0700 Subject: [PATCH 046/153] leading tabs since this is in a for loop --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4016608403..08130a23df 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -503,7 +503,7 @@ jobs: sections=("default" "qe") for section in ${sections[@]}; do - cat <> credentials + cat <<- EOF >> credentials [$section] aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} From a0ac884885ae9860d28bcc37c42730ad3f4d02cc Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:01:35 -0700 Subject: [PATCH 047/153] rm leading space up to first EOF. <<- will not remove leading whitespaces, so rm them --- .github/workflows/tests.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 08130a23df..aa80b9296b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -503,11 +503,11 @@ jobs: sections=("default" "qe") for section in ${sections[@]}; do - cat <<- EOF >> credentials - [$section] - aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} - aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} - region = us-west-1 + cat <<-EOF >> credentials + [$section] + aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + region = us-west-1 EOF done shell: bash From 92dc1c4e88a43dbafaef0830d7de9123a70c6abe Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:06:21 -0700 Subject: [PATCH 048/153] rm leading space for 2nd EOF --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aa80b9296b..a123f9f6a5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -508,7 +508,7 @@ jobs: aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} region = us-west-1 - EOF + EOF done shell: bash From 85bfa067b8a400400684cb443259ff7fe0d0c7f9 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:09:09 -0700 Subject: [PATCH 049/153] print debug --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a123f9f6a5..0352641fc4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -554,6 +554,7 @@ jobs: - name: Set Github job status run: | run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + echo $run_status if [[ "$run_status" == "Failure" ]]; then exit 1 else From aeca494a49ac9e71b76898780e701ecf6d9daab6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:11:22 -0700 Subject: [PATCH 050/153] fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0352641fc4..0bdca8279b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -553,7 +553,7 @@ jobs: - name: Set Github job status run: | - run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns STATUS | sed '1d' | xargs) echo $run_status if [[ "$run_status" == "Failure" ]]; then exit 1 From b361c5ec38a75f7f112f7255427f7d954e554c1b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:27:14 -0700 Subject: [PATCH 051/153] hide debugging --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0bdca8279b..997946d4f7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -512,8 +512,9 @@ jobs: done shell: bash - - run: testctl --version + # - run: testctl --version + # test-enqueue hides testctl's output, so this can be helpful for debugging # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client # working-directory: aerospike-client-python/test/ From 4b208c03089d57284f5dfe89ea986980e84182ab Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:38:05 -0700 Subject: [PATCH 052/153] add workflow to enqueue qe tests --- .github/workflows/run-qe-test.yml | 112 ++++++++++++++++++++++++++++++ .github/workflows/tests.yml | 97 -------------------------- 2 files changed, 112 insertions(+), 97 deletions(-) create mode 100644 .github/workflows/run-qe-test.yml diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml new file mode 100644 index 0000000000..3a5fd53366 --- /dev/null +++ b/.github/workflows/run-qe-test.yml @@ -0,0 +1,112 @@ +on: + workflow_dispatch: + inputs: + test-scenario: + required: true + default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs + description: Test scenario + # TODO: remove + pull_request: + +jobs: + foo: + env: + TEST_CONFIG_FILE_NAME: client_perf.yaml + runs-on: ubuntu-24.04 + steps: + - name: Get test-enqueue + uses: actions/checkout@v4 + with: + repository: citrusleaf/qe-tools + token: ${{ secrets.CLIENT_BOT_PAT }} + path: qe-tools + sparse-checkout: | + bin/test-enqueue + sparse-checkout-cone-mode: false + + - name: Add test-enqueue to PATH + run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH + + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + + - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl + - run: chmod u+x ./testctl + working-directory: qe-tools/bin + - uses: actions/checkout@v4 + with: + path: aerospike-client-python + sparse-checkout: | + test/${{ env.TEST_CONFIG_FILE_NAME }} + sparse-checkout-cone-mode: false + + - name: Add AWS credentials + run: | + mkdir -p ~/.aws + cd ~/.aws + sections=("default" "qe") + for section in ${sections[@]}; + do + cat <<-EOF >> credentials + [$section] + aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + region = us-west-1 + EOF + done + shell: bash + + # - run: testctl --version + + # test-enqueue hides testctl's output, so this can be helpful for debugging + # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client + # working-directory: aerospike-client-python/test/ + + - name: Allows us to get the exact test run id that was created by test-enqueue. + run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV + + - run: yq write -i ${{ env.TEST_CONFIG_FILE_NAME }} '.definitions.std.[0] = "${{ inputs.test-scenario }}"' + working-directory: aerospike-client-python/test/ + + - name: Enqueue test run and fail fast if unable to enqueue + run: | + enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) + if [[ "$enqueue_count" != "1" ]]; then + echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." + exit 1 + fi + working-directory: aerospike-client-python/test/ + + - name: Wait for test run to finish + id: poll-run-id + run: | + while true; do + # Color messes up the run_id's string + # Use xargs to trim whitespace from testctl's output + run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + if [[ -z "$run_id" ]]; then + echo "Test run has not finished yet..." + sleep 2 + else + echo "Test run $run_id has finished." + break + fi + done + echo "run_id=$run_id" >> "$GITHUB_OUTPUT" + + # Downloading builds doesn't work here, so we disable it + - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} + + - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout + + - name: Set Github job status + run: | + run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns STATUS | sed '1d' | xargs) + echo $run_status + if [[ "$run_status" == "Failure" ]]; then + exit 1 + else + exit 0 + fi diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 997946d4f7..b046889d9a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -464,100 +464,3 @@ jobs: working-directory: test/metrics - run: python3 test_${{ matrix.suffix }}.py working-directory: test/metrics - - foo: - runs-on: ubuntu-24.04 - steps: - - name: Get test-enqueue - uses: actions/checkout@v4 - with: - repository: citrusleaf/qe-tools - token: ${{ secrets.CLIENT_BOT_PAT }} - path: qe-tools - sparse-checkout: | - bin/test-enqueue - sparse-checkout-cone-mode: false - - - name: Add test-enqueue to PATH - run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - - uses: jfrog/setup-jfrog-cli@v4 - env: - JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl - - run: chmod u+x ./testctl - working-directory: qe-tools/bin - - uses: actions/checkout@v4 - with: - path: aerospike-client-python - sparse-checkout: | - test/client_perf.yaml - sparse-checkout-cone-mode: false - - - name: Add AWS credentials - run: | - mkdir -p ~/.aws - cd ~/.aws - sections=("default" "qe") - for section in ${sections[@]}; - do - cat <<-EOF >> credentials - [$section] - aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} - aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} - region = us-west-1 - EOF - done - shell: bash - - # - run: testctl --version - - # test-enqueue hides testctl's output, so this can be helpful for debugging - # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client - # working-directory: aerospike-client-python/test/ - - - name: Allows us to get the exact test run id that was created by test-enqueue. - run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - - name: Enqueue test run and fail fast if unable to enqueue - run: | - enqueue_count=$(test-enqueue --config staging --deployment perf_client client_perf.yaml | grep "COUNT:" | sed 's/COUNT\://' | xargs) - if [[ "$enqueue_count" != "1" ]]; then - echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." - exit 1 - fi - working-directory: aerospike-client-python/test/ - - - name: Wait for test run to finish - id: poll-run-id - run: | - while true; do - # Color messes up the run_id's string - # Use xargs to trim whitespace from testctl's output - run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) - if [[ -z "$run_id" ]]; then - echo "Test run has not finished yet..." - sleep 2 - else - echo "Test run $run_id has finished." - break - fi - done - echo "run_id=$run_id" >> "$GITHUB_OUTPUT" - - # Downloading builds doesn't work here, so we disable it - - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - - - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout - - - name: Set Github job status - run: | - run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns STATUS | sed '1d' | xargs) - echo $run_status - if [[ "$run_status" == "Failure" ]]; then - exit 1 - else - exit 0 - fi From 044416e48992684da33e111f2cf8e368adcdcc7b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:38:28 -0700 Subject: [PATCH 053/153] rm automatic trigger --- .github/workflows/run-qe-test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 3a5fd53366..4369c14980 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -5,8 +5,6 @@ on: required: true default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs description: Test scenario - # TODO: remove - pull_request: jobs: foo: From 0f0e9b557fc4eb2a89e8e72ff222b41a2e7cceb0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:39:07 -0700 Subject: [PATCH 054/153] fix order --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 4369c14980..2236fbe363 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -65,7 +65,7 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - run: yq write -i ${{ env.TEST_CONFIG_FILE_NAME }} '.definitions.std.[0] = "${{ inputs.test-scenario }}"' + - run: yq write -i '.definitions.std.[0] = "${{ inputs.test-scenario }}"' ${{ env.TEST_CONFIG_FILE_NAME }} working-directory: aerospike-client-python/test/ - name: Enqueue test run and fail fast if unable to enqueue From 1a0d69d0e293c8d3119f7b319373677da9b6d15e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:40:15 -0700 Subject: [PATCH 055/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 2236fbe363..164c270e4d 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -65,7 +65,7 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - run: yq write -i '.definitions.std.[0] = "${{ inputs.test-scenario }}"' ${{ env.TEST_CONFIG_FILE_NAME }} + - run: yq -i '.definitions.std.[0] = "${{ inputs.test-scenario }}"' ${{ env.TEST_CONFIG_FILE_NAME }} working-directory: aerospike-client-python/test/ - name: Enqueue test run and fail fast if unable to enqueue From 38c6df3d2bfa991103a6ed6e04555a8ead9ac9dd Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 16:16:54 -0700 Subject: [PATCH 056/153] print stderr as well --- .github/workflows/run-qe-test.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 164c270e4d..6246c9b6e9 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -97,7 +97,13 @@ jobs: # Downloading builds doesn't work here, so we disable it - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - - run: cat ${{ steps.poll-run-id.outputs.run_id }}*/test_stdout + - name: Print test run logs + run: | + # So we can differentiate btwn stdout and stderr + set -x + cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 + cat stdout + cat stderr - name: Set Github job status run: | From 2278a1a0d5c66ea8288eebf686e61218566f8b99 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 2 Jul 2025 16:22:43 -0700 Subject: [PATCH 057/153] use echo, set -x does not print in the right order --- .github/workflows/run-qe-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 6246c9b6e9..3a559d89c7 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -99,10 +99,10 @@ jobs: - name: Print test run logs run: | - # So we can differentiate btwn stdout and stderr - set -x cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 + echo "stdout:" cat stdout + echo "stderr:" cat stderr - name: Set Github job status From d494d8ebdc8ac4ab9dcc6996d2cc95913a69bd9a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:12:07 -0700 Subject: [PATCH 058/153] use rclone to fetch binaries from google drive --- .github/workflows/run-qe-test.yml | 46 +++++++++++++++++++------------ 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 3a559d89c7..99f69c32ac 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -12,27 +12,39 @@ jobs: TEST_CONFIG_FILE_NAME: client_perf.yaml runs-on: ubuntu-24.04 steps: - - name: Get test-enqueue - uses: actions/checkout@v4 + - name: Setup Rclone + uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 with: - repository: citrusleaf/qe-tools - token: ${{ secrets.CLIENT_BOT_PAT }} - path: qe-tools - sparse-checkout: | - bin/test-enqueue - sparse-checkout-cone-mode: false + rclone_config: ${{ secrets.RCLONE_CONFIG }} + + - name: Download test-enqueue and testctl + run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy source:/ dest:~/bin' + + - name: Add test-enqueue and testctl to PATH + run: echo "$(realpath ~/bin)" >> $GITHUB_PATH + + # - name: Get test-enqueue + # uses: actions/checkout@v4 + # with: + # repository: citrusleaf/qe-tools + # token: ${{ secrets.CLIENT_BOT_PAT }} + # path: qe-tools + # sparse-checkout: | + # bin/test-enqueue + # sparse-checkout-cone-mode: false + + # - name: Add test-enqueue to PATH + # run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - name: Add test-enqueue to PATH - run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH + # - uses: jfrog/setup-jfrog-cli@v4 + # env: + # JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + # JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - uses: jfrog/setup-jfrog-cli@v4 - env: - JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + # - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl + # - run: chmod u+x ./testctl + # working-directory: qe-tools/bin - - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl - - run: chmod u+x ./testctl - working-directory: qe-tools/bin - uses: actions/checkout@v4 with: path: aerospike-client-python From 51a80df87505f9543301f79174d75ffdf5123912 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:14:08 -0700 Subject: [PATCH 059/153] wrong syntax --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 99f69c32ac..b58d620310 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -18,7 +18,7 @@ jobs: rclone_config: ${{ secrets.RCLONE_CONFIG }} - name: Download test-enqueue and testctl - run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy source:/ dest:~/bin' + run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy remote:/ ~/bin' - name: Add test-enqueue and testctl to PATH run: echo "$(realpath ~/bin)" >> $GITHUB_PATH From 098384328231b1ef34540b550ee78302f24ca912 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:15:58 -0700 Subject: [PATCH 060/153] fix incorrect names for binaries --- .github/workflows/run-qe-test.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index b58d620310..38ffc2e1ec 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -10,6 +10,7 @@ jobs: foo: env: TEST_CONFIG_FILE_NAME: client_perf.yaml + TESTCTL_BINARY_NAME: testctl.perf runs-on: ubuntu-24.04 steps: - name: Setup Rclone @@ -82,7 +83,7 @@ jobs: - name: Enqueue test run and fail fast if unable to enqueue run: | - enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) + enqueue_count=$(test-enqueue.perf --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) if [[ "$enqueue_count" != "1" ]]; then echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." exit 1 @@ -95,7 +96,7 @@ jobs: while true; do # Color messes up the run_id's string # Use xargs to trim whitespace from testctl's output - run_id=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + run_id=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) if [[ -z "$run_id" ]]; then echo "Test run has not finished yet..." sleep 2 @@ -107,7 +108,7 @@ jobs: echo "run_id=$run_id" >> "$GITHUB_OUTPUT" # Downloading builds doesn't work here, so we disable it - - run: testctl --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} + - run: ${{ env.TESTCTL_BINARY_NAME }} --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - name: Print test run logs run: | @@ -119,7 +120,7 @@ jobs: - name: Set Github job status run: | - run_status=$(testctl --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns STATUS | sed '1d' | xargs) + run_status=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns STATUS | sed '1d' | xargs) echo $run_status if [[ "$run_status" == "Failure" ]]; then exit 1 From d7e11362cf6ba6f69ef5a8657695d6a471d3a040 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:17:14 -0700 Subject: [PATCH 061/153] debug print --- .github/workflows/run-qe-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 38ffc2e1ec..e038ff8422 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -22,7 +22,9 @@ jobs: run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy remote:/ ~/bin' - name: Add test-enqueue and testctl to PATH - run: echo "$(realpath ~/bin)" >> $GITHUB_PATH + run: | + ls -l ~/bin + echo "$(realpath ~/bin)" >> $GITHUB_PATH # - name: Get test-enqueue # uses: actions/checkout@v4 From c498a5f9296646807f249d731efbf0ae5819ef0a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 14:48:55 -0700 Subject: [PATCH 062/153] use the prev version of testctl and test-enqueue. we already registered the test with testctl version def256f --- .github/workflows/run-qe-test.yml | 62 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index e038ff8422..f219ad766b 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -10,43 +10,43 @@ jobs: foo: env: TEST_CONFIG_FILE_NAME: client_perf.yaml - TESTCTL_BINARY_NAME: testctl.perf + TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 steps: - - name: Setup Rclone - uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 + # - name: Setup Rclone + # uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 + # with: + # rclone_config: ${{ secrets.RCLONE_CONFIG }} + + # - name: Download test-enqueue and testctl + # run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy remote:/ ~/bin' + + # - name: Add test-enqueue and testctl to PATH + # run: | + # ls -l ~/bin + # echo "$(realpath ~/bin)" >> $GITHUB_PATH + + - name: Get test-enqueue + uses: actions/checkout@v4 with: - rclone_config: ${{ secrets.RCLONE_CONFIG }} + repository: citrusleaf/qe-tools + token: ${{ secrets.CLIENT_BOT_PAT }} + path: qe-tools + sparse-checkout: | + bin/test-enqueue + sparse-checkout-cone-mode: false - - name: Download test-enqueue and testctl - run: 'rclone --drive-root-folder-id ${{ secrets.TEST_ENQUEUE_PERF_GOOGLE_DRIVE_FOLDER_ID }} copy remote:/ ~/bin' + - name: Add test-enqueue to PATH + run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - name: Add test-enqueue and testctl to PATH - run: | - ls -l ~/bin - echo "$(realpath ~/bin)" >> $GITHUB_PATH + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - # - name: Get test-enqueue - # uses: actions/checkout@v4 - # with: - # repository: citrusleaf/qe-tools - # token: ${{ secrets.CLIENT_BOT_PAT }} - # path: qe-tools - # sparse-checkout: | - # bin/test-enqueue - # sparse-checkout-cone-mode: false - - # - name: Add test-enqueue to PATH - # run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - # - uses: jfrog/setup-jfrog-cli@v4 - # env: - # JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} - # JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - # - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl - # - run: chmod u+x ./testctl - # working-directory: qe-tools/bin + - run: jf rt download qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl + - run: chmod u+x ./testctl + working-directory: qe-tools/bin - uses: actions/checkout@v4 with: From 63c6c3e9e1973b4fc5472561b783386dc3719be6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 16 Jul 2025 14:49:34 -0700 Subject: [PATCH 063/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index f219ad766b..58baacfbaf 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -85,7 +85,7 @@ jobs: - name: Enqueue test run and fail fast if unable to enqueue run: | - enqueue_count=$(test-enqueue.perf --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) + enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) if [[ "$enqueue_count" != "1" ]]; then echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." exit 1 From 3eec83a054d2648429671e435a76c916fa200314 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:14:43 -0700 Subject: [PATCH 064/153] update redirected links. double timeout delay --- doc/client.rst | 2 +- doc/conf.py | 2 ++ doc/scan.rst | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/client.rst b/doc/client.rst index 43fbbf8a7a..b9c68db283 100755 --- a/doc/client.rst +++ b/doc/client.rst @@ -622,7 +622,7 @@ User Defined Functions :raises: a subclass of :exc:`~aerospike.exception.AerospikeError`. .. seealso:: `Record UDF `_ \ - and `Developing Record UDFs `_. + and `Developing Record UDFs `_. .. method:: scan_apply(ns, set, module, function[, args[, policy: dict[, options]]]) -> int diff --git a/doc/conf.py b/doc/conf.py index 262822e29e..a27b95c448 100755 --- a/doc/conf.py +++ b/doc/conf.py @@ -268,3 +268,5 @@ def __getattr__(cls, name): linkcheck_ignore = [ "https://docs.aerospike.com/server/guide/security/index.html" ] + +linkcheck_timeout = 60 diff --git a/doc/scan.rst b/doc/scan.rst index f0d767abab..21224446bc 100755 --- a/doc/scan.rst +++ b/doc/scan.rst @@ -67,7 +67,7 @@ Methods If you need to use an unsupported type, (e.g. set or tuple) you must use your own serializer. :return: one of the supported types, :class:`int`, :class:`str`, :class:`float` (double), :class:`list`, :class:`dict` (map), :class:`bytearray` (bytes), :class:`bool`. - .. seealso:: `Developing Record UDFs `_ + .. seealso:: `Developing Record UDFs `_ .. method:: add_ops(ops) From 9a84c2596208d2a327a47772e7c8724d27de6e3d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:21:47 -0700 Subject: [PATCH 065/153] Revert "update redirected links. double timeout delay" This reverts commit 3eec83a054d2648429671e435a76c916fa200314. --- doc/client.rst | 2 +- doc/conf.py | 2 -- doc/scan.rst | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/client.rst b/doc/client.rst index b9c68db283..43fbbf8a7a 100755 --- a/doc/client.rst +++ b/doc/client.rst @@ -622,7 +622,7 @@ User Defined Functions :raises: a subclass of :exc:`~aerospike.exception.AerospikeError`. .. seealso:: `Record UDF `_ \ - and `Developing Record UDFs `_. + and `Developing Record UDFs `_. .. method:: scan_apply(ns, set, module, function[, args[, policy: dict[, options]]]) -> int diff --git a/doc/conf.py b/doc/conf.py index a27b95c448..262822e29e 100755 --- a/doc/conf.py +++ b/doc/conf.py @@ -268,5 +268,3 @@ def __getattr__(cls, name): linkcheck_ignore = [ "https://docs.aerospike.com/server/guide/security/index.html" ] - -linkcheck_timeout = 60 diff --git a/doc/scan.rst b/doc/scan.rst index 21224446bc..f0d767abab 100755 --- a/doc/scan.rst +++ b/doc/scan.rst @@ -67,7 +67,7 @@ Methods If you need to use an unsupported type, (e.g. set or tuple) you must use your own serializer. :return: one of the supported types, :class:`int`, :class:`str`, :class:`float` (double), :class:`list`, :class:`dict` (map), :class:`bytearray` (bytes), :class:`bool`. - .. seealso:: `Developing Record UDFs `_ + .. seealso:: `Developing Record UDFs `_ .. method:: add_ops(ops) From 919d0f01c02a01e0fee040c18edeb8240cd442ef Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:30:10 -0700 Subject: [PATCH 066/153] replace redirected link --- doc/scan.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/scan.rst b/doc/scan.rst index f0d767abab..bf8e99c3c7 100755 --- a/doc/scan.rst +++ b/doc/scan.rst @@ -63,7 +63,7 @@ Methods :param str module: the name of the Lua module. :param str function: the name of the Lua function within the *module*. - :param list arguments: optional arguments to pass to the *function*. NOTE: these arguments must be types supported by Aerospike See: `supported data types `_. + :param list arguments: optional arguments to pass to the *function*. NOTE: these arguments must be types supported by Aerospike See: `supported data types `_. If you need to use an unsupported type, (e.g. set or tuple) you must use your own serializer. :return: one of the supported types, :class:`int`, :class:`str`, :class:`float` (double), :class:`list`, :class:`dict` (map), :class:`bytearray` (bytes), :class:`bool`. From a22ca22154d2c7952a4604dff93244fc05bbecdb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:30:52 -0700 Subject: [PATCH 067/153] Revert "replace redirected link" This reverts commit 919d0f01c02a01e0fee040c18edeb8240cd442ef. --- doc/scan.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/scan.rst b/doc/scan.rst index bf8e99c3c7..f0d767abab 100755 --- a/doc/scan.rst +++ b/doc/scan.rst @@ -63,7 +63,7 @@ Methods :param str module: the name of the Lua module. :param str function: the name of the Lua function within the *module*. - :param list arguments: optional arguments to pass to the *function*. NOTE: these arguments must be types supported by Aerospike See: `supported data types `_. + :param list arguments: optional arguments to pass to the *function*. NOTE: these arguments must be types supported by Aerospike See: `supported data types `_. If you need to use an unsupported type, (e.g. set or tuple) you must use your own serializer. :return: one of the supported types, :class:`int`, :class:`str`, :class:`float` (double), :class:`list`, :class:`dict` (map), :class:`bytearray` (bytes), :class:`bool`. From 9c10e6c963068796b8e032fa4b8d90e549f4da7a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 1 Aug 2025 12:34:46 -0700 Subject: [PATCH 068/153] tail logs --- .github/workflows/run-qe-test.yml | 50 ++++++++++++++++--------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 58baacfbaf..7f1a443d80 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -92,33 +92,35 @@ jobs: fi working-directory: aerospike-client-python/test/ - - name: Wait for test run to finish - id: poll-run-id - run: | - while true; do - # Color messes up the run_id's string - # Use xargs to trim whitespace from testctl's output - run_id=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) - if [[ -z "$run_id" ]]; then - echo "Test run has not finished yet..." - sleep 2 - else - echo "Test run $run_id has finished." - break - fi - done - echo "run_id=$run_id" >> "$GITHUB_OUTPUT" + - run: sshpass -p ${{ secrets.PERF_PASSWORD }} ssh ${{ secrets.PERF_USERNAME }}@${{ secrets.PERF_HOST }} docker logs -f test_0 + + # - name: Wait for test run to finish + # id: poll-run-id + # run: | + # while true; do + # # Color messes up the run_id's string + # # Use xargs to trim whitespace from testctl's output + # run_id=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + # if [[ -z "$run_id" ]]; then + # echo "Test run has not finished yet..." + # sleep 2 + # else + # echo "Test run $run_id has finished." + # break + # fi + # done + # echo "run_id=$run_id" >> "$GITHUB_OUTPUT" # Downloading builds doesn't work here, so we disable it - - run: ${{ env.TESTCTL_BINARY_NAME }} --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} + # - run: ${{ env.TESTCTL_BINARY_NAME }} --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - - name: Print test run logs - run: | - cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 - echo "stdout:" - cat stdout - echo "stderr:" - cat stderr + # - name: Print test run logs + # run: | + # cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 + # echo "stdout:" + # cat stdout + # echo "stderr:" + # cat stderr - name: Set Github job status run: | From 7dcbd99cf8eb54e9d24945f10f3fddb2bbaa1c13 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 8 Sep 2025 10:01:07 -0700 Subject: [PATCH 069/153] rm dup --- .github/workflows/tests.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3582ea0971..ab6ce04984 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,9 +2,6 @@ name: PR tests permissions: contents: read -permissions: - contents: read - env: LOWEST_SUPPORTED_PY_VERSION: '3.9' # pull_request event doesn't support inputs From ba313bac462e9bcb23915bab1252c2737f5a7d44 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:19:04 -0700 Subject: [PATCH 070/153] Clear up --- .github/workflows/run-qe-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 7f1a443d80..8f3ab5ab31 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -92,7 +92,8 @@ jobs: fi working-directory: aerospike-client-python/test/ - - run: sshpass -p ${{ secrets.PERF_PASSWORD }} ssh ${{ secrets.PERF_USERNAME }}@${{ secrets.PERF_HOST }} docker logs -f test_0 + - name: Print test logs in real time + run: sshpass -p ${{ secrets.PERF_PASSWORD }} ssh ${{ secrets.PERF_USERNAME }}@${{ secrets.PERF_HOST }} docker logs -f test_0 # - name: Wait for test run to finish # id: poll-run-id From 78eb2668e1b12f5e63d771544afac2e3e3cc958b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 22 Sep 2025 13:11:22 -0700 Subject: [PATCH 071/153] Test all the features in our test suite --- test/client_perf.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index b556c89e8f..8ba622bac8 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,4 +12,11 @@ scenarios: - perfasd definitions: std: - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_read + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_insert + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_update + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_delete + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_read + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_write + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query From 818b3579e34978bb8affe0134571b8b2d74a4e95 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:40:49 -0700 Subject: [PATCH 072/153] add test def for raising exceptions --- test/client_perf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/test/client_perf.yaml b/test/client_perf.yaml index 8ba622bac8..dcdf941d3b 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -20,3 +20,4 @@ definitions: - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_write - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_raise_exception From 397400560361d632154242a5b4e43f4966968d79 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 3 Oct 2025 10:35:51 -0700 Subject: [PATCH 073/153] Skeleton code for building qe docker test image. Add expression test --- .github/workflows/run-qe-test.yml | 7 +++++++ .github/workflows/stage-tests.yml | 11 +++++++++++ test/client_perf.yaml | 20 +++++++++++--------- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8f3ab5ab31..8ae486d900 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -5,6 +5,13 @@ on: required: true default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs description: Test scenario + workflow_call: + inputs: + test-scenario: + type: string + required: true + default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs + description: Test scenario jobs: foo: diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index 29b686d19c..6ad3afc2ef 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -250,3 +250,14 @@ jobs: run: python3 -m pytest new_tests/ id: test working-directory: test + + add-latest-dev-build-to-qe-test-image-for-performance-regression-tests: + # We do not always have JFrog builds for arbitrary branches + if: ${{ inputs.use_jfrog_builds }} + uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@jkim/pipeline + with: + jfrog_artifact_version: ${{ inputs.jfrog-build-version-to-test }} + + trigger-performance-regression-tests-in-bob: + needs: build-qe-test-image-for-performance-regression-tests + uses: .github/workflows/run-qe-test.yml diff --git a/test/client_perf.yaml b/test/client_perf.yaml index dcdf941d3b..1672626c96 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,12 +12,14 @@ scenarios: - perfasd definitions: std: - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_read - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_insert - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_update - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_delete - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_read - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_write - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_raise_exception + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_read + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_insert + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_update + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_delete + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_read + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_write + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_raise_exception + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_expressions + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_command_level_policy From 8384aa71090e9afbf899e0c8eb82869b8f111d93 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 3 Oct 2025 10:41:51 -0700 Subject: [PATCH 074/153] Grant least permissions to GITHUB_TOKEN to stop warnings --- .github/workflows/stage-tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index 6ad3afc2ef..d5d9ef3dd3 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -5,6 +5,9 @@ name: Stage tests # The purpose is to test that our artifacts work on the Linux distros / OS versions that the client supports # and QE doesn't have enough disk space for more Linux distros, so we have some tests here in Github Actions +permissions: + contents: read + on: workflow_call: inputs: @@ -259,5 +262,5 @@ jobs: jfrog_artifact_version: ${{ inputs.jfrog-build-version-to-test }} trigger-performance-regression-tests-in-bob: - needs: build-qe-test-image-for-performance-regression-tests + needs: add-latest-dev-build-to-qe-test-image-for-performance-regression-tests uses: .github/workflows/run-qe-test.yml From 7b0e13d7ee8cab7fe8b63a8754f901beded71bc7 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:58:19 -0700 Subject: [PATCH 075/153] Fix syntax --- .github/workflows/stage-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index d5d9ef3dd3..b5a5671a4d 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -263,4 +263,4 @@ jobs: trigger-performance-regression-tests-in-bob: needs: add-latest-dev-build-to-qe-test-image-for-performance-regression-tests - uses: .github/workflows/run-qe-test.yml + uses: ./.github/workflows/run-qe-test.yml From ae246b1de193b95f304e232afed831eb68023f89 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:27:45 -0700 Subject: [PATCH 076/153] ci/cd manual testing --- .github/workflows/run-qe-test.yml | 70 +++++++++++++++++++------------ .github/workflows/stage-tests.yml | 11 ----- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8ae486d900..655a315f46 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -1,12 +1,20 @@ on: workflow_dispatch: inputs: + python-client-version-in-jfrog-to-test: + type: string + required: true + description: Python client version test-scenario: required: true default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs description: Test scenario workflow_call: inputs: + python-client-version-in-jfrog-to-test: + type: string + required: true + description: Python client version test-scenario: type: string required: true @@ -14,11 +22,19 @@ on: description: Test scenario jobs: - foo: + add-python-client-to-qe-test-image-for-performance-regression-tests: + # We do not always have JFrog builds for arbitrary branches + uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@master + with: + jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike + jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} + + run-qe-test: env: TEST_CONFIG_FILE_NAME: client_perf.yaml TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 + needs: add-python-client-to-qe-test-image-for-performance-regression-tests steps: # - name: Setup Rclone # uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 @@ -99,36 +115,36 @@ jobs: fi working-directory: aerospike-client-python/test/ - - name: Print test logs in real time - run: sshpass -p ${{ secrets.PERF_PASSWORD }} ssh ${{ secrets.PERF_USERNAME }}@${{ secrets.PERF_HOST }} docker logs -f test_0 + # - name: Print test logs in real time + # run: sshpass -p ${{ secrets.PERF_PASSWORD }} ssh ${{ secrets.PERF_USERNAME }}@${{ secrets.PERF_HOST }} docker logs -f test_0 - # - name: Wait for test run to finish - # id: poll-run-id - # run: | - # while true; do - # # Color messes up the run_id's string - # # Use xargs to trim whitespace from testctl's output - # run_id=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) - # if [[ -z "$run_id" ]]; then - # echo "Test run has not finished yet..." - # sleep 2 - # else - # echo "Test run $run_id has finished." - # break - # fi - # done - # echo "run_id=$run_id" >> "$GITHUB_OUTPUT" + - name: Wait for test run to finish + id: poll-run-id + run: | + while true; do + # Color messes up the run_id's string + # Use xargs to trim whitespace from testctl's output + run_id=$(${{ env.TESTCTL_BINARY_NAME }} --config staging ps --no-color --user ${{ env.TESTCTL_USER }} -n 1 -status completed --columns RUN_ID | sed '1d' | xargs) + if [[ -z "$run_id" ]]; then + echo "Test run has not finished yet..." + sleep 2 + else + echo "Test run $run_id has finished." + break + fi + done + echo "run_id=$run_id" >> "$GITHUB_OUTPUT" # Downloading builds doesn't work here, so we disable it - # - run: ${{ env.TESTCTL_BINARY_NAME }} --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} + - run: ${{ env.TESTCTL_BINARY_NAME }} --config staging download --skip-build-download ${{ steps.poll-run-id.outputs.run_id }} - # - name: Print test run logs - # run: | - # cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 - # echo "stdout:" - # cat stdout - # echo "stderr:" - # cat stderr + - name: Print test run logs + run: | + cd ${{ steps.poll-run-id.outputs.run_id }}*/work/test_0 + echo "stdout:" + cat stdout + echo "stderr:" + cat stderr - name: Set Github job status run: | diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index b5a5671a4d..45d9a67360 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -253,14 +253,3 @@ jobs: run: python3 -m pytest new_tests/ id: test working-directory: test - - add-latest-dev-build-to-qe-test-image-for-performance-regression-tests: - # We do not always have JFrog builds for arbitrary branches - if: ${{ inputs.use_jfrog_builds }} - uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@jkim/pipeline - with: - jfrog_artifact_version: ${{ inputs.jfrog-build-version-to-test }} - - trigger-performance-regression-tests-in-bob: - needs: add-latest-dev-build-to-qe-test-image-for-performance-regression-tests - uses: ./.github/workflows/run-qe-test.yml From 42d6438f5a12cde00b8e9fd7636069d5e7300095 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:48:25 -0700 Subject: [PATCH 077/153] only allow read permissions for getting the repo --- .github/workflows/run-qe-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 655a315f46..c28ea074c3 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -1,3 +1,6 @@ +permissions: + contents: read + on: workflow_dispatch: inputs: From 2f785c874aee2d6e31e1d6118d861c362a36faa0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:55:37 -0700 Subject: [PATCH 078/153] clone qe-docker using PAT since it is a private repo, and public repos cannot access private repos' shared workflows directly --- .github/workflows/run-qe-test.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index c28ea074c3..8047d07e88 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -26,11 +26,19 @@ on: jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: - # We do not always have JFrog builds for arbitrary branches - uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@master - with: - jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike - jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} +# uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@master + runs-on: ubuntu-24.04 + steps: + - name: Get Github actions workflow to build Docker image + uses: actions/checkout@v4 + with: + repository: citrusleaf/qe-docker + token: ${{ secrets.CLIENT_BOT_PAT }} + + - uses: ./.github/workflows/build-deploy-python-3.11.yml@master + with: + jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike + jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} run-qe-test: env: From 93dea910470af41dbcb2b30bfc2875b983ea39ea Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:56:32 -0700 Subject: [PATCH 079/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8047d07e88..25d10843b6 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,7 +35,7 @@ jobs: repository: citrusleaf/qe-docker token: ${{ secrets.CLIENT_BOT_PAT }} - - uses: ./.github/workflows/build-deploy-python-3.11.yml@master + - uses: ./.github/workflows/build-deploy-python-3.11.yml with: jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} From 5228f861339297c988907a0eda7b54c784b6b650 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:58:33 -0700 Subject: [PATCH 080/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 25d10843b6..4f4b7512b5 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,7 +35,7 @@ jobs: repository: citrusleaf/qe-docker token: ${{ secrets.CLIENT_BOT_PAT }} - - uses: ./.github/workflows/build-deploy-python-3.11.yml + - uses: ./qe-docker/.github/workflows/build-deploy-python-3.11.yml with: jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} From d97ea62350dd82cfe1e2c300365d2d29b4af9520 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:17:43 -0700 Subject: [PATCH 081/153] try using bin/build --- .github/workflows/run-qe-test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 4f4b7512b5..30683ee767 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,10 +35,7 @@ jobs: repository: citrusleaf/qe-docker token: ${{ secrets.CLIENT_BOT_PAT }} - - uses: ./qe-docker/.github/workflows/build-deploy-python-3.11.yml - with: - jfrog_artifact_url: https://aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike - jfrog_artifact_version: ${{ inputs.python-client-version-in-jfrog-to-test }} + - run: ./bin/build -b -p -m --dry-run test/python/3.11-mavenAnsible.Dockerfile run-qe-test: env: From 6a0e6ca12406fb7e717bcbaef165d3fe913787e3 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:34:24 -0700 Subject: [PATCH 082/153] Package docker image with wheel to use for performance testing --- .github/workflows/run-qe-test.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 30683ee767..4d0b6fb0eb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -26,22 +26,24 @@ on: jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: -# uses: citrusleaf/qe-docker/.github/workflows/build-deploy-python-3.11.yml@master runs-on: ubuntu-24.04 steps: - name: Get Github actions workflow to build Docker image uses: actions/checkout@v4 with: - repository: citrusleaf/qe-docker + repository: citrusleaf/qe-docker@cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - - run: ./bin/build -b -p -m --dry-run test/python/3.11-mavenAnsible.Dockerfile + - run: pip download --index-url https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike --python-version "3.10" --platform linux_aarch64 + - run: cp *.whl test/python/_files/ + - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile run-qe-test: env: TEST_CONFIG_FILE_NAME: client_perf.yaml TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 + if: ${{ false }} needs: add-python-client-to-qe-test-image-for-performance-regression-tests steps: # - name: Setup Rclone From 5d3021a9645a5de27e890746955e5043404062d2 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:35:29 -0700 Subject: [PATCH 083/153] fix syntax --- .github/workflows/run-qe-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 4d0b6fb0eb..7c3adcebdb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -31,7 +31,8 @@ jobs: - name: Get Github actions workflow to build Docker image uses: actions/checkout@v4 with: - repository: citrusleaf/qe-docker@cicd-client-performance-regression-tests-requirements-txt + repository: citrusleaf/qe-docker + ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - run: pip download --index-url https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike --python-version "3.10" --platform linux_aarch64 From f3f7fab35b6659a8709bead5655f29d4a7fbde09 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:36:44 -0700 Subject: [PATCH 084/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 7c3adcebdb..dd9f0c9557 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,7 +35,7 @@ jobs: ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - - run: pip download --index-url https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike --python-version "3.10" --platform linux_aarch64 + - run: 'pip download --index-url https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike --only-binary=:all: --python-version "3.10" --platform linux_aarch64' - run: cp *.whl test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile From e0151b7e626853fa3c9f7a5c60eb5ae6cb0d40e2 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:38:25 -0700 Subject: [PATCH 085/153] fix --- .github/workflows/run-qe-test.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index dd9f0c9557..ee7f5af0f4 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,7 +35,13 @@ jobs: ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - - run: 'pip download --index-url https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike --only-binary=:all: --python-version "3.10" --platform linux_aarch64' + - run: | + pip download --index-url \ + https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ + --only-binary=:all: \ + --python-version "3.10" \ + --platform linux_aarch64' \ + aerospike==${{ inputs.python-client-version-in-jfrog-to-test }} - run: cp *.whl test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile From 7450113043ee25b853f81eb16ad6bed919b9c48b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:40:27 -0700 Subject: [PATCH 086/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index ee7f5af0f4..4e8e5f926f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -40,7 +40,7 @@ jobs: https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ --only-binary=:all: \ --python-version "3.10" \ - --platform linux_aarch64' \ + --platform linux_aarch64 \ aerospike==${{ inputs.python-client-version-in-jfrog-to-test }} - run: cp *.whl test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile From 9466d2cc183f16d69e2ac790d0b11d965728f50f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:46:41 -0700 Subject: [PATCH 087/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 4e8e5f926f..5db02ad3e5 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -37,7 +37,7 @@ jobs: - run: | pip download --index-url \ - https://__token__:${{ secrets.JFROG_PLATFORM_URL }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ + https://__token__:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ --only-binary=:all: \ --python-version "3.10" \ --platform linux_aarch64 \ From 921366f4d718bf0d2a0b64edc310ff30c442ea21 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:48:21 -0700 Subject: [PATCH 088/153] token registered under jfrog handle? --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 5db02ad3e5..70fe0adfcc 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -37,7 +37,7 @@ jobs: - run: | pip download --index-url \ - https://__token__:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ + https://${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ --only-binary=:all: \ --python-version "3.10" \ --platform linux_aarch64 \ From 99df9344ab0c734e20bce4874223cc58d36a9a3d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:49:19 -0700 Subject: [PATCH 089/153] fix endpoint --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 70fe0adfcc..12974e2435 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -37,7 +37,7 @@ jobs: - run: | pip download --index-url \ - https://${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/clients-pypi-dev-local/aerospike \ + https://${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/api/pypi/clients-pypi-dev-local/simple \ --only-binary=:all: \ --python-version "3.10" \ --platform linux_aarch64 \ From 02f8266cf6d2766d6b6445c600f25c13dba32d59 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:07:16 -0700 Subject: [PATCH 090/153] reuse composite action to dl wheel from jfrog --- .github/workflows/run-qe-test.yml | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 12974e2435..54e10bc7eb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -35,14 +35,25 @@ jobs: ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - - run: | - pip download --index-url \ - https://${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_ACCESS_TOKEN }}@aerospike.jfrog.io/artifactory/api/pypi/clients-pypi-dev-local/simple \ - --only-binary=:all: \ - --python-version "3.10" \ - --platform linux_aarch64 \ - aerospike==${{ inputs.python-client-version-in-jfrog-to-test }} - - run: cp *.whl test/python/_files/ + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + + - uses: ./.github/actions/get-artifact-for-stage-tests + with: + # See comments in linux stage tests for how this works + get_from_jfrog: true + jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} + dist_type_to_get: 'wheel' + wheel_python_version: '3.10' + wheel_os: manylinux + wheel_cpu_arch: aarch64 + JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} + + - run: cp *linux*aarch64*.whl test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile run-qe-test: From f0515c0614aea1944192effe4691cfd1bc60edbf Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:09:15 -0700 Subject: [PATCH 091/153] fix --- .github/workflows/run-qe-test.yml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 54e10bc7eb..a013e64fae 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -28,21 +28,11 @@ jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: runs-on: ubuntu-24.04 steps: - - name: Get Github actions workflow to build Docker image + - name: Get Github action to download wheel from JFrog uses: actions/checkout@v4 - with: - repository: citrusleaf/qe-docker - ref: cicd-client-performance-regression-tests-requirements-txt - token: ${{ secrets.CLIENT_BOT_PAT }} - - - uses: jfrog/setup-jfrog-cli@v4 - env: - JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - uses: ./.github/actions/get-artifact-for-stage-tests with: - # See comments in linux stage tests for how this works get_from_jfrog: true jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} dist_type_to_get: 'wheel' @@ -53,6 +43,19 @@ jobs: JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} + + - name: Get Github actions workflow to build Docker image + uses: actions/checkout@v4 + with: + repository: citrusleaf/qe-docker + ref: cicd-client-performance-regression-tests-requirements-txt + token: ${{ secrets.CLIENT_BOT_PAT }} + + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + - run: cp *linux*aarch64*.whl test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile From 87b62f82c82c3dd49fd4cf426c2f4c8814715a02 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:11:44 -0700 Subject: [PATCH 092/153] download wheel in the right place --- .github/workflows/run-qe-test.yml | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index a013e64fae..c8cb3079a0 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -30,24 +30,14 @@ jobs: steps: - name: Get Github action to download wheel from JFrog uses: actions/checkout@v4 - - - uses: ./.github/actions/get-artifact-for-stage-tests with: - get_from_jfrog: true - jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} - dist_type_to_get: 'wheel' - wheel_python_version: '3.10' - wheel_os: manylinux - wheel_cpu_arch: aarch64 - JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - + path: aerospike-client-python - name: Get Github actions workflow to build Docker image uses: actions/checkout@v4 with: repository: citrusleaf/qe-docker + path: qe-docker ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} @@ -56,8 +46,24 @@ jobs: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - run: cp *linux*aarch64*.whl test/python/_files/ + - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests + with: + get_from_jfrog: true + jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} + dist_type_to_get: 'wheel' + wheel_python_version: '3.10' + wheel_os: manylinux + wheel_cpu_arch: aarch64 + JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} + + - name: Add wheel to staging folder for building Docker image + run: cp *linux*aarch64*.whl test/python/_files/ + working-directory: qe-docker + - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile + working-directory: qe-docker run-qe-test: env: From 0b14488734f5db0724bf85d6b5b54676d24e8948 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:13:13 -0700 Subject: [PATCH 093/153] wheel in workspace folder? --- .github/workflows/run-qe-test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index c8cb3079a0..5f2fb1553c 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -59,8 +59,7 @@ jobs: JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - name: Add wheel to staging folder for building Docker image - run: cp *linux*aarch64*.whl test/python/_files/ - working-directory: qe-docker + run: mv *linux*aarch64*.whl qe-docker/test/python/_files/ - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile working-directory: qe-docker From f9cd71232fbe98273c34be2dbe181fa9ae3b08db Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:16:13 -0700 Subject: [PATCH 094/153] fix --- .github/workflows/run-qe-test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 5f2fb1553c..cad434f13c 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -61,6 +61,13 @@ jobs: - name: Add wheel to staging folder for building Docker image run: mv *linux*aarch64*.whl qe-docker/test/python/_files/ + - name: Log in to QE's Docker registry to download base image and publish new image + uses: docker/login-action@v3 + with: + registry: ${{ secrets.QE_DOCKER_REGISTRY_URL }} + username: ${{ secrets.QE_DOCKER_REGISTRY_USERNAME }} + password: ${{ secrets.QE_DOCKER_REGISTRY_PASSWORD }} + - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile working-directory: qe-docker From a706d16e9acf5c192baf7d6718d5d17e052ef2cc Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:27:37 -0700 Subject: [PATCH 095/153] Setup qemu and buildx to build arm64 images on x86_64, and use gha to push to qe reg --- .github/workflows/run-qe-test.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index cad434f13c..d38abeb5ac 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -68,8 +68,21 @@ jobs: username: ${{ secrets.QE_DOCKER_REGISTRY_USERNAME }} password: ${{ secrets.QE_DOCKER_REGISTRY_PASSWORD }} - - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile - working-directory: qe-docker + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - uses: docker/setup-buildx-action@v3 + with: + platforms: linux/arm64 + + # ./bin/build doesn't support building for a specific platform different from the native one + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + # TODO: set branch in tag + tags: test/python/3.11-mavenAnsible-client.Dockerfile + context: qe-docker/test/python/_files run-qe-test: env: From a3aa439f2b4a6553fbfb28f76101e1e6b3a089a5 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:28:53 -0700 Subject: [PATCH 096/153] fix tag --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index d38abeb5ac..0345609541 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -81,7 +81,7 @@ jobs: with: push: true # TODO: set branch in tag - tags: test/python/3.11-mavenAnsible-client.Dockerfile + tags: 3.11-mavenAnsible-client.Dockerfile context: qe-docker/test/python/_files run-qe-test: From 68f68a8968ae554290f8bac3b8f4916cb3cec0e4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:31:55 -0700 Subject: [PATCH 097/153] build on free linux arm runners to avoid emulating arm --- .github/workflows/run-qe-test.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 0345609541..d4e2c3f23d 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -26,7 +26,7 @@ on: jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: - runs-on: ubuntu-24.04 + runs-on: ubuntu-24.04-arm steps: - name: Get Github action to download wheel from JFrog uses: actions/checkout@v4 @@ -68,14 +68,9 @@ jobs: username: ${{ secrets.QE_DOCKER_REGISTRY_USERNAME }} password: ${{ secrets.QE_DOCKER_REGISTRY_PASSWORD }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - uses: docker/setup-buildx-action@v3 - with: - platforms: linux/arm64 + # No way to set our own tag + # - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile - # ./bin/build doesn't support building for a specific platform different from the native one - name: Build and push uses: docker/build-push-action@v6 with: From 46973796e91047f60016a0e9abb0c63d63f02926 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:33:25 -0700 Subject: [PATCH 098/153] follow example --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index d4e2c3f23d..3fba4e0a73 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -76,7 +76,7 @@ jobs: with: push: true # TODO: set branch in tag - tags: 3.11-mavenAnsible-client.Dockerfile + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:3.11-mavenAnsible-client context: qe-docker/test/python/_files run-qe-test: From 4b5aa9376b269293ee5025bf408277de9ebedf89 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:35:16 -0700 Subject: [PATCH 099/153] fix dockerfile path --- .github/workflows/run-qe-test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 3fba4e0a73..c2a09bfe11 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -76,8 +76,11 @@ jobs: with: push: true # TODO: set branch in tag - tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:3.11-mavenAnsible-client + file: test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} context: qe-docker/test/python/_files + env: + TEST_IMAGE_TAG: 3.11-mavenAnsible-client run-qe-test: env: From b5739ab3bf3fd49b4b4318d107a96a3635668216 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:36:54 -0700 Subject: [PATCH 100/153] code example uses rel path --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index c2a09bfe11..8a7fd3e25e 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -78,7 +78,7 @@ jobs: # TODO: set branch in tag file: test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} - context: qe-docker/test/python/_files + context: ./qe-docker/test/python/_files env: TEST_IMAGE_TAG: 3.11-mavenAnsible-client From 22167d8303abd591dfda28c9a4432915163a7def Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:38:25 -0700 Subject: [PATCH 101/153] under qe-docker folder --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8a7fd3e25e..8d91c114bb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -76,7 +76,7 @@ jobs: with: push: true # TODO: set branch in tag - file: test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile + file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} context: ./qe-docker/test/python/_files env: From b95320daec03a46445cc80855b6d7b9f03bd7c39 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:50:57 -0700 Subject: [PATCH 102/153] add github sha to docker image tag --- .github/workflows/run-qe-test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8d91c114bb..6884c0ca09 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -75,9 +75,8 @@ jobs: uses: docker/build-push-action@v6 with: push: true - # TODO: set branch in tag file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile - tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }}-${{ github.sha }} context: ./qe-docker/test/python/_files env: TEST_IMAGE_TAG: 3.11-mavenAnsible-client From 889cdb13fe0b4f0f5bf15e76bebb596e982a6a78 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:53:02 -0700 Subject: [PATCH 103/153] Revert "add github sha to docker image tag". have to re-register test definition to use a new image name and tag This reverts commit b95320daec03a46445cc80855b6d7b9f03bd7c39. --- .github/workflows/run-qe-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 6884c0ca09..8d91c114bb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -75,8 +75,9 @@ jobs: uses: docker/build-push-action@v6 with: push: true + # TODO: set branch in tag file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile - tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }}-${{ github.sha }} + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} context: ./qe-docker/test/python/_files env: TEST_IMAGE_TAG: 3.11-mavenAnsible-client From 6672e3409f5d4e6899a4fc9426d5b67caef1c37d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:54:30 -0700 Subject: [PATCH 104/153] test e2e --- .github/workflows/run-qe-test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8d91c114bb..9cc03ab775 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -87,7 +87,6 @@ jobs: TEST_CONFIG_FILE_NAME: client_perf.yaml TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 - if: ${{ false }} needs: add-python-client-to-qe-test-image-for-performance-regression-tests steps: # - name: Setup Rclone From 7213cac58a71c41ad02200d6cdd8337b4f006476 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 16:58:30 -0700 Subject: [PATCH 105/153] make test scenario input required. then rename to test definition --- .github/workflows/run-qe-test.yml | 10 ++++------ test/client_perf.yaml | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 9cc03ab775..62f34f215f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -8,21 +8,19 @@ on: type: string required: true description: Python client version - test-scenario: + test-definition: required: true - default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs - description: Test scenario + description: Test definition workflow_call: inputs: python-client-version-in-jfrog-to-test: type: string required: true description: Python client version - test-scenario: + test-definition: type: string required: true - default: CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs - description: Test scenario + description: Test definition jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: diff --git a/test/client_perf.yaml b/test/client_perf.yaml index 1672626c96..d548fd6187 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -21,5 +21,5 @@ definitions: # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_raise_exception - - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_expressions + # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_expressions # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_command_level_policy From 79fe4a016fc2bacbeb39dc91a8b3ee7f230aaf81 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:01:25 -0700 Subject: [PATCH 106/153] client perf hardware uses x86, not arm --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 62f34f215f..ee81449013 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -51,7 +51,7 @@ jobs: dist_type_to_get: 'wheel' wheel_python_version: '3.10' wheel_os: manylinux - wheel_cpu_arch: aarch64 + wheel_cpu_arch: x86_64 JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} From 287bbad834bbd0897358412df6fbc0bf06fb4202 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:07:14 -0700 Subject: [PATCH 107/153] fix --- .github/workflows/run-qe-test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index ee81449013..5aba9f544c 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -24,6 +24,8 @@ on: jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: + env: + WHEEL_ARCH: x86_64 runs-on: ubuntu-24.04-arm steps: - name: Get Github action to download wheel from JFrog @@ -51,13 +53,13 @@ jobs: dist_type_to_get: 'wheel' wheel_python_version: '3.10' wheel_os: manylinux - wheel_cpu_arch: x86_64 + wheel_cpu_arch: ${{ env.WHEEL_ARCH }} JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - name: Add wheel to staging folder for building Docker image - run: mv *linux*aarch64*.whl qe-docker/test/python/_files/ + run: mv *linux*${{ env.WHEEL_ARCH }}*.whl qe-docker/test/python/_files/ - name: Log in to QE's Docker registry to download base image and publish new image uses: docker/login-action@v3 From 50ad071361f0184184507ec3e105843223364a48 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:09:26 -0700 Subject: [PATCH 108/153] fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 5aba9f544c..76fe1995a7 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -156,7 +156,7 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - run: yq -i '.definitions.std.[0] = "${{ inputs.test-scenario }}"' ${{ env.TEST_CONFIG_FILE_NAME }} + - run: yq -i '.definitions.std.[0] = "${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} working-directory: aerospike-client-python/test/ - name: Enqueue test run and fail fast if unable to enqueue From d73803ebd249c83e24e0ad52cd62c4358943bf2b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 15:48:06 -0700 Subject: [PATCH 109/153] push tag prefixed with arm- since *.186 probably looks for image digest with that prefix --- .github/workflows/run-qe-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 76fe1995a7..d17c3b6b29 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -77,7 +77,8 @@ jobs: push: true # TODO: set branch in tag file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile - tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:${{ env.TEST_IMAGE_TAG }} + # Our test definitions explicitly use the images with tags beginning with arm- prefix + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:arm-${{ env.TEST_IMAGE_TAG }} context: ./qe-docker/test/python/_files env: TEST_IMAGE_TAG: 3.11-mavenAnsible-client From 1a9044c8caee5f258166c365f115d453e7ceb950 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:11:41 -0700 Subject: [PATCH 110/153] add separate workflow for building wheel from ft branch and running perf tests. --- ...ild-wheel-and-run-perf-regression-test.yml | 25 +++++++++++++++++++ .github/workflows/run-qe-test.yml | 14 ++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/build-wheel-and-run-perf-regression-test.yml diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml new file mode 100644 index 0000000000..38a9de0206 --- /dev/null +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -0,0 +1,25 @@ +permissions: + contents: read + +on: + workflow_dispatch: + inputs: + test-definition: + required: true + description: Test definition + +jobs: + build-wheel-for-feature-branch: + uses: ./.github/workflows/build-wheels.yml + with: + # TODO: single source + platform-tag: manylinux_x86_64 + python-tags: '["cp310"]' + sha-to-build-and-test: ${{ github.sha }} + secrets: inherit + + run-qe-test: + uses: ./.github/workflows/run-qe-test.yml + with: + test-definition: ${{ inputs.test-definition }} + secrets: inherit diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index d17c3b6b29..3da559a4f7 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -13,9 +13,15 @@ on: description: Test definition workflow_call: inputs: + # workflow_call hack + is_workflow_call: + type: boolean + default: true + required: false + # Optional since calling workflow can also pass in their own wheel built from a feature branch python-client-version-in-jfrog-to-test: type: string - required: true + required: false description: Python client version test-definition: type: string @@ -48,7 +54,8 @@ jobs: - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests with: - get_from_jfrog: true + # Calling workflow only builds wheel from source + get_from_jfrog: ${{ inputs.is_workflow_call == false }} jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} dist_type_to_get: 'wheel' wheel_python_version: '3.10' @@ -77,7 +84,8 @@ jobs: push: true # TODO: set branch in tag file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile - # Our test definitions explicitly use the images with tags beginning with arm- prefix + # Although our client perf test definitions state the test images where the tag doesn't have the arm- prefix + # Bob seems to look for the same tag from the test definition, but prefixed with arm- tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:arm-${{ env.TEST_IMAGE_TAG }} context: ./qe-docker/test/python/_files env: From d82a7304d4e3729b87ab5ed5b307d4b95780375e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:13:10 -0700 Subject: [PATCH 111/153] add new workflow to gh --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index 38a9de0206..ea855e0485 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -2,6 +2,7 @@ permissions: contents: read on: + pull_request: workflow_dispatch: inputs: test-definition: From fddbd86502dc6bcffe350b0e788b900c58b8f444 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:13:14 -0700 Subject: [PATCH 112/153] Revert "add new workflow to gh" This reverts commit d82a7304d4e3729b87ab5ed5b307d4b95780375e. --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index ea855e0485..38a9de0206 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -2,7 +2,6 @@ permissions: contents: read on: - pull_request: workflow_dispatch: inputs: test-definition: From 0929fcf7b0496a0f6dd7b0becba683909497809a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:13:44 -0700 Subject: [PATCH 113/153] fix --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index 38a9de0206..afe412a84e 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -19,6 +19,7 @@ jobs: secrets: inherit run-qe-test: + needs: build-wheel-for-feature-branch uses: ./.github/workflows/run-qe-test.yml with: test-definition: ${{ inputs.test-definition }} From fddfa61b82f25153c368a9a450224a0af4dcf129 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:15:57 -0700 Subject: [PATCH 114/153] fix --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index afe412a84e..2e163e06bb 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -1,5 +1,5 @@ permissions: - contents: read + statuses: write on: workflow_dispatch: From 50850b005996da0667f9f598de1bef529be0b80f Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:16:52 -0700 Subject: [PATCH 115/153] Give called workflow read content permissions --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index 2e163e06bb..97c765eb0d 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -1,5 +1,6 @@ permissions: statuses: write + contents: read on: workflow_dispatch: From ffb1de5e99eb75ee2644980a251ed83d18237057 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:22:41 -0700 Subject: [PATCH 116/153] allow pulling custom manylinux image from ghcr.io/aerospike --- .github/workflows/build-wheel-and-run-perf-regression-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index 97c765eb0d..51ea0521b3 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -1,6 +1,7 @@ permissions: statuses: write contents: read + packages: read on: workflow_dispatch: From fb1b217f474ae58ef696517afcdc1f1122a94fb9 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:43:02 -0700 Subject: [PATCH 117/153] no longer needed --- .github/workflows/run-qe-test.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 3da559a4f7..704b8f7cf5 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -47,11 +47,6 @@ jobs: ref: cicd-client-performance-regression-tests-requirements-txt token: ${{ secrets.CLIENT_BOT_PAT }} - - uses: jfrog/setup-jfrog-cli@v4 - env: - JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests with: # Calling workflow only builds wheel from source From bc76834b387c21d636aa1458c1a4e02db418732e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:45:29 -0700 Subject: [PATCH 118/153] calling workflow may be dev-to-stage --- .../workflows/build-wheel-and-run-perf-regression-test.yml | 1 + .github/workflows/run-qe-test.yml | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheel-and-run-perf-regression-test.yml b/.github/workflows/build-wheel-and-run-perf-regression-test.yml index 51ea0521b3..d434e84def 100644 --- a/.github/workflows/build-wheel-and-run-perf-regression-test.yml +++ b/.github/workflows/build-wheel-and-run-perf-regression-test.yml @@ -24,5 +24,6 @@ jobs: needs: build-wheel-for-feature-branch uses: ./.github/workflows/run-qe-test.yml with: + get-wheel-from-jfrog: false test-definition: ${{ inputs.test-definition }} secrets: inherit diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 704b8f7cf5..74ad9e2624 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -14,7 +14,7 @@ on: workflow_call: inputs: # workflow_call hack - is_workflow_call: + get-wheel-from-jfrog: type: boolean default: true required: false @@ -49,8 +49,7 @@ jobs: - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests with: - # Calling workflow only builds wheel from source - get_from_jfrog: ${{ inputs.is_workflow_call == false }} + get_from_jfrog: ${{ inputs.get-wheel-from-jfrog }} jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} dist_type_to_get: 'wheel' wheel_python_version: '3.10' From caaebd441d4a254c20b4e94c009123d146cfce2e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:18:10 -0700 Subject: [PATCH 119/153] workflow should only be run manually when we want to use a jfrog wheel --- .github/workflows/run-qe-test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 74ad9e2624..39a0a0f401 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -14,6 +14,10 @@ on: workflow_call: inputs: # workflow_call hack + is-workflow-call: + type: boolean + default: true + required: false get-wheel-from-jfrog: type: boolean default: true @@ -49,7 +53,8 @@ jobs: - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests with: - get_from_jfrog: ${{ inputs.get-wheel-from-jfrog }} + # Calling workflow only builds wheel from source + get_from_jfrog: ${{ inputs.is-workflow-call == false && true || inputs.get-wheel-from-jfrog }} jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} dist_type_to_get: 'wheel' wheel_python_version: '3.10' From 1117ba8e12959a37d4468aad0272bfb7332d08fb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:08:05 -0700 Subject: [PATCH 120/153] prevent race condition --- .github/workflows/run-qe-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 39a0a0f401..99eef39c10 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -34,6 +34,9 @@ on: jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: + # Prevent another job from overriding the Docker image + concurrency: + group: ${{ github.workflow }} env: WHEEL_ARCH: x86_64 runs-on: ubuntu-24.04-arm From 552d1336b77dbf18e89918ddd7af07b8007b0d61 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:09:30 -0700 Subject: [PATCH 121/153] Set at workflow level. A subsequent docker image build job may override the image before the test gets run --- .github/workflows/run-qe-test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 99eef39c10..0e0c8b7152 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -32,11 +32,12 @@ on: required: true description: Test definition +# Prevent another job from overriding the Docker image +concurrency: + group: ${{ github.workflow }} + jobs: add-python-client-to-qe-test-image-for-performance-regression-tests: - # Prevent another job from overriding the Docker image - concurrency: - group: ${{ github.workflow }} env: WHEEL_ARCH: x86_64 runs-on: ubuntu-24.04-arm From 61bd8840c1639b4970476be54ab50c82d2fddb59 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 14 Oct 2025 12:33:32 -0700 Subject: [PATCH 122/153] Show run name with inputs --- .github/workflows/run-qe-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 0e0c8b7152..ae6a26a5cc 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -1,3 +1,5 @@ +run-name: "Run QE test (python-client-version=${{ inputs.python-client-version-in-jfrog-to-test }} test-definition=${{ inputs.test-definition }})" + permissions: contents: read From 2d4879533223bba908a283477635b40e384fe8cb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 13 Nov 2025 16:57:42 -0800 Subject: [PATCH 123/153] Copy register file from test repo. This should be used as a template for running tests with runtime parameters --- test/register-client-tests.yaml | 278 ++++++++++++++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 test/register-client-tests.yaml diff --git a/test/register-client-tests.yaml b/test/register-client-tests.yaml new file mode 100644 index 0000000000..912dccaf85 --- /dev/null +++ b/test/register-client-tests.yaml @@ -0,0 +1,278 @@ +perf_regression/client_centered_kvs_query: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: QUERY + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + + +perf_regression/client_centered_kvs_scan: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: SCAN + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_batch_write: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: BATCH_WRITE + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_batch_read: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: BATCH_READ + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_delete: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: DELETE + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_update: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: UPDATE + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_insert: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: INSERT + artifacts: + - /test_dump + LOAD: false + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_read: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: READ + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_operate: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: OPERATE + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_raise_exception: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: RAISE_EXCEPTION + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_expressions: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: EXPRESSIONS + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +perf_regression/client_centered_kvs_command_level_policy: + command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py + image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client + environment: + CLIENT_LANGUAGE_TO_TEST: python + WORKLOAD_FILE_NAME: all_commands.py + PACKAGE_FILE: /data/downloads/{{.PackageFile}} + # TODO: replace with jfrog wheel + PYTHON_CLIENT_OVERRIDE_REF: dev + # TODO: no-op? + # TODO: don't upgrade server? + # No-op? + # UPGRADE: false + FEATURE: COMMAND_LEVEL_POLICY + artifacts: + - /test_dump + LOAD: true + # TODO: would be nice if we can set this at runtime + # TODO: make an enum instead of string + MODE: insert + NUM_RECORDS: 1000000 + +tests: + - perf_regression/client_centered_kvs_read + - perf_regression/client_centered_kvs_insert + - perf_regression/client_centered_kvs_update + - perf_regression/client_centered_kvs_delete + - perf_regression/client_centered_kvs_batch_read + - perf_regression/client_centered_kvs_batch_write + - perf_regression/client_centered_kvs_scan + - perf_regression/client_centered_kvs_query + - perf_regression/client_centered_kvs_operate + - perf_regression/client_centered_kvs_raise_exception + - perf_regression/client_centered_kvs_expressions + - perf_regression/client_centered_kvs_command_level_policy From fffe7a66177d52342eb140cb8f4aa9c65cb3ca7d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:04:45 -0800 Subject: [PATCH 124/153] Add ability to parametrize QE tests at runtime without pushing commits to test repo --- .github/workflows/run-qe-test.yml | 86 ++++++++- test/register-client-tests.yaml | 278 ------------------------------ 2 files changed, 85 insertions(+), 279 deletions(-) delete mode 100644 test/register-client-tests.yaml diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index ae6a26a5cc..556dbbc50e 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -13,6 +13,20 @@ on: test-definition: required: true description: Test definition + feature: + required: true + description: "Client feature to test" + num_records: + type: number + default: 1000000 + description: Number of records to use in workload + insert_mode: + required: true + type: choice + description: Insert mode means don't check for outliers. + options: + - insert + - outlier workflow_call: inputs: # workflow_call hack @@ -39,6 +53,73 @@ concurrency: group: ${{ github.workflow }} jobs: + register-test-definition-with-custom-env-var-parameters: + runs-on: ubuntu-24.04 + env: + REGISTER_FILE_PATH_IN_REPO: perf_regression/register-client-tests.yaml + steps: + # TODO: composite action for this would be helpful + # TODO: need special testctl not in jfrog yet + - name: Get test-register + uses: actions/checkout@v4 + with: + repository: citrusleaf/qe-tools + token: ${{ secrets.CLIENT_BOT_PAT }} + path: qe-tools + sparse-checkout: | + bin/test-register + sparse-checkout-cone-mode: false + + - name: Add test-register to PATH + run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH + + - uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + + - run: jf rt download --fail-no-op qe-go-dev-local/testctl.amd64.linux qe-tools/bin/testctl + - run: chmod u+x ./testctl + working-directory: qe-tools/bin + + - name: Add AWS credentials + run: | + mkdir -p ~/.aws + cd ~/.aws + sections=("default" "qe") + for section in ${sections[@]}; + do + cat <<-EOF >> credentials + [$section] + aws_access_key_id = ${{ secrets.QE_TEST_ENQUEUE_AWS_ACCESS_KEY_ID }} + aws_secret_access_key = ${{ secrets.QE_TEST_ENQUEUE_AWS_SECRET_ACCESS_KEY }} + region = us-west-1 + EOF + done + shell: bash + + - uses: actions/checkout@v4 + with: + # Entire repo must be cloned because the test definition includes this repo + path: aerospike-tests-python + # Test definition includes the feature branch name + ref: ${{ github.head_ref }} + fetch-depth: 0 + + - name: Environment variable overrides + run: | + yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" + yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.NUM_RECORDS = \"${{ inputs.num_records }}\"" + yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.FEATURE = \"${{ inputs.feature }}\"" + working-directory: aerospike-tests-python + + - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} + working-directory: aerospike-tests-python + + # run-changed-tests: + # needs: register-test-definition + # uses: aerospike/aerospike-client-python/.github/workflows/run-qe-test.yml@cicd-performance-regression-tests-using-asmikas-qe-env + add-python-client-to-qe-test-image-for-performance-regression-tests: env: WHEEL_ARCH: x86_64 @@ -101,7 +182,10 @@ jobs: TEST_CONFIG_FILE_NAME: client_perf.yaml TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 - needs: add-python-client-to-qe-test-image-for-performance-regression-tests + needs: [ + add-python-client-to-qe-test-image-for-performance-regression-tests, + register-client-test-with-custom-env-var-parameters + ] steps: # - name: Setup Rclone # uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 diff --git a/test/register-client-tests.yaml b/test/register-client-tests.yaml deleted file mode 100644 index 912dccaf85..0000000000 --- a/test/register-client-tests.yaml +++ /dev/null @@ -1,278 +0,0 @@ -perf_regression/client_centered_kvs_query: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: QUERY - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - - -perf_regression/client_centered_kvs_scan: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: SCAN - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_batch_write: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: BATCH_WRITE - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_batch_read: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: BATCH_READ - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_delete: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: DELETE - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_update: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: UPDATE - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_insert: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: INSERT - artifacts: - - /test_dump - LOAD: false - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_read: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: READ - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_operate: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: OPERATE - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_raise_exception: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: RAISE_EXCEPTION - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_expressions: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: EXPRESSIONS - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -perf_regression/client_centered_kvs_command_level_policy: - command: pytest -x --capture=no -s perf_regression/test_client_centered_kvs.py - image: docker.qe.aerospike.com/test/python:3.11-mavenAnsible-client - environment: - CLIENT_LANGUAGE_TO_TEST: python - WORKLOAD_FILE_NAME: all_commands.py - PACKAGE_FILE: /data/downloads/{{.PackageFile}} - # TODO: replace with jfrog wheel - PYTHON_CLIENT_OVERRIDE_REF: dev - # TODO: no-op? - # TODO: don't upgrade server? - # No-op? - # UPGRADE: false - FEATURE: COMMAND_LEVEL_POLICY - artifacts: - - /test_dump - LOAD: true - # TODO: would be nice if we can set this at runtime - # TODO: make an enum instead of string - MODE: insert - NUM_RECORDS: 1000000 - -tests: - - perf_regression/client_centered_kvs_read - - perf_regression/client_centered_kvs_insert - - perf_regression/client_centered_kvs_update - - perf_regression/client_centered_kvs_delete - - perf_regression/client_centered_kvs_batch_read - - perf_regression/client_centered_kvs_batch_write - - perf_regression/client_centered_kvs_scan - - perf_regression/client_centered_kvs_query - - perf_regression/client_centered_kvs_operate - - perf_regression/client_centered_kvs_raise_exception - - perf_regression/client_centered_kvs_expressions - - perf_regression/client_centered_kvs_command_level_policy From 801227ef646aebdb9e1e416f6f9adf47a7e4c8b6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:05:53 -0800 Subject: [PATCH 125/153] Fix --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 556dbbc50e..fe27bad350 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -184,7 +184,7 @@ jobs: runs-on: ubuntu-24.04 needs: [ add-python-client-to-qe-test-image-for-performance-regression-tests, - register-client-test-with-custom-env-var-parameters + register-test-definition-with-custom-env-var-parameters ] steps: # - name: Setup Rclone From 09434b7751bc1cf43e75f0b5195ebd20f3b2bdac Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:07:55 -0800 Subject: [PATCH 126/153] fix --- .github/workflows/run-qe-test.yml | 7 ++----- test/client_perf.yaml | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index fe27bad350..b07d5957d6 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -10,9 +10,6 @@ on: type: string required: true description: Python client version - test-definition: - required: true - description: Test definition feature: required: true description: "Client feature to test" @@ -254,8 +251,8 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - - run: yq -i '.definitions.std.[0] = "${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} - working-directory: aerospike-client-python/test/ + # - run: yq -i '.definitions.std.[0] = "${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} + # working-directory: aerospike-client-python/test/ - name: Enqueue test run and fail fast if unable to enqueue run: | diff --git a/test/client_perf.yaml b/test/client_perf.yaml index d548fd6187..cc5789e167 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -12,7 +12,7 @@ scenarios: - perfasd definitions: std: - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_read + - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_insert # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_update # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_delete From 096c7ab6121cc519262b7a519b9a201ea8a6ff53 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:10:02 -0800 Subject: [PATCH 127/153] Fix --- .github/workflows/run-qe-test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index b07d5957d6..6e1b06c28e 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -105,9 +105,9 @@ jobs: - name: Environment variable overrides run: | - yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" - yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.NUM_RECORDS = \"${{ inputs.num_records }}\"" - yq eval -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} ".perf_regression/client_centered.environment.FEATURE = \"${{ inputs.feature }}\"" + yq eval ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} + yq eval ".perf_regression/client_centered.environment.NUM_RECORDS = \"${{ inputs.num_records }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} + yq eval ".perf_regression/client_centered.environment.FEATURE = \"${{ inputs.feature }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} From b1b38294b7a3484d062fa64146c8568c745c73fb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:12:52 -0800 Subject: [PATCH 128/153] fix --- .github/workflows/run-qe-test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 6e1b06c28e..d1f19495e6 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -99,8 +99,7 @@ jobs: with: # Entire repo must be cloned because the test definition includes this repo path: aerospike-tests-python - # Test definition includes the feature branch name - ref: ${{ github.head_ref }} + ref: CLIENT-3541-add-client-centered-performance-regression-tests fetch-depth: 0 - name: Environment variable overrides From 31da5dbeec645602f6945a288cebd31e484ef9a2 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:14:05 -0800 Subject: [PATCH 129/153] fix --- .github/workflows/run-qe-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index d1f19495e6..0786aeba11 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -98,6 +98,7 @@ jobs: - uses: actions/checkout@v4 with: # Entire repo must be cloned because the test definition includes this repo + repository: citrusleaf/aerospike-tests-python path: aerospike-tests-python ref: CLIENT-3541-add-client-centered-performance-regression-tests fetch-depth: 0 From 0d4bb069a8b3ec3ba5d34f7785e7cf30cd58e8a4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:15:02 -0800 Subject: [PATCH 130/153] fix --- .github/workflows/run-qe-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 0786aeba11..8c483bc90d 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -99,6 +99,7 @@ jobs: with: # Entire repo must be cloned because the test definition includes this repo repository: citrusleaf/aerospike-tests-python + token: ${{ secrets.CLIENT_BOT_PAT }} path: aerospike-tests-python ref: CLIENT-3541-add-client-centered-performance-regression-tests fetch-depth: 0 From ab66a658a9d85d447c149f037be8d6def2e6cbcb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:33:36 -0800 Subject: [PATCH 131/153] rm --- .github/workflows/run-qe-test.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 8c483bc90d..f0ccebd2cf 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -114,10 +114,6 @@ jobs: - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - # run-changed-tests: - # needs: register-test-definition - # uses: aerospike/aerospike-client-python/.github/workflows/run-qe-test.yml@cicd-performance-regression-tests-using-asmikas-qe-env - add-python-client-to-qe-test-image-for-performance-regression-tests: env: WHEEL_ARCH: x86_64 From 29e72ff5032b773da1124460e21b9efe627ec162 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:46:17 -0800 Subject: [PATCH 132/153] debug --- .github/workflows/run-qe-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index f0ccebd2cf..26a270941f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -109,6 +109,7 @@ jobs: yq eval ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} yq eval ".perf_regression/client_centered.environment.NUM_RECORDS = \"${{ inputs.num_records }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} yq eval ".perf_regression/client_centered.environment.FEATURE = \"${{ inputs.feature }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} + cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} From 832a3f0155e32e32e23f8056bda5d35fda75d548 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 14 Nov 2025 16:51:49 -0800 Subject: [PATCH 133/153] Add proper attributes --- .github/workflows/run-qe-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 26a270941f..e460deaa58 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -115,6 +115,8 @@ jobs: - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python + # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference + # https://github.com/citrusleaf/qe-docker/commit/d72f2d3fda70e199e24f4f670811d6e33e7f92be add-python-client-to-qe-test-image-for-performance-regression-tests: env: WHEEL_ARCH: x86_64 From 47357c78fa5c626e90306c5bb4c0d85294828990 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:08:25 -0800 Subject: [PATCH 134/153] Add title so we can more easily identify workflow inputs --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index e460deaa58..7088b54afb 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -1,4 +1,4 @@ -run-name: "Run QE test (python-client-version=${{ inputs.python-client-version-in-jfrog-to-test }} test-definition=${{ inputs.test-definition }})" +run-name: "Run QE test (python-client-version=${{ inputs.python-client-version-in-jfrog-to-test }}, feature=${{ inputs.feature }}, num_records=${{ inputs.num_records }}, insert_mode=${{ inputs.insert_mode }})" permissions: contents: read From 3a4b470d8b72efc745c1b0ebfbde00e5cbca03b9 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:18:36 -0800 Subject: [PATCH 135/153] Add intermediate step to print stdout while also saving stdout to variable --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 7088b54afb..b25090823f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -256,7 +256,7 @@ jobs: - name: Enqueue test run and fail fast if unable to enqueue run: | - enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | grep "COUNT:" | sed 's/COUNT\://' | xargs) + enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | tee /dev/tty | grep "COUNT:" | sed 's/COUNT\://' | xargs) if [[ "$enqueue_count" != "1" ]]; then echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." exit 1 From 010ea1b9cd2f66e1cbd6f1d74ab91c78eaccc1c4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:10:04 -0800 Subject: [PATCH 136/153] Workaround: use intermediate file --- .github/workflows/run-qe-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index b25090823f..9dbe0c37d8 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -256,7 +256,8 @@ jobs: - name: Enqueue test run and fail fast if unable to enqueue run: | - enqueue_count=$(test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | tee /dev/tty | grep "COUNT:" | sed 's/COUNT\://' | xargs) + test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | tee test-enqueue-output.log + enqueue_count=$(grep "COUNT:" test-enqueue-output.log | sed 's/COUNT\://' | xargs) if [[ "$enqueue_count" != "1" ]]; then echo "We expected 1 test run to be enqueued, but $enqueue_count was actually enqueued." exit 1 From 0b1c04e5855a1c2df520acd00b5b834fd15a3147 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 20 Nov 2025 12:27:06 -0800 Subject: [PATCH 137/153] debug --- .github/workflows/run-qe-test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 9dbe0c37d8..83dd680d52 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -242,11 +242,11 @@ jobs: done shell: bash - # - run: testctl --version + - run: testctl --version # test-enqueue hides testctl's output, so this can be helpful for debugging - # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client - # working-directory: aerospike-client-python/test/ + - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client + working-directory: aerospike-client-python/test/ - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV @@ -255,6 +255,7 @@ jobs: # working-directory: aerospike-client-python/test/ - name: Enqueue test run and fail fast if unable to enqueue + if: ${{ false }} run: | test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | tee test-enqueue-output.log enqueue_count=$(grep "COUNT:" test-enqueue-output.log | sed 's/COUNT\://' | xargs) From eeb50fbc34897807620743f39dd10c921f74ec31 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:16:01 -0800 Subject: [PATCH 138/153] Log into tailscale --- .github/workflows/run-qe-test.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 83dd680d52..d6bc513372 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -245,7 +245,7 @@ jobs: - run: testctl --version # test-enqueue hides testctl's output, so this can be helpful for debugging - - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client + # - run: testctl --config staging run 901b1178-0159-452d-9b36-64d455e568f2 --deployment perf_client working-directory: aerospike-client-python/test/ - name: Allows us to get the exact test run id that was created by test-enqueue. @@ -254,8 +254,17 @@ jobs: # - run: yq -i '.definitions.std.[0] = "${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} # working-directory: aerospike-client-python/test/ + - name: Tailscale VPN + uses: tailscale/github-action@v4 + with: + oauth-client-id: ${{ vars.TAILSCALE_OAUTH_CLIENT_ID }} + oauth-secret: ${{ secrets.TAILSCALE_OAUTH_CLIENT_SECRET }} + tags: tag:python-client-ci + args: "--exit-node=${{ secrets.TAILSCALE_EXIT_NODE }}" + version: 1.70.0 + - name: Enqueue test run and fail fast if unable to enqueue - if: ${{ false }} + # if: ${{ false }} run: | test-enqueue --config staging --deployment perf_client ${{ env.TEST_CONFIG_FILE_NAME }} | tee test-enqueue-output.log enqueue_count=$(grep "COUNT:" test-enqueue-output.log | sed 's/COUNT\://' | xargs) From c68af95437ffd6c7ec6ae0a9f94cf8dd1d630512 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:18:31 -0800 Subject: [PATCH 139/153] Reuse ACMS's credentials for tailscale login. Make exit node a variable --- .github/workflows/run-qe-test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index d6bc513372..cfe7f09b66 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -257,10 +257,10 @@ jobs: - name: Tailscale VPN uses: tailscale/github-action@v4 with: - oauth-client-id: ${{ vars.TAILSCALE_OAUTH_CLIENT_ID }} - oauth-secret: ${{ secrets.TAILSCALE_OAUTH_CLIENT_SECRET }} + oauth-client-id: ${{ secrets.ASCLOUD_TS_OAUTH_CLIENT_ID }} + oauth-secret: ${{ secrets.ASCLOUD_TS_OAUTH_CLIENT_SECRET }} tags: tag:python-client-ci - args: "--exit-node=${{ secrets.TAILSCALE_EXIT_NODE }}" + args: "--exit-node=${{ vars.TAILSCALE_EXIT_NODE }}" version: 1.70.0 - name: Enqueue test run and fail fast if unable to enqueue From a7c7ecc0543e0ca27bac2459bc32b2adfee080fd Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:49:21 -0800 Subject: [PATCH 140/153] Add stepsecurity steps --- .github/workflows/run-qe-test.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index cfe7f09b66..5d03cd0535 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -55,6 +55,10 @@ jobs: env: REGISTER_FILE_PATH_IN_REPO: perf_regression/register-client-tests.yaml steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit # TODO: composite action for this would be helpful # TODO: need special testctl not in jfrog yet - name: Get test-register @@ -122,6 +126,10 @@ jobs: WHEEL_ARCH: x86_64 runs-on: ubuntu-24.04-arm steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit - name: Get Github action to download wheel from JFrog uses: actions/checkout@v4 with: @@ -184,6 +192,10 @@ jobs: register-test-definition-with-custom-env-var-parameters ] steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit # - name: Setup Rclone # uses: AnimMouse/setup-rclone@0d99fa3878a334d3e307c1a8372ad55550fdaea7 # with: From 58e83772efe75d4b4c204e7717069a9d35d4f717 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 9 Jan 2026 12:49:47 -0800 Subject: [PATCH 141/153] Devops team has now set up OIDC --- .github/workflows/run-qe-test.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 5d03cd0535..a22e665b51 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -267,13 +267,13 @@ jobs: # working-directory: aerospike-client-python/test/ - name: Tailscale VPN - uses: tailscale/github-action@v4 + uses: tailscale/github-action@v4.1.1 with: - oauth-client-id: ${{ secrets.ASCLOUD_TS_OAUTH_CLIENT_ID }} - oauth-secret: ${{ secrets.ASCLOUD_TS_OAUTH_CLIENT_SECRET }} - tags: tag:python-client-ci - args: "--exit-node=${{ vars.TAILSCALE_EXIT_NODE }}" - version: 1.70.0 + oauth-client-id: ${{ vars.TAILSCALE_OIDC_CLIENT_ID }} + audience: ${{ vars.TAILSCALE_OIDC_AUDIENCE }} + tags: tag:aerospike-oidc + args: --exit-node=${{ vars.TAILSCALE_EXIT_NODE}} + version: 1.92.5 - name: Enqueue test run and fail fast if unable to enqueue # if: ${{ false }} From bd85ec15663c8905edd939221ad3fe5b17d3b807 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 9 Jan 2026 12:59:54 -0800 Subject: [PATCH 142/153] fix permissions --- .github/workflows/run-qe-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index a22e665b51..33db17cf1f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -2,6 +2,7 @@ run-name: "Run QE test (python-client-version=${{ inputs.python-client-version-i permissions: contents: read + id-token: write on: workflow_dispatch: From e8c15a2a0c691ee508cc20d29426689d5cfc4730 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:42:48 -0800 Subject: [PATCH 143/153] Temporary workaround until test-register returns an error code when it fails --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 33db17cf1f..ed01d2ab35 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -117,7 +117,7 @@ jobs: cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} + - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -iv error working-directory: aerospike-tests-python # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference From 5e422155dd38e1a05f2474233c33710fbe595886 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:52:38 -0800 Subject: [PATCH 144/153] Fail if error str not found --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index ed01d2ab35..24bb425fb1 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -117,7 +117,7 @@ jobs: cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -iv error + - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -i error working-directory: aerospike-tests-python # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference From c8a5257b89cef194a83b67958cfd8ee56524b890 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:00:58 -0800 Subject: [PATCH 145/153] Pipe has higher precedence than or operator --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 24bb425fb1..70699fdf9c 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -117,7 +117,7 @@ jobs: cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -i error + - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -i error || exit 1 working-directory: aerospike-tests-python # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference From b2864d703ff727ad0d22256828cf8d7801082e58 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:08:02 -0800 Subject: [PATCH 146/153] Just wait for Minting to add a fix to test-register --- .github/workflows/run-qe-test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 70699fdf9c..a293248e69 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -117,7 +117,15 @@ jobs: cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} 2>&1 | grep -i error || exit 1 + - uses: tailscale/github-action@v4.1.1 + with: + oauth-client-id: ${{ vars.TAILSCALE_OIDC_CLIENT_ID }} + audience: ${{ vars.TAILSCALE_OIDC_AUDIENCE }} + tags: tag:aerospike-oidc + args: --exit-node=${{ vars.TAILSCALE_EXIT_NODE}} + version: 1.92.5 + + - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference From 7ba3e611ac144d30fa617497da4716c2bf189146 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:53:50 -0800 Subject: [PATCH 147/153] Add digest to test container using env var... --- .github/workflows/run-qe-test.yml | 148 +++++++++++++++--------------- 1 file changed, 76 insertions(+), 72 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index a293248e69..11ce02e0b5 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -51,7 +51,74 @@ concurrency: group: ${{ github.workflow }} jobs: + # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference + # https://github.com/citrusleaf/qe-docker/commit/d72f2d3fda70e199e24f4f670811d6e33e7f92be + add-python-client-to-qe-test-image-for-performance-regression-tests: + env: + WHEEL_ARCH: x86_64 + outputs: + new-test-image-digest: ${{ steps.build.outputs.digest }} + runs-on: ubuntu-24.04-arm + steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit + - name: Get Github action to download wheel from JFrog + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + path: aerospike-client-python + + - name: Get Github actions workflow to build Docker image + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + repository: citrusleaf/qe-docker + path: qe-docker + ref: cicd-client-performance-regression-tests-requirements-txt + token: ${{ secrets.CLIENT_BOT_PAT }} + + - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests + with: + # Calling workflow only builds wheel from source + get_from_jfrog: ${{ inputs.is-workflow-call == false && true || inputs.get-wheel-from-jfrog }} + jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} + dist_type_to_get: 'wheel' + wheel_python_version: '3.10' + wheel_os: manylinux + wheel_cpu_arch: ${{ env.WHEEL_ARCH }} + JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} + JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} + JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} + + - name: Add wheel to staging folder for building Docker image + run: mv *linux*${{ env.WHEEL_ARCH }}*.whl qe-docker/test/python/_files/ + + - name: Log in to QE's Docker registry to download base image and publish new image + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + with: + registry: ${{ secrets.QE_DOCKER_REGISTRY_URL }} + username: ${{ secrets.QE_DOCKER_REGISTRY_USERNAME }} + password: ${{ secrets.QE_DOCKER_REGISTRY_PASSWORD }} + + # No way to set our own tag + # - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile + + - name: Build and push + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + id: build + with: + push: true + # TODO: set branch in tag + file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile + # Although our client perf test definitions state the test images where the tag doesn't have the arm- prefix + # Bob seems to look for the same tag from the test definition, but prefixed with arm- + tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:arm-${{ env.TEST_IMAGE_TAG }} + context: ./qe-docker/test/python/_files + env: + TEST_IMAGE_TAG: 3.11-mavenAnsible-client + register-test-definition-with-custom-env-var-parameters: + needs: add-python-client-to-qe-test-image-for-performance-regression-tests runs-on: ubuntu-24.04 env: REGISTER_FILE_PATH_IN_REPO: perf_regression/register-client-tests.yaml @@ -63,7 +130,7 @@ jobs: # TODO: composite action for this would be helpful # TODO: need special testctl not in jfrog yet - name: Get test-register - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: repository: citrusleaf/qe-tools token: ${{ secrets.CLIENT_BOT_PAT }} @@ -75,7 +142,7 @@ jobs: - name: Add test-register to PATH run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - uses: jfrog/setup-jfrog-cli@v4 + - uses: jfrog/setup-jfrog-cli@5b06f730cc5a6f55d78b30753f8583454b08c0aa # v4.8.1 env: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} @@ -100,7 +167,7 @@ jobs: done shell: bash - - uses: actions/checkout@v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: # Entire repo must be cloned because the test definition includes this repo repository: citrusleaf/aerospike-tests-python @@ -114,10 +181,11 @@ jobs: yq eval ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} yq eval ".perf_regression/client_centered.environment.NUM_RECORDS = \"${{ inputs.num_records }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} yq eval ".perf_regression/client_centered.environment.FEATURE = \"${{ inputs.feature }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} + yq eval ".perf_regression/client_centered.environment.TEST_IMAGE_DIGEST = \"${{ needs.add-python-client-to-qe-test-image-for-performance-regression-tests.outputs.new-test-image-digest }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} cat ${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - - uses: tailscale/github-action@v4.1.1 + - uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 with: oauth-client-id: ${{ vars.TAILSCALE_OIDC_CLIENT_ID }} audience: ${{ vars.TAILSCALE_OIDC_AUDIENCE }} @@ -128,76 +196,12 @@ jobs: - run: test-register --config staging ./${{ env.REGISTER_FILE_PATH_IN_REPO }} working-directory: aerospike-tests-python - # For this job, I used Andrew Kim's workflow in qe-docker repo as a reference - # https://github.com/citrusleaf/qe-docker/commit/d72f2d3fda70e199e24f4f670811d6e33e7f92be - add-python-client-to-qe-test-image-for-performance-regression-tests: - env: - WHEEL_ARCH: x86_64 - runs-on: ubuntu-24.04-arm - steps: - - name: Harden the runner (Audit all outbound calls) - uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 - with: - egress-policy: audit - - name: Get Github action to download wheel from JFrog - uses: actions/checkout@v4 - with: - path: aerospike-client-python - - - name: Get Github actions workflow to build Docker image - uses: actions/checkout@v4 - with: - repository: citrusleaf/qe-docker - path: qe-docker - ref: cicd-client-performance-regression-tests-requirements-txt - token: ${{ secrets.CLIENT_BOT_PAT }} - - - uses: ./aerospike-client-python/.github/actions/get-artifact-for-stage-tests - with: - # Calling workflow only builds wheel from source - get_from_jfrog: ${{ inputs.is-workflow-call == false && true || inputs.get-wheel-from-jfrog }} - jfrog_build_version: ${{ inputs.python-client-version-in-jfrog-to-test }} - dist_type_to_get: 'wheel' - wheel_python_version: '3.10' - wheel_os: manylinux - wheel_cpu_arch: ${{ env.WHEEL_ARCH }} - JFROG_PLATFORM_URL: ${{ secrets.JFROG_PLATFORM_URL }} - JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} - JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - - - name: Add wheel to staging folder for building Docker image - run: mv *linux*${{ env.WHEEL_ARCH }}*.whl qe-docker/test/python/_files/ - - - name: Log in to QE's Docker registry to download base image and publish new image - uses: docker/login-action@v3 - with: - registry: ${{ secrets.QE_DOCKER_REGISTRY_URL }} - username: ${{ secrets.QE_DOCKER_REGISTRY_USERNAME }} - password: ${{ secrets.QE_DOCKER_REGISTRY_PASSWORD }} - - # No way to set our own tag - # - run: ./bin/build -b -p -m test/python/3.11-mavenAnsible-client.Dockerfile - - - name: Build and push - uses: docker/build-push-action@v6 - with: - push: true - # TODO: set branch in tag - file: ./qe-docker/test/python/${{ env.TEST_IMAGE_TAG }}.Dockerfile - # Although our client perf test definitions state the test images where the tag doesn't have the arm- prefix - # Bob seems to look for the same tag from the test definition, but prefixed with arm- - tags: ${{ secrets.QE_DOCKER_REGISTRY_URL }}/test/python:arm-${{ env.TEST_IMAGE_TAG }} - context: ./qe-docker/test/python/_files - env: - TEST_IMAGE_TAG: 3.11-mavenAnsible-client - run-qe-test: env: TEST_CONFIG_FILE_NAME: client_perf.yaml TESTCTL_BINARY_NAME: testctl runs-on: ubuntu-24.04 needs: [ - add-python-client-to-qe-test-image-for-performance-regression-tests, register-test-definition-with-custom-env-var-parameters ] steps: @@ -219,7 +223,7 @@ jobs: # echo "$(realpath ~/bin)" >> $GITHUB_PATH - name: Get test-enqueue - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: repository: citrusleaf/qe-tools token: ${{ secrets.CLIENT_BOT_PAT }} @@ -231,7 +235,7 @@ jobs: - name: Add test-enqueue to PATH run: echo "$(realpath qe-tools/bin)" >> $GITHUB_PATH - - uses: jfrog/setup-jfrog-cli@v4 + - uses: jfrog/setup-jfrog-cli@5b06f730cc5a6f55d78b30753f8583454b08c0aa # v4.8.1 env: JF_URL: ${{ secrets.JFROG_PLATFORM_URL }} JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} @@ -240,7 +244,7 @@ jobs: - run: chmod u+x ./testctl working-directory: qe-tools/bin - - uses: actions/checkout@v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: path: aerospike-client-python sparse-checkout: | @@ -276,7 +280,7 @@ jobs: # working-directory: aerospike-client-python/test/ - name: Tailscale VPN - uses: tailscale/github-action@v4.1.1 + uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 with: oauth-client-id: ${{ vars.TAILSCALE_OIDC_CLIENT_ID }} audience: ${{ vars.TAILSCALE_OIDC_AUDIENCE }} From b9ba05776b50f1b05e35ac3b80817548adbcaf6d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 08:39:39 -0800 Subject: [PATCH 148/153] fix --- .github/workflows/run-qe-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 11ce02e0b5..1dbc45a65c 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -176,6 +176,8 @@ jobs: ref: CLIENT-3541-add-client-centered-performance-regression-tests fetch-depth: 0 + - run: cp ${{ env.REGISTER_FILE_PATH_IN_REPO }}.template ${{ env.REGISTER_FILE_PATH_IN_REPO }} + - name: Environment variable overrides run: | yq eval ".perf_regression/client_centered.environment.MODE = \"${{ inputs.insert_mode }}\"" -i ${{ env.REGISTER_FILE_PATH_IN_REPO }} From 2498a1395d0f4de11f6a4b95503a02c01001c90b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 09:06:15 -0800 Subject: [PATCH 149/153] Fix --- .github/workflows/run-qe-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 1dbc45a65c..24eb244f4f 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -177,6 +177,7 @@ jobs: fetch-depth: 0 - run: cp ${{ env.REGISTER_FILE_PATH_IN_REPO }}.template ${{ env.REGISTER_FILE_PATH_IN_REPO }} + working-directory: aerospike-tests-python/perf_regression - name: Environment variable overrides run: | From 3965e24629e88897a84ec024bdcbee02debb3d68 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 09:13:52 -0800 Subject: [PATCH 150/153] path already includes perf_regression --- .github/workflows/run-qe-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 24eb244f4f..1d345c8d03 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -177,7 +177,7 @@ jobs: fetch-depth: 0 - run: cp ${{ env.REGISTER_FILE_PATH_IN_REPO }}.template ${{ env.REGISTER_FILE_PATH_IN_REPO }} - working-directory: aerospike-tests-python/perf_regression + working-directory: aerospike-tests-python/ - name: Environment variable overrides run: | From a5df6b537ea660017875215f7a364190a437a0a2 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 10:19:57 -0800 Subject: [PATCH 151/153] Add ability to run any revision of the qe tests --- .github/workflows/run-qe-test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 1d345c8d03..948a2ceb88 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -11,6 +11,10 @@ on: type: string required: true description: Python client version + test-code-revision: + type: string + required: true + description: "Test code revision" feature: required: true description: "Client feature to test" @@ -41,6 +45,10 @@ on: type: string required: false description: Python client version + test-code-revision: + type: string + required: true + description: "Test code revision" test-definition: type: string required: true @@ -173,7 +181,7 @@ jobs: repository: citrusleaf/aerospike-tests-python token: ${{ secrets.CLIENT_BOT_PAT }} path: aerospike-tests-python - ref: CLIENT-3541-add-client-centered-performance-regression-tests + ref: ${{ inputs.test-code-revision }} fetch-depth: 0 - run: cp ${{ env.REGISTER_FILE_PATH_IN_REPO }}.template ${{ env.REGISTER_FILE_PATH_IN_REPO }} From 976e72b73112f7e5bf43fbe9b32418e3d53157dd Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:20:32 -0800 Subject: [PATCH 152/153] When running test-enqueue we need to specify the correct test code revision --- .github/workflows/run-qe-test.yml | 7 ++++--- test/client_perf.yaml | 10 ---------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index 948a2ceb88..b15535efea 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -52,7 +52,7 @@ on: test-definition: type: string required: true - description: Test definition + description: "Test definition without the branch (i.e remove '@')" # Prevent another job from overriding the Docker image concurrency: @@ -287,8 +287,9 @@ jobs: - name: Allows us to get the exact test run id that was created by test-enqueue. run: echo TESTCTL_USER=$(uuidgen) >> $GITHUB_ENV - # - run: yq -i '.definitions.std.[0] = "${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} - # working-directory: aerospike-client-python/test/ + - name: Set the test code revision to run. + run: yq -i '.definitions.std.[0] = "${{ inputs.test-code-revision }}@${{ inputs.test-definition }}"' ${{ env.TEST_CONFIG_FILE_NAME }} + working-directory: aerospike-client-python/test/ - name: Tailscale VPN uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 diff --git a/test/client_perf.yaml b/test/client_perf.yaml index cc5789e167..9ee1398cc5 100644 --- a/test/client_perf.yaml +++ b/test/client_perf.yaml @@ -13,13 +13,3 @@ scenarios: definitions: std: - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_insert - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_update - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_delete - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_read - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_batch_write - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_scan - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_query - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_raise_exception - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_expressions - # - CLIENT-3541-add-client-centered-performance-regression-tests@perf_regression/client_centered_kvs_command_level_policy From 3bcea64ca88cbb762e5901709283e451cda35d0e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:22:38 -0800 Subject: [PATCH 153/153] fix --- .github/workflows/run-qe-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/run-qe-test.yml b/.github/workflows/run-qe-test.yml index b15535efea..e55b6e4ce7 100644 --- a/.github/workflows/run-qe-test.yml +++ b/.github/workflows/run-qe-test.yml @@ -11,6 +11,10 @@ on: type: string required: true description: Python client version + test-definition: + type: string + required: true + description: "Test definition without the branch (i.e remove '@')" test-code-revision: type: string required: true