Skip to content

Commit

Permalink
ci: run tests on ARM and i686 using cross (#5196)
Browse files Browse the repository at this point in the history
This patch updates CI to use `cross` to run Tokio tests on virtualized
ARM and i686 VMs. Because ipv6 doesn't work on Github action running in
a docker instance, those tests are disabled
  • Loading branch information
carllerche authored Nov 18, 2022
1 parent bf31759 commit 808d525
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 15 deletions.
35 changes: 28 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ jobs:
- test-unstable
- miri
- asan
- cross
- cross-check
- cross-test
- features
- minrust
- minimal-versions
Expand Down Expand Up @@ -234,13 +235,12 @@ jobs:
# Ignore `trybuild` errors as they are irrelevant and flaky on nightly
TRYBUILD: overwrite

cross:
name: cross
cross-check:
name: cross-check
runs-on: ubuntu-latest
strategy:
matrix:
target:
- i686-unknown-linux-gnu
- powerpc-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- mips-unknown-linux-gnu
Expand All @@ -259,13 +259,34 @@ jobs:
use-cross: true
command: check
args: --workspace --all-features --target ${{ matrix.target }}
env:
RUSTFLAGS: --cfg tokio_unstable -Dwarnings

cross-test:
name: cross-test
runs-on: ubuntu-latest
strategy:
matrix:
target:
- i686-unknown-linux-gnu
- arm-unknown-linux-gnueabihf
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
steps:
- uses: actions/checkout@v3
- name: Install Rust ${{ env.rust_stable }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
target: ${{ matrix.target }}
override: true
- uses: actions-rs/cargo@v1
with:
use-cross: true
command: check
args: --workspace --all-features --target ${{ matrix.target }}
command: test
args: -p tokio --all-features --target ${{ matrix.target }} --tests
env:
RUSTFLAGS: --cfg tokio_unstable -Dwarnings
RUSTFLAGS: --cfg tokio_unstable -Dwarnings --cfg tokio_no_ipv6

features:
name: features
Expand Down
3 changes: 1 addition & 2 deletions tokio/tests/rt_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -869,14 +869,13 @@ rt_test! {
#[test]
fn io_notify_while_shutting_down() {
use tokio::net::UdpSocket;
use std::net::Ipv6Addr;
use std::sync::Arc;

for _ in 1..10 {
let runtime = rt();

runtime.block_on(async {
let socket = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0)).await.unwrap();
let socket = UdpSocket::bind("127.0.0.1:0").await.unwrap();
let addr = socket.local_addr().unwrap();
let send_half = Arc::new(socket);
let recv_half = send_half.clone();
Expand Down
2 changes: 1 addition & 1 deletion tokio/tests/rt_metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ fn worker_park_count() {
time::sleep(Duration::from_millis(1)).await;
});
drop(rt);
assert!(2 <= metrics.worker_park_count(0));
assert!(1 <= metrics.worker_park_count(0));

let rt = threaded();
let metrics = rt.metrics();
Expand Down
14 changes: 9 additions & 5 deletions tokio/tests/task_local_set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -500,11 +500,15 @@ async fn local_tasks_are_polled_after_tick_inner() {
tx.send(()).unwrap();
}

time::sleep(Duration::from_millis(20)).await;
let rx1 = RX1.load(SeqCst);
let rx2 = RX2.load(SeqCst);
assert_eq!(EXPECTED, rx1);
assert_eq!(EXPECTED, rx2);
loop {
time::sleep(Duration::from_millis(20)).await;
let rx1 = RX1.load(SeqCst);
let rx2 = RX2.load(SeqCst);

if rx1 == EXPECTED && rx2 == EXPECTED {
break;
}
}
});

while let Some(oneshot) = rx.recv().await {
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/tcp_connect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ async fn connect_v4() {
}

#[tokio::test]
#[cfg(not(tokio_no_ipv6))]
async fn connect_v6() {
let srv = assert_ok!(TcpListener::bind("[::1]:0").await);
let addr = assert_ok!(srv.local_addr());
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/tcp_socket.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ async fn basic_usage_v4() {
}

#[tokio::test]
#[cfg(not(tokio_no_ipv6))]
async fn basic_usage_v6() {
// Create server
let addr = assert_ok!("[::1]:0".parse());
Expand Down

0 comments on commit 808d525

Please sign in to comment.