Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions .github/workflows/async-retry-backoff-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Async Retry Back-Off CI

# Triggered on every push / PR that touches the RemoteRegistryClient sources,
# tests, or this workflow file. Targets v1.3.0 (roadmap row #155).
on:
push:
branches:
- main
- develop
paths:
- 'include/themis/base/remote_registry_client.h'
- 'src/base/remote_registry_client.cpp'
- 'tests/test_remote_registry_client.cpp'
- 'cmake/MiscellaneousFeatures.cmake'
- 'tests/CMakeLists.txt'
- '.github/workflows/async-retry-backoff-ci.yml'
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'include/themis/base/remote_registry_client.h'
- 'src/base/remote_registry_client.cpp'
- 'tests/test_remote_registry_client.cpp'
- 'cmake/MiscellaneousFeatures.cmake'
- 'tests/CMakeLists.txt'
- '.github/workflows/async-retry-backoff-ci.yml'

concurrency:
group: async-retry-backoff-${{ github.ref }}
cancel-in-progress: true

jobs:
ci-scope-classifier:
permissions:
contents: read
uses: ./.github/workflows/ci-scope-classifier.yml

async-retry-tests:
needs: ci-scope-classifier
if: needs.ci-scope-classifier.outputs.has_code_changes == 'true'
name: Async Retry Back-Off (${{ matrix.os }} / ${{ matrix.compiler }})
runs-on: ${{ matrix.os }}
timeout-minutes: 60

permissions:
contents: read

strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
compiler: gcc-12
cc: gcc-12
cxx: g++-12
- os: ubuntu-24.04
compiler: gcc-14
cc: gcc-14
cxx: g++-14

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up C++ build environment
uses: ./.github/actions/setup-cpp-build
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}
extra-packages: libssl-dev libcurl4-openssl-dev libboost-all-dev librocksdb-dev libfmt-dev libtbb-dev libspdlog-dev nlohmann-json3-dev

- name: Configure and build
uses: ./.github/actions/configure-themis
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}

# ── Focused test target ────────────────────────────────────────────────
- name: Run RemoteRegistryClientFocusedTests
run: |
set -o pipefail
cd build
ctest -R RemoteRegistryClientFocusedTests \
--output-on-failure \
--timeout 120 \
2>&1 | tee async_retry_results.txt

# ── Broader AC validation via unified binary ───────────────────────────
- name: Run RemoteRegistryClient tests via unified binary
run: |
set -o pipefail
cd build
./tests/themis_tests \
--gtest_filter="RegistryConfig.*:RegistryPluginEntry.*:PluginDownloadResult.*:RequestStats.*:RemoteRegistryClient.*" \
--gtest_output="xml:async_retry_gtest.xml" \
2>&1 | tee async_retry_gtest_output.txt

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: async-retry-results-${{ matrix.os }}-${{ matrix.compiler }}
path: |
build/async_retry_results.txt
build/async_retry_gtest.xml
build/async_retry_gtest_output.txt
retention-days: 30
120 changes: 120 additions & 0 deletions .github/workflows/multi-tier-replication-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Multi-Tier Replication CI

# Triggered on every push / PR that touches MultiTierReplicationManager
# sources or its test file. Targets v1.8.0.
on:
push:
branches:
- main
- develop
paths:
- 'include/replication/multi_tier_replication.h'
- 'src/replication/multi_tier_replication.cpp'
- 'tests/test_replication_ha.cpp'
- 'cmake/CMakeLists.txt'
- 'cmake/ModularBuild.cmake'
- 'tests/CMakeLists.txt'
- '.github/workflows/multi-tier-replication-ci.yml'
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'include/replication/multi_tier_replication.h'
- 'src/replication/multi_tier_replication.cpp'
- 'tests/test_replication_ha.cpp'
- 'cmake/CMakeLists.txt'
- 'cmake/ModularBuild.cmake'
- 'tests/CMakeLists.txt'
- '.github/workflows/multi-tier-replication-ci.yml'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
ci-scope-classifier:
permissions:
contents: read
uses: ./.github/workflows/ci-scope-classifier.yml

# ---------------------------------------------------------------------------
# Build and run the MultiTierReplicationManager focused test suite.
# Tests cover all acceptance criteria:
# AC-1 Tier 1: Strong consistency, high durability (3+ replicas, sync, <10ms)
# AC-2 Tier 2: Eventual consistency, moderate durability (2 replicas, semi-sync)
# AC-3 Tier 3: Best-effort, low durability (1 replica, async)
# AC-4 Per-collection tier assignment
# AC-5 Automatic tier promotion/demotion based on access patterns
# ---------------------------------------------------------------------------
multi-tier-replication-tests:
needs: ci-scope-classifier
if: needs.ci-scope-classifier.outputs.has_code_changes == 'true'
name: Multi-Tier Replication (${{ matrix.os }} / ${{ matrix.compiler }})
runs-on: ${{ matrix.os }}
timeout-minutes: 60

permissions:
contents: read

strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
compiler: gcc-12
cc: gcc-12
cxx: g++-12
- os: ubuntu-24.04
compiler: gcc-14
cc: gcc-14
cxx: g++-14

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up C++ build environment
uses: ./.github/actions/setup-cpp-build
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}
extra-packages: libssl-dev libboost-all-dev librocksdb-dev libfmt-dev libtbb-dev libspdlog-dev nlohmann-json3-dev liblz4-dev libzstd-dev libsnappy-dev libprotobuf-dev

- name: Configure and build
uses: ./.github/actions/configure-themis
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}

# ── Focused test target ────────────────────────────────────────────────
- name: Run MultiTierReplicationFocusedTests
run: |
set -o pipefail
cd build
ctest -R MultiTierReplicationFocusedTests \
--output-on-failure \
--timeout 120 \
2>&1 | tee multi_tier_replication_results.txt

# ── Broader AC validation via unified binary ───────────────────────────
- name: Run MultiTierReplicationTest via unified binary
run: |
set -o pipefail
cd build
./tests/test_multi_tier_replication_focused \
--gtest_filter="MultiTierReplicationTest*" \
--gtest_output="xml:multi_tier_replication_gtest.xml" \
2>&1 | tee multi_tier_replication_gtest_output.txt

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: multi-tier-replication-results-${{ matrix.os }}-${{ matrix.compiler }}
path: |
build/multi_tier_replication_results.txt
build/multi_tier_replication_gtest.xml
build/multi_tier_replication_gtest_output.txt
retention-days: 30
1 change: 1 addition & 0 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1819,6 +1819,7 @@ set(THEMIS_CORE_SOURCES
../src/replication/replication_slot.cpp
../src/replication/raft_v2.cpp
../src/replication/schema_cdc.cpp
../src/replication/multi_tier_replication.cpp

# Temporal versioning and query engine
../src/temporal/temporal_conflict_resolver.cpp
Expand Down
1 change: 1 addition & 0 deletions cmake/ModularBuild.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,7 @@ set(THEMIS_TRANSACTION_SOURCES
../src/replication/replication_slot.cpp
../src/replication/raft_v2.cpp
../src/replication/schema_cdc.cpp
../src/replication/multi_tier_replication.cpp
../src/replication/logical_replication.cpp

)
Expand Down
Loading
Loading