Bash script in gradle ausführen
Ich mache Funktionstests mit geb.
Meine Anwendung wird mit virgo bereitgestellt und verwendet HSQLDB zum Speichern von Daten. Ich würde gerne Tests mit dieser funktionierenden Version der Anwendung durchführen, aber ich möchte jedes Mal, wenn ich Webtests durchführe, mit einer leeren Datenbank beginnen.
Ich habe ein einfaches Bash-Skript geschrieben
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
Dadurch wird die Datenbank entfernt und virgo neu gestartet.
Wenn ich es meinem build.gradle-Task-Ausführungsbefehl hinzufüge, endet es jedoch nie.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
Warum ist es so? Wenn ich dieses Skript in der Konsole ausführe, kehrt es schnell zurück (Virgo schreibt jedoch weiterhin in die Konsole).
Ich habe versucht, es in einem separaten Thread auszuführen, bin jedoch auf folgenden Fehler gestoßen:
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.
Ich habe auch versucht, "create-drop" in der Ruhezustand-Konfiguration einzustellen, aber es erfordert auch einen Neustart von virgo. Auch die erneute Bereitstellung der Anwendung hilft nicht.
Was kann ich tun, um Webtests mit leerer Datenbank durchzuführen?