aboutsummaryrefslogtreecommitdiff
path: root/tests/golang.rs
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2022-03-08 22:02:35 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-08 22:02:35 +0000
commit134994aa018e129c4bca68272a1cb9f6144de116 (patch)
tree000731046bac6da03ae86624bfd19fa26dc17ffb /tests/golang.rs
parent8fc103ab0cfd3b804ba493f21a4888088bbf8c87 (diff)
parentc8f69fabe54efcb389d1760222dac8247d475f18 (diff)
downloadcrossbeam-channel-134994aa018e129c4bca68272a1cb9f6144de116.tar.gz
Merge "Update crossbeam-channel to 0.5.2" am: d10935e3d5 am: fb9f546a46 am: c8f69fabe5t_frc_odp_330442040t_frc_odp_330442000t_frc_ase_330444010android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r57android-13.0.0_r56android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32aml_go_odp_330912000aml_go_ads_330915100aml_go_ads_330915000aml_go_ads_330913000android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-mainline-go-adservices-releaseandroid13-frc-odp-releaseandroid13-devandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-releaseandroid13-d3-s1-release
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/crossbeam-channel/+/2005034 Change-Id: I91ee175169f7a0ffa57ecf9d9c09613963c11e63
Diffstat (limited to 'tests/golang.rs')
-rw-r--r--tests/golang.rs67
1 files changed, 55 insertions, 12 deletions
diff --git a/tests/golang.rs b/tests/golang.rs
index cd70013..05d67f6 100644
--- a/tests/golang.rs
+++ b/tests/golang.rs
@@ -9,6 +9,8 @@
//! - https://golang.org/LICENSE
//! - https://golang.org/PATENTS
+#![allow(clippy::mutex_atomic, clippy::redundant_clone)]
+
use std::alloc::{GlobalAlloc, Layout, System};
use std::any::Any;
use std::cell::Cell;
@@ -176,7 +178,7 @@ unsafe impl GlobalAlloc for Counter {
if !ret.is_null() {
ALLOCATED.fetch_add(layout.size(), SeqCst);
}
- return ret;
+ ret
}
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
@@ -232,6 +234,9 @@ macro_rules! go {
mod doubleselect {
use super::*;
+ #[cfg(miri)]
+ const ITERATIONS: i32 = 100;
+ #[cfg(not(miri))]
const ITERATIONS: i32 = 10_000;
fn sender(n: i32, c1: Chan<i32>, c2: Chan<i32>, c3: Chan<i32>, c4: Chan<i32>) {
@@ -691,6 +696,11 @@ mod select {
mod select2 {
use super::*;
+ #[cfg(miri)]
+ const N: i32 = 1000;
+ #[cfg(not(miri))]
+ const N: i32 = 100000;
+
#[test]
fn main() {
fn sender(c: &Chan<i32>, n: i32) {
@@ -702,9 +712,7 @@ mod select2 {
fn receiver(c: &Chan<i32>, dummy: &Chan<i32>, n: i32) {
for _ in 0..n {
select! {
- recv(c.rx()) -> _ => {
- ()
- }
+ recv(c.rx()) -> _ => {}
recv(dummy.rx()) -> _ => {
panic!("dummy");
}
@@ -717,15 +725,18 @@ mod select2 {
ALLOCATED.store(0, SeqCst);
- go!(c, sender(&c, 100000));
- receiver(&c, &dummy, 100000);
+ go!(c, sender(&c, N));
+ receiver(&c, &dummy, N);
let alloc = ALLOCATED.load(SeqCst);
- go!(c, sender(&c, 100000));
- receiver(&c, &dummy, 100000);
+ go!(c, sender(&c, N));
+ receiver(&c, &dummy, N);
- assert!(!(ALLOCATED.load(SeqCst) > alloc && (ALLOCATED.load(SeqCst) - alloc) > 110000))
+ assert!(
+ !(ALLOCATED.load(SeqCst) > alloc
+ && (ALLOCATED.load(SeqCst) - alloc) > (N as usize + 10000))
+ )
}
}
@@ -913,6 +924,9 @@ mod chan_test {
#[test]
fn test_chan() {
+ #[cfg(miri)]
+ const N: i32 = 20;
+ #[cfg(not(miri))]
const N: i32 = 200;
for cap in 0..N {
@@ -1052,6 +1066,9 @@ mod chan_test {
#[test]
fn test_nonblock_recv_race() {
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
const N: usize = 1000;
for _ in 0..N {
@@ -1073,6 +1090,9 @@ mod chan_test {
#[test]
fn test_nonblock_select_race() {
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
const N: usize = 1000;
let done = make::<bool>(1);
@@ -1106,6 +1126,9 @@ mod chan_test {
#[test]
fn test_nonblock_select_race2() {
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
const N: usize = 1000;
let done = make::<bool>(1);
@@ -1142,6 +1165,11 @@ mod chan_test {
// Ensure that send/recv on the same chan in select
// does not crash nor deadlock.
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
+ const N: usize = 1000;
+
for &cap in &[0, 10] {
let wg = WaitGroup::new();
wg.add(2);
@@ -1151,7 +1179,7 @@ mod chan_test {
let p = p;
go!(wg, p, c, {
defer! { wg.done() }
- for i in 0..1000 {
+ for i in 0..N {
if p == 0 || i % 2 == 0 {
select! {
send(c.tx(), p) -> _ => {}
@@ -1180,6 +1208,11 @@ mod chan_test {
#[test]
fn test_select_stress() {
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
+ const N: usize = 10000;
+
let c = vec![
make::<i32>(0),
make::<i32>(0),
@@ -1187,8 +1220,6 @@ mod chan_test {
make::<i32>(3),
];
- const N: usize = 10000;
-
// There are 4 goroutines that send N values on each of the chans,
// + 4 goroutines that receive N values on each of the chans,
// + 1 goroutine that sends N values on each of the chans in a single select,
@@ -1286,6 +1317,9 @@ mod chan_test {
#[test]
fn test_select_fairness() {
+ #[cfg(miri)]
+ const TRIALS: usize = 100;
+ #[cfg(not(miri))]
const TRIALS: usize = 10000;
let c1 = make::<u8>(TRIALS + 1);
@@ -1369,6 +1403,9 @@ mod chan_test {
#[test]
fn test_pseudo_random_send() {
+ #[cfg(miri)]
+ const N: usize = 20;
+ #[cfg(not(miri))]
const N: usize = 100;
for cap in 0..N {
@@ -1412,6 +1449,9 @@ mod chan_test {
#[test]
fn test_multi_consumer() {
const NWORK: usize = 23;
+ #[cfg(miri)]
+ const NITER: usize = 100;
+ #[cfg(not(miri))]
const NITER: usize = 271828;
let pn = [2, 3, 7, 11, 13, 17, 19, 23, 27, 31];
@@ -1510,6 +1550,9 @@ mod chan1 {
use super::*;
// sent messages
+ #[cfg(miri)]
+ const N: usize = 100;
+ #[cfg(not(miri))]
const N: usize = 1000;
// receiving "goroutines"
const M: usize = 10;