Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
f737ff9
простейший тест пройден .. приступаю к дополнению иерархии модулей
balamout75 Jan 4, 2026
24205e0
простейший тест пройден .. приступаю к дополнению иерархии модулей.. …
balamout75 Jan 4, 2026
bf3258b
простейший тест пройден .. приступаю к дополнению иерархии модулей.. …
balamout75 Jan 4, 2026
06b9458
Merge branch 'ydb-platform:master' into ydb-slo-tests
balamout75 Jan 4, 2026
b66dc70
простейший тест пройден .. приступаю к дополнению иерархии модулей.. …
balamout75 Jan 4, 2026
6521abd
Update slo.yml
balamout75 Jan 4, 2026
812cd5d
Поднимаем кластер
balamout75 Jan 4, 2026
68e8674
Поднимаем кластер
balamout75 Jan 4, 2026
897deeb
Поднимаем кластер
balamout75 Jan 4, 2026
b57bcab
Настройка Workflow
balamout75 Jan 4, 2026
0004967
Настройка Workflow
balamout75 Jan 4, 2026
d564cbf
Настройка Workflow
balamout75 Jan 4, 2026
2be5992
Настройка Workflow
balamout75 Jan 4, 2026
2dd76eb
Update slo.yml
balamout75 Jan 8, 2026
c504808
Настройка Workflow
balamout75 Jan 8, 2026
52d9d6b
Настройка Workflow
balamout75 Jan 8, 2026
e94d1dc
Настройка Workflow
balamout75 Jan 8, 2026
5677ae4
Настройка Workflow
balamout75 Jan 8, 2026
997ec8c
Настройка Workflow
balamout75 Jan 8, 2026
3cc6c50
Настройка Workflow
balamout75 Jan 8, 2026
de79495
Настройка Workflow
balamout75 Jan 8, 2026
76b1d8d
Настройка Workflow
balamout75 Jan 8, 2026
84169d4
Настройка Workflow
balamout75 Jan 8, 2026
73aff0b
Настройка Workflow
balamout75 Jan 8, 2026
ac12dac
Настройка Workflow
balamout75 Jan 8, 2026
869b1f5
Настройка Workflow
balamout75 Jan 8, 2026
5f496c6
Настройка Workflow
balamout75 Jan 8, 2026
274cb76
Настройка Workflow
balamout75 Jan 8, 2026
0107198
Настройка Workflow
balamout75 Jan 9, 2026
1e90637
Настройка Workflow
balamout75 Jan 9, 2026
a521ca5
Update slo.yml
balamout75 Jan 9, 2026
5198ecc
Настройка Workflow
balamout75 Jan 9, 2026
3d685f1
Настройка Workflow
balamout75 Jan 9, 2026
508ec0f
Настройка Workflow
balamout75 Jan 9, 2026
57263dc
сделал инфраструктуру для SLO
balamout75 Jan 9, 2026
5471e70
Настройка Workflow
balamout75 Jan 9, 2026
8afdb16
Настройка Workflow
balamout75 Jan 9, 2026
34b18f8
Настройка Workflow
balamout75 Jan 9, 2026
dde05c9
Update slo.yml
balamout75 Jan 9, 2026
f4f95d6
Настройка Workflow
balamout75 Jan 9, 2026
22ddf78
Настройка Workflow
balamout75 Jan 9, 2026
27555c3
Настройка Workflow
balamout75 Jan 11, 2026
2bc9efe
Настройка Workflow
balamout75 Jan 11, 2026
f1ac0f5
Настройка Workflow
balamout75 Jan 11, 2026
b888c60
Настройка Workflow
balamout75 Jan 11, 2026
8c648ca
Работа с jdbc тестом
balamout75 Jan 11, 2026
06db023
Работа с jdbc тестом
balamout75 Jan 11, 2026
3b16504
Работа с jdbc тестом почти завершена
balamout75 Jan 11, 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
3 changes: 1 addition & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,4 @@ jobs:
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}

token: ${{ secrets.CODECOV_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,4 @@ jobs:

- name: Test examples with Maven
working-directory: ./examples
run: mvn $MAVEN_ARGS -Dydb.sdk.version=$SDK_VERSION -Dydb.jdbc.version=$JDBC_VERSION test
run: mvn $MAVEN_ARGS -Dydb.sdk.version=$SDK_VERSION -Dydb.jdbc.version=$JDBC_VERSION test
28 changes: 28 additions & 0 deletions .github/workflows/slo-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: SLO Report

on:
workflow_run:
workflows: ['SLO JDBC'] # ← Исправлено
types:
- completed

jobs:
publish-slo-report:
runs-on: ubuntu-latest
name: Publish YDB SLO Report

# Permissions для комментариев в PR
permissions:
contents: read
pull-requests: write
actions: read

# Запускаем только если основной тест успешен
if: github.event.workflow_run.conclusion == 'success'

steps:
- name: Publish YDB SLO Report
uses: ydb-platform/ydb-slo-action/report@53e02500d4a98a6b67d9009bc46e839236f15f81
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
github_run_id: ${{ github.event.workflow_run.id }}
166 changes: 166 additions & 0 deletions .github/workflows/slo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: SLO JDBC
on:
push:
branches: [master, develop, main]
pull_request:
types: [opened, reopened, edited, synchronize]

jobs:
jdbc-slo-test:
if: (!contains(github.event.pull_request.labels.*.name, 'no slo'))

name: JDBC SLO Test
runs-on: ubuntu-latest

strategy:
matrix:
workload:
- simple-jdbc-test
include:
- workload: simple-jdbc-test
ydb_host: localhost
ydb_port: 2135
ydb_database: /Root/testdb
prom_pgw: http://localhost:9091
test_duration: 60
read_rps: 1000
write_rps: 100
read_timeout: 1000
write_timeout: 1000

concurrency:
group: slo-${{ github.ref }}-${{ matrix.workload }}
cancel-in-progress: true

steps:
# 1. Checkout repository
- name: Checkout repository
uses: actions/checkout@v4

# 2. Initialize YDB SLO
- name: Initialize YDB SLO
uses: ydb-platform/ydb-slo-action/init@53e02500d4a98a6b67d9009bc46e839236f15f81
with:
github_pull_request_number: ${{ github.event.pull_request.number }}
github_token: ${{ secrets.GITHUB_TOKEN }}
ydb_database_node_count: 5

# 3. Set up JDK 21
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'maven'

# 4. Build modules
- name: Build slo modules
run: ./mvnw clean install -DskipTests -q

# 5. Wait for YDB readiness
- name: Wait for YDB readiness
run: |
echo "Waiting for YDB to be ready..."
for i in {1..30}; do
if nc -zv localhost 2135 2>&1 | grep -q "succeeded"; then
echo "✅ YDB port is available"
sleep 5
break
fi
echo "Attempt $i/30: waiting for YDB..."
sleep 2
done

# 6. Run Simple JDBC Test
- name: Run Simple JDBC Test
env:
YDB_JDBC_URL: jdbc:ydb:grpc://${{ matrix.ydb_host }}:${{ matrix.ydb_port }}${{ matrix.ydb_database }}
YDB_HOST: ${{ matrix.ydb_host }}
YDB_PORT: ${{ matrix.ydb_port }}
YDB_DATABASE: ${{ matrix.ydb_database }}
PROM_PGW: ${{ matrix.prom_pgw }}
TEST_DURATION: ${{ matrix.test_duration }}
READ_RPS: ${{ matrix.read_rps }}
WRITE_RPS: ${{ matrix.write_rps }}
READ_TIMEOUT: ${{ matrix.read_timeout }}
WRITE_TIMEOUT: ${{ matrix.write_timeout }}
run: |
echo "Running JDBC SLO test with URL: $YDB_JDBC_URL"
echo "Prometheus Push Gateway: $PROM_PGW"
echo "Test parameters: duration=${TEST_DURATION}s, read_rps=${READ_RPS}, write_rps=${WRITE_RPS}"
./mvnw test -pl slo/${{ matrix.workload }} -Dskip.jdbc.tests=false -Dtest=JdbcSloTest

# 6.5. Generate Test Summary
- name: Generate Test Summary
if: always()
run: |
echo "## 📊 SLO Test Results - ${{ matrix.workload }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ -f "slo/${{ matrix.workload }}/target/test-metrics.txt" ]; then
source slo/${{ matrix.workload }}/target/test-metrics.txt

echo "### ✅ Test Execution" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Metric | Value |" >> $GITHUB_STEP_SUMMARY
echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| Workload | \`${{ matrix.workload }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| YDB Endpoint | \`${{ matrix.ydb_host }}:${{ matrix.ydb_port }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| Database | \`${{ matrix.ydb_database }}\` |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

echo "### 📈 Performance Metrics" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Metric | Value |" >> $GITHUB_STEP_SUMMARY
echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| ✅ Successful Requests | ${SUCCESS_COUNT} |" >> $GITHUB_STEP_SUMMARY
echo "| ❌ Failed Requests | ${ERROR_COUNT} |" >> $GITHUB_STEP_SUMMARY
echo "| ⏱️ Latency | ${LATENCY_MS} ms |" >> $GITHUB_STEP_SUMMARY
echo "| 🔗 Active Connections | ${ACTIVE_CONNECTIONS} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Вычисляем success rate
TOTAL=$((SUCCESS_COUNT + ERROR_COUNT))
if [ $TOTAL -gt 0 ]; then
SUCCESS_RATE=$(awk "BEGIN {printf \"%.2f\", ($SUCCESS_COUNT / $TOTAL) * 100}")
echo "| 📊 Success Rate | ${SUCCESS_RATE}% |" >> $GITHUB_STEP_SUMMARY
fi

echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🎯 Test Configuration" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Parameter | Value |" >> $GITHUB_STEP_SUMMARY
echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| Read RPS | ${{ matrix.read_rps }} |" >> $GITHUB_STEP_SUMMARY
echo "| Write RPS | ${{ matrix.write_rps }} |" >> $GITHUB_STEP_SUMMARY
echo "| Duration | ${{ matrix.test_duration }}s |" >> $GITHUB_STEP_SUMMARY
echo "| Read Timeout | ${{ matrix.read_timeout }}ms |" >> $GITHUB_STEP_SUMMARY
echo "| Write Timeout | ${{ matrix.write_timeout }}ms |" >> $GITHUB_STEP_SUMMARY
else
echo "⚠️ Test metrics file not found" >> $GITHUB_STEP_SUMMARY
fi

# 7. Upload logs on failure
- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.workload }}-test-logs
path: |
**/target/surefire-reports/
**/logs/
retention-days: 5

# 8. Store YDB logs
- name: Store YDB logs
if: always()
run: |
docker logs ydb-chaos > ydb-chaos.log 2>&1 || echo "No ydb-chaos container"

- name: Upload YDB logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.workload }}-ydb-chaos.log
path: ./ydb-chaos.log
retention-days: 1
Loading