Как ядро Linux тестируется?

Как разработчики ядра Linux тестируют свой код локально и после того, как у них будет фиксировавший? Они используют некоторое поблочное тестирование, автоматизацию сборки? планы тестирования?

248
задан Ezequiel Garcia 23 May 2016 в 19:08
поделиться

4 ответа

Как разработчики ядра Linux тестируют свой код локально и после его фиксации?

Используют ли они какое-то модульное тестирование, автоматизацию сборки?

В классическом смысле слова - нет.

Э. грамм. Инго Мольнар выполняет следующую рабочую нагрузку: 1. построить новое ядро ​​со случайным набором параметров конфигурации 2. загрузитесь в него 3. goto 1

Каждый сбой сборки, сбой загрузки, ОШИБКА или предупреждение во время выполнения обрабатываются. 24/7. Умножив их на несколько ящиков, можно обнаружить довольно много проблем.

планы испытаний?

Нет.

Может возникнуть недоразумение, что есть центральный испытательный центр, а его нет. Каждый делает то, что хочет.

58
ответ дан 23 November 2019 в 03:00
поделиться

В ядре linux большое внимание уделяется тестированию сообществом.

Как правило, любой разработчик тестирует свой собственный код перед отправкой, и довольно часто он использует версию ядра от Linus или одну из других нестабильных/разрабатываемых версий для проекта, имеющего отношение к его работе. Это означает, что они часто тестируют как свои изменения, так и изменения других людей.

Формальных планов тестирования, как правило, не так много, но может потребоваться дополнительное тестирование перед тем, как функции будут слиты в вышестоящие деревья.

Как отметил Дин, существует также некоторое автоматизированное тестирование, проект linux test project и kernel autotest (хороший обзор).

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

Конечно, это сильно зависит от того, какая область ядра подвергается изменениям - тестирование, которое вы проводите для нового сетевого драйвера, сильно отличается от тестирования, которое вы проводите при замене основного алгоритма планирования.

72
ответ дан 23 November 2019 в 03:00
поделиться

Я полагаю, они используют виртуализацию для выполнения быстрых тестов, например QEMU, VirtualBox или Xen, а также некоторые сценарии для выполнения конфигураций и автоматических тестов.

Автоматическое тестирование, вероятно, выполняется путем пробования множества случайных конфигураций или нескольких конкретных (если они работают с определенной проблемой). В Linux есть множество низкоуровневых инструментов (таких как dmesg) для мониторинга и регистрации данных отладки из ядра, так что я полагаю, что они тоже используются.

2
ответ дан 23 November 2019 в 03:00
поделиться

Нелегко автоматизировать тестирование ядра. Большинство разработчиков Linux проводят тестирование самостоятельно, как упоминал Адобриян.

Однако есть несколько вещей, которые помогают с отладкой ядра Linux:

  • kexec: Системный вызов, который позволяет вам поместить другое ядро ​​в память и перезагрузиться без возврата в BIOS, и если он не удается, перезагрузитесь обратно.
  • dmesg: Определенно место, где можно найти информацию о том, что произошло во время загрузки ядра, и работает ли оно / не работает.
  • Инструментарий ядра: В дополнение к printk (и опции под названием 'CONFIG_PRINTK_TIME', которая позволяет вам видеть (с точностью до микросекунд), когда ядро ​​выводит что), конфигурация ядра позволяет вам включить МНОГО трассировщиков которые позволяют им отлаживать то, что происходит.

Затем разработчики обычно поручают другим проверять свои исправления.После того, как исправления проверяются локально и не мешают чему-либо еще, и исправления проверены на совместимость с последним ядром от Linus, ничего не нарушая, исправления отправляются вверх по течению.

Редактировать: Вот хорошее видео , в котором подробно описывается процесс, через который проходит патч, прежде чем он будет интегрирован в ядро.

13
ответ дан 23 November 2019 в 03:00
поделиться
Другие вопросы по тегам:

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