diff options
author | 2019-11-13 14:55:25 -0800 | |
---|---|---|
committer | 2019-11-13 14:55:25 -0800 | |
commit | 9a10addb444314f48ddae96958e7b0951b907012 (patch) | |
tree | 85548001dcda3263c0675b633390abf229797895 /src/bytes.rs | |
parent | b32f6298e289958986b68982788562f3c097f8fc (diff) | |
download | bytes-9a10addb444314f48ddae96958e7b0951b907012.tar.gz bytes-9a10addb444314f48ddae96958e7b0951b907012.tar.zst bytes-9a10addb444314f48ddae96958e7b0951b907012.zip |
Change loom tests to use cfg(loom) internally (#314)
Diffstat (limited to 'src/bytes.rs')
-rw-r--r-- | src/bytes.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/bytes.rs b/src/bytes.rs index e07106f..7b1e1e1 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -903,3 +903,36 @@ unsafe fn release_shared(ptr: *mut Shared) { // Drop the data Box::from_raw(ptr); } + +// fuzz tests +#[cfg(all(test, loom))] +mod fuzz { + use std::sync::Arc; + use loom::thread; + + use super::Bytes; + #[test] + fn bytes_cloning_vec() { + loom::model(|| { + let a = Bytes::from(b"abcdefgh".to_vec()); + let addr = a.as_ptr() as usize; + + // test the Bytes::clone is Sync by putting it in an Arc + let a1 = Arc::new(a); + let a2 = a1.clone(); + + let t1 = thread::spawn(move || { + let b: Bytes = (*a1).clone(); + assert_eq!(b.as_ptr() as usize, addr); + }); + + let t2 = thread::spawn(move || { + let b: Bytes = (*a2).clone(); + assert_eq!(b.as_ptr() as usize, addr); + }); + + t1.join().unwrap(); + t2.join().unwrap(); + }); + } +} |