Доклады и подкасты
2022, Highload: О чём я говорю, когда говорю о тестировании корректности работы компилятора
Материалы: расшифровка
доклада,
cлайды,
видеозапись.
Любая программа, запущенная на компьютере, была создана компилятором и, так как
компиляторы являются важной частью инфраструктуры для создания программного
обеспечения, их корректность имеет первостепенное значение. Чтобы проверить и
повысить правильность поведения компиляторов, значительные усилия во время
разработки направлены на тестирование компиляторов.
В Tarantool за поддержку языка Lua отвечает LuaJIT, который включает в себя как
среду исполнения языка, так и трассирующий JIT-компилятор. Мы решили
использовать фаззинг-тестирование для LuaJIT, потому что стандартное
тестирование не позволяет выявить все проблемы во время разработки. Несмотря на
популярность рандомизированного тестирования и множество доступных инструментов
для фаззинга, нам пришлось изучить методы, показавшие эффективность при
тестировании других компиляторов, и разработать собственные инструменты. Мы
попробовали фаззинг без грамматики, фаззинг с грамматикой на основе LibFuzzer и
LibProtobufMutator, собственный мутатор для Lua-программ и проверку оптимизаций
с помощью SMT-решателя.
В докладе я расскажу про различные аспекты проблемы тестирования корректности
компилятора, в том числе то, как генерировать случайные программы, какие
тестовые оракулы использовать для определения того, правильно ли ведет себя
компилятор, как эффективно выполнять тесты компилятора и эффективных методах
тестированиях компиляторов на основе нашего опыта тестирования LuaJIT.
Тезисы доклада на сайте конференции.
2022, Heisenbug: Делаем фаззер для Lua на основе LibFuzzer
Материалы: cлайды, видеозапись.
Один из компонентов СУБД Tarantool — это сервер приложений на Lua, который
предоставляет Lua API к самой СУБД и четырем десяткам вспомогательных модулей.
До сих пор тестирование функциональности с помощью Lua ограничивалось
тестированием на основе примеров. Рандомизированное тестирование было
ограничено из-за отсутствия поддержки Lua в фаззерах. Спикер реализовал
поддержку фаззинга Lua-скриптов в популярных движках American Fuzzy Lop и
libFuzzer, что позволило найти проблемы, которые не находили другие тесты.
Доклад будет интересен всем, кто разрабатывает серверное ПО, интересуется
рандомизированным тестированием или планирует добавить поддержку нового языка в
AFL или libFuzzer. Знание Lua не потребуется.
2022, Highload: Jepsen с человеческим лицом
Материалы: видео, cлайды, Фреймворк Jepsen и его минусы.
Jepsen - это популярная библиотека для тестирования согласованности в
распределённых системах. Jepsen позволяет тестировать распределённые системы
как чёрный ящик и проверять насколько система ведёт себя корректно в
соответствии с выбранной моделью согласованности. Чтобы убедиться в
эффективности Jepsen достаточно почитать отчёты о тестировании с её помощью
таких популярных проектов, как etcd, mongodb и другие. Когда в Tarantool
появилась поддержка синхронной репликации, то мы решили сделать несколько
тестов для Tarantool с использованием Jepsen. И этой задачей занимался я. До
этого я сталкивался с различными библиотеками для написания тестов: pytest,
avocado, самописные фреймворки. И после использования Jepsen у меня остались
смешанные чувства. С одной стороны это библиотека, которая с высокой
вероятностью поможет найти проблемы с репликации и MVCC, бери, да пользуйся. А
с другой стороны Jepsen неидеален, в ней есть несколько проблем, без которых
она была бы ещё лучше. Вот про эти проблемы, присущие Jepsen, я и хотел здесь
написать.
В мини-докладе я презентовал три инструмента для тестирования распределенных
систем: molly - фреймворк на языке Lua для
написания тестов в стиле Jepsen,
elle-cli - чекер истории операций и
unreliablefs - ФС для эмуляции
различных видов сбоев.
2020, Подкаст GenericTalks: S02E07 - Тестирование Системного Програмного Обеспечения
2016, Heisenbug: Просто о сложном в тестировании СУБД на примере PostgreSQL
Материалы: видео, слайды.
В наше время базы данных используются повсеместно: от интернет-форума для
хранения сообщений пользователей до распределённых поисковых систем для
хранения индексов отсканированных веб-страниц. Да что там говорить — сейчас
встраиваемые БД есть в любом телефоне. PostgreSQL давно заняла нишу надёжной,
расширяемой, реляционной базы данных, которая находит применение и в простом
интернет-сервисе, и в высоконагруженном портале, как Avito или Яндекс.Почта. В
компании PostgresPro Сергей и команда занимаются разработкой новой
функциональности для PostgreSQL под нужды заказчиков. Сергей расскажет о
проблематике тестирования баз данных и о своём опыте того, как добивается
качества в разработке PostgreSQL.
2016, Интервью в журнале “Linux Format”: №01 (204) Январь 2016
Материалы: вырезка из журнала.
2016, Подкаст SDCast: Выпуск № 47: в гостях Сергей Бронников и Владимир Порохов, ребята из команды OpenVZ/Virtuozzo
Эпизод на сайте подкаста
2015, Linux Plumbers: Containers in the upstream kernel
Материалы: слайды.
Исторически так сложилось, что мы в компании Parallels/SWsoft разрабатывали
собственные ядра OpenVZ/Virtuozzo как ответвления от ванильных (а позже и RHEL)
ядер с массивными наборами исправлений и множеством дополнительных функций.
Однако в течение последних 10 лет мы усердно работали над внедрением этих
функций в исходное ядро, и это было выгодно как нам (меньше кода для
портирования на новые ядра), так и другим (скажем, LXC и Docker теперь могут
использовать ванильное ядро). Хотя исходное ядро достаточно хорошее, оно все
еще не соответствует уровню OpenVZ.
Мы только что закончили портирование ядра OpenVZ с ядра RHEL6 (на основе
2.6.32) на ядро RHEL7 (на основе 3.10). На этой сессии мы обобщаем наш опыт и
выводы, включая ответы на то, чего все еще не хватает в основном ядре. На
сессии также излагаются наши планы внести свой вклад в развитие основной ветки ядра.
2015, ВМК МГУ: Как разрабатывать коммерческое ПО с высокой долей инноваций
Материалы: видео (часть 1, часть 2), слайды.
2015, OSDEVCONF: Когда уже OpenVZ будет в основном Linux ядре?
Материалы: YouTube, 0x1.tv,
слайды.
Доклад о том, что делать форк открытого проекта вредно для здоровья, потому что
поддержка форка требует больших усилий.
Докладчик расскажет об опыте работы с разработчиками основной ветки Linux ядра
в плане интеграции патчей для контейнерной виртуализации, наших успехах в этом
направлении и предстоящих планах.
2015, LVEE: Мифы и легенды о проекте OpenVZ
Материалы: YouTube, 0x1.tv, слайды.
В 1999 году в компании SWsoft (Parallels) родилась концепция контейнерной
виртуализации. Сотрудники компании сформулировали три главных компонента,
составляющих контейнеры: набор процессов с изоляцией пространства имен,
файловая система для разделения кода и памяти и изоляция ресурсов. В 2000 году
сотрудники компании подготовили концепт коммерческого продукта Virtuozzo,
который позволял создавать в ОС Linux изолированные окружения (контейнеры). В
2002 году компания выпускает публичную версию Virtuozzo и в том же году
появляются первые коммерческие пользователи. В 2005 году компания Parallels
запускает проект OpenVZ для разработки открытой реализации Linux контейнеров. В
рамках этого проекта команда проекта разрабатывает Linux ядро с поддержкой
контейнеров, утилиту для управления контейнерами и другие вспомогательные
утилиты. За прошедшие 10 лет проект приобрёл популярность. OpenVZ используют не
только как платформу для хостинга, но и для инфраструктурных задач, требующих
изоляции приложений. За время существования проекта появились мифы и
заблуждения о проекте, которые не получилось развенчать ответами на форумах, в
блогах и почтовых переписках. Одни и те же вопросы возникают снова и снова.
Этот доклад призван окончательно развенчать мифы о проекте OpenVZ.
Тезисы на сайте конференции.
2015, РИФ: Семь проблем Linux контейнеров
Материалы: видео,
слайды.