私はgebで機能テストを行っています。
私のアプリケーションは virgo を使用してデプロイされ、HSQLDB を使用してデータを保存します。この動作中のバージョンのアプリケーションでテストを実行したいのですが、webtest を実行するたびに空のデータベースから開始したいと考えています。
簡単なbashスクリプトを書きました
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
これにより、データベースが削除され、virgo が再起動されます。
ただし、それを 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.
ハイバネート構成で「create-drop」も設定しようとしましたが、virgoの再起動も必要です。アプリケーションを再デプロイしても役に立ちません。
空のデータベースで Web テストを実行するにはどうすればよいですか?