Executarea scriptului bash în grală

Fac teste funcționale cu geb.

Aplicația mea este implementată folosind virgo și utilizează HSQLDB pentru a stoca date. Aș dori să fac teste pe această versiune de lucru a aplicației, dar aș vrea să încep cu o bază de date goală, de fiecare dată când rulez teste web.

Am scris un script de bash simplu

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

care elimină baza de date și repornește virgo.

Cu toate acestea, atunci când o adaug la task-ul meu build.gradle, comanda de execuție nu se termină niciodată.

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

De ce este așa? Când rulez acest script în consola se întoarce rapid (dar virgo scrie încă la consola).

Am încercat să-l execut în fire separate, dar am întâlnit următoarea eroare:

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.

De asemenea, am încercat setarea "create-drop" în configurația de hibernare, dar de asemenea necesită repornirea virgo. Chiar și redistribuirea aplicației nu ajută.

Ce trebuie să fac pentru a rula descărcările web cu baza de date goală?

0
Ce se întâmplă dacă eliminați & simbolurile de la sfârșitul comenzilor dvs.? Nu văd nevoia să executați comenzile în fundal. Asta repară asta.
adăugat autor Jared, sursa

1 răspunsuri

Este ciudat

Am creat o sarcină

task callCL(type: Exec) {
    commandLine './cl.sh'
}

care solicită fișierul cl.sh

#!/bin/sh
echo "starting "
./acl.sh &
sleep 10
./acl.sh &

care numesc acl.sh

#!/bin/sh
echo "I am not doing anything"

and it worked! but one thing though, when you add ./acl.sh ampersand character & you're calling the task from a different thread that started gradle, and kinda looks like it's hanging. I would remove the & from your calls to shutdown and start like this

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

oricum doriți să așteptați în același thread de la oprire pentru a începe, și nu este nevoie de a apela prea somn!

0
adăugat