Как я могу симулировать ошибку переполнения диска в среде Windows? - PullRequest
18 голосов
/ 09 февраля 2009

Мне нужно написать сценарий bat для сценария тестирования, в котором тестируемое нами программное обеспечение не может записать в файл из-за ошибки переполнения диска. Сценарий тестирования должен быть автоматизирован, чтобы мы могли запускать его, например, в ночные тесты. Тестовый сценарий также должен работать на разных компьютерах, поэтому установка программного обеспечения, такого как виртуальная машина, не будет лучшим решением в этом случае.

Как я могу симулировать эту ошибку в среде Windows?

Ответы [ 12 ]

12 голосов
/ 09 февраля 2009

Вы можете попробовать записать на полную дискету.

Edit:

В свете вашего отредактированного вопроса вы можете настроить сетевой ресурс без квоты дискового пространства и писать в него. Ошибка будет выдана независимо от того, вошли ли пользователь или компьютер.

11 голосов
/ 09 февраля 2009

Для Windows XP или новее:

Эта команда может получить количество свободного места на диске c: \:

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 байта или около того, вам не хватит места.

10 голосов
/ 09 февраля 2009

Скачать и установить TrueCrypt . Затем вы можете создать виртуальный раздел любого размера (несколько мегабайт), смонтировать его и заполнить парой документов.

7 голосов
/ 08 июня 2012

Лучший вариант: программа Microsoft для потребления

Причины:

  • Он проверяет системный диск (против отдельного диска)
  • Это быстро - запустите программу, чтобы заполнить диск мгновенно , остановите, когда больше не нужно
  • Это просто - не нужно создавать и удалять файлы. Никаких дополнительных тестовых разделов не осталось. Установка требуется, но вы можете использовать простую команду после этого.
  • Это сценарий

Шаги:

  1. Установка средств Windows Server 2003 Resource Kit (отлично работает в Windows 7)
  2. cd "%ProgramFiles(x86)%\Windows Resource Kits\Tools" (или везде, где он установлен)
  3. 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 ...

Другие опции:

  • В Windows 7 есть функция виртуального жесткого диска . В основном выполните следующие действия: Управление компьютером> Управление дисками> Меню действий> Создать виртуальный жесткий диск> Щелкните правой кнопкой мыши диск и инициализируйте> Щелкните правой кнопкой мыши
  • Генерация больших файлов (должна быть мгновенной), пока ваш диск не заполнится, с помощью команды оболочки или Dummy File Generator . Еще одна программа: SpaceHog .
7 голосов
/ 09 февраля 2009

Это может показаться немного большим, но я могу подумать только об одном: использовать виртуальную машину и установить ее виртуальный диск достаточно большой, чтобы соответствовать ОС. Заполните его некоторыми мусорными файлами, чтобы перевернуть его, а затем запустите вашу программу.

5 голосов
/ 09 февраля 2009

Создайте дополнительный раздел, заполните его мусором и запустите там свою программу.

4 голосов
/ 09 февраля 2009

Вы можете установить небольшой виртуальный диск и написать в него. См. Эту страницу для некоторых бесплатных продуктов ramdisk .

2 голосов
/ 25 апреля 2011

Я внес изменение в вышеупомянутый скрипт, чтобы сделать его совместимым с 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%
2 голосов
/ 09 февраля 2009

Операционная система будет по-разному реагировать на заполнение системного диска, чем на заполнение других дисков, и, как таковое, ваше приложение, разумеется, будет делать это тоже? Простое заполнение диска независимо от используемого физического носителя не будет точным тестом.

Не можете ли вы смоделировать событие файловой системы для полного диска? Почему вы хотите подождать, пока диск не заполнится? Разве вы не хотите периодически отслеживать дисковое пространство и предупреждать пользователя, когда диск заполнен в процентах? Вместо того, чтобы ждать, пока дисковое пространство не станет терминальным, просто не позволяйте вашему приложению работать до тех пор, пока проблема не будет решена, иначе это может повлиять на любые операции ввода-вывода данных и быть невосстановимым!

Если тест имеет , чтобы быть жестким интеграционным тестом, тогда автоматизировать виртуальную машину, развернуть приложение и затем заполнить оставшееся пространство рекурсивным сценарием.

2 голосов
/ 09 февраля 2009

Создайте новую учетную запись пользователя, установите для нее квоту и используйте runas для запуска приложения в качестве этого пользователя. (не совсем то же самое, что диск заполнен, но должен иметь аналогичные последствия.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...