有没有办法轻松地使单个测试的特定目录变慢?

时间:2017-03-31 20:50:05

标签: unit-testing testing filesystems mount chaos

我的目标是针对故意缓慢的文件系统运行测试,以测试混乱存储方案中的性能指标。同样的意义上说,有很多方法可以用容器中的cgroup限制内存和cpu,我认为是否存在可以强加的io限制。

  • 有没有办法将一个简单的文件系统挂载到故意放慢速度的目录?
  • 或者,是否有办法通过发出命令行操作使得docker容器限制磁盘操作qoutas(不是命令行操作部分在这里很重要 - 因为如果我在docker容器上运行它,它将在kubernetes内部为我开始。)

1 个答案:

答案 0 :(得分:1)

FUSE给出了一条路径。我在https://github.com/fntlnz/fuse-example.git克隆了示例,并在战略位置向sleep()添加了fuse-example.c来电:

 21   if (strcmp(path, filepath) == 0) {
 22     stbuf->st_mode = S_IFREG | 0777;
 23     stbuf->st_nlink = 1;
 24     stbuf->st_size = strlen(filecontent);
 25     sleep(1); // Right here
 26     return 0;
 27   }

然后我装了它:

./bin/fuse-example -d -s -f /tmp/example

并试了一下:

% cd /tmp/example
% time cat file
I'm the content of the only file available there
cat file  0.00s user 0.00s system 0% cpu 1.008 total
%

虽然需要一点编码,但这条路线的一个优点是您可以完全控制文件系统的几乎所有显着属性和质量。