Makefile revision 5776:de6a9e811145
1#
2# Copyright (c) 1995, 2013, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20# or visit www.oracle.com if you need additional information or have any
21# questions.
22#
23#
24
25#
26# Makefile to run various jdk tests
27#
28
29GETMIXEDPATH=echo
30
31# Get OS/ARCH specifics
32OSNAME = $(shell uname -s)
33ifeq ($(OSNAME), SunOS)
34  PLATFORM = solaris
35  SLASH_JAVA = /java
36  ARCH = $(shell uname -p)
37  ifeq ($(ARCH), i386)
38    ARCH=i586
39  endif
40endif
41ifeq ($(OSNAME), Linux)
42  PLATFORM = linux
43  SLASH_JAVA = /java
44  ARCH = $(shell uname -m)
45  ifeq ($(ARCH), i386)
46    ARCH = i586
47  endif
48endif
49ifeq ($(OSNAME), Darwin)
50  PLATFORM = bsd
51  SLASH_JAVA = /java
52  ARCH = $(shell uname -m)
53  ifeq ($(ARCH), i386)
54    ARCH = i586
55  endif
56endif
57ifeq ($(findstring BSD,$(OSNAME)), BSD)
58  PLATFORM = bsd
59  SLASH_JAVA = /java
60  ARCH = $(shell uname -m)
61  ifeq ($(ARCH), i386)
62    ARCH = i586
63  endif
64endif
65ifeq ($(PLATFORM),)
66  # detect wether we're running in MKS or cygwin
67  ifeq ($(OSNAME), Windows_NT) # MKS
68    GETMIXEDPATH=dosname -s
69  endif
70  ifeq ($(findstring CYGWIN,$(OSNAME)), CYGWIN)
71    GETMIXEDPATH=cygpath -m -s
72  endif
73  PLATFORM = windows
74  SLASH_JAVA = J:
75  ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
76    ARCH = ia64
77  else
78    ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
79      ARCH = x64
80    else
81      ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
82        ARCH = x64
83      else
84        ARCH = i586
85      endif
86    endif
87  endif
88  EXESUFFIX = .exe
89endif
90
91ifdef ALT_SLASH_JAVA
92  SLASH_JAVA = $(ALT_SLASH_JAVA)
93endif
94
95# Utilities used
96CD    = cd
97CP    = cp
98ECHO  = echo
99MKDIR = mkdir
100ZIP   = zip
101
102# Root of this test area (important to use full paths in some places)
103TEST_ROOT := $(shell pwd)
104
105# Root of all test results
106ifdef ALT_OUTPUTDIR
107  ABS_BUILD_ROOT = $(ALT_OUTPUTDIR)/$(PLATFORM)-$(ARCH)
108else
109  ABS_BUILD_ROOT = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
110endif
111ABS_TEST_OUTPUT_DIR = $(ABS_BUILD_ROOT)/testoutput
112
113# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
114ifndef PRODUCT_HOME
115  # Try to use j2sdk-image if it exists
116  ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image
117  PRODUCT_HOME :=                       \
118    $(shell                             \
119      if [ -d $(ABS_JDK_IMAGE) ] ; then \
120         $(ECHO) "$(ABS_JDK_IMAGE)";    \
121       else                             \
122         $(ECHO) "$(ABS_BUILD_ROOT)" ;  \
123       fi)
124endif
125
126# Expect JPRT to set JAVA_ARGS (e.g. -server etc.)
127JAVA_OPTIONS = 
128ifdef JAVA_ARGS
129  JAVA_OPTIONS = $(JAVA_ARGS)
130endif
131
132# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
133ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
134ifdef JPRT_ARCHIVE_BUNDLE
135  ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
136endif
137
138# How to create the test bundle (pass or fail, we want to create this)
139BUNDLE_UP = ( $(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`     \
140	      && $(CD) $(ABS_TEST_OUTPUT_DIR)             \
141	      && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
142BUNDLE_UP_FAILED = ( exitCode=$$? && $(BUNDLE_UP) && exit $${exitCode} )
143
144################################################################
145
146# Default make rule (runs jtreg_tests)
147all: jtreg_tests
148	@$(ECHO) "Testing completed successfully"
149
150# Prep for output
151prep: clean
152	@$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
153	@$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`
154
155# Cleanup
156clean:
157	$(RM) -r $(ABS_TEST_OUTPUT_DIR)
158	$(RM) $(ARCHIVE_BUNDLE)
159
160################################################################
161
162# jtreg tests
163
164# Expect JT_HOME to be set for jtreg tests. (home for jtreg)
165ifndef JT_HOME
166  JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg
167endif
168ifdef JPRT_JTREG_HOME
169  JT_HOME = $(JPRT_JTREG_HOME)
170endif
171
172# Expect JPRT to set TESTDIRS to the jtreg test dirs
173JTREG_TESTDIRS = demo/jvmti/gctest demo/jvmti/hprof
174ifdef TESTDIRS
175  JTREG_TESTDIRS = $(TESTDIRS)
176endif
177
178# Default JTREG to run (win32 script works for everybody)
179JTREG = $(JT_HOME)/win32/bin/jtreg
180
181# Option to tell jtreg to not run tests marked with "ignore"
182ifeq ($(PLATFORM), windows)
183  JTREG_KEY_OPTION = -k:!ignore
184else
185  JTREG_KEY_OPTION = -k:\!ignore
186endif
187
188#EXTRA_JTREG_OPTIONS =
189
190jtreg_tests: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
191	$(JTREG) -a -v:fail,error               \
192          $(JTREG_KEY_OPTION)                   \
193          $(EXTRA_JTREG_OPTIONS)                \
194          -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport    \
195          -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork      \
196          -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")                  \
197          $(JAVA_OPTIONS:%=-vmoption:%)         \
198          $(JTREG_TESTDIRS)                     \
199	  || $(BUNDLE_UP_FAILED)
200	$(BUNDLE_UP)
201
202PHONY_LIST += jtreg_tests
203
204################################################################
205
206# clienttest (make sure various basic java client options work)
207
208clienttest: prep $(PRODUCT_HOME)
209	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
210	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
211	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
212	$(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa
213	$(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa
214	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump
215
216PHONY_LIST += clienttest
217
218################################################################
219
220# servertest (make sure various basic java server options work)
221
222servertest: prep $(PRODUCT_HOME)
223	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
224	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
225	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
226
227PHONY_LIST += servertest
228
229################################################################
230
231# internalvmtests (run internal unit tests inside the VM)
232
233internalvmtests: prep $(PRODUCT_HOME)
234	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version
235
236PHONY_LIST += internalvmtests
237
238################################################################
239
240# wbapitest (make sure the whitebox testing api classes work
241
242wbapitest: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
243	$(JTREG) -a -v:fail,error               \
244          $(JTREG_KEY_OPTION)                   \
245          $(EXTRA_JTREG_OPTIONS)                \
246          -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport    \
247          -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork      \
248          -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")                  \
249          $(JAVA_OPTIONS:%=-vmoption:%)         \
250          $(shell $(GETMIXEDPATH) "$(TEST_ROOT)")/sanity                   \
251	  || $(BUNDLE_UP_FAILED)
252	$(BUNDLE_UP)
253
254PHONY_LIST += wbapitest
255
256################################################################
257
258# packtest
259
260# Expect JPRT to set JPRT_PACKTEST_HOME.
261PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
262ifdef JPRT_PACKTEST_HOME
263  PACKTEST_HOME = $(JPRT_PACKTEST_HOME)
264endif
265
266#EXTRA_PACKTEST_OPTIONS =
267
268packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
269	( $(CD) $(PACKTEST_HOME) &&            \
270	    $(PACKTEST_HOME)/ptest             \
271		 -t "$(PRODUCT_HOME)"          \
272	         $(PACKTEST_STRESS_OPTION)     \
273		 $(EXTRA_PACKTEST_OPTIONS)     \
274		 -W $(ABS_TEST_OUTPUT_DIR)     \
275                 $(JAVA_OPTIONS:%=-J %)        \
276	 ) || $(BUNDLE_UP_FAILED)
277	$(BUNDLE_UP)
278
279packtest_stress: PACKTEST_STRESS_OPTION=-s
280packtest_stress: packtest
281
282PHONY_LIST += packtest packtest_stress
283
284################################################################
285
286# Phony targets (e.g. these are not filenames)
287.PHONY: all clean prep $(PHONY_LIST)
288
289################################################################
290
291