Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
48774e2
auto commit
rishav-karanjit Sep 4, 2025
5bc7702
auto commit
rishav-karanjit Sep 4, 2025
a604509
remove put get and add batch put get
rishav-karanjit Sep 4, 2025
7c16d49
auto commit
rishav-karanjit Sep 4, 2025
d682110
auto commit
rishav-karanjit Sep 4, 2025
8f3330c
auto commit
rishav-karanjit Sep 4, 2025
286ec92
auto commit
rishav-karanjit Sep 4, 2025
7b7da98
auto commit
rishav-karanjit Sep 4, 2025
321cbed
benchmark
rishav-karanjit Sep 4, 2025
9d5e62c
auto commit
rishav-karanjit Sep 4, 2025
02f848e
auto commit
rishav-karanjit Sep 4, 2025
2d62147
auto commit
rishav-karanjit Sep 4, 2025
fb3967d
auto commit
rishav-karanjit Sep 4, 2025
23f15e4
auto commit
rishav-karanjit Sep 4, 2025
8aa8bf2
auto commit
rishav-karanjit Sep 4, 2025
bbbf5ae
auto commit
rishav-karanjit Sep 5, 2025
cc57cbe
Calculate Item Size
rishav-karanjit Sep 5, 2025
b238461
Revert "Calculate Item Size"
rishav-karanjit Sep 5, 2025
9e7402a
benchmark
rishav-karanjit Sep 5, 2025
fbca12a
auto commit
rishav-karanjit Sep 5, 2025
f608db0
Item encryptor
rishav-karanjit Sep 6, 2025
317d803
auto commit
rishav-karanjit Sep 6, 2025
ca56d0d
auto commit
rishav-karanjit Sep 6, 2025
b22f0c8
auto commit
rishav-karanjit Sep 6, 2025
4bf0bd8
auto commit
rishav-karanjit Sep 8, 2025
6c93e74
comment not needed code
rishav-karanjit Sep 8, 2025
3fc071a
auto commit
rishav-karanjit Sep 8, 2025
e9e5c73
remove redundant files
rishav-karanjit Sep 8, 2025
69800a9
remove batch put and get
rishav-karanjit Sep 8, 2025
2e4d8f6
auto commit
rishav-karanjit Sep 8, 2025
f0e068f
auto commit
rishav-karanjit Sep 8, 2025
642a1ca
auto commit
rishav-karanjit Sep 9, 2025
4eafece
auto commit
rishav-karanjit Sep 9, 2025
c829ef0
run once in ci
josecorella Jan 14, 2026
d466b5c
temp
josecorella Jan 14, 2026
fe73ce6
correct
josecorella Jan 14, 2026
2dd9e98
dir strucutre is hard
josecorella Jan 14, 2026
8b1dc27
address feedback
josecorella Jan 17, 2026
0c2a4f7
upload to cloudwatch
josecorella Jan 20, 2026
f0938ee
Merge branch 'main' into benchmark
josecorella Jan 20, 2026
fa8a1b4
format
josecorella Jan 20, 2026
e8c6194
add cfn template for the metric filters
josecorella Jan 20, 2026
0615ec9
format
josecorella Jan 20, 2026
729bd37
Update test scenarios with new medium size and cleanup
ShubhamChaturvedi7 Jan 20, 2026
684f8e4
fix template
josecorella Jan 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions .github/workflows/performance-benchmarks-go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# This workflow runs every day 09:00 UTC (1AM PST)
name: Performance Benchmarks

on:
workflow_call:
inputs:
dafny:
description: "The Dafny version to run"
required: false
default: "4.9.0"
type: string
regenerate-code:
description: "Regenerate code using smithy-dafny"
required: false
default: false
type: boolean
mpl-version:
description: "MPL version to use"
required: false
type: string
mpl-head:
description: "Running on MPL HEAD"
required: false
default: false
type: boolean
jobs:
testGo:
strategy:
fail-fast: false
matrix:
library: [DynamoDbEncryption]
benchmark-dir: [db-esdk-performance-testing]
os: [macos-latest, ubuntu-latest]
go-version: ["1.23", "1.24", "1.25"]
runs-on: ${{ matrix.os }}
permissions:
id-token: write
contents: read
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v5
with:
aws-region: us-west-2
role-to-assume: arn:aws:iam::370957321024:role/GitHub-CI-DDBEC-Dafny-Role-us-west-2
role-session-name: DDBEC-Performance-Benchmarks-Go

- name: Support longpaths
run: |
git config --global core.longpaths true

- uses: actions/checkout@v5
with:
submodules: recursive
- name: Init Submodules
shell: bash
run: |
git submodule update --init --recursive submodules/smithy-dafny
git submodule update --init --recursive submodules/MaterialProviders

- name: Create temporary global.json
run: echo '{"sdk":{"rollForward":"latestFeature","version":"6.0.0"}}' > ./global.json

- name: Setup Java 17 for codegen
uses: actions/setup-java@v5
with:
distribution: "corretto"
java-version: "17"

- name: Update MPL submodule if using MPL HEAD
if: ${{ inputs.mpl-head == true }}
working-directory: submodules/MaterialProviders
run: |
git checkout main
git pull
git submodule update --init --recursive
git rev-parse HEAD

- name: Update project.properties if using MPL HEAD
if: ${{ inputs.mpl-head == true }}
run: |
sed "s/mplDependencyJavaVersion=.*/mplDependencyJavaVersion=${{inputs.mpl-version}}/g" project.properties > project.properties2; mv project.properties2 project.properties

- name: Install Go
uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go-version }}

- name: Setup Dafny
uses: dafny-lang/setup-dafny-action@v1.8.0
with:
dafny-version: "4.9.0"

- name: Install Smithy-Dafny codegen dependencies
uses: ./.github/actions/install_smithy_dafny_codegen_dependencies

- name: Build ${{ matrix.library }} implementation
shell: bash
working-directory: ./${{ matrix.library }}
run: |
# This works because `node` is installed by default on GHA runners
CORES=$(node -e 'console.log(os.cpus().length)')
make transpile_go CORES=$CORES

- name: Run Performance Benchmarks - Quick Mode
shell: bash
working-directory: ./${{matrix.benchmark-dir}}/benchmarks/go
run: |
go run . --config ../config/test-scenarios.yaml --quick

- name: Parse and Format Logs
working-directory: ./${{matrix.benchmark-dir}}/benchmarks/results/raw-data/
run: |
LOG_FILE="go_results.json"
UPLOAD_FILE="cloudwatch_logs.json"
TIMESTAMP=$(date +%s%3N)
jq -c --arg ts "$(date +%s)000" '[.results[] as $result | .metadata as $meta | {timestamp: ($ts | tonumber), message: ({metadata: $meta, result: $result} | tostring)}]' $LOG_FILE > $UPLOAD_FILE

- name: Upload logs to CloudWatch
working-directory: ./${{matrix.benchmark-dir}}/benchmarks/results/raw-data/
run: |
LOG_FILE="cloudwatch_logs.json"
LOG_GROUP="aws-dbesdk-performance-benchmarks"
LOG_STREAM="go/${{matrix.go-version}}/quick_benchmarks/${{ github.workflow }}"

# Create log stream (ignore if exists)
aws logs create-log-stream \
--log-group-name "$LOG_GROUP" \
--log-stream-name "$LOG_STREAM" 2>/dev/null || true

aws logs put-log-events \
--log-group-name "$LOG_GROUP" \
--log-stream-name "$LOG_STREAM" \
--log-events file://$LOG_FILE
31 changes: 31 additions & 0 deletions .github/workflows/performance-benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# This workflow runs every day 09:00 UTC (1AM PST)
name: Performance Benchmarks

permissions:
id-token: write
contents: read

on:
pull_request:
paths:
- ".github/workflows/performance-benchmarks.yml"
schedule:
- cron: "00 16 * * *"

jobs:
getVersion:
if: github.event_name != 'schedule' || github.repository_owner == 'aws'
uses: ./.github/workflows/dafny_version.yml
performance-benchmarks-go:
needs: getVersion
uses: ./.github/workflows/performance-benchmarks-go.yml
with:
dafny: ${{needs.getVersion.outputs.version}}
notify:
needs: [getVersion, performance-benchmarks-go]
if: ${{ failure() }}
uses: aws/aws-cryptographic-material-providers-library/.github/workflows/slack-notification.yml@main
with:
message: "Performance Benchmarks failed on `${{ github.repository }}`. View run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_CI }}
Loading
Loading