Sto eseguendo test funzionali con geb.Esecuzione di script bash in gradle
La mia applicazione viene distribuita utilizzando virgo e utilizza HSQLDB per archiviare i dati. Vorrei eseguire dei test su questa versione di applicazione funzionante, ma vorrei iniziare con un database vuoto, ogni volta che eseguo webtest.
Ho scritto un semplice script bash
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
che rimuove il database e riavvia virgo.
Tuttavia, quando lo aggiungo al comando build.gradle il comando di esecuzione non termina mai.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
Perché è così? Quando eseguo questo script in console, restituisce rapidamente (ma vergine scrive ancora nella console).
ho cercato di eseguirlo in thread separato, ma incontrato seguente errore:
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.
Ho anche provato modificando 'creare-drop' in configurazione di sospensione, ma richiede anche il riavvio vergine. Anche ridistribuire l'applicazione non aiuta.
Cosa devo fare per eseguire test Web con database vuoto?
Cosa succede se rimuovi i simboli & dalla fine dei tuoi comandi? Non vedo la necessità che tu esegua i tuoi comandi in background. Questo risolve questo. – Jared