Pergunta

Gostaria de configurar alguns testes automatizados de casos de teste em cima binários Fortran dentro de um repositório SVN, sob demanda, ou com um trabalho Cron. Para complicar a questão um pouco, os casos de teste seria executado em um cluster computacional, de modo que cada caso de teste seria necessário para gerar um script PBS. (Linux Environment)

Há um monte de testes web e soluções de teste de unidade lá fora, no entanto, eu não poderia encontrar qualquer coisa para testar binários diretamente. Digamos, fornecer insumos, e comparar os resultados com a solução esperada.

Todas as sugestões sobre como isso deve se aproximou?

Foi útil?

Solução

Eu concordo que isso é algo que seria bastante simples para script. Dependendo de como seus binários são configurados e como diferente seus programas são um do outro, você poderia até mesmo incluir os scripts de teste como parte de seu repositório SVN.

Uma vez que você está em um sistema de lotes, você tem um pouco de liberdade para agendar os testes. Você pode querer ter um "verificar" trabalho genérico que você pode fornecer parâmetros de configuração para (por exemplo, para locais de saída de saída do programa esperado e real). Nick mencionado usando grep para verificar a saída de qstat para o seu ID do trabalho, mas você pode dizer PBS para manter um emprego até que outro concluída emprego. Isto significa que você tem algo como:

...
#PBS -N run_test_1
#PBS -a 200906270000
...
<compile test>
<run test>
<save output>

quando submetidos, senão o ID do trabalho retornado por qsub (como você faz isso depende de sua plataforma - geralmente algo como job_id=$(qsub $JOB_FILE) é suficiente). Em seguida, ligue esse valor em outro script:

...
#PBS -N verify_test_1
#PBS -W depend=afterany:$job_id
<run comparison>
...

Esta vontade (quando o valor adequado de job_id é inserido) realizar a execução do teste de funcionamento até meia-noite no dia 27 de junho de 2009, e mantenha a execução do trabalho de verificação até que os concluída trabalho de teste (a directiva afterany indica que ele deve sempre correr atrás do primeiro emprego -. não apenas se for bem sucedida)

Dependendo tempo de resposta do seu cluster, porém, você poderia colocar tudo isso em um roteiro, mas você ainda pode usar o PBS tempo baseada em detém apenas executado em um momento particular. Eu recentemente comecei a usar Python em vez de shell scripts para lidar com trabalhos ainda esta relacionado sistema-- Eu testei ontem fazendo o executável script Python e adicionando as directivas PBS direto para a fonte -. Isso parecia funcionar muito bem

Outras dicas

Pode haver uma resposta melhor que é mais pré-embalados, mas acredito que Buildbot é suficiente configurável que, enquanto você pode escrever um script python para executar o seu binário, ele deve trabalhar para o que você quer.

http://buildbot.net/

Parece que para a entrada simples / saída testando você poderia bater um script se para fazer isso ...

por exemplo.

for each program
    compile
    submit to queue
    wait for finish
    check output

Na prática, você provavelmente gostaria de apresentar mais de uma tarefa para a fila, mas a ideia é a mesma.

Aqui estão algumas ideias em cima da minha cabeça sobre como você poderia fazer cada passo.

Envio

Você pode usar um script PBS modelo e uso sed para encontrar / substituir intput fichas com valores de entrada para o programa antes de enviar

Esperando pela chegada

Você poderia repetidamente grep a saída do qstat para o seu ID de trabalho, esperar que ela termine

Verifique a saída

Verificar arquivo de saída do trabalho contra a saída esperada. Você poderia salvar a saída esperado para um diff processo e utilização, ou ter uma lista de expressão regular que deve corresponder para cada execução

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top