Wed, 29 Aug 2012 14:49:05 -0400
7191926: Remove MKS dependency in Hotspot regression tests
Summary: Add case for CYGWIN in .sh files.
Reviewed-by: coleenp, kvn
Contributed-by: pavel.punegov@oracle.com
minqi@2964 | 1 | ## |
minqi@2964 | 2 | ## @test @(#)test6941923.sh |
minqi@2964 | 3 | ## @bug 6941923 |
minqi@2964 | 4 | ## @summary test new added flags for gc log rotation |
minqi@2964 | 5 | ## @author yqi |
minqi@2964 | 6 | ## @run shell test6941923.sh |
minqi@2964 | 7 | ## |
minqi@2964 | 8 | |
minqi@2964 | 9 | ## skip on windows |
minqi@2964 | 10 | OS=`uname -s` |
minqi@2964 | 11 | case "$OS" in |
coleenp@3985 | 12 | SunOS | Linux | Darwin ) |
minqi@2964 | 13 | NULL=/dev/null |
minqi@2964 | 14 | PS=":" |
minqi@2964 | 15 | FS="/" |
minqi@2964 | 16 | ;; |
coleenp@4022 | 17 | Windows_* | CYGWIN_* ) |
minqi@2964 | 18 | echo "Test skipped for Windows" |
minqi@2964 | 19 | exit 0 |
minqi@2964 | 20 | ;; |
minqi@2964 | 21 | * ) |
minqi@2964 | 22 | echo "Unrecognized system!" |
minqi@2964 | 23 | exit 1; |
minqi@2964 | 24 | ;; |
minqi@2964 | 25 | esac |
minqi@2964 | 26 | |
minqi@2964 | 27 | if [ "${JAVA_HOME}" = "" ] |
minqi@2964 | 28 | then |
minqi@2964 | 29 | echo "JAVA_HOME not set" |
minqi@2964 | 30 | exit 0 |
minqi@2964 | 31 | fi |
minqi@2964 | 32 | |
kevinw@3777 | 33 | $JAVA_HOME/bin/java ${TESTVMOPTS} -version > $NULL 2>&1 |
minqi@2964 | 34 | |
minqi@2964 | 35 | if [ $? != 0 ]; then |
minqi@2964 | 36 | echo "Wrong JAVA_HOME? JAVA_HOME: $JAVA_HOME" |
minqi@2964 | 37 | exit $? |
minqi@2964 | 38 | fi |
minqi@2964 | 39 | |
minqi@2964 | 40 | # create a small test case |
minqi@2964 | 41 | testname="Test" |
minqi@2964 | 42 | if [ -e ${testname}.java ]; then |
minqi@2964 | 43 | rm -rf ${testname}.* |
minqi@2964 | 44 | fi |
minqi@2964 | 45 | |
minqi@2964 | 46 | cat >> ${testname}.java << __EOF__ |
minqi@2964 | 47 | import java.util.Vector; |
minqi@2964 | 48 | |
minqi@2964 | 49 | public class Test implements Runnable |
minqi@2964 | 50 | { |
minqi@2964 | 51 | private boolean _should_stop = false; |
minqi@2964 | 52 | |
minqi@2964 | 53 | public static void main(String[] args) throws Exception { |
minqi@2964 | 54 | |
minqi@2964 | 55 | long limit = Long.parseLong(args[0]) * 60L * 1000L; // minutes |
minqi@2964 | 56 | Test t = new Test(); |
minqi@2964 | 57 | t.set_stop(false); |
minqi@2964 | 58 | Thread thr = new Thread(t); |
minqi@2964 | 59 | thr.start(); |
minqi@2964 | 60 | |
minqi@2964 | 61 | long time1 = System.currentTimeMillis(); |
minqi@2964 | 62 | long time2 = System.currentTimeMillis(); |
minqi@2964 | 63 | while (time2 - time1 < limit) { |
minqi@2964 | 64 | try { |
minqi@2964 | 65 | Thread.sleep(2000); // 2 seconds |
minqi@2964 | 66 | } |
minqi@2964 | 67 | catch(Exception e) {} |
minqi@2964 | 68 | time2 = System.currentTimeMillis(); |
minqi@2964 | 69 | System.out.print("\r... " + (time2 - time1)/1000 + " seconds"); |
minqi@2964 | 70 | } |
minqi@2964 | 71 | System.out.println(); |
minqi@2964 | 72 | t.set_stop(true); |
minqi@2964 | 73 | } |
minqi@2964 | 74 | public void set_stop(boolean value) { _should_stop = value; } |
minqi@2964 | 75 | public void run() { |
minqi@2964 | 76 | int cap = 20000; |
minqi@2964 | 77 | int fix_size = 2048; |
minqi@2964 | 78 | int loop = 0; |
minqi@2964 | 79 | Vector< byte[] > v = new Vector< byte[] >(cap); |
minqi@2964 | 80 | while(!_should_stop) { |
minqi@2964 | 81 | byte[] g = new byte[fix_size]; |
minqi@2964 | 82 | v.add(g); |
minqi@2964 | 83 | loop++; |
minqi@2964 | 84 | if (loop > cap) { |
minqi@2964 | 85 | v = null; |
minqi@2964 | 86 | cap *= 2; |
minqi@2964 | 87 | if (cap > 80000) cap = 80000; |
minqi@2964 | 88 | v = new Vector< byte[] >(cap); |
minqi@2964 | 89 | } |
minqi@2964 | 90 | } |
minqi@2964 | 91 | } |
minqi@2964 | 92 | } |
minqi@2964 | 93 | __EOF__ |
minqi@2964 | 94 | |
minqi@2964 | 95 | msgsuccess="succeeded" |
minqi@2964 | 96 | msgfail="failed" |
minqi@2964 | 97 | gclogsize="16K" |
minqi@2964 | 98 | filesize=$((16*1024)) |
minqi@2964 | 99 | $JAVA_HOME/bin/javac ${testname}.java > $NULL 2>&1 |
minqi@2964 | 100 | |
minqi@2964 | 101 | if [ $? != 0 ]; then |
minqi@2964 | 102 | echo "$JAVA_HOME/bin/javac ${testname}.java $fail" |
minqi@2964 | 103 | exit -1 |
minqi@2964 | 104 | fi |
minqi@2964 | 105 | |
minqi@2964 | 106 | # test for 2 minutes, it will complete circulation of gc log rotation |
minqi@2964 | 107 | tts=2 |
minqi@2964 | 108 | logfile="test.log" |
minqi@2964 | 109 | hotspotlog="hotspot.log" |
minqi@2964 | 110 | |
minqi@2964 | 111 | if [ -e $logfile ]; then |
minqi@2964 | 112 | rm -rf $logfile |
minqi@2964 | 113 | fi |
minqi@2964 | 114 | |
minqi@2964 | 115 | #also delete $hotspotlog if it exists |
minqi@2964 | 116 | if [ -f $hotspotlog ]; then |
minqi@2964 | 117 | rm -rf $hotspotlog |
minqi@2964 | 118 | fi |
minqi@2964 | 119 | |
minqi@2964 | 120 | options="-Xloggc:$logfile -XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=$gclogsize" |
minqi@2964 | 121 | echo "Test gc log rotation in same file, wait for $tts minutes ...." |
kevinw@3777 | 122 | $JAVA_HOME/bin/java ${TESTVMOPTS} $options $testname $tts |
minqi@2964 | 123 | if [ $? != 0 ]; then |
minqi@2964 | 124 | echo "$msgfail" |
minqi@2964 | 125 | exit -1 |
minqi@2964 | 126 | fi |
minqi@2964 | 127 | |
minqi@2964 | 128 | # rotation file will be $logfile.0 |
minqi@2964 | 129 | if [ -f $logfile.0 ]; then |
minqi@2964 | 130 | outfilesize=`ls -l $logfile.0 | awk '{print $5 }'` |
minqi@2964 | 131 | if [ $((outfilesize)) -ge $((filesize)) ]; then |
minqi@2964 | 132 | echo $msgsuccess |
minqi@2964 | 133 | else |
minqi@2964 | 134 | echo $msgfail |
minqi@2964 | 135 | fi |
minqi@2964 | 136 | else |
minqi@2964 | 137 | echo $msgfail |
minqi@2964 | 138 | exit -1 |
minqi@2964 | 139 | fi |
minqi@2964 | 140 | |
minqi@2964 | 141 | # delete log file |
minqi@2964 | 142 | rm -rf $logfile.0 |
minqi@2964 | 143 | if [ -f $hotspotlog ]; then |
minqi@2964 | 144 | rm -rf $hotspotlog |
minqi@2964 | 145 | fi |
minqi@2964 | 146 | |
minqi@2964 | 147 | #multiple log files |
minqi@2964 | 148 | numoffiles=3 |
minqi@2964 | 149 | options="-Xloggc:$logfile -XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=$numoffiles -XX:GCLogFileSize=$gclogsize" |
minqi@2964 | 150 | echo "Test gc log rotation in $numoffiles files, wait for $tts minutes ...." |
kevinw@3777 | 151 | $JAVA_HOME/bin/java ${TESTVMOPTS} $options $testname $tts |
minqi@2964 | 152 | if [ $? != 0 ]; then |
minqi@2964 | 153 | echo "$msgfail" |
minqi@2964 | 154 | exit -1 |
minqi@2964 | 155 | fi |
minqi@2964 | 156 | |
minqi@2964 | 157 | atleast=0 # at least size of numoffile-1 files >= $gclogsize |
minqi@2964 | 158 | tk=0 |
minqi@2964 | 159 | while [ $(($tk)) -lt $(($numoffiles)) ] |
minqi@2964 | 160 | do |
minqi@2964 | 161 | if [ -f $logfile.$tk ]; then |
minqi@2964 | 162 | outfilesize=`ls -l $logfile.$tk | awk '{ print $5 }'` |
minqi@2964 | 163 | if [ $(($outfilesize)) -ge $(($filesize)) ]; then |
minqi@2964 | 164 | atleast=$((atleast+1)) |
minqi@2964 | 165 | fi |
minqi@2964 | 166 | fi |
minqi@2964 | 167 | tk=$((tk+1)) |
minqi@2964 | 168 | done |
minqi@2964 | 169 | |
minqi@2964 | 170 | rm -rf $logfile.* |
minqi@2964 | 171 | rm -rf $testname.* |
minqi@2964 | 172 | rm -rf $hotspotlog |
minqi@2964 | 173 | |
minqi@2964 | 174 | if [ $(($atleast)) -ge $(($numoffiles-1)) ]; then |
minqi@2964 | 175 | echo $msgsuccess |
minqi@2964 | 176 | else |
minqi@2964 | 177 | echo $msgfail |
minqi@2964 | 178 | exit -1 |
minqi@2964 | 179 | fi |