mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-06-28 15:42:29 +00:00
![Franck Royer](/assets/img/avatar_default.png)
The test do not work without acks as we stop the event loop as soon as a message is considered as "sent" when actually the event loop and swarm may not have yet sent the message. The ack allow to avoid this issue as the message was considered "sent" only once the other party sent a response. However, the ack brings other issue so a review needs to be done to select the appropriate solution.
165 lines
5.1 KiB
YAML
165 lines
5.1 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- 'staging'
|
|
- 'trying'
|
|
- 'master'
|
|
|
|
jobs:
|
|
static_analysis:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
components: rustfmt, clippy
|
|
|
|
- name: Cache ~/.cargo/bin directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/bin
|
|
key: ubuntu-rust-${{ env.RUST_TOOLCHAIN }}-cargo-bin-directory-v1
|
|
|
|
- name: Install tomlfmt
|
|
run: which cargo-tomlfmt || cargo install cargo-tomlfmt
|
|
|
|
- name: Check Cargo.toml formatting
|
|
run: |
|
|
cargo tomlfmt -d -p Cargo.toml
|
|
cargo tomlfmt -d -p monero-harness/Cargo.toml
|
|
cargo tomlfmt -d -p swap/Cargo.toml
|
|
|
|
- name: Check code formatting
|
|
run: cargo fmt --all -- --check
|
|
|
|
- name: Run clippy with default features
|
|
run: cargo clippy --workspace --all-targets -- -D warnings
|
|
|
|
- name: Run clippy with all features enabled (e.g. tor)
|
|
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
|
|
build_test:
|
|
env:
|
|
RUST_TEST_TASKS: 2
|
|
strategy:
|
|
matrix:
|
|
target: [ x86_64-unknown-linux-gnu, x86_64-apple-darwin ]
|
|
include:
|
|
- target: x86_64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- target: x86_64-apple-darwin
|
|
os: macos-latest
|
|
skip_tests: true # Most likely do not work due to docker usage, TODO: add feature flag to allow unit tests
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install and stop tor in case it was running
|
|
if: (matrix.os == 'ubuntu-latest' && !matrix.skip_tests)
|
|
run: |
|
|
sudo apt install software-properties-common
|
|
sudo curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo gpg --import
|
|
sudo gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
|
|
sudo add-apt-repository 'deb https://deb.torproject.org/torproject.org bionic main'
|
|
sudo apt update
|
|
sudo apt install tor deb.torproject.org-keyring
|
|
sudo /etc/init.d/tor stop
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Cache target directory
|
|
uses: actions/cache@v1
|
|
if: matrix.os == 'ubuntu-latest'
|
|
with:
|
|
path: target
|
|
key: rust-${{ matrix.target }}-target-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cache ~/.cargo/registry directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/registry
|
|
key: rust-${{ matrix.target }}-cargo-registry-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cargo check release code with default features
|
|
run: cargo check --workspace
|
|
|
|
- name: Cargo check all features
|
|
run: cargo check --workspace --all-targets --all-features
|
|
|
|
- name: Build tests
|
|
run: cargo build --tests --workspace --all-features
|
|
|
|
- name: Run monero-harness tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: cargo test --package monero-harness --all-features
|
|
|
|
- name: Run library tests for swap
|
|
run: cargo test --package swap --lib --all-features
|
|
|
|
- name: Build binary
|
|
run: |
|
|
cargo build -p swap --target ${{ matrix.target }}
|
|
|
|
- name: Upload binary
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: swap-${{ matrix.target }}
|
|
path: target/${{ matrix.target }}/debug/swap
|
|
|
|
docker_tests:
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
strategy:
|
|
matrix:
|
|
test_name: [
|
|
happy_path,
|
|
happy_path_restart_bob_before_comm,
|
|
punish,
|
|
bob_refunds_using_cancel_and_refund_command,
|
|
bob_refunds_using_cancel_and_refund_command_timelock_not_exired,
|
|
bob_refunds_using_cancel_and_refund_command_timelock_not_exired_force,
|
|
]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Cache target directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: target
|
|
key: rust-${{ env.TARGET }}-target-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cache ~/.cargo/registry directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/registry
|
|
key: rust-${{ env.TARGET }}-cargo-registry-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Run test ${{ matrix.test_name }}
|
|
run: cargo test --package swap --all-features --test ${{ matrix.test_name }} ""
|
|
env:
|
|
MONERO_ADDITIONAL_SLEEP_PERIOD: 60000
|
|
RUST_MIN_STACK: 16777216 # 16 MB. Default is 8MB. This is fine as in tests we start 2 programs: Alice and Bob.
|