Extendendo o Pacote de Teste do MariaDB
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 comandoMariaDB
. 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 é executarmysqltest -r < t/test-case-name.test
do diretóriomysql-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 utilizarod -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 demysqltest -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 comotest_name.result
. Se o teste produzir mais de um resultado, você deve usartest_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, utilizeconnection master;
econnection slave;
. se você precisar fazer alguma coisa em uma conexão alternativa, você pode fazerconnection master1;
para o master econnection 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 fazersleep 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 emmysql-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 MariaDB. Leia "As Listas de Discussão do MariaDB". Como a lista não aceita anexos, você deve utilizar o ftp para enviar os arquivos relevantes: ftp://support.mysql.com/pub/mysql/Incoming/