Что делает инфраструктуру достойнее доверия
Причины сохраняются вдоль цепочки вызовов
Структурные объекты ошибок несут домен, операцию и цепочку причин; поточный контекст ошибки соединяет слои, а статический объект ошибки нехватки памяти поддерживает пути при дефиците ресурсов.
API модели ошибок →Посмотреть реализацию →Строгий разбор, ясная семантика
HTTP/1.1 обрабатывает длины сообщений и правила фрейминга явно; WebSocket проверяет канонические длины, UTF-8 и состояние фрагментации — верхние слои строятся на чёткой протокольной семантике.
API HTTP/1.1 →Посмотреть реализацию →Проверка идентичности в потоке соединения
TLS-клиенты подтверждают собеседника через верификаторы; SSH-клиенты устанавливают доверие через политику проверки ключей хоста; пути почтовой аутентификации считают защищённый транспорт предпосылкой по умолчанию.
API проверки TLS →Посмотреть реализацию →Доступ к файлам ограничен дескрипторами каталогов
Возможности файлового корня организуют доступ через дескрипторы каталогов; пути POSIX используют openat с ограничением символических ссылок, пути Windows обрабатывают точки повторной обработки — обслуживая ограниченные файловые операции.
API файлов →Посмотреть реализацию →Тестовая система, путешествующая с исходниками
Тестовое дерево покрывает ядро и пять библиотек расширения, следя не только за функциональными результатами, но и за памятью, состоянием объектов и разными формами сборки.
Тестовых C-файлов в текущем дереве исходников.
Тестовых C-файлов с _oom в имени.
Тестовых C-файлов с _noalloc в имени.
Подсчёт охватывает физические файлы .c в tests/ и tests/ пяти расширений; последние две цифры — подмножества общего. Правила подсчёта и ревизия исходников.
Внедрение отказов и высвобождение ресурсов
Средства отладки памяти дают внедрение неудач выделения и статистику ресурсов; тесты проходят пути ошибок шаг за шагом, проверяя освобождение ресурсов и состояние объектов после неудачных возвратов.
API отладки памяти →Протоколы и границы ввода
Тесты парсеров покрывают усечения, длины, кодировки и комбинации состояний; точки входа фаззинга продолжают исследовать разнообразные входы, помогая держать границы протоколов и памяти.
Пример фаззинг-теста →Проверка одного заголовка и модулей
Пробы одного заголовка компилируют и вызывают склеенный артефакт; тесты обрезки проверяют ограничения зависимостей; верификация пакетов линкуется с настоящими программами-потребителями.
Команды сборки и упаковки →Качество по всему конвейеру сборки
Много платформ, много компиляторов
Конфигурация непрерывной интеграции покрывает настольные и мобильные тестовые наборы, комбинируя GCC, Clang, MSVC и clang-cl для проверки путей платформенной адаптации.
Конфигурация CI →Проверки памяти и поведения
ASan, UBSan и строгие предупреждения компилятора участвуют в верификации ядра, вводя проверки доступа к памяти и неопределённого поведения в инженерный поток.
Инструмент сборки →Тесты соединений и жизненного цикла
Сетевые и конкурентные тесты организуют случаи вокруг установки соединения, передачи данных, отмены, остановки и возврата ресурсов — в фокусе полный жизненный цикл.
Сетевые тесты →От одного прогона тестов — в реализацию
Выполните в корне репозитория XRT: сперва тесты ядра и конкурентности, затем выбранное расширение и релизные артефакты.
python tools/build.py --suite core,concurrency --jobs 4 python tools/build.py --manifest extlibs/xhttp/config/modules.json --suite xhttp_tests python tools/package.py --kind static --verify