Как проверить, правильно ли приложение обрабатывает медленные /нестабильные файловые системы?

Я хочу убедиться, что в моем приложении нет зависаний пользовательского интерфейса при работе с файлами в медленной файловой системе (например, в сети, на CD /DVD или на жестком диске).

Я использую операции с файловой системой Какао напрямую. Боюсь, что было бы слишком много усилий, чтобы высмеивать или абстрагировать все это только для тестирования, и, кроме того, могут быть неочевидные способы, которыми моя программа касается файловой системы.

Я пытался использовать сетевые диски для тестирования, но кэширование ОС делает тесты неповторяющимися и ... слишком быстрыми:)

Есть ли что-то вроде намеренно медленной файловой системы MacFuse? Какой-то другой метод, который позволил бы мне найти все сбои пользовательского интерфейса и условия гонки, вызванные неожиданными задержками?

4 голоса | спросил Kornel 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 11 Sep 2009 03:47:30 +0400 2009, 03:47:30

5 ответов


0

Самый простой ответ - MacFUSE , как отмечено в другом месте; это довольно легко моделировать. Вы также можете попробовать смонтировать общий ресурс через NFS, а затем использовать его с помощью встроенного ipfw, например:

Конфигурация ipfw pipe 1 1 КБ /с ipfw add 1 pipe 1 src-port 2049

или если вы используете WebDAV

ipfw add 1 pipe 1 src-port 80

Затем он будет передавать запросы на любом уровне канала, который вы определили. После этого вы сможете снова избавиться от него с помощью:

ipfw delete 1

ответил AlBlue 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 25 Sep 2009 02:08:13 +0400 2009, 02:08:13
0

Может быть, купить медленный флэш-накопитель? Я нашел некоторые в Best Buy, которые были ледниковыми. Подключите их через несколько USB-концентраторов и, возможно, к клавиатуре, так что они будут подключены очень ловко.

-W

ответил Wil Shipley 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 20 Sep 2009 12:36:32 +0400 2009, 12:36:32
0

Написание файловой системы MacFUSE с их каркасом Cocoa очень просто. На самом деле, я думаю, что есть даже пример системы, которая просто отражает локальную файловую систему. Почему бы не адаптировать этот код так, чтобы он вызывал sleep () на мгновение во время каждой операции?

ответил Mike Abdullah 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2009 14:27:28 +0400 2009, 14:27:28
0

В зависимости от того, где вы беспокоитесь о проблемах, моей первой мыслью было бы просто включить дополнительный уровень вызовов функций между приложением и файловым вводом-выводом, и в этот уровень встроить некоторые вызовы sleep (). То есть, на каком бы языке вы ни использовали, замените вызов read на readDelegate и дайте readDelegate спать в течение некоторого определенного промежутка времени, затем выполните реальное чтение и верните значение. Когда вы будете готовы перейти к производству, вам даже не придется вытаскивать дополнительный слой, просто удалите режим сна.

ответил Jay 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2009 20:54:48 +0400 2009, 20:54:48
0

Как насчет дисковода? Там должны быть внешние, которые вы можете просто подключить через USB или около того ...

ответил Paul 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 25 Sep 2009 12:17:10 +0400 2009, 12:17:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132