Você pode utilizar a linguagem mysqltest
para escrever o seu próprio caso de teste. Infelizmente nós
ainda não escrevemos a documentação completa para ela.
Você pode, no entanto, olhar os nosso casos de teste atuais e
usá-los como um exemplo. O seguintes pontos devem ajudá-lo a
começar:
Os teste estão localizados em
mysql-test/t/*.test
Um caso de teste consiste de instruções terminadas em
;
e é similar a entrada do cliente de
linha de comando mysql
. Uma instrução
por padrão é uma consulta a ser enviada ao servidor
MySQL, a menos que ele seja reconhecido como um comando
insterno (ex. sleep
).
Todas as consultas que produzem resultados¯ex.,
SELECT
, SHOW
,
EXPLAIN
, etc., devem ser precedidas com
@/path/to/result/file
. O arquivo deve
conter os resultados esperados. Um modo fácil de gerar o
arquivo resultante é executar mysqltest -r <
t/test-case-name.test
do diretório
mysql-test
, e então editar o arquivo
resultante gerado e, se necessário, ajustá-los a saída
esperada. Neste caso, tenha cuidado de não adicionar ou
deletar quaisquer caracteres invisíveis - tenha certeza
de apenas alterar o texto e/ou adicionar linhas deletadas.
Se você tiver que inserir uma linha, esteja certo que os
campos são separados com tabulação e que há uma
tabulação no final. Você pode querer utilizar
od -c
para ter certeza que seu editor
de texto não bagunçõu nada durante a edição. Nós, é
claro, esperamos que você nunca tenha que editar a saída
de mysqltest -r
já que você só
deverá fazê-lo quando encontra um bug.
Para estar consistente com a nossa configuração, você
deve colocar seus arquivos de resultados no diretório
mysql-test/r
e o nomeie como
test_name.result
. Se o teste produzir
mais de um resultado, você deve usar
test_name.a.result
,
test_name.b.result
, etc.
Se uma instrução retornar um erro, você eve espacificar
na linha anterior a instrução com --error
error-number
. O número do erro pode ser uma
lista de números de erros possíveis separados com
','
.
Se você estiver escrevendo em teste de replicação,
você deve coloca source
include/master-slave.inc;
na primeira linha do
arquivo. Para trocar entre master e slave, utilize
connection master;
e
connection slave;
. se você precisar
fazer alguma coisa em uma conexão alternativa, você pode
fazer connection master1;
para o master
e connection slave1;
para o slave.
Se você precisar fazer alguma coisa em um loop, você pode usar algo assim:
let $1=1000; while ($1) { # do your queries here dec $1; }
Para 'dormir' entre consultas, use o comando
sleep
. Ele suporta frações de um
segundo, assim você pode fazer sleep
1.3;
, por exemplo, para dormir 1.3 segundos.
Para executar o slave com opções adicionais para o seu
caso de teste, coloque-os na formato de linha de comando
mysql-test/t/test_name-slave.opt
. Para
o master, coloque-os em
mysql-test/t/test_name-master.opt
.
Se você tiver uma questão sobre o pacote de testes, ou tiver um caso de teste para contribuir, envie um e-mail para lista de email ``internals'' do MySQL. See Secção 1.7.1.1, “As Listas de Discussão do MySQL”. Como a lista não aceita anexos, você deve utilizar o ftp para enviar os arquivos relevantes: ftp://support.mysql.com/pub/mysql/Incoming/
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.