mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-28 12:10:37 +00:00
ci: run tests on ARM and i686 using cross (#5196)
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
This commit is contained in:
parent
bf31759bff
commit
808d52563e
35
.github/workflows/ci.yml
vendored
35
.github/workflows/ci.yml
vendored
@ -42,7 +42,8 @@ jobs:
|
||||
- test-unstable
|
||||
- miri
|
||||
- asan
|
||||
- cross
|
||||
- cross-check
|
||||
- cross-test
|
||||
- features
|
||||
- minrust
|
||||
- minimal-versions
|
||||
@ -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
|
||||
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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 {
|
||||
|
@ -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());
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user