Wykonywanie skryptu bash w stopniach

Robię testy funkcjonalne z geb.

Moja aplikacja jest wdrażana przy użyciu virgo i używa HSQLDB do przechowywania danych. Chciałbym przeprowadzić testy na tej działającej wersji aplikacji, ale chciałbym zacząć od pustej bazy danych, za każdym razem, gdy uruchamiam webtesty.

Napisałem prosty skrypt basha

#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &

który usuwa bazę danych i ponownie uruchamia virgo.

Jednak po dodaniu go do mojego polecenia wykonanie zadania build.gradle nigdy się nie kończy.

task cleanDB(type: Exec) {
    commandLine './clean.sh' 
}

Dlaczego tak jest? Kiedy uruchamiam ten skrypt w konsoli, szybko wraca (ale virgo wciąż pisze do konsoli).

Próbowałem uruchomić go w osobnym wątku, ale napotkałem następujący błąd:

task cleanDBThread()<<{
    def cleanDBThread1 = Thread.start {
         cleanDB.execute()
    }
    sleep 10000
    println "wake up!"
}

Exception in thread "Thread-32" java.lang.IllegalStateException:
Cannot start long running operation, as the task artifact state cache
(/home/tomasz/ares/.gradle/1.0-milestone-9/taskArtifacts) has not been locked.

Próbowałem także ustawić 'create-drop' w konfiguracji hibernacji, ale wymaga to również ponownego uruchomienia virgo. Nawet ponowne wdrożenie aplikacji nie pomaga.

Co powinienem zrobić, aby uruchomić webtesty z pustą bazą danych?

questionAnswers(1)

yourAnswerToTheQuestion