Russian Fedora

cообщество русскоязычных участников
международного проекта Fedora

Тесты и логи

Это архивная статья

Наши участники большое значение придают тестированию. Это удивительно, но именно этим нас пытаются порой оскорбить, мол мы, это бесплатные бета-тестеры. Ну давно понятно, что в некоторых других коммьюнити ничего не тестируют, считая это позорным и глупым занятием, вываливая субоптимальный код, порой даже и неработающий толком. Мы, само собой, [STRIKEOUT:делаем все правильно] стараемся делать все правильно, хоть и не всегда получается, и тестирование, это важная и нужная часть процесса (от индивидуального тестирования, до тестовых дней).

Для тестирования нужны, как минимум, тестовый фреймворк и система журналирования. Непонимание того, что результаты куда-то надо записывать, привело к подзатухшему на текущий момент [STRIKEOUT:срачу] конструктивному обсуждению т.н. "бинарных логов", но это в целом безопасно. Гораздо хуже, что многие (и многие из нас, само собой) не используют или не умеют использовать тестовые пакеты.

Что интересно, один из мощнейших тестовых тулкитов, SystemTap, написан в основном нашими коллегами. Весной была выпущена версия 2.5, в которой добавили поддержку UEFI/SecureBoot (уже обсудили на Linux.org.ru).

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

Несмотря на наличие таких мощных средств отладки, предоставляемых пакетом SystemTap, наши коллеги нередко прибегают к самодельным, простым решениям. Благодаря им возникают забавные ситуации. Например, Andrew Phaley, инженер Red Hat, рассказал историю, как он из веревок и палок смастерил функцию-логгер для OpenJDK, которая отрабатывает за 5-20 раз быстрее, чем в случае использования стандартных средств. Ему это было нужно для измерения суб-миллисекундных интервалов внутри OpenJDK, что в свою очередь требовалось для установления причин регрессии в одной из библиотечных функций. Добился он этого благодаря отказу от потокобезопасности и благодаря использованию особенностей микропроцессора Intel в его рабочей машине. Понятно, что по сочетанию этих двух факторов, не стоит и даже думать о включении функции в OpenJDK, но его подход может быть интересен для разработчиков.

Не секрет, что некоторые разработчики неохотно и с опаской берутся за отладку библиотечных функций, и данный пример показывает, что и без SystemTap ничего особенно удивительного в пересборке базового компонента нет. Еще стоит отметить, что знание особенностей современных микропроцессоров может запросто оказаться заметным плюсом. Не забывайте ассемблер, коллеги!

Комментарии