.veb, executar testes de regressão e depurar falhas. Ele é o complemento de Criando Extensões em C++, que cobre a compilação inicial, e de Desenvolvimento em C++, que aprofunda a criação de VDFs.
Se você estiver contribuindo com o próprio servidor VillageSQL (e não construindo uma extensão), consulte o Guia de Desenvolvimento do Servidor, que cobre a execução das suítes do servidor diretamente com o
mysql-test-run.pl, além da depuração e do fluxo de trabalho de contribuição.Configurando Seu Ambiente
Para desenvolver e testar extensões, você precisa de um servidor VillageSQL compilado. Siga o guia Clone e Compile a Partir do Código-Fonte para compilar os binários do servidor. Use a CLIvillagesql de um pacote de release do VillageSQL para gerenciar uma instância local de servidor de desenvolvimento; uma árvore de compilação a partir do código-fonte não a inclui. Execute todos os comandos a partir do diretório raiz do pacote.
Iniciando um Servidor de Desenvolvimento Local
Inicialize e inicie uma instância de servidor:--; tudo o que vier depois dele é encaminhado literalmente para o mysqld:
-- é rejeitado, portanto use -- para toda flag destinada ao mysqld.
Passe --dir <path> antes de qualquer comando para gerenciar múltiplas instâncias independentes, ou use --here para criar um diretório de servidor no diretório de trabalho atual:
Gerenciando Arquivos de Extensão
Antes de instalar uma extensão via SQL, seu arquivo.veb precisa estar presente no servidor. A CLI gerencia o diretório veb da instância em execução (instances/default/veb/ por padrão, <dir>/veb ao usar --dir, ou .vsql_here/veb ao usar --here):
lib/veb/ na raiz do pacote é apenas a fonte de semeadura única: os arquivos .veb colocados ali antes do init são copiados para o diretório veb da nova instância quando a instância é criada, e lib/veb/ não é tocado depois disso. Após adicionar um arquivo, instale a extensão via SQL:
Executando Testes de Regressão
Execute os testes de regressão de extensões usando o MySQL Test Runner a partir do diretório de compilação do seu VillageSQL.Executando a Suíte Completa
Para executar todos os testes da sua extensão:Executando Testes Individuais
Para executar um único caso de teste, especifique o caminho da suíte e o nome do teste:Criando Novos Testes
Ao adicionar novos recursos ou corrigir bugs, você deve adicionar testes de regressão correspondentes.Local dos Testes
Os testes de extensão ficam no próprio repositório da extensão, sob um diretóriomysql-test/ — e não na árvore mysql-test/suite/ do servidor VillageSQL.
- Arquivos de teste terminam com
.teste vão emmysql-test/t/. - Arquivos de resultado esperado terminam com
.resulte vão emmysql-test/r/.
my_extension:
mysql-test/t/my_new_test.testmysql-test/r/my_new_test.result
Convenções de Arquivos de Teste
Um teste de extensão típico instala a extensão, executa SQL e desinstala:Passos para Adicionar um Teste
- Crie o arquivo
.testno diretóriomysql-test/t/da sua extensão. - Crie um arquivo
.resultvazio no diretóriomysql-test/r/da sua extensão. - Execute o teste com
--recordpara gerar a saída esperada: - Verifique a saída no arquivo
.resultgerado para garantir que ela corresponde às suas expectativas.
Depurando Testes
Se um teste falhar, o framework de testes fornece logs detalhados.- Saída do teste: Verifique
mysql-test/var/log/mysqltest.log(combinado) oumysql-test/var/log/<test_name>.log(por teste). - Log de erros do servidor: Verifique
mysql-test/var/log/mysqld.1.err. Mensagens de log específicas do VillageSQL (emitidas viaLogVSQL()) no nível de informação aparecem quando o servidor é executado com--log-error-verbosity=3, que é o padrão para servidores de teste. - Diff: O framework gera um diff entre a saída real e o arquivo
.resultesperado.
Veja Também
- Testando Extensões Dependentes de Rede — padrões confiáveis de MTR para extensões que iniciam servidores HTTP ou listeners externos
- Criando Extensões em C++ — passos de compilação de ponta a ponta, configuração do CMake e instalação
- Desenvolvimento em C++ — aprofundamento na criação de VDFs, tipos de argumento e resultado, agregações, varargs
- Referência da API C++ — contratos de VDF, tratamento de nulos e dimensionamento de buffer

