Skip to content

Commit fc917c2

Browse files
committed
f add test of new lockorder test
1 parent 012c2d6 commit fc917c2

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

lightning/src/sync/test_lockorder_checks.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
use crate::sync::debug_sync::{RwLock, Mutex};
22

3+
use super::{LockHeldState, LockTestExt};
4+
5+
use std::sync::Arc;
6+
use std::thread;
7+
38
#[test]
49
#[should_panic]
510
#[cfg(not(feature = "backtrace"))]
@@ -92,3 +97,22 @@ fn read_write_lockorder_fail() {
9297
let _a = a.write().unwrap();
9398
}
9499
}
100+
101+
#[test]
102+
fn test_thread_locked_state() {
103+
let mtx = Arc::new(Mutex::new(()));
104+
let mtx_ref = Arc::clone(&mtx);
105+
assert_eq!(mtx.held_by_thread(), LockHeldState::NotHeldByThread);
106+
107+
let lck = mtx.lock().unwrap();
108+
assert_eq!(mtx.held_by_thread(), LockHeldState::HeldByThread);
109+
110+
let thrd = std::thread::spawn(move || {
111+
assert_eq!(mtx_ref.held_by_thread(), LockHeldState::NotHeldByThread);
112+
});
113+
thrd.join().unwrap();
114+
assert_eq!(mtx.held_by_thread(), LockHeldState::HeldByThread);
115+
116+
std::mem::drop(lck);
117+
assert_eq!(mtx.held_by_thread(), LockHeldState::NotHeldByThread);
118+
}

0 commit comments

Comments
 (0)