Skip to content

feat: init metric engine structure #5481

feat: init metric engine structure

feat: init metric engine structure #5481

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: HoraeDB CI
on:
merge_group:
workflow_dispatch:
push:
branches:
- main
- dev
paths:
- 'src/**'
- 'integration_tests/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/ci.yml'
- 'licenserc.toml'
pull_request:
paths:
- 'src/**'
- 'integration_tests/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/ci.yml'
# Common environment variables
env:
RUSTFLAGS: "-C debuginfo=1"
CARGO_TERM_COLOR: always
RUST_BACKTRACE: "1"
LOCK_FILE: Cargo.lock
RUST_VERSION: nightly-2024-01-28
jobs:
style-check:
name: style-check
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Install check binaries
run: |
rustup component add clippy
rustup component add rustfmt
cargo install --git https://github.com/DevinR528/cargo-sort --rev 55ec890 --locked
- name: Run Style Check
run: |
make clippy
make fmt
make check-cargo-toml
unit-test:
name: unit-test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Backup Lock File
run: |
cp ${LOCK_FILE} ${LOCK_FILE}.bak
- name: Run Unit Tests
run: |
make test-ut
echo "Checking if ${LOCK_FILE} has changed..."
- name: Check Lock File
run: |
diff ${LOCK_FILE} ${LOCK_FILE}.bak
integration-test:
name: integration-test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-go@v3
with:
go-version: 1.21
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Run integration tests
run: |
make integration-test
env:
RUST_BACKTRACE: "1"
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v3
with:
name: CI-${{ github.sha }}
path: |
/tmp/horaedb-stdout.log
/tmp/horaemeta-stdout.log
/tmp/horaedb-stdout-0.log
/tmp/horaedb-stdout-1.log
sdk-test:
name: sdk-test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-go@v3
with:
go-version: 1.21
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Build and Run HoraeDB Cluster
working-directory: integration_tests
run: |
make prepare
make run-horaemeta
make run-horaedb-cluster
- name: Run Go SDK tests
working-directory: integration_tests
run: |
make run-go
- name: Run Java SDK tests
working-directory: integration_tests
run: |
make run-java
- name: Run Rust SDK tests
working-directory: integration_tests
run: |
make run-rust
- name: Run MySQL client tests
working-directory: integration_tests
run: |
make run-mysql
- name: Run PostgreSQL client tests
working-directory: integration_tests
run: |
make run-postgresql
- name: Run Prometheus query tests
working-directory: integration_tests
run: |
make run-prom
- name: Run OpenTSDB tests
working-directory: integration_tests
run: |
make run-opentsdb
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v3
with:
name: sdk-test-${{ github.sha }}
path: |
/tmp/horaedb-stdout.log
recovery-test:
name: recovery-test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Run recovery tests
working-directory: integration_tests
run: |
make run-recovery
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v3
with:
name: recovery-test-${{ github.sha }}
path: |
/tmp/horaedb-stdout.log
dist-query-test:
name: dist-query-test
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-go@v3
with:
go-version: 1.21
- run: |
rustup set auto-self-update disable
rustup toolchain install ${RUST_VERSION} --profile minimal
- name: Release Disk Quota
run: |
sudo make ensure-disk-quota
- name: Setup Build Environment
run: |
sudo apt update
sudo apt install --yes protobuf-compiler
- name: Run dist query tests
working-directory: integration_tests
run: |
make run-dist-query
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v3
with:
name: dist-query-test-${{ github.sha }}
path: |
/tmp/horaedb-stdout.log