1
|
#!/bin/bash
|
2
|
#Call a java client class to query metacat automatically and metacat server
|
3
|
#will record the performance data into a file. This script will be put in /etc/init.d directory
|
4
|
#and called in system booting. After script is down, it will call reboot system too.
|
5
|
#So every time to excecute the quyer, memory will be in fresh.
|
6
|
#Note: before running the script, user should run both "ant jar" and "ant clientjar"
|
7
|
#in Metacat to get metaca-client.jar and metacat.jar in build directory.
|
8
|
|
9
|
#variables
|
10
|
JUNIT=/usr/local/devtools/apache-ant/lib/junit-4.3.1.jar
|
11
|
PROJECT=/home/tao/project/metacat
|
12
|
METACAT=$PROJECT/build/metacat.jar
|
13
|
METACAT_CLIENT=$PROJECT/build/metacat-client.jar
|
14
|
UTILITIES=$PROJECT/lib/utilities.jar
|
15
|
METACATURL=http://chico.dyndns.org:8081/knb/metacat
|
16
|
QUERY=$PROJECT/test/performance_measure_query
|
17
|
TIMEFILE=$PROJECT/test/times
|
18
|
TOMCATUSER=tao
|
19
|
|
20
|
#copy the java client to build directory
|
21
|
rm -rf $PROJECT/build/tests/
|
22
|
mkdir $PROJECT/build/tests
|
23
|
mkdir $PROJECT/build/tests/edu
|
24
|
mkdir $PROJECT/build/tests/edu/ucsb
|
25
|
mkdir $PROJECT/build/tests/edu/ucsb/nceas
|
26
|
mkdir $PROJECT/build/tests/edu/ucsb/nceas/metacattest
|
27
|
cp $PROJECT/test/edu/ucsb/nceas/metacattest/MetaCatQueryPerformanceTest.java $PROJECT/build/tests/edu/ucsb/nceas/metacattest/.
|
28
|
|
29
|
#compile the class
|
30
|
javac -classpath $JUNIT:$METACAT:$METACAT_CLIENT:$UTILITIES $PROJECT/build/tests/edu/ucsb/nceas/metacattest/MetaCatQueryPerformanceTest.java
|
31
|
|
32
|
|
33
|
case "$1" in
|
34
|
start)
|
35
|
echo "Starting running query script"
|
36
|
#Iterate to restart postgres and tomcat, and call java client class
|
37
|
TIMES=`cat $TIMEFILE`
|
38
|
echo "The value from TIMEFILE is $TIMES"
|
39
|
#if times greater than 0, it will query the metacat
|
40
|
if [ $TIMES -gt 0 ]
|
41
|
then
|
42
|
#Check if postgres start successfully
|
43
|
successPQL=false;
|
44
|
while [ $successPQL = false ]
|
45
|
do
|
46
|
#if found netstat command has posgres lisenter is ready,
|
47
|
#reset the success value to jump the while loop.
|
48
|
for fn in `netstat -plt | grep postgres`
|
49
|
do
|
50
|
#reset success value
|
51
|
successPQL=true
|
52
|
done
|
53
|
done
|
54
|
echo "success value for starting postgres is $successPQL"
|
55
|
#Check if tomcat start successfully
|
56
|
successStart=false;
|
57
|
while [ $successStart = false ]
|
58
|
do
|
59
|
#if found netstat command has tcomat lisenter (port 8005) is ready,
|
60
|
#reset the success value to jump the while loop.
|
61
|
for fn in `netstat -plt | grep 8005`
|
62
|
do
|
63
|
#reset success value
|
64
|
successStart=true
|
65
|
done
|
66
|
done
|
67
|
echo "success value for starting tomcat is $successStart"
|
68
|
#run the class -- query the remote metacat
|
69
|
java -cp $JUNIT:$METACAT:$METACAT_CLIENT:$UTILITIES:$PROJECT/build/tests edu.ucsb.nceas.metacattest.MetaCatQueryPerformanceTest $METACATURL $QUERY
|
70
|
echo "Successfully query the metacat"
|
71
|
#Drecease 1 from value of TIMES
|
72
|
TIMES=`expr $TIMES - 1`
|
73
|
echo "The new TIMES value is $TIMES"
|
74
|
#write the new TIMES to the file
|
75
|
echo $TIMES >$TIMEFILE
|
76
|
#reboot machine
|
77
|
reboot
|
78
|
fi
|
79
|
;;
|
80
|
stop)
|
81
|
echo "Stopping running query script - do nothing"
|
82
|
;;
|
83
|
*)
|
84
|
echo "Usage: /etc/init.d/blah {start|stop}"
|
85
|
exit 1
|
86
|
;;
|
87
|
esac
|
88
|
|
89
|
exit 0
|
90
|
|