diff options
Diffstat (limited to 'documentation/content/ru/books/developers-handbook/testing')
-rw-r--r-- | documentation/content/ru/books/developers-handbook/testing/_index.adoc | 187 | ||||
-rw-r--r-- | documentation/content/ru/books/developers-handbook/testing/_index.po | 802 |
2 files changed, 989 insertions, 0 deletions
diff --git a/documentation/content/ru/books/developers-handbook/testing/_index.adoc b/documentation/content/ru/books/developers-handbook/testing/_index.adoc new file mode 100644 index 0000000000..a801c9644f --- /dev/null +++ b/documentation/content/ru/books/developers-handbook/testing/_index.adoc @@ -0,0 +1,187 @@ +--- +authors: +description: 'Регрессионное и нагрузочное тестирование' +next: books/developers-handbook/partii +params: + path: /books/developers-handbook/testing/ +prev: books/developers-handbook/policies +showBookMenu: true +tags: ["Regression", "Performance Testing", "Testing", "Tinderbox"] +title: 'Глава 6. Регрессионное и нагрузочное тестирование' +weight: 7 +--- + +[[testing]] += Регрессионное и нагрузочное тестирование +:doctype: book +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:sectnumoffset: 6 +:partnums: +:source-highlighter: rouge +:experimental: +:images-path: books/developers-handbook/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +:imagesdir: ../../../../images/{images-path} +endif::[] +ifndef::book[] +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +toc::[] +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +toc::[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +Регрессионные тесты используются для проверки определенной части системы, чтобы убедиться, что она работает как ожидается, и для предотвращения повторного появления старых ошибок. + +Инструменты для регрессионного тестирования FreeBSD можно найти в дереве исходных кодов FreeBSD в каталоге [.filename]#src/tools/regression#. + +[[testing-micro-benchmark]] +== Контрольный список для бенчмарка низкоуровневых операций + +Этот раздел содержит рекомендации по проведению корректного бенчмарка низкоуровненых операций на FreeBSD или самой FreeBSD. + +Невозможно использовать все приведенные ниже рекомендации каждый раз, но чем больше их применяется, тем лучше способность теста выявлять небольшие различия. + +* Отключить APM и любые другие манипуляции с часами (ACPI ?). +* Запускайте тесты в однопользовательском режиме. Например, man:cron[8] и другие демоны только добавляют шум. Демон man:sshd[8] также может вызвать проблемы. Если требуется доступ по SSH во время тестирования, либо отключите перегенерацию ключа SSHv1, либо завершите родительский демон `sshd` во время тестов. +* Не запускайте man:ntpd[8]. +* Если события man:syslog[3] генерируются, запустите man:syslogd[8] с пустым [.filename]#/etc/syslogd.conf#, в противном случае не запускайте его. +* Минимизируйте дисковые операции ввода-вывода, по возможности избегайте их полностью. +* Не монтируйте файловые системы, которые не требуются. +* Смонтируйте [.filename]#/#, [.filename]#/usr# и любые другие файловые системы в режиме только для чтения, если это возможно. Это исключает обновления atime на диске (и т.д.) из общей картины ввода-вывода. +* Переинициализируйте тестовую файловую систему с возможностью чтения/записи с помощью man:newfs[8] и заполните её из файла man:tar[1] или man:dump[8] перед каждым запуском. Размонтируйте и смонтируйте её перед началом теста. Это обеспечит согласованную структуру файловой системы. Для теста worldstone это применимо к [.filename]#/usr/obj# (просто переинициализируйте с помощью `newfs` и смонтируйте). Для достижения 100% воспроизводимости заполните файловую систему из файла man:dd[1] (например: `dd if=myimage of=/dev/ad0s1h bs=1m`) +* Используйте разделы man:md[4] с поддержкой malloc или предзагруженные. +* Перезагружайтесь между отдельными итерациями теста, это обеспечивает более согласованное состояние. +* Удалите все необязательные драйверы устройств из ядра. Например, если USB не нужен для теста, не включайте поддержку USB в ядре. Драйверы, которые подключаются, часто имеют работающие таймауты. +* Отключите неиспользуемое оборудование. Отсоедините диски с помощью man:atacontrol[8] и man:camcontrol[8], если диски не используются для тестирования. +* Не настраивайте сеть, если она не тестируется, или дождитесь завершения тестирования, чтобы отправить результаты на другой компьютер. +* Отключите "турбо-режимы", так как они делают тактовую частоту явно зависимой от окружающей среды. Это означает, что результаты тестирования на 100% идентичном коде могут зависеть от времени суток, употребления кофе или газировки или даже от количества людей в офисе. + +Если система должна быть подключена к общедоступной сети, следите за всплесками широковещательного трафика. Даже если они почти незаметны, они будут занимать циклы процессора. Многоадресная рассылка имеет аналогичные предостережения. +* Размещайте каждую файловую систему на отдельном диске. Это минимизирует задержки, вызванные оптимизацией перемещения головок диска. +* Минимизируйте вывод на последовательные или VGA-консоли. Запись вывода в файлы снижает дрожание. (Консоли на последовательном порту легко становятся узким местом.) Не касайтесь клавиатуры во время выполнения теста, даже нажатия kbd:[пробел] или kbd:[back-space] отражаются в числах. +* Убедитесь, что тест достаточно длинный, но не слишком. Если тест слишком короткий, возникают проблемы с временными метками. Если он слишком длинный, изменения температуры и дрейф повлияют на частоту кварцевых кристаллов в компьютере. Эмпирическое правило: больше минуты, меньше часа. +* Попытайтесь поддерживать температуру вокруг машины как можно более стабильной. Это влияет как на кварцевые резонаторы, так и на алгоритмы работы дисковых накопителей. Для получения действительно стабильных часов рассмотрите возможность использования стабилизированного тактового сигнала. Например, используйте OCXO + PLL и подавайте выходной сигнал в тактовые схемы вместо кварцевого резонатора на материнской плате. Для получения дополнительной информации по этому вопросу свяжитесь с {phk}. +* Выполните тест как минимум 3 раза, но лучше запустить более 20 раз как для кода "до", так и для кода "после". По возможности чередуйте запуски (т.е. не следует запускать 20 раз "до", а затем 20 раз "после"), это поможет выявить влияние окружения. Не чередуйте строго 1:1, а лучше 3:3, чтобы можно было обнаружить эффекты взаимодействия. ++ +Хороший шаблон: `bababa{bbbaaa}*`. Это дает подсказку после первых 1+1 прогонов (так что можно остановить тест, если всё идет совсем не так), стандартное отклонение после первых 3+3 (дает хорошее представление, стоит ли проводить длительный прогон), а также тренды и показатели взаимодействия позже. +* Используйте man:ministat[1], чтобы определить, являются ли числа значимыми. Рекомендуется приобрести книгу "Cartoon guide to statistics" ISBN: 0062731025, особенно если вы забыли или никогда не изучали стандартное отклонение и t-критерий Стьюдента. +* Не используйте фоновый man:fsck[8], если тест не является бенчмарком фонового `fsck`. Также отключите `background_fsck` в [.filename]#/etc/rc.conf#, если бенчмарк не запускается как минимум через 60+«время работы ``fsck``» секунд после загрузки, так как man:rc[8] пробуждается и проверяет, нужно ли запускать `fsck` для каких-либо файловых систем, когда включен фоновый `fsck`. Аналогично, убедитесь, что нет оставшихся снимков, если только бенчмарк не является тестом со снимками. +* Если тесты производительности показывают неожиданно низкие результаты, проверьте такие факторы, как высокий объем прерываний из неожиданного источника. Сообщалось, что некоторые версии ACPI могут "вести себя неправильно" и генерировать избыточные прерывания. Для диагностики необычных результатов тестов сделайте несколько снимков `vmstat -i` и поищите что-то необычное. +* Будьте внимательны к параметрам оптимизации для ядра и пользовательского пространства, а также отладки. Легко упустить что-то и позже понять, что тест сравнивал не одно и то же. +* Никогда не проводите тестирование производительности с включёнными параметрами ядра `WITNESS` и `INVARIANTS`, если тест не направлен на оценку производительности именно этих функций. `WITNESS` может привести к снижению производительности на 400% и более. Аналогично, параметры userspace man:malloc[3] по умолчанию отличаются в -CURRENT от тех, что поставляются в релизах. + +[[testing-tinderbox]] +== Tinderbox для исходного текста FreeBSD + +Исходный Tinderbox состоит из: + +* Скрипта сборки [.filename]#tinderbox#, который автоматизирует выгрузку определённой версии исходного кода FreeBSD и её сборку. +* Скрипта-супервизора [.filename]#tbmaster#, который отслеживает отдельные экземпляры Tinderbox, записывает их вывод и отправляет уведомления о сбоях по электронной почте. +* Скрипта CGI с именем [.filename]#index.cgi#, который читает набор журналов tbmaster и представляет их в виде удобочитаемой HTML-сводки. +* Набора серверов сборки, которые постоянно тестируют последние изменения наиболее важных веток кода FreeBSD. +* Веб-сервера, хранящего полный набор журналов Tinderbox и отображающий актуальную сводку. + +Скрипты поддерживаются и были разработаны {des}, и сейчас написаны на Perl, что стало шагом вперед по сравнению с их первоначальной версией в виде shell-скриптов. Все скрипты и конфигурационные файлы хранятся в https://www.freebsd.org/cgi/cvsweb.cgi/projects/tinderbox/[/projects/tinderbox/]. + +Для получения дополнительной информации о скриптах tinderbox и tbmaster на данном этапе обратитесь к соответствующим руководствам: tinderbox(1) и tbmaster(1). + +== Скрипт index.cgi + +Скрипт [.filename]#index.cgi# генерирует HTML-сводку журналов tinderbox и tbmaster. Хотя изначально он предназначался для использования в качестве CGI-скрипта, как следует из его названия, этот скрипт также может быть запущен из командной строки или из задачи man:cron[8], в таком случае он будет искать логи в директории, где расположен сам скрипт. Он автоматически определяет контекст, генерируя HTTP-заголовки при запуске в качестве CGI-скрипта. Он соответствует стандартам XHTML и использует CSS для стилизации. + +Скрипт начинает работу в блоке `main()`, пытаясь проверить, что он выполняется на официальном сайте Tinderbox. Если это не так, создается страница с указанием, что это не официальный сайт, и предоставляется URL официального сайта. + +Далее выполняется сканирование каталога журналов для получения перечня конфигураций, веток и архитектур, для которых существуют файлы журналов, чтобы избежать жесткого задания списка в скрипте и потенциального появления пустых строк или столбцов. Эта информация извлекается из имен файлов журналов, соответствующих следующему шаблону: + +[.programlisting] +.... +tinderbox-$config-$branch-$arch-$machine.{brief,full} +.... + +Конфигурации, используемые на официальных серверах сборки Tinderbox, названы в соответствии с ветками, которые они собирают. Например, конфигурация `releng_8` используется для сборки `RELENG_8`, а также всех поддерживаемых веток выпусков. + +После успешного завершения всей процедуры запуска для каждой конфигурации вызывается `do_config()`. + +Функция `do_config()` генерирует HTML для отдельной конфигурации Tinderbox. + +Он работает, сначала создавая строку заголовка, затем перебирая каждую сборку ветки с указанной конфигурацией, формируя одну строку результатов для каждой следующим образом: + +* Для каждого элемента: + +** Для каждой машины в рамках этой архитектуры: + +*** Если существует краткий файл журнала, то: + +**** Вызвать `success()`, чтобы определить результат сборки. +**** Вывести размер изменения. +**** Вывести размер краткого файла журнала со ссылкой на сам файл журнала. +**** Если также существует полный файл журнала, то: + +***** Вывести размер полного файла журнала со ссылкой на сам файл журнала. + +*** В противном случае: + +**** Нечего не выводить. + +Упомянутая выше функция `success()` проверяет краткий лог-файл на наличие строки "tinderbox run completed", чтобы определить, был ли сборка успешной. + +Конфигурации и ветви сортируются в соответствии с их рангом. Это вычисляется следующим образом: + +* `HEAD` и `CURRENT` имеют ранг 9999. +* `RELENG_x` имеет ранг __``xx``__99. +* `RELENG_x_y` имеет ранг _xxyy_. + +Это означает, что `HEAD` всегда имеет наивысший приоритет, а ветви `RELENG` ранжируются в числовом порядке, причём каждая ветвь `STABLE` имеет более высокий приоритет, чем ветви выпусков, ответвлённые от неё. Например, для FreeBSD 8 порядок от наивысшего к низшему будет следующим: + +* `RELENG_8` (ранг ветки 899). +* `RELENG_8_3` (ранг ветки 803). +* `RELENG_8_2` (ранг ветки 802). +* `RELENG_8_1` (ранг ветки 801). +* `RELENG_8_0` (ранг ветки 800). + +Цвета, которые Tinderbox использует для каждой ячейки в таблице, определяются CSS. Успешные сборки отображаются зелёным текстом; неудачные сборки отображаются красным текстом. Цвет блекнет со временем с момента соответствующей сборки, приближаясь к серому каждые полчаса. + +== Официальные серверы сборки + +Официальные серверы сборки Tinderbox размещены на площадке http://www.sentex.ca[Sentex Data Communications], которая также предоставляет хостинг для кластера Netperf FreeBSD. + +В настоящее время работают три сервера сборки: + +_freebsd-current.sentex.ca_ собирает: + +* `HEAD` для amd64, arm, i386, i386/pc98, ia64, mips, powerpc, powerpc64 и sparc64. +* `RELENG_9` и поддерживаемые ветки 9._X_ для amd64, arm, i386, i386/pc98, ia64, mips, powerpc, powerpc64 и sparc64. + +_freebsd-stable.sentex.ca_ собирает: + +* `RELENG_8` и поддерживаемые ветки 8._X_ для amd64, i386, i386/pc98, ia64, mips, powerpc и sparc64. + +_freebsd-legacy.sentex.ca_ собирает: + +* `RELENG_7` и поддерживаемые ветки 7._X_ для amd64, i386, i386/pc98, ia64, powerpc и sparc64. + +== Официальный сайт со сводками + +Сводки и журналы с официальных серверов сборки доступны в сети по адресу http://tinderbox.FreeBSD.org[http://tinderbox.FreeBSD.org], размещены на {des} и настроены следующим образом: + +* Задание man:cron[8] проверяет серверы сборки через регулярные интервалы и загружает все новые файлы журналов с помощью man:rsync[1]. +* Apache настроен на использование [.filename]#index.cgi# в качестве `DirectoryIndex`. diff --git a/documentation/content/ru/books/developers-handbook/testing/_index.po b/documentation/content/ru/books/developers-handbook/testing/_index.po new file mode 100644 index 0000000000..220968249a --- /dev/null +++ b/documentation/content/ru/books/developers-handbook/testing/_index.po @@ -0,0 +1,802 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-10-12 22:16+0300\n" +"PO-Revision-Date: 2025-06-27 04:45+0000\n" +"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" +"Language-Team: Russian <https://translate-dev.freebsd.org/projects/" +"documentation/booksdevelopers-handbooktesting_index/ru/>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Title = +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:1 +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:15 +#, no-wrap +msgid "Regression and Performance Testing" +msgstr "Регрессионное и нагрузочное тестирование" + +#. type: Yaml Front Matter Hash Value: title +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:1 +#, no-wrap +msgid "Chapter 6. Regression and Performance Testing" +msgstr "Глава 6. Регрессионное и нагрузочное тестирование" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:53 +msgid "" +"Regression tests are used to exercise a particular bit of the system to " +"check that it works as expected, and to make sure that old bugs are not " +"reintroduced." +msgstr "" +"Регрессионные тесты используются для проверки определенной части системы, " +"чтобы убедиться, что она работает как ожидается, и для предотвращения " +"повторного появления старых ошибок." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:55 +msgid "" +"The FreeBSD regression testing tools can be found in the FreeBSD source tree " +"in the directory [.filename]#src/tools/regression#." +msgstr "" +"Инструменты для регрессионного тестирования FreeBSD можно найти в дереве " +"исходных кодов FreeBSD в каталоге [.filename]#src/tools/regression#." + +#. type: Title == +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:57 +#, no-wrap +msgid "Micro Benchmark Checklist" +msgstr "Контрольный список для бенчмарка низкоуровневых операций" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:60 +msgid "" +"This section contains hints for doing proper micro-benchmarking on FreeBSD " +"or of FreeBSD itself." +msgstr "" +"Этот раздел содержит рекомендации по проведению корректного бенчмарка " +"низкоуровненых операций на FreeBSD или самой FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:62 +msgid "" +"It is not possible to use all of the suggestions below every single time, " +"but the more used, the better the benchmark's ability to test small " +"differences will be." +msgstr "" +"Невозможно использовать все приведенные ниже рекомендации каждый раз, но чем " +"больше их применяется, тем лучше способность теста выявлять небольшие " +"различия." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:64 +msgid "Disable APM and any other kind of clock fiddling (ACPI ?)." +msgstr "Отключить APM и любые другие манипуляции с часами (ACPI ?)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:65 +msgid "" +"Run in single user mode. E.g., man:cron[8], and other daemons only add " +"noise. The man:sshd[8] daemon can also cause problems. If ssh access is " +"required during testing either disable the SSHv1 key regeneration, or kill " +"the parent `sshd` daemon during the tests." +msgstr "" +"Запускайте тесты в однопользовательском режиме. Например, man:cron[8] и " +"другие демоны только добавляют шум. Демон man:sshd[8] также может вызвать " +"проблемы. Если требуется доступ по SSH во время тестирования, либо отключите " +"перегенерацию ключа SSHv1, либо завершите родительский демон `sshd` во время " +"тестов." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:66 +msgid "Do not run man:ntpd[8]." +msgstr "Не запускайте man:ntpd[8]." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:67 +msgid "" +"If man:syslog[3] events are generated, run man:syslogd[8] with an empty " +"[.filename]#/etc/syslogd.conf#, otherwise, do not run it." +msgstr "" +"Если события man:syslog[3] генерируются, запустите man:syslogd[8] с пустым " +"[.filename]#/etc/syslogd.conf#, в противном случае не запускайте его." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:68 +msgid "Minimize disk-I/O, avoid it entirely if possible." +msgstr "" +"Минимизируйте дисковые операции ввода-вывода, по возможности избегайте их " +"полностью." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:69 +msgid "Do not mount file systems that are not needed." +msgstr "Не монтируйте файловые системы, которые не требуются." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:70 +msgid "" +"Mount [.filename]#/#, [.filename]#/usr#, and any other file system as read-" +"only if possible. This removes atime updates to disk (etc.) from the I/O " +"picture." +msgstr "" +"Смонтируйте [.filename]#/#, [.filename]#/usr# и любые другие файловые " +"системы в режиме только для чтения, если это возможно. Это исключает " +"обновления atime на диске (и т.д.) из общей картины ввода-вывода." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:71 +msgid "" +"Reinitialize the read/write test file system with man:newfs[8] and populate " +"it from a man:tar[1] or man:dump[8] file before every run. Unmount and mount " +"it before starting the test. This results in a consistent file system " +"layout. For a worldstone test this would apply to [.filename]#/usr/obj# " +"(just reinitialize with `newfs` and mount). To get 100% reproducibility, " +"populate the file system from a man:dd[1] file (i.e.: `dd if=myimage of=/dev/" +"ad0s1h bs=1m`)" +msgstr "" +"Переинициализируйте тестовую файловую систему с возможностью чтения/записи с " +"помощью man:newfs[8] и заполните её из файла man:tar[1] или man:dump[8] " +"перед каждым запуском. Размонтируйте и смонтируйте её перед началом теста. " +"Это обеспечит согласованную структуру файловой системы. Для теста worldstone " +"это применимо к [.filename]#/usr/obj# (просто переинициализируйте с помощью " +"`newfs` и смонтируйте). Для достижения 100% воспроизводимости заполните " +"файловую систему из файла man:dd[1] (например: `dd if=myimage of=/dev/ad0s1h " +"bs=1m`)" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:72 +msgid "Use malloc backed or preloaded man:md[4] partitions." +msgstr "Используйте разделы man:md[4] с поддержкой malloc или предзагруженные." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:73 +msgid "" +"Reboot between individual iterations of the test, this gives a more " +"consistent state." +msgstr "" +"Перезагружайтесь между отдельными итерациями теста, это обеспечивает более " +"согласованное состояние." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:74 +msgid "" +"Remove all non-essential device drivers from the kernel. For instance if USB " +"is not needed for the test, do not put USB in the kernel. Drivers which " +"attach often have timeouts ticking away." +msgstr "" +"Удалите все необязательные драйверы устройств из ядра. Например, если USB не " +"нужен для теста, не включайте поддержку USB в ядре. Драйверы, которые " +"подключаются, часто имеют работающие таймауты." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:75 +msgid "" +"Unconfigure hardware that are not in use. Detach disks with " +"man:atacontrol[8] and man:camcontrol[8] if the disks are not used for the " +"test." +msgstr "" +"Отключите неиспользуемое оборудование. Отсоедините диски с помощью " +"man:atacontrol[8] и man:camcontrol[8], если диски не используются для " +"тестирования." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:76 +msgid "" +"Do not configure the network unless it is being tested, or wait until after " +"the test has been performed to ship the results off to another computer." +msgstr "" +"Не настраивайте сеть, если она не тестируется, или дождитесь завершения " +"тестирования, чтобы отправить результаты на другой компьютер." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:78 +msgid "" +"Disable \"Turbo-modes\" because they make the clock frequency explicitly " +"depend on the environment. This means that benchmark runs on 100% identical " +"code, may depend on time of day, coffee vs. soda or even how many other " +"people are in the office." +msgstr "" +"Отключите \"турбо-режимы\", так как они делают тактовую частоту явно " +"зависимой от окружающей среды. Это означает, что результаты тестирования на " +"100% идентичном коде могут зависеть от времени суток, употребления кофе или " +"газировки или даже от количества людей в офисе." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:80 +msgid "" +"If the system must be connected to a public network, watch out for spikes of " +"broadcast traffic. Even though it is hardly noticeable, it will take up CPU " +"cycles. Multicast has similar caveats." +msgstr "" +"Если система должна быть подключена к общедоступной сети, следите за " +"всплесками широковещательного трафика. Даже если они почти незаметны, они " +"будут занимать циклы процессора. Многоадресная рассылка имеет аналогичные " +"предостережения." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:81 +msgid "" +"Put each file system on its own disk. This minimizes jitter from head-seek " +"optimizations." +msgstr "" +"Размещайте каждую файловую систему на отдельном диске. Это минимизирует " +"задержки, вызванные оптимизацией перемещения головок диска." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:82 +msgid "" +"Minimize output to serial or VGA consoles. Running output into files gives " +"less jitter. (Serial consoles easily become a bottleneck.) Do not touch " +"keyboard while the test is running, even kbd:[space] or kbd:[back-space] " +"shows up in the numbers." +msgstr "" +"Минимизируйте вывод на последовательные или VGA-консоли. Запись вывода в " +"файлы снижает дрожание. (Консоли на последовательном порту легко становятся " +"узким местом.) Не касайтесь клавиатуры во время выполнения теста, даже " +"нажатия kbd:[пробел] или kbd:[back-space] отражаются в числах." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:83 +msgid "" +"Make sure the test is long enough, but not too long. If the test is too " +"short, timestamping is a problem. If it is too long temperature changes and " +"drift will affect the frequency of the quartz crystals in the computer. Rule " +"of thumb: more than a minute, less than an hour." +msgstr "" +"Убедитесь, что тест достаточно длинный, но не слишком. Если тест слишком " +"короткий, возникают проблемы с временными метками. Если он слишком длинный, " +"изменения температуры и дрейф повлияют на частоту кварцевых кристаллов в " +"компьютере. Эмпирическое правило: больше минуты, меньше часа." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:84 +msgid "" +"Try to keep the temperature as stable as possible around the machine. This " +"affects both quartz crystals and disk drive algorithms. To get real stable " +"clock, consider stabilized clock injection. E.g., get a OCXO + PLL, inject " +"output into clock circuits instead of motherboard xtal. Contact {phk} for " +"more information about this." +msgstr "" +"Попытайтесь поддерживать температуру вокруг машины как можно более " +"стабильной. Это влияет как на кварцевые резонаторы, так и на алгоритмы " +"работы дисковых накопителей. Для получения действительно стабильных часов " +"рассмотрите возможность использования стабилизированного тактового сигнала. " +"Например, используйте OCXO + PLL и подавайте выходной сигнал в тактовые " +"схемы вместо кварцевого резонатора на материнской плате. Для получения " +"дополнительной информации по этому вопросу свяжитесь с {phk}." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:85 +msgid "" +"Run the test at least 3 times but it is better to run more than 20 times " +"both for \"before\" and \"after\" code. Try to interleave if possible (i.e.: " +"do not run 20 times before then 20 times after), this makes it possible to " +"spot environmental effects. Do not interleave 1:1, but 3:3, this makes it " +"possible to spot interaction effects." +msgstr "" +"Выполните тест как минимум 3 раза, но лучше запустить более 20 раз как для " +"кода \"до\", так и для кода \"после\". По возможности чередуйте запуски " +"(т.е. не следует запускать 20 раз \"до\", а затем 20 раз \"после\"), это " +"поможет выявить влияние окружения. Не чередуйте строго 1:1, а лучше 3:3, " +"чтобы можно было обнаружить эффекты взаимодействия." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:88 +msgid "" +"A good pattern is: `bababa{bbbaaa}*`. This gives hint after the first 1+1 " +"runs (so it is possible to stop the test if it goes entirely the wrong way), " +"a standard deviation after the first 3+3 (gives a good indication if it is " +"going to be worth a long run) and trending and interaction numbers later on." +msgstr "" +"Хороший шаблон: `bababa{bbbaaa}*`. Это дает подсказку после первых 1+1 " +"прогонов (так что можно остановить тест, если всё идет совсем не так), " +"стандартное отклонение после первых 3+3 (дает хорошее представление, стоит " +"ли проводить длительный прогон), а также тренды и показатели взаимодействия " +"позже." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:89 +msgid "" +"Use man:ministat[1] to see if the numbers are significant. Consider buying " +"\"Cartoon guide to statistics\" ISBN: 0062731025, highly recommended, if you " +"have forgotten or never learned about standard deviation and Student's T." +msgstr "" +"Используйте man:ministat[1], чтобы определить, являются ли числа значимыми. " +"Рекомендуется приобрести книгу \"Cartoon guide to statistics\" ISBN: " +"0062731025, особенно если вы забыли или никогда не изучали стандартное " +"отклонение и t-критерий Стьюдента." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:90 +msgid "" +"Do not use background man:fsck[8] unless the test is a benchmark of " +"background `fsck`. Also, disable `background_fsck` in [.filename]#/etc/" +"rc.conf# unless the benchmark is not started at least 60+\"``fsck`` " +"runtime\" seconds after the boot, as man:rc[8] wakes up and checks if `fsck` " +"needs to run on any file systems when background `fsck` is enabled. " +"Likewise, make sure there are no snapshots lying around unless the benchmark " +"is a test with snapshots." +msgstr "" +"Не используйте фоновый man:fsck[8], если тест не является бенчмарком " +"фонового `fsck`. Также отключите `background_fsck` в [.filename]#/etc/" +"rc.conf#, если бенчмарк не запускается как минимум через 60+«время работы " +"``fsck``» секунд после загрузки, так как man:rc[8] пробуждается и проверяет, " +"нужно ли запускать `fsck` для каких-либо файловых систем, когда включен " +"фоновый `fsck`. Аналогично, убедитесь, что нет оставшихся снимков, если " +"только бенчмарк не является тестом со снимками." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:91 +msgid "" +"If the benchmark show unexpected bad performance, check for things like high " +"interrupt volume from an unexpected source. Some versions of ACPI have been " +"reported to \"misbehave\" and generate excess interrupts. To help diagnose " +"odd test results, take a few snapshots of `vmstat -i` and look for anything " +"unusual." +msgstr "" +"Если тесты производительности показывают неожиданно низкие результаты, " +"проверьте такие факторы, как высокий объем прерываний из неожиданного " +"источника. Сообщалось, что некоторые версии ACPI могут \"вести себя " +"неправильно\" и генерировать избыточные прерывания. Для диагностики " +"необычных результатов тестов сделайте несколько снимков `vmstat -i` и " +"поищите что-то необычное." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:92 +msgid "" +"Make sure to be careful about optimization parameters for kernel and " +"userspace, likewise debugging. It is easy to let something slip through and " +"realize later the test was not comparing the same thing." +msgstr "" +"Будьте внимательны к параметрам оптимизации для ядра и пользовательского " +"пространства, а также отладки. Легко упустить что-то и позже понять, что " +"тест сравнивал не одно и то же." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:93 +msgid "" +"Do not ever benchmark with the `WITNESS` and `INVARIANTS` kernel options " +"enabled unless the test is interested to benchmarking those features. " +"`WITNESS` can cause 400%+ drops in performance. Likewise, userspace " +"man:malloc[3] parameters default differently in -CURRENT from the way they " +"ship in production releases." +msgstr "" +"Никогда не проводите тестирование производительности с включёнными " +"параметрами ядра `WITNESS` и `INVARIANTS`, если тест не направлен на оценку " +"производительности именно этих функций. `WITNESS` может привести к снижению " +"производительности на 400% и более. Аналогично, параметры userspace " +"man:malloc[3] по умолчанию отличаются в -CURRENT от тех, что поставляются в " +"релизах." + +#. type: Title == +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:95 +#, no-wrap +msgid "The FreeBSD Source Tinderbox" +msgstr "Tinderbox для исходного текста FreeBSD" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:98 +msgid "The source Tinderbox consists of:" +msgstr "Исходный Tinderbox состоит из:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:100 +msgid "" +"A build script, [.filename]#tinderbox#, that automates checking out a " +"specific version of the FreeBSD source tree and building it." +msgstr "" +"Скрипта сборки [.filename]#tinderbox#, который автоматизирует выгрузку " +"определённой версии исходного кода FreeBSD и её сборку." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:101 +msgid "" +"A supervisor script, [.filename]#tbmaster#, that monitors individual " +"Tinderbox instances, logs their output, and emails failure notices." +msgstr "" +"Скрипта-супервизора [.filename]#tbmaster#, который отслеживает отдельные " +"экземпляры Tinderbox, записывает их вывод и отправляет уведомления о сбоях " +"по электронной почте." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:102 +msgid "" +"A CGI script named [.filename]#index.cgi# that reads a set of tbmaster logs " +"and presents an easy-to-read HTML summary of them." +msgstr "" +"Скрипта CGI с именем [.filename]#index.cgi#, который читает набор журналов " +"tbmaster и представляет их в виде удобочитаемой HTML-сводки." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:103 +msgid "" +"A set of build servers that continually test the tip of the most important " +"FreeBSD code branches." +msgstr "" +"Набора серверов сборки, которые постоянно тестируют последние изменения " +"наиболее важных веток кода FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:104 +msgid "" +"A webserver that keeps a complete set of Tinderbox logs and displays an up-" +"to-date summary." +msgstr "" +"Веб-сервера, хранящего полный набор журналов Tinderbox и отображающий " +"актуальную сводку." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:107 +msgid "" +"The scripts are maintained and were developed by {des}, and are now written " +"in Perl, a move on from their original incarnation as shell scripts. All " +"scripts and configuration files are kept in https://www.freebsd.org/cgi/" +"cvsweb.cgi/projects/tinderbox/[/projects/tinderbox/]." +msgstr "" +"Скрипты поддерживаются и были разработаны {des}, и сейчас написаны на Perl, " +"что стало шагом вперед по сравнению с их первоначальной версией в виде shell-" +"скриптов. Все скрипты и конфигурационные файлы хранятся в https://" +"www.freebsd.org/cgi/cvsweb.cgi/projects/tinderbox/[/projects/tinderbox/]." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:109 +msgid "" +"For more information about the tinderbox and tbmaster scripts at this stage, " +"see their respective man pages: tinderbox(1) and tbmaster(1)." +msgstr "" +"Для получения дополнительной информации о скриптах tinderbox и tbmaster на " +"данном этапе обратитесь к соответствующим руководствам: tinderbox(1) и " +"tbmaster(1)." + +#. type: Title == +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:110 +#, no-wrap +msgid "The index.cgi Script" +msgstr "Скрипт index.cgi" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:117 +msgid "" +"The [.filename]#index.cgi# script generates the HTML summary of tinderbox " +"and tbmaster logs. Although originally intended to be used as a CGI script, " +"as indicated by its name, this script can also be run from the command line " +"or from a man:cron[8] job, in which case it will look for logs in the " +"directory where the script is located. It will automatically detect " +"context, generating HTTP headers when it is run as a CGI script. It " +"conforms to XHTML standards and is styled using CSS." +msgstr "" +"Скрипт [.filename]#index.cgi# генерирует HTML-сводку журналов tinderbox и " +"tbmaster. Хотя изначально он предназначался для использования в качестве CGI-" +"скрипта, как следует из его названия, этот скрипт также может быть запущен " +"из командной строки или из задачи man:cron[8], в таком случае он будет " +"искать логи в директории, где расположен сам скрипт. Он автоматически " +"определяет контекст, генерируя HTTP-заголовки при запуске в качестве CGI-" +"скрипта. Он соответствует стандартам XHTML и использует CSS для стилизации." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:120 +msgid "" +"The script starts in the `main()` block by attempting to verify that it is " +"running on the official Tinderbox website. If it is not, a page indicating " +"it is not an official website is produced, and a URL to the official site is " +"provided." +msgstr "" +"Скрипт начинает работу в блоке `main()`, пытаясь проверить, что он " +"выполняется на официальном сайте Tinderbox. Если это не так, создается " +"страница с указанием, что это не официальный сайт, и предоставляется URL " +"официального сайта." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:123 +msgid "" +"Next, it scans the log directory to get an inventory of configurations, " +"branches and architectures for which log files exist, to avoid hard-coding a " +"list into the script and potentially ending up with blank rows or columns. " +"This information is derived from the names of the log files matching the " +"following pattern:" +msgstr "" +"Далее выполняется сканирование каталога журналов для получения перечня " +"конфигураций, веток и архитектур, для которых существуют файлы журналов, " +"чтобы избежать жесткого задания списка в скрипте и потенциального появления " +"пустых строк или столбцов. Эта информация извлекается из имен файлов " +"журналов, соответствующих следующему шаблону:" + +#. type: delimited block . 4 +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:127 +#, no-wrap +msgid "tinderbox-$config-$branch-$arch-$machine.{brief,full}\n" +msgstr "tinderbox-$config-$branch-$arch-$machine.{brief,full}\n" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:131 +msgid "" +"The configurations used on the official Tinderbox build servers are named " +"for the branches they build. For example, the `releng_8` configuration is " +"used to build `RELENG_8` as well as all still-supported release branches." +msgstr "" +"Конфигурации, используемые на официальных серверах сборки Tinderbox, названы " +"в соответствии с ветками, которые они собирают. Например, конфигурация " +"`releng_8` используется для сборки `RELENG_8`, а также всех поддерживаемых " +"веток выпусков." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:133 +msgid "" +"Once all of this startup procedure has been successfully completed, " +"`do_config()` is called for each configuration." +msgstr "" +"После успешного завершения всей процедуры запуска для каждой конфигурации " +"вызывается `do_config()`." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:135 +msgid "" +"The `do_config()` function generates HTML for a single Tinderbox " +"configuration." +msgstr "" +"Функция `do_config()` генерирует HTML для отдельной конфигурации Tinderbox." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:138 +msgid "" +"It works by first generating a header row, then iterating over each branch " +"build with the specified configuration, producing a single row of results " +"for each in the following manner:" +msgstr "" +"Он работает, сначала создавая строку заголовка, затем перебирая каждую " +"сборку ветки с указанной конфигурацией, формируя одну строку результатов для " +"каждой следующим образом:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:140 +msgid "For each item:" +msgstr "Для каждого элемента:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:142 +msgid "For each machine within that architecture:" +msgstr "Для каждой машины в рамках этой архитектуры:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:144 +msgid "If a brief log file exists, then:" +msgstr "Если существует краткий файл журнала, то:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:146 +msgid "Call `success()` to determine the outcome of the build." +msgstr "Вызвать `success()`, чтобы определить результат сборки." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:147 +msgid "Output the modification size." +msgstr "Вывести размер изменения." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:148 +msgid "" +"Output the size of the brief log file with a link to the log file itself." +msgstr "Вывести размер краткого файла журнала со ссылкой на сам файл журнала." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:149 +msgid "If a full log file also exists, then:" +msgstr "Если также существует полный файл журнала, то:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:151 +msgid "" +"Output the size of the full log file with a link to the log file itself." +msgstr "Вывести размер полного файла журнала со ссылкой на сам файл журнала." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:153 +msgid "Otherwise:" +msgstr "В противном случае:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:155 +msgid "No output." +msgstr "Нечего не выводить." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:157 +msgid "" +"The `success()` function mentioned above scans a brief log file for the " +"string \"tinderbox run completed\" in order to determine whether the build " +"was successful." +msgstr "" +"Упомянутая выше функция `success()` проверяет краткий лог-файл на наличие " +"строки \"tinderbox run completed\", чтобы определить, был ли сборка успешной." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:160 +msgid "" +"Configurations and branches are sorted according to their branch rank. This " +"is computed as follows:" +msgstr "" +"Конфигурации и ветви сортируются в соответствии с их рангом. Это вычисляется " +"следующим образом:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:162 +msgid "`HEAD` and `CURRENT` have rank 9999." +msgstr "`HEAD` и `CURRENT` имеют ранг 9999." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:163 +msgid "`RELENG_x` has rank __``xx``__99." +msgstr "`RELENG_x` имеет ранг __``xx``__99." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:164 +msgid "`RELENG_x_y` has rank _xxyy_." +msgstr "`RELENG_x_y` имеет ранг _xxyy_." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:167 +msgid "" +"This means that `HEAD` always ranks highest, and `RELENG` branches are " +"ranked in numerical order, with each `STABLE` branch ranking higher than the " +"release branches forked off of it. For instance, for FreeBSD 8, the order " +"from highest to lowest would be:" +msgstr "" +"Это означает, что `HEAD` всегда имеет наивысший приоритет, а ветви `RELENG` " +"ранжируются в числовом порядке, причём каждая ветвь `STABLE` имеет более " +"высокий приоритет, чем ветви выпусков, ответвлённые от неё. Например, для " +"FreeBSD 8 порядок от наивысшего к низшему будет следующим:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:169 +msgid "`RELENG_8` (branch rank 899)." +msgstr "`RELENG_8` (ранг ветки 899)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:170 +msgid "`RELENG_8_3` (branch rank 803)." +msgstr "`RELENG_8_3` (ранг ветки 803)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:171 +msgid "`RELENG_8_2` (branch rank 802)." +msgstr "`RELENG_8_2` (ранг ветки 802)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:172 +msgid "`RELENG_8_1` (branch rank 801)." +msgstr "`RELENG_8_1` (ранг ветки 801)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:173 +msgid "`RELENG_8_0` (branch rank 800)." +msgstr "`RELENG_8_0` (ранг ветки 800)." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:177 +msgid "" +"The colors that Tinderbox uses for each cell in the table are defined by " +"CSS. Successful builds are displayed with green text; unsuccessful builds " +"are displayed with red text. The color fades as time passes since the " +"corresponding build, with every half an hour bringing the color closer to " +"grey." +msgstr "" +"Цвета, которые Tinderbox использует для каждой ячейки в таблице, " +"определяются CSS. Успешные сборки отображаются зелёным текстом; неудачные " +"сборки отображаются красным текстом. Цвет блекнет со временем с момента " +"соответствующей сборки, приближаясь к серому каждые полчаса." + +#. type: Title == +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:178 +#, no-wrap +msgid "Official Build Servers" +msgstr "Официальные серверы сборки" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:181 +msgid "" +"The official Tinderbox build servers are hosted by http://" +"www.sentex.ca[Sentex Data Communications], who also host the FreeBSD Netperf " +"Cluster." +msgstr "" +"Официальные серверы сборки Tinderbox размещены на площадке http://" +"www.sentex.ca[Sentex Data Communications], которая также предоставляет " +"хостинг для кластера Netperf FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:183 +msgid "Three build servers currently exist:" +msgstr "В настоящее время работают три сервера сборки:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:185 +msgid "_freebsd-current.sentex.ca_ builds:" +msgstr "_freebsd-current.sentex.ca_ собирает:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:187 +msgid "" +"`HEAD` for amd64, arm, i386, i386/pc98, ia64, mips, powerpc, powerpc64, and " +"sparc64." +msgstr "" +"`HEAD` для amd64, arm, i386, i386/pc98, ia64, mips, powerpc, powerpc64 и " +"sparc64." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:188 +msgid "" +"`RELENG_9` and supported 9._X_ branches for amd64, arm, i386, i386/pc98, " +"ia64, mips, powerpc, powerpc64, and sparc64." +msgstr "" +"`RELENG_9` и поддерживаемые ветки 9._X_ для amd64, arm, i386, i386/pc98, " +"ia64, mips, powerpc, powerpc64 и sparc64." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:190 +msgid "_freebsd-stable.sentex.ca_ builds:" +msgstr "_freebsd-stable.sentex.ca_ собирает:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:192 +msgid "" +"`RELENG_8` and supported 8._X_ branches for amd64, i386, i386/pc98, ia64, " +"mips, powerpc and sparc64." +msgstr "" +"`RELENG_8` и поддерживаемые ветки 8._X_ для amd64, i386, i386/pc98, ia64, " +"mips, powerpc и sparc64." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:194 +msgid "_freebsd-legacy.sentex.ca_ builds:" +msgstr "_freebsd-legacy.sentex.ca_ собирает:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:196 +msgid "" +"`RELENG_7` and supported 7._X_ branches for amd64, i386, i386/pc98, ia64, " +"powerpc, and sparc64." +msgstr "" +"`RELENG_7` и поддерживаемые ветки 7._X_ для amd64, i386, i386/pc98, ia64, " +"powerpc и sparc64." + +#. type: Title == +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:197 +#, no-wrap +msgid "Official Summary Site" +msgstr "Официальный сайт со сводками" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:200 +msgid "" +"Summaries and logs from the official build servers are available online at " +"http://tinderbox.FreeBSD.org[http://tinderbox.FreeBSD.org], hosted by {des} " +"and set up as follows:" +msgstr "" +"Сводки и журналы с официальных серверов сборки доступны в сети по адресу " +"http://tinderbox.FreeBSD.org[http://tinderbox.FreeBSD.org], размещены на " +"{des} и настроены следующим образом:" + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:202 +msgid "" +"A man:cron[8] job checks the build servers at regular intervals and " +"downloads any new log files using man:rsync[1]." +msgstr "" +"Задание man:cron[8] проверяет серверы сборки через регулярные интервалы и " +"загружает все новые файлы журналов с помощью man:rsync[1]." + +#. type: Plain text +#: documentation/content/en/books/developers-handbook/testing/_index.adoc:202 +msgid "Apache is set up to use [.filename]#index.cgi# as `DirectoryIndex`." +msgstr "" +"Apache настроен на использование [.filename]#index.cgi# в качестве " +"`DirectoryIndex`." |