为测试创建存储

userstorage的Python项目详细描述


用户存储

用于设置测试存储的帮助程序。

概述

有些测试需要的不仅仅是本地文件上的临时目录 系统。一个例子是测试4K扇区大小的块设备,或者 在这种块设备上测试文件系统。

您可以使用循环设备创建存储,并在测试设备中安装, 但是创建设备和挂载需要根目录。你真的想跑吗 所有的测试都是根的,当被测试的代码不应该作为根运行时?

userstorage工具通过为测试创建存储来解决这个问题 在运行测试并使存储可用于 当前用户。创建存储后,可以运行测试 就像你自己直接从你的编辑那里。

要求

在Fedora/CentOS上,您需要安装这些软件包:

yum install e2fsprogs sudo util-linux xfsprogs

有些软件包通常安装在您的计算机上,但您可能需要 将它们添加到CI环境或容器。

安装

使用pip:

python3 -m pip install --user userstorage

如果需要在没有python3的分发版上运行,请使用python2。

创建配置文件

userstorage工具基于配置文件创建存储 你必须提供。

用户存储工具使用配置模块来 提供存储空间,并通过测试使用存储空间。

配置模块通常通过导入所需的 后端:

from userstorage import File

配置模块必须定义这些名称:

# Where storage is provisioned.
BASE_DIR = "/path/to/my/storage"

# Storage configurations needed by the tests.
BACKENDS = {}

example_config.py 例如,此项目的测试使用的配置。

创建存储

要创建example_config.py中描述的存储,请运行:

userstorage create example_config.py

在创建开发环境时可以运行一次,并且必须 重新启动主机后再次运行。

如果要删除存储,请运行:

userstorage delete example_config.py

正常情况下无需删除存储器。回路装置是 由稀疏文件备份,不消耗太多资源。

在测试中消耗存储空间

请参阅test/consume_test.py,例如测试模块使用存储 由userstorage工具设置,以及示例配置py模块。

请注意,某些系统上可能无法使用某些存储。你的测试 可以检查存储是否可用,并跳过或将测试标记为xFail 如果需要的话。

确保测试隔离

对所有测试重用相同的存储会引入旧测试的问题 数据破坏了其他测试,或导致测试在应该时通过 失败。

为了避免这个问题,您应该在 在测试中使用存储,并在运行测试后删除()。 这样可以确保其他测试的旧数据不会被此 测试。

它是怎么工作的?

用户存储工具在基本目录中创建此目录布局 在配置模块中定义:

$ tree /var/tmp/example-storage/
/var/tmp/example-storage/
├── block-4k-backing
├── block-4k-loop -> /dev/loop2
├── block-512-backing
├── block-512-loop -> /dev/loop3
├── file-4k-backing
├── file-4k-loop -> /dev/loop4
├── file-4k-mount
│   ├── file
│   └── lost+found [error opening dir]
├── file-512-backing
├── file-512-loop -> /dev/loop5
└── file-512-mount
    ├── file
    └── lost+found [error opening dir]

符号链接(例如file-4k-loop)链接到创建的循环设备 通过工具(/dev/loop4),用于以后删除存储。

用于测试的实际文件是在装入的 文件系统(/var/tmp/example storage/file-4k-mount/file)。

使用用户存储的项目

  • sanlock-使用此工具的早期版本
  • VDSM-使用此工具的最新版本

(请在此处添加您的项目)

贡献

如果你发现一个错误,请打开一个问题。

如果您有改进此工具的想法,请向 讨论这个想法。

对于微不足道的更改,请发送一个拉取请求。

运行测试

要运行测试,需要安装tox。你可以用你体内的毒素 分发(python2 tox或python3 tox on fedora),或使用 皮普。

在运行测试之前,请创建示例存储:

python3 -m userstorage create example_config.py

运行测试:

tox

如果要更改存储布局,最好删除示例存储:

python3 -m userstorage delete example_config.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Jpanel中删除或隐藏工具栏面板   如何将Java API文档添加到Eclipse?   java从twitter中提取推文的位置   特定字典中的java文本匹配   java属性在树模型的内部类上不可读   maven mvn exec:java失败,出现FileNotFoundException   java无法实现不安全线程   java向JDK11的迁移改变了必须从Maven运行测试的方式   java如何在不同网络NAT后面的两个客户端之间建立TCP连接?   如何在JavaSelenium中使用PageObjects和@FindBy执行javascript元素   在java中使用htmlworker将html文本转换为pdf   java字符串到密码文本   java setContentView集合显示黑色   linux java运行时。getRuntime()。exec无法获取某些命令的输出