comparison test/Makefile @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children 68e0443dfd9c
comparison
equal deleted inserted replaced
-1:000000000000 0:a61af66fc99e
1 #
2 # Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
5 # This code is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 only, as
7 # published by the Free Software Foundation.
8 #
9 # This code is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 # version 2 for more details (a copy is included in the LICENSE file that
13 # accompanied this code).
14 #
15 # You should have received a copy of the GNU General Public License version
16 # 2 along with this work; if not, write to the Free Software Foundation,
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 #
19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 # CA 95054 USA or visit www.sun.com if you need additional information or
21 # have any questions.
22 #
23 #
24
25 #
26 # Makefile to run jtreg
27 #
28
29 OSNAME = $(shell uname -s)
30 ifeq ($(OSNAME), SunOS)
31 PLATFORM = solaris
32 JCT_PLATFORM = solaris
33 ARCH = $(shell uname -p)
34 ifeq ($(ARCH), i386)
35 ARCH=i586
36 endif
37 endif
38 ifeq ($(OSNAME), Linux)
39 PLATFORM = linux
40 JCT_PLATFORM = linux
41 ARCH = $(shell uname -m)
42 ifeq ($(ARCH), i386)
43 ARCH=i586
44 endif
45 endif
46 ifeq ($(OSNAME), Windows_NT)
47 PLATFORM = windows
48 JCT_PLATFORM = win32
49 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
50 ARCH=ia64
51 else
52 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
53 ARCH=x64
54 else
55 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
56 ARCH=x64
57 else
58 ARCH=i586
59 endif
60 endif
61 endif
62 endif
63
64 # Default bundle of all test results (passed or not)
65 JPRT_ARCHIVE_BUNDLE=$(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip
66
67 # Default home for JTREG
68 ifeq ($(PLATFORM), windows)
69 JT_HOME = J:/svc/jct-tools3.2.2_01
70 else
71 JT_HOME = /java/svc/jct-tools3.2.2_01
72 endif
73
74 # Default JTREG to run
75 JTREG = $(JT_HOME)/$(JCT_PLATFORM)/bin/jtreg
76
77 # Root of this test area
78 TEST_ROOT := $(shell pwd)
79
80 # Default JDK to test
81 JAVA_HOME = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
82
83 # The test directories to run
84 DEFAULT_TESTDIRS = serviceability
85 TESTDIRS = $(DEFAULT_TESTDIRS)
86
87 # Files that hold total passed and failed counts (passed==0 is bad)
88 JTREG_TOTALS_DIR = $(TEST_ROOT)/JTREG_TOTALS_$(PLATFORM)_$(ARCH)
89 JTREG_FAILED = $(JTREG_TOTALS_DIR)/failed_count
90 JTREG_PASSED = $(JTREG_TOTALS_DIR)/passed_count
91
92 # Root of all test results
93 JTREG_ALL_OUTPUT_DIRNAME = JTREG_OUTPUT_$(PLATFORM)_$(ARCH)
94 JTREG_ALL_OUTPUT_DIR = $(TEST_ROOT)/$(JTREG_ALL_OUTPUT_DIRNAME)
95
96 # Test results for one test directory
97 JTREG_TEST_OUTPUT_DIR = $(JTREG_ALL_OUTPUT_DIR)/$@
98 JTREG_TEST_REPORT_DIR = $(JTREG_TEST_OUTPUT_DIR)/JTreport
99 JTREG_TEST_WORK_DIR = $(JTREG_TEST_OUTPUT_DIR)/JTwork
100 JTREG_TEST_SUMMARY = $(JTREG_TEST_REPORT_DIR)/summary.txt
101
102 # Temp files used by this Makefile
103 JTREG_TEST_TEMP_DIR = $(JTREG_ALL_OUTPUT_DIR)/$@/temp
104 JTREG_TEMP_PASSED = $(JTREG_TEST_TEMP_DIR)/passed
105 JTREG_TEMP_FAILED = $(JTREG_TEST_TEMP_DIR)/failed
106 JTREG_TEMP_OUTPUT = $(JTREG_TEST_TEMP_DIR)/output
107 JTREG_TEMP_RESULTS = $(JTREG_TEST_TEMP_DIR)/results
108
109 # JTREG options (different for 2.1.6 and 3.2.2_01)
110 JTREG_COMMON_OPTIONS = -r:$(JTREG_TEST_REPORT_DIR) \
111 -w:$(JTREG_TEST_WORK_DIR) \
112 -testjdk:$(JAVA_HOME) \
113 -automatic \
114 -verbose:all
115 JTREG_216_OPTIONS = $(JTREG_COMMON_OPTIONS) $@ $(JAVA_ARGS)
116 JTREG_322_OPTIONS = $(JTREG_COMMON_OPTIONS) $(JAVA_ARGS:%=-vmoption:%) $@
117
118 # Default make rule
119 all: clean check tests
120
121 # Chaeck to make sure these directories exist
122 check: $(JT_HOME) $(JAVA_HOME) $(JTREG)
123
124 # Prime the test run
125 primecounts: FRC
126 @rm -f -r $(JTREG_TOTALS_DIR)
127 @mkdir -p $(JTREG_TOTALS_DIR)
128 @echo "0" > $(JTREG_FAILED)
129 @echo "0" > $(JTREG_PASSED)
130
131 # Run the tests and determine the 'make' command exit status
132 # Ultimately we determine the make exit code based on the passed/failed count
133 tests: primecounts $(TESTDIRS)
134 @echo "JTREG TOTAL: passed=`cat $(JTREG_PASSED)` failed=`cat $(JTREG_FAILED)`"
135 zip -q -r $(JPRT_ARCHIVE_BUNDLE) $(JTREG_ALL_OUTPUT_DIRNAME)
136 @if [ `cat $(JTREG_FAILED)` -ne 0 -o \
137 `cat $(JTREG_PASSED)` -le 0 ] ; then \
138 echo "JTREG FAILED"; \
139 exit 1; \
140 else \
141 echo "JTREG PASSED"; \
142 exit 0; \
143 fi
144
145 # Just make sure these directires exist
146 $(JT_HOME) $(JAVA_HOME): FRC
147 @if [ ! -d $@ ] ; then \
148 echo "ERROR: Directory $@ does not exist"; \
149 exit 1; \
150 fi
151
152 # Make sure this file exists
153 $(JTREG): FRC
154 @if [ ! -f $@ ] ; then \
155 echo "ERROR: File $@ does not exist"; \
156 exit 1; \
157 fi
158
159 # Process each test directory one by one, this rule always completes.
160 # Note that the use of 'tee' tosses the jtreg process exit status, this
161 # is as expected because even if jtreg fails, we need to save the
162 # output. So we update the JTREG_PASSED and JTREG_FAILED count files.
163 # Note that missing the 'results:' line in the last few lines of output
164 # will indicate a failure (or a bump by one of the JTREG_FAILED file.
165 # Note that passed: 0 or no passed: indication means a failure.
166 # Note that any indication of the word 'failed' indicates failure.
167 # Ultimately if the contents of JTREG_FAILED is not 0, we have failed
168 # tests, and if the contents of JTREG_PASSED is 0, we consider that a
169 # failure.
170 $(TESTDIRS): FRC
171 @if [ ! -d $@ ] ; then \
172 echo "ERROR: Directory $@ does not exist"; \
173 exit 1; \
174 fi
175 @echo "---------------------------------------------------"
176 @rm -f -r $(JTREG_TEST_OUTPUT_DIR)
177 @mkdir -p $(JTREG_TEST_OUTPUT_DIR)
178 @mkdir -p $(JTREG_TEST_WORK_DIR)
179 @mkdir -p $(JTREG_TEST_WORK_DIR)/scratch
180 @mkdir -p $(JTREG_TEST_REPORT_DIR)
181 @mkdir -p $(JTREG_TEST_TEMP_DIR)
182 @echo "Testing $@"
183 @echo "Using JAVA_HOME=$(JAVA_HOME)"
184 @echo "Using JAVA_ARGS=$(JAVA_ARGS)"
185 @if [ "`$(JTREG) -help 2>&1 | fgrep -- -vmoption`" != "" ] ; then \
186 echo "Assume we are using jtreg 3.2.2_01 or newer"; \
187 echo "$(JTREG) $(JTREG_322_OPTIONS)"; \
188 $(JTREG) $(JTREG_322_OPTIONS) 2>&1 | tee $(JTREG_TEMP_OUTPUT) ; \
189 else \
190 echo "Assume we are using jtreg 2.1.6"; \
191 echo "$(JTREG) $(JTREG_216_OPTIONS)"; \
192 $(JTREG) $(JTREG_216_OPTIONS) 2>&1 | tee $(JTREG_TEMP_OUTPUT) ; \
193 fi
194 @echo "---------------------------------------------------"
195 @echo "Extracting passed and failed counts from jtreg output"
196 @tail -10 $(JTREG_TEMP_OUTPUT) | fgrep -i 'results:' | \
197 tail -1 | tee $(JTREG_TEMP_RESULTS)
198 @sed -e 's@.*\ passed:\ \([1-9][0-9]*\).*@\1@' $(JTREG_TEMP_RESULTS) \
199 > $(JTREG_TEMP_PASSED)
200 @if [ "`cat $(JTREG_TEMP_PASSED)`" = "" ] ; then \
201 echo "ERROR: No passed indication in results"; \
202 expr `cat $(JTREG_FAILED)` '+' 1 > $(JTREG_FAILED); \
203 elif [ `cat $(JTREG_TEMP_PASSED)` -le 0 ] ; then \
204 echo "ERROR: Passed count appears to be 0"; \
205 expr `cat $(JTREG_FAILED)` '+' 1 > $(JTREG_FAILED); \
206 elif [ "`fgrep -i failed $(JTREG_TEMP_RESULTS)`" = "" ] ; then \
207 echo "No indication anything failed"; \
208 expr `cat $(JTREG_PASSED)` '+' `cat $(JTREG_TEMP_PASSED)` \
209 > $(JTREG_PASSED); \
210 else \
211 sed -e 's@.*\ failed:\ \([1-9][0-9]*\).*@\1@' $(JTREG_TEMP_FAILED) \
212 > $(JTREG_TEMP_FAILED); \
213 if [ "`cat $(JTREG_TEMP_FAILED)`" = "" ] ; then \
214 echo "ERROR: Failed pattern but no failed count in results"; \
215 expr `cat $(JTREG_FAILED)` '+' 1 > $(JTREG_FAILED); \
216 elif [ `cat $(JTREG_TEMP_FAILED)` -le 0 ] ; then \
217 echo "ERROR: Failed count is 0, did something failed or not?"; \
218 expr `cat $(JTREG_FAILED)` '+' 1 > $(JTREG_FAILED); \
219 else \
220 expr `cat $(JTREG_FAILED)` '+' `cat $(JTREG_TEMP_FAILED)` \
221 > $(JTREG_FAILED); \
222 fi; \
223 fi
224 @echo "---------------------------------------------------"
225 @echo "Summary: "
226 @if [ -f $(JTREG_TEST_SUMMARY) ] ; then \
227 cat $(JTREG_TEST_SUMMARY) ; \
228 else \
229 echo "ERROR: Missing $(JTREG_TEST_SUMMARY)"; \
230 fi
231 @echo "---------------------------------------------------"
232
233 # Cleanup
234 clean:
235 rm -f -r $(JTREG_ALL_OUTPUT_DIR)
236 rm -f $(JPRT_ARCHIVE_BUNDLE)
237
238 FRC:
239