From 788d6e211bdb424b854d5058b63acd48df1d576a Mon Sep 17 00:00:00 2001 From: 0x29a Date: Sun, 8 Oct 2023 14:16:44 +0800 Subject: [PATCH] ci: upgrade action & use nextest instead of test for ut (#422) * ci: upgrade action & use nextest instead of test Signed-off-by: ben1009 * fix DCO check Signed-off-by: ben1009 * back to use test in IT Signed-off-by: ben1009 * transaction: Support unsafe_destroy_range interface (#420) * add unsafe_destroy_range Signed-off-by: Ping Yu * polish Signed-off-by: Ping Yu * polish Signed-off-by: Ping Yu * fix compile error on lower version of rust Signed-off-by: Ping Yu --------- Signed-off-by: Ping Yu Signed-off-by: ben1009 * add install guid for nextest in readme Signed-off-by: ben1009 --------- Signed-off-by: ben1009 Signed-off-by: Ping Yu Co-authored-by: Ping Yu --- .github/workflows/ci.yml | 22 ++++++++++++++++------ Makefile | 2 +- README.md | 8 ++++++-- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 20a6baed..4a4b7a55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,12 @@ on: push: branches: - master +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always name: CI @@ -11,14 +17,14 @@ jobs: name: check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install Protoc uses: arduino/setup-protoc@v1 with: version: '3.x' repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Rust Cache - uses: Swatinem/rust-cache@v1.4.0 + uses: Swatinem/rust-cache@v2 - name: make check run: make check - name: Catch unexpected changes in the generated code @@ -31,14 +37,16 @@ jobs: CARGO_INCREMENTAL: 0 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install Protoc uses: arduino/setup-protoc@v1 with: version: '3.x' repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Rust Cache - uses: Swatinem/rust-cache@v1.4.0 + uses: Swatinem/rust-cache@v2 + - name: Install latest nextest release + uses: taiki-e/install-action@nextest - name: unit test run: make unit-test @@ -48,14 +56,14 @@ jobs: CARGO_INCREMENTAL: 0 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install Protoc uses: arduino/setup-protoc@v1 with: version: '3.x' repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Rust Cache - uses: Swatinem/rust-cache@v1.4.0 + uses: Swatinem/rust-cache@v2 - name: install tiup run: curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh - name: start tiup playground @@ -68,5 +76,7 @@ jobs: [[ "$(curl -I http://127.0.0.1:2379/pd/api/v1/regions 2>/dev/null | head -n 1 | cut -d$' ' -f2)" -ne "405" ]] || break sleep 1 done + - name: Install latest nextest release + uses: taiki-e/install-action@nextest - name: integration test run: MULTI_REGION=1 make integration-test diff --git a/Makefile b/Makefile index b57685a5..8014352d 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ check: generate cargo clippy --all-targets --features "${ALL_FEATURES}" -- -D clippy::all unit-test: generate - cargo test --all --no-default-features + cargo nextest run --all --no-default-features integration-test: generate cargo test txn_ --all ${INTEGRATION_TEST_ARGS} -- --nocapture diff --git a/README.md b/README.md index 0bb8917d..6f41a99b 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,11 @@ We welcome your contributions! Contributing code is great, we also appreciate fi ## Building and testing -We use the standard Cargo workflows, e.g., `cargo build` to build and `cargo test` to run unit tests. You will need to use a nightly Rust toolchain to build and run tests. +We use the standard Cargo workflows, e.g., `cargo build` to build and `cargo test/nextest` to run unit tests. You will need to use a nightly Rust toolchain to build and run tests. Could use [nextest](https://nexte.st/index.html) to speed up ut, install nextest first. + +``` +cargo install cargo-nextest --locked +``` Running integration tests or manually testing the client with a TiKV cluster is a little bit more involved. The easiest way is to use [TiUp](https://github.com/pingcap/tiup) (>= 1.5) to initialise a cluster on your local machine: @@ -131,7 +135,7 @@ PD_ADDRS="127.0.0.1:2379" cargo test --package tikv-client --test integration_te We use a standard GitHub PR workflow. We run CI on every PR and require all PRs to build without warnings (including clippy and Rustfmt warnings), pass tests, have a DCO sign-off (use `-s` when you commit, the DCO bot will guide you through completing the DCO agreement for your first PR), and have at least one review. If any of this is difficult for you, don't worry about it and ask on the PR. -To run CI-like tests locally, we recommend you run `cargo clippy`, `cargo test`, and `cargo fmt` before submitting your PR. See above for running integration tests, but you probably won't need to worry about this for your first few PRs. +To run CI-like tests locally, we recommend you run `cargo clippy`, `cargo test/nextest run`, and `cargo fmt` before submitting your PR. See above for running integration tests, but you probably won't need to worry about this for your first few PRs. Please follow PingCAP's [Rust style guide](https://pingcap.github.io/style-guide/rust/). All code PRs should include new tests or test cases.