.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 Compilar a Partir do Código-Fonte, que cobre o fluxo de trabalho completo do desenvolvedor do servidor, incluindo a execução de testes diretamente com o
mysql-test-run.pl.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. Depois de ter uma compilação, use a CLIvillagesql para gerenciar uma instância local de servidor de desenvolvimento. Execute todos os comandos a partir do diretório onde o VillageSQL foi instalado.
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 lib/veb/ do servidor:
.veb colocados em lib/veb/ antes do init são semeados automaticamente. 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:.test para normalizá-los — sem ela, os resultados registrados contêm caminhos absolutos que quebram em outras máquinas:
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>/(diretório por teste). - Log de erros do servidor: Verifique
mysql-test/var/log/mysqld.1.err. Mensagens de log específicas do VillageSQL (emitidas viaLogVSQL()) só aparecem quando o servidor é executado com--log-error-verbosity=3. - 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

