我必须为测试场景编写一个bat脚本,由于磁盘已满,我们测试的软件无法写入文件。测试脚本必须是自动化的,以便我们可以在夜间测试中运行它。测试脚本也必须在不同的计算机上运行,因此在这种情况下安装像虚拟机这样的软件不是最好的解决方案。
如何在Windows环境中模拟该错误?
答案 0 :(得分:12)
您可以尝试写入完整的软盘。
修改
根据您编辑的问题,您可以设置没有磁盘空间配额的网络共享并写入。无论登录用户或计算机如何,都会产生错误。
答案 1 :(得分:11)
对于Windows XP或更高版本:
此命令可以获取c:\ drive的可用空间量:
for /f "usebackq tokens=1-5" %%A in (`dir c:\ ^| find "bytes free"`) do (
set FREE_SPACE=%%C
)
根据需要将c:\替换为您的驱动器。
然后您可以从这个值中腾出一些空间,这样您就有了一点空间:
set /a FREE_SPACE=FREE_SPACE-1024
或者你想保持自由的空间。
您可以使用fsutil
命令创建一个文件来填充磁盘上的可用空间:
fsutil file createnew c:\spacehog.dat %FREE_SPACE%
运行测试,写入驱动器。在写入1024个字节后,你应该用完空间。
答案 2 :(得分:10)
下载并安装TrueCrypt。然后,您可以创建任何大小的虚拟分区(几兆字节),安装它,然后用几个文档填充它。
答案 3 :(得分:7)
它可能看起来有点多,但我能想到的一件事是使用虚拟机,并将其虚拟磁盘设置得足够大以适应操作系统。填充一些垃圾文件,将其翻到边缘,然后运行程序。
答案 4 :(得分:7)
最佳选择:微软的消费计划
原因:
步骤:
cd "%ProgramFiles(x86)%\Windows Resource Kits\Tools"
(或安装时)consume.exe -disk-space
命令输出:
C:\Program Files (x86)\Windows Resource Kits\Tools>consume.exe
Universal Resource Consumer - Just an innocent stress program, v 0.1.0
Copyright (c) 1998, 1999, Microsoft Corporation
consume RESOURCE [-time SECONDS]
RESOURCE can be one of the following:
-physical-memory
-page-file
-disk-space
-cpu-time
-kernel-pool
C:\Program Files (x86)\Windows Resource Kits\Tools>consume.exe -disk-space
Consume: Message: Total disk space: 96049 Mb
Consume: Message: Free disk space: 14705 Mb
Consume: Message: Free per user space: 14705 Mb
Consume: Message: Attempting to use: 14705 Mb
Consume: Message: Reattempting to use: 14705 Mb
Consume: Message: Sleeping ...
其他选项:
答案 5 :(得分:5)
创建一个辅助分区,用垃圾填充它,然后在那里运行你的程序。
答案 6 :(得分:4)
你可以设置一个小的ramdisk并写入。请参阅此页面了解一些free ramdisk products。
答案 7 :(得分:2)
适用于每台计算机的最佳功能(因为测试不是在专用计算机上进行的)将是一个可以即时设置的ramdrive / ramdisk。
到目前为止只找到了一个虚拟磁盘SDK see here,它可能包含在你的buzild进程中。
不同的想法:也许您的测试计算机可以设置为写入共享网络文件夹(即已满)作为驱动器安装?
答案 8 :(得分:2)
创建新用户帐户,为其设置配额,并使用runas以该用户身份运行您的应用。 (与磁盘已满不完全相同,但应该有类似的后果。)
答案 9 :(得分:2)
操作系统对其系统驱动器填充的响应不同于对其他驱动器填充的响应,因此您的应用程序也会这样做,当然?无论使用何种物理介质,简单地填充驱动器都不是一个准确的测试。
无法为完整磁盘模拟文件系统事件吗?为什么要等到磁盘已满?您不想定期监视磁盘空间并在磁盘填充百分比时警告用户吗?而不是等到磁盘空间终端只是阻止您的应用程序工作,直到问题得到解决,不这样做可能会影响任何数据IO并且无法恢复!
如果测试已进行硬集成测试,则自动化虚拟机,部署应用程序然后使用递归脚本填充剩余空间是可行的。
答案 10 :(得分:2)
我对上面的脚本进行了修改,使其与Windows 7兼容...基本上将开关“/ -c”添加到for语句中。这会删除数千个分隔符,因为fsutil在语句中不喜欢它。
for /f "usebackq tokens=1-5" %%A in (`dir /-c d:\ ^| find "bytes free"`) do (set FREE_SPACE=%%C)
fsutil file createnew d:\largefile.txt %FREE_SPACE%
答案 11 :(得分:1)
使用非常小的iscsi目标