Тестирование долговечности путем автоматического уничтожения программы на C в файле / строке? - PullRequest
0 голосов
/ 11 октября 2018

Я пишу немного программного обеспечения, которое использует системный вызов fsync() для обеспечения сохранения файла на диске.Я делал это раньше, и я знаю о различных "ошибках", о которых вам нужно знать (т. Е. При замене файла вам нужно fsync() файл, выдать rename(), затем fsync()содержащий каталог. Кодирование программного обеспечения, которое непрерывно записывает файлы на диск, - это хорошо.

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

Как мне проверить долговечность программы на Си, которая пишет на диск?

(Как следует из названия, я предполагаю, что вы используете какое-то отладочное программное обеспечение, возможно, использующее ptrace(), для автоматического уничтожения вашей программы в определенных файлах / строках, как указано в информации об отладке исполняемого файла.)

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Тип теста, который вы ищете, - нагрузочный тест и стресс-тест.Нагрузочный тест проверит, может ли ваше приложение работать, когда огромное количество данных необходимо записать на диск очень часто.Это требует, чтобы вы имитировали поведение, предоставляя ему входные данные, например.через тестовое приложение, имитирующее чтение данных источника.Стресс-тест проверит поведение программы, когда загрузка ЦП в системе составляет 100% или в системной памяти или на диске не осталось памяти. Инструмент strees-ng можно использовать для моделирования сценариев загрузки процессора.Пожалуйста, смотрите [ссылка] (https://www.tecmint.com/linux-cpu-load-stress-test-with-stress-ng-tool/). Надеюсь, это поможет.

0 голосов
/ 11 октября 2018

Будьте готовы к тому, что вы не сможете сохранить 100% данных на диск в случае непредвиденных событий, случайных событий, таких как перебои в подаче электроэнергии при нормальных обстоятельствах.Тем не менее, вероятность может быть улучшена различными способами - например, запись на диск кусками.Размер фрагмента должен быть таким, чтобы, если он не был сохранен на диске, то некоторые его части могли быть восстановлены после перезапуска питания или проигнорированы.Размер порции также должен зависеть от дискового кэша, который обеспечит быструю запись данных, и скорости потока данных, который читает программа.Восстановление данных может быть реализовано путем разработки вашего HW / SW таким образом, чтобы в случае отключения электроэнергии в системе был какой-то резервный источник питания.Конструкция либо предоставит системе достаточно времени для подачи сигнала SW для завершения сохранения оставшихся данных, если таковые имеются, либо данные будут сохраняться в оперативной памяти исключительно для этой цели до тех пор, пока не вернется основное питание процессора.Существует несколько идей тестирования, одна из которых может заключаться в выполнении операций записи на диск в потоке и запуске / уничтожении потока из основного потока в цикле со скоростью, соответствующей вашему требованию.

...