3个不稳定版本
0.2.0 | 2023年12月29日 |
---|---|
0.1.1 | 2023年1月22日 |
0.1.0 | 2023年1月13日 |
#404 在 文件系统
每月48 次下载
71KB
1.5K SLoC
文件系统练习器
使用随机输入测试文件系统I/O例程的正确性。
概述
fsx
生成一个伪随机文件修改序列,并将其应用于测试的文件系统。在每次读取时,它验证预期的数据。它是高度可配置的,并且测试序列可以根据种子值100%可重现。
历史
FSX的第一个版本是在1998年开始在苹果电脑上用C语言编写的,由Avadis Tevanian Jr编写。它被Jordan Hubbard引入到FreeBSD 5.0中,但仅作为开发工具。它从未作为任何版本的一部分安装。自那时起,它偶尔会得到增强。
FSX于2001年由用户robbiew独立引入Linux,并偶尔从FreeBSD版本中合并了功能。
DEC Unix 4.0中包含了同名的工具,但我认为它们没有共享任何代码。
这个版本是由Alan Somers用Rust从头重新编写的。
用法
首先,创建要测试的文件系统,并确保当前用户可以写入它。然后运行
fsx[选项] /路径/到/文件系统/测试文件
默认设置测试大多数文件系统的最低共同点。要调整测试参数,例如通过启用附加操作,创建一个fsx.toml文件。请参阅示例以了解允许的设置。
迁移
fsx-rs版本0.1.1与基于C的fsx完全兼容。给定相同的种子,这两个实现将产生完全相同的文件系统操作序列。一些选项略有不同。如果从基于C的FSX迁移,请按以下方式调整
基于C的FSX选项 | fsx-rs等效选项 |
---|---|
-d | 环境RUST_LOG=调试 |
-d -q | 环境RUST_LOG=信息 |
-m | 环境RUST_LOG=警告 fsx-m xxx |
-p N | fsx... 2>&1 |awk'$3 %N== 0{打印}' |
-s | 无等效选项 |
-L | -B -P ... |
-D N | fsx... 2>&1 |awk'$3 >=N{打印} |
fsx-rs的后续版本不是按字节兼容的。也就是说,fsx-rs将不再产生与原始版本完全相同的操作序列,即使配置相同。它还将其许多选项放在配置文件中而不是命令行中。如果从基于C的FSX迁移到fsx-rs版本0.2.0或更高版本,这些配置文件设置与原始的命令行标志等效
基于C的FSX选项 | fsx.toml等效选项 |
---|---|
-c | 权重.close_open |
-d | -vv |
-d -q | -v |
-i | 权重.失效 |
-l | flen |
-n | 不进行大小检查 |
-o | 操作大小.最大 |
-r | 操作大小.对齐 |
-t | 操作大小.对齐 |
-w | 操作大小.对齐 |
-L | 块模式 |
-O | opsize.max 和 opsize.min |
-W | 权重.写入 |
-R | 权重.读取 |
-U | 写入后不进行同步 |
最低支持的 Rust 版本 (MSRV)
fsx 不保证任何特定的 MSRV。相反,它保证与每个受支持操作系统中打包集合中提供的最旧的 rustc 兼容。
许可协议
fsx
在 Apple Public Source License 版本 2.0 下分发。有关详细信息,请参阅 LICENSE。
依赖项
~9MB
~160K SLoC