annotate test/gc/6941923/test6941923.sh @ 8831:04d6d4322c6a

8009152: A number of jtreg tests need review/improvement Summary: Added a new test_env.txt file to capture common shell variable. Added concept of COMPILEJAVA for use when TESTJAVA is a JRE. If COMPILEJAVA not set then TESTJAVA will be the default with assumption it is a JDK. Reviewed-by: kvn, brutisso, coleenp
author collins
date Wed, 27 Mar 2013 09:49:51 -0700
parents 83b6305a5638
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
1 ##
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
2 ## @test @(#)test6941923.sh
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
3 ## @bug 6941923
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
4 ## @summary test new added flags for gc log rotation
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
5 ## @author yqi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
6 ## @run shell test6941923.sh
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
7 ##
8831
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
8 ## some tests require path to find test source dir
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
9 if [ "${TESTSRC}" = "" ]
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
10 then
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
11 TESTSRC=${PWD}
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
12 echo "TESTSRC not set. Using "${TESTSRC}" as default"
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
13 fi
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
14 echo "TESTSRC=${TESTSRC}"
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
15 ## Adding common setup Variables for running shell tests.
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
16 . ${TESTSRC}/../../test_env.sh
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
17
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
18 ## skip on windows
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
19 OS=`uname -s`
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
20 case "$OS" in
6635
83b6305a5638 7191926: Remove MKS dependency in Hotspot regression tests
coleenp
parents: 6598
diff changeset
21 Windows_* | CYGWIN_* )
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
22 echo "Test skipped for Windows"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
23 exit 0
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
24 ;;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
25 esac
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
26
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
27 # create a small test case
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
28 testname="Test"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
29 if [ -e ${testname}.java ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
30 rm -rf ${testname}.*
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
31 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
32
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
33 cat >> ${testname}.java << __EOF__
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
34 import java.util.Vector;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
35
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
36 public class Test implements Runnable
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
37 {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
38 private boolean _should_stop = false;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
39
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
40 public static void main(String[] args) throws Exception {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
41
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
42 long limit = Long.parseLong(args[0]) * 60L * 1000L; // minutes
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
43 Test t = new Test();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
44 t.set_stop(false);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
45 Thread thr = new Thread(t);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
46 thr.start();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
47
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
48 long time1 = System.currentTimeMillis();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
49 long time2 = System.currentTimeMillis();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
50 while (time2 - time1 < limit) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
51 try {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
52 Thread.sleep(2000); // 2 seconds
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
53 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
54 catch(Exception e) {}
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
55 time2 = System.currentTimeMillis();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
56 System.out.print("\r... " + (time2 - time1)/1000 + " seconds");
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
57 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
58 System.out.println();
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
59 t.set_stop(true);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
60 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
61 public void set_stop(boolean value) { _should_stop = value; }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
62 public void run() {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
63 int cap = 20000;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
64 int fix_size = 2048;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
65 int loop = 0;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
66 Vector< byte[] > v = new Vector< byte[] >(cap);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
67 while(!_should_stop) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
68 byte[] g = new byte[fix_size];
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
69 v.add(g);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
70 loop++;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
71 if (loop > cap) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
72 v = null;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
73 cap *= 2;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
74 if (cap > 80000) cap = 80000;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
75 v = new Vector< byte[] >(cap);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
76 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
77 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
78 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
79 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
80 __EOF__
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
81
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
82 msgsuccess="succeeded"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
83 msgfail="failed"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
84 gclogsize="16K"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
85 filesize=$((16*1024))
8831
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
86 ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${testname}.java > $NULL 2>&1
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
87
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
88 if [ $? != 0 ]; then
8831
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
89 echo "${COMPILEJAVA}/bin/javac ${testname}.java $fail"
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
90 exit -1
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
91 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
92
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
93 # test for 2 minutes, it will complete circulation of gc log rotation
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
94 tts=2
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
95 logfile="test.log"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
96 hotspotlog="hotspot.log"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
97
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
98 if [ -e $logfile ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
99 rm -rf $logfile
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
100 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
101
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
102 #also delete $hotspotlog if it exists
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
103 if [ -f $hotspotlog ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
104 rm -rf $hotspotlog
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
105 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
106
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
107 options="-Xloggc:$logfile -XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=$gclogsize"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
108 echo "Test gc log rotation in same file, wait for $tts minutes ...."
8831
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
109 ${TESTJAVA}/bin/java $options $testname $tts
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
110 if [ $? != 0 ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
111 echo "$msgfail"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
112 exit -1
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
113 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
114
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
115 # rotation file will be $logfile.0
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
116 if [ -f $logfile.0 ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
117 outfilesize=`ls -l $logfile.0 | awk '{print $5 }'`
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
118 if [ $((outfilesize)) -ge $((filesize)) ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
119 echo $msgsuccess
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
120 else
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
121 echo $msgfail
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
122 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
123 else
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
124 echo $msgfail
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
125 exit -1
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
126 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
127
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
128 # delete log file
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
129 rm -rf $logfile.0
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
130 if [ -f $hotspotlog ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
131 rm -rf $hotspotlog
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
132 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
133
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
134 #multiple log files
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
135 numoffiles=3
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
136 options="-Xloggc:$logfile -XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=$numoffiles -XX:GCLogFileSize=$gclogsize"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
137 echo "Test gc log rotation in $numoffiles files, wait for $tts minutes ...."
8831
04d6d4322c6a 8009152: A number of jtreg tests need review/improvement
collins
parents: 6635
diff changeset
138 ${TESTJAVA}/bin/java $options $testname $tts
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
139 if [ $? != 0 ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
140 echo "$msgfail"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
141 exit -1
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
142 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
143
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
144 atleast=0 # at least size of numoffile-1 files >= $gclogsize
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
145 tk=0
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
146 while [ $(($tk)) -lt $(($numoffiles)) ]
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
147 do
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
148 if [ -f $logfile.$tk ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
149 outfilesize=`ls -l $logfile.$tk | awk '{ print $5 }'`
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
150 if [ $(($outfilesize)) -ge $(($filesize)) ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
151 atleast=$((atleast+1))
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
152 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
153 fi
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
154 tk=$((tk+1))
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
155 done
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
156
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
157 rm -rf $logfile.*
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
158 rm -rf $testname.*
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
159 rm -rf $hotspotlog
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
160
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
161 if [ $(($atleast)) -ge $(($numoffiles-1)) ]; then
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
162 echo $msgsuccess
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
163 else
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
164 echo $msgfail
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
165 exit -1
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents:
diff changeset
166 fi