Shuttle 是一个用于测试并发 Rust 代码的库

时间:2021-06-28 18:56:41
【文件属性】:
文件名称:Shuttle 是一个用于测试并发 Rust 代码的库
文件大小:113KB
文件格式:ZIP
更新时间:2021-06-28 18:56:41
shuttle 穿梭Shuttle 是一个用于测试并发 Rust 代码的库。它是许多随机并发测试技术的实现,包括具有发现错误概率保证的随机调度程序。入门考虑这段简单的并发代码:use std:: sync:: {Arc, Mutex};use std:: thread;let lock= Arc::new (Mutex::new (0u64 ));let lock2= lock.clone (); thread::spawn (move|| {* lock.lock ().unwrap ()=1 ; });assert_eq! (0 ,* lock2.lock ().unwrap ());这里有一个明显的竞争条件:如果产生的线程在断言之前运行,则断言将失败。但是编写一个单元测试来发现这个执行是很棘手的。我们可以多次运行测试并尝试通过找到失败的执行来“走运”,但这不是一种非常可靠的测试方法。即使测试失败了,也很难调试:我们无法在调试器中轻松捕获失败,每次进行更改时,我们都需要多次运行测试来决定我们是否解决了这个问题。使用 Shuttle 随机测试并发代码Shuttle 通过控制程序中每个线程的调度,并随
【文件预览】:
shuttle-main
----NOTICE(74B)
----THIRD-PARTY(3KB)
----rustfmt.toml(15B)
----.github()
--------pull_request_template.md(160B)
--------workflows()
----tests()
--------asynch()
--------mod.rs(5KB)
--------data()
--------basic()
--------demo()
----LICENSE(11KB)
----CONTRIBUTING.md(3KB)
----src()
--------asynch.rs(5KB)
--------scheduler()
--------rand.rs(2KB)
--------sync()
--------lib.rs(15KB)
--------thread.rs(5KB)
--------runtime()
----Cargo.toml(1KB)
----benches()
--------counter.rs(3KB)
--------lock.rs(2KB)
--------buffer.rs(4KB)
----.gitignore(26B)
----CHANGELOG.md(841B)
----CODE_OF_CONDUCT.md(309B)
----README.md(3KB)

网友评论