Usando o bash para garantir que um programa tenha tido tempo para iniciar antes de iniciar outro

1

Eu tenho um problema com o seguinte script:

#Install and start application
./gradlew assemble
java -jar bignibou-server/build/libs/bignibou-server.jar&

#Run end2end tests
node_modules/.bin/protractor bignibou-client/protractor.conf.js

A primeira parte do script inicia um aplicativo java e a segunda parte executa testes end2end nesse aplicativo java.

O problema é que os testes end2end são executados antes que o aplicativo java tenha realmente iniciado corretamente.

O bash pode me ajudar aqui? Usar o & é a causa do meu problema. Qual é a maneira correta de terminar o comando java -jar ?

    
por balteo 10.11.2015 / 22:49

1 resposta

3

Seu uso de & para segundo plano no primeiro processo está correto aqui, já que presumo que bignibou-server precisa estar em execução durante seus testes?

De longe, o método mais simples de introduzir um atraso antes de iniciar seus testes é usar o comando sleep:

./gradlew assemble
java -jar bignibou-server/build/libs/bignibou-server.jar &

sleep 60

node_modules/.bin/protractor bignibou-client/protractor.conf.js

Isso adicionaria um atraso de 60 segundos antes do início dos testes. Veja man sleep para mais informações.

    
por 10.11.2015 / 23:07