Для создания собственных
контрольных тестов можно
использовать язык
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/
This is a translation of the MySQL Reference Manual that can be found at dev
