Executing bash script in gradle

26,517

That's weird

I created a task

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

that calls cl.sh file

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

that call 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

anyways you want to wait in the same thread from shutdown to start, and no need to call sleep too!

Share:
26,517

Related videos on Youtube

tkowal
Author by

tkowal

Computer science student 2008-13 Erlang developer since since 2011. Also interested in web development, large scale distributed systems.

Updated on June 05, 2020

Comments

  • tkowal
    tkowal about 4 years

    I am doing functional testing with geb.

    My application is deployed using virgo and uses HSQLDB to store data. I would like to perform tests on this working version of application, but I would like to start with empty database, every time I run webtests.

    I wrote a simple bash script

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

    which removes the database and restarts virgo.

    However, when I add it to my build.gradle task executing command never ends.

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

    Why is it this way? When I run this script in console it returns quickly (but virgo still writes to the console).

    I have tried to run it in separate thread, but I encountered following error:

    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.
    

    I also tried setting 'create-drop' in hibernate configuration, but it also requires restarting virgo. Even redeploying the application does not help.

    What should I do to run webtests with empty database?

    • Jared
      Jared about 12 years
      What happens if you remove the & symbols from the end of your commands? I don't see a need for you to execute your commands in the background. Does this fix that.