:: DEVELOPER ZONE
Для создания собственных контрольных тестов можно использовать язык
mysqltest
. К сожалению, полная документация по языку пока еще не написана,
но мы планируем в скором времени это сделать. Можно, однако, обратиться к
имеющимся контрольным тестам и использовать их в качестве примера. В
качестве отправных точек должны служить следующие моменты:
Тесты должны быть расположены в mysql-test/t/*.test
Контрольные тесты должны состоять из завершающихся точкой с запятой
;
команд и должны соответствовать вводу для клиента командной строки
mysql
. Команда по умолчанию является запросом, который предназначен
для посылки серверу MySQL, за исключением тех случаев, когда она
распознается как внутренняя команда (напр. sleep
).
Все запросы, выдающие результаты, - например SELECT
, SHOW
, EXPLAIN
и
т.д. должны предваряться @/path/to/result/file
. Файл должен содержать
ожидаемые результаты. Такой файл результатов можно легко
сгенерировать, запустив mysqltest -r < t/test-case-name.test
из
каталога mysql-test
, а затем при необходимости можно отредактировать
сгенерированные файлы результатов для подгонки вывода к ожидаемому
виду. В этом случае следует быть особенно внимательным, чтобы не
добавить или удалить каких-либо невидимых символов - внимательно
следите за тем, чтобы только изменялся текст и/или удалялись строки.
Если необходимо вставить строку, то нужно следить за тем, чтобы поля
были разделены символами жесткой табуляции, и такой же символ жесткой
табуляции должен присутствовать в конце. Для проверки того, что
текстовый редактор ничего не напутал в процессе редактирования, может
пригодиться od -c
. Мы, конечно, надеемся, что никому не придется
редактировать вывод mysqltest -r
, поскольку потребность в этом
возникает только в случае обнаружения ошибки.
Чтобы получить соответствие нашей конфигурации, следует разместить
файлы результатов в каталоге mysql-test/r
и назвать их
test_name.result
. Если тест производит более одного результата,
следует использовать test_name.a.result
, test_name.b.result
и т.д.
Если команда возвращает ошибку, то необходимо в предыдущей строке
указать --error error-number
. error-number может
быть списком номеров
возможных ошибок, разделенных ','
.
При написании контрольного теста репликации необходимо в первой строке
тестового файла поместить source include/master-slave.inc;
. Для
переключения между головным и подчиненным серверами используется
connection master;
и connection slave;
. Если что-то требуется сделать
на дополнительном соединении, то можно выполнить connection master1
;
для головного и connection slave1;
для подчиненного.
Если необходимо что-либо выполнять в цикле, то можно использовать нечто в таком духе:
let $1=1000; while ($1) { # здесь выполняются ваши запросы dec $1; }
Для паузы между запросами используется команда sleep
. Она поддерживает
десятые доли секунды, таким образом можно, например, делать sleep 1.3;
для временной задержки в 1,3 секунды.
Чтобы для определенного контрольного теста запускать подчиненный
сервер с дополнительными опциями, нужно поместить эти опции в формате
командной строки в mysql-test/t/test_name-slave.opt
. Для головного
сервера опции помещаются в mysql-test/t/test_name-master.opt
.
Если у вас возникнут вопросы по тестовому пакету или если вы хотите
добавить контрольный тест, шлите e-mail на <internals@lists.mysql.com>
.
Поскольку в списке не допускаются присоединенные файлы, все нужные
файлы следует положить на: ftp://support.mysql.com/pub/mysql/Incoming/
© 1995-2005 MySQL AB. All rights reserved.