| « R3-FS дисковые массивы | R3-FS саморегуляция » |
Файловую систему отлаживать в аппаратуре сложно, поскольку от неё будет зависеть жизнеспособность устройства. Так что, пришлось нашим написать полнофункциональный эмулятор файловой системы. Эмулятор - это приложение для Пк под управлением Windows или Linux. Приложение построено как архиватор, оно создает архив, образ диска, в формате нашей файловой системы. Затем архив можно распаковать, поизучать его содержимое и внутреннюю структуру. В конце концов смоделировать множество тестовых ситуаций и поизучать её поведение под отладчиком.
Продолжение:
Тест n=1. Создавать разнообразные архивы, разного размера, разного содержания, чтобы оттуда можно было извлечь файлы, а не только упаковать. В нашей системе присутствует эмуляция FAT для этого есть специальная команда из архива сгенерировать файловую систему, образ диска, в формате FAT32|Fat12|Fat16. Образ диска можно исследовать в бинарном виде или подцепить в качестве виртуального диска. Для подключения диска под Windows использовался драйвер ImDisk Virtual Disk Driver. Потом можно сравнивать побайтово исходные файлы и файлы в архиве.
Тест ++n: Создать носитель, записать на него много файлов, удалить все по списку, и так пол-дня. Убедиться что не течет оперативная память. Течь может количество "слайсов", и количество памяти, динамической памяти, выделенной обычным менеджером памяти под буферы.
Тест ++n: Создать носитель, создать много файлов с атрибутами "обычный файл" и начать плодить архивные файлы, которые по достижении заданного количества должны сами преобразовываться во временные, а временные затираться без ущерба для целостности носителя. журнал может переполниться. Извлечь-сравнить.
Тест ++n: Эмуляция годовой активности устройства. Тоже самое на несколько тысяч циклов ротации носителя. 10000 циклов, долго ждал. Было страшно, проц грелся и жужжал вентилятором, а винч издавал пищащие звуки, думал, дыру протрет. Обошлось.
Тест ++n: Атрибуты файлов в последовательности выбираются случайным образом, архивные файлы перемешиваются с временными файлами, как результат временные файлы будут удаляться с нарушением хронологической последовательности.
Тест ++n: Закатать в архив несколько гиг mP3 со случайным выбором атрибута "архивный"|"временный", всё что есть на компьютере, извлечь-сравнить.
Тест ++n: На чтение фрагментов. Закатать множество мультимедийных файлов, удалить нечетные, добавить второе множество. Смонтировать FAT и сравнить с исходными. Для этого понадобится функция удаления по идентификатору файла. Повторить несколько раз.
Тест ++n: Фрагментация+ротация+чтение-извлечение. В нашей системе допускается создание файлов с одинаковыми именами и вообще без имен. Привязка осуществляется по уникальному идентификатору. Если у файла нет имени, при генерации FAT имя назначается автоматически по шаблону. Винда не понимает как работать с одинаковыми именами, пугается. Чтобы не пугалась, перед генерацией FAT должна выполняться проверка и регенерация имен.
Тест ++n: Битые блоки+Фрагментация+ротация+чтение-извлечение. Битые блоки вводятся искусственно, как список кластеров запрещенных для использования. Битые блоки увеличивают фрагментацию, битые блоки должны адекватно отображаться в FAT и не влиять на целостность данных.
URL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку)