Fix a graph invariant violation on cycle detection

This commit is contained in:
2021-05-27 20:31:00 +02:00
parent 158e5353bb
commit e2db0eaca8
3 changed files with 16 additions and 1 deletions

View File

@@ -304,6 +304,18 @@ mod tests {
assert!(get_dependency_graph().add_edge(c.value(), a.value()));
}
/// Test creating a cycle, then panicking.
#[test]
#[should_panic]
fn test_mutex_id_conflict() {
let ids = [MutexId::new(), MutexId::new(), MutexId::new()];
for i in 0..3 {
let _first_lock = ids[i].get_borrowed();
let _second_lock = ids[(i + 1) % 3].get_borrowed();
}
}
/// Fuzz the global dependency graph by fake-acquiring lots of mutexes in a valid order.
///
/// This test generates all possible forward edges in a 100-node graph consisting of natural