Тестирование модуля ядра
меня интересуют насмешливые функции и глобальные переменные для модульного тестирования модуля ядра.
первоначально пробовал с https://github.com/ThrowTheSwitch/CMock но столкнулись с проблемами. Любые ссылки на статьи о том, как это сделать, также будут отличными. (для модулей ядра). Чтобы дать более подробную информацию здесь: компиляция в качестве модуля ядра будет ошибкой, потому что stdio не будет доступен, компиляция для пользовательского пространства будет ошибкой, потому что она не найдет такие вещи, как printk.
В идеале у меня был бы исполняемый файл пользовательского уровня или модуль ядра, который запускал бы модульный тест на моих функциях. Части, с которыми у меня проблемы, издеваются над глобальными зависимостями, такими как структуры, на которые полагаются функции, чтобы написать достойный тест.
Я прошел через несколько вопросы и статьи о этой но не нашли ответа или окончательной причины, почему это не было бы вероятный.
1 ответов
Я бы действовал следующим образом:
- реализуйте свой модуль ядра
- определите API, чтобы программа пользовательского уровня тестировала ваш модуль, который может быть основан на:
- устройство символов в
/dev/
(где вы можете определить правильный ioctls); - файл
/proc/
(уныние); - специфические системные вызовы (не рекомендуется);
- запись
/sys/
- устройство символов в
- реализовать на уровне пользователя программы (в случае использования правильной структуры, такой как Кунит или googletest), который взаимодействует с модулем ядра, тестируя различные функциональные возможности