代码之家  ›  专栏  ›  技术社区  ›  Kornel

如何测试应用程序是否正确处理缓慢/不稳定的文件系统?

  •  4
  • Kornel  · 技术社区  · 15 年前

    我想确保我的应用程序在处理速度较慢的文件系统(如网络文件系统、CD/DVD或降速硬盘)上的文件时没有任何UI冻结。

    我直接使用cocoa文件系统操作。我担心仅仅为了测试而模拟或抽象所有这些内容会太费劲,而且我的程序接触文件系统的方式可能不太明显。

    我尝试使用网络驱动器进行测试,但是OS缓存使测试不可重复,而且…太快:

    有没有像故意减慢macfuse文件系统的速度?其他一些方法可以让我找到所有的用户界面打嗝和比赛条件造成的意外延误?

    5 回复  |  直到 15 年前
        1
  •  2
  •   AlBlue RACGAMERUP    15 年前

    最简单的答案是 MacFUSE 正如其他地方提到的,这很容易模拟。您还可以尝试在NFS上安装共享,然后使用内置的位限制它。 ipfw ,比如:

    IPFW管道1配置1Kbyte/s IPFW添加1个管道1 SRC端口2049

    或者如果你在使用WebDAV

    IPFW添加1个管道1 SRC端口80

    然后,无论您定义的管道级别是什么,这都会将请求滴入。之后,您应该能够通过以下方式再次摆脱它:

    IPFW删除1

        2
  •  1
  •   Wil Shipley    15 年前

    也许买一个慢拇指驱动器?我在百思买找到了一些冰凉的。通过几个USB集线器和一个键盘将它们插入,这样它们就可以很方便地进行连接。

    -W

        3
  •  1
  •   Mike Abdullah    15 年前

    用他们的cocoa框架编写一个macfuse文件系统非常简单。事实上,我认为甚至还有一个示例系统可以镜像本地文件系统。为什么不快速地调整代码,以便在每次操作期间调用sleep()?

        4
  •  0
  •   Jay    15 年前

    根据您担心出现问题的地方,我的第一个想法是在应用程序和文件I/O之间包含一个额外的函数调用层,并在该层中构建一些sleep()调用。也就是说,无论使用什么语言,都要将“read”调用替换为“readdelegate”,并让readdelegate休眠一定的时间,然后进行实际读取并返回值。当你准备好去生产的时候,你甚至不需要拿出额外的一层,只需要去掉睡眠。

        5
  •  0
  •   Paul    15 年前

    软盘驱动器怎么样?必须有外部的,你可以简单地通过USB连接左右…