私はgebで機能テストをしています。バックグラウンドでbashスクリプトを実行
私のアプリケーションはvirgoを使ってデプロイされ、HSQLDBを使ってデータを格納します。私はこの作業バージョンのアプリケーションでテストを実行したいと思いますが、Webテストを実行するたびに、空のデータベースから始めたいと思います。
私は、データベースを削除し、乙女座を再起動し、簡単なbashスクリプト
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
を書きました。
しかし、私はそれを私のbuild.gradleタスクに追加すると、コマンドは実行されません。
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
なぜこのようになりますか?コンソールでこのスクリプトを実行すると、すぐに復帰します(しかし、コンソールにはまだvirgoが書き込まれます)。私は別のスレッドでそれを実行しようとしましたが、私はエラーが以下の遭遇
:
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.
また、私は「を作成・ドロップ」をHibernate設定で設定しようとしたが、それはまた、乙女座の再起動が必要です。アプリケーションを再デプロイしても役立たない。
空のデータベースでWebテストを実行するにはどうすればよいですか?私はcl.shファイル
acl.sh#!/bin/sh
echo "I am not doing anything"
を呼び出す
#!/bin/sh
echo "starting "
./acl.sh &
sleep 10
./acl.sh &
呼び出すタスク
task callCL(type: Exec) {
commandLine './cl.sh'
}
を作成し、それが働いた
奇妙な
コマンドの最後から&を削除するとどうなりますか?あなたの命令をバックグラウンドで実行する必要はありません。これで修正されますか? – Jared