3个不稳定版本

0.2.0 2023年12月29日
0.1.1 2023年1月22日
0.1.0 2023年1月13日

#404文件系统

每月48 次下载

APSL-2.0

71KB
1.5K SLoC

文件系统练习器

使用随机输入测试文件系统I/O例程的正确性。

Build Status Crates.io

概述

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.maxopsize.min
-W 权重.写入
-R 权重.读取
-U 写入后不进行同步

最低支持的 Rust 版本 (MSRV)

fsx 不保证任何特定的 MSRV。相反,它保证与每个受支持操作系统中打包集合中提供的最旧的 rustc 兼容。

许可协议

fsx 在 Apple Public Source License 版本 2.0 下分发。有关详细信息,请参阅 LICENSE。

依赖项

~9MB
~160K SLoC