< prev index next >
nashorn/test/Makefile
Print this page
*** 1,7 ****
#
! # Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
#
! # Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
*** 21,360 ****
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
! #
! # Makefile to run various nashorn tests
! #
!
! .DEFAULT : all
!
! # Empty these to get rid of some default rules
! .SUFFIXES:
! .SUFFIXES: .java
! CO=
! GET=
!
! # Utilities used
! AWK = awk
! CAT = cat
! CD = cd
! CHMOD = chmod
! CP = cp
! CUT = cut
! DIRNAME = dirname
! ECHO = echo
! EGREP = egrep
! EXPAND = expand
! FIND = find
! MKDIR = mkdir
! PWD = pwd
! SED = sed
! SORT = sort
! TEE = tee
! UNAME = uname
! UNIQ = uniq
! WC = wc
! ZIPEXE = zip
!
! # Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
! UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
!
! # Commands to run on paths to make mixed paths for java on windows
! ifeq ($(UNAME_S), CYGWIN)
! # Location of developer shared files
! SLASH_JAVA = J:
! GETMIXEDPATH = cygpath -m
! else
! # Location of developer shared files
! SLASH_JAVA = /java
!
! GETMIXEDPATH=$(ECHO)
! endif
!
! # Root of this test area (important to use full paths in some places)
! TEST_ROOT := $(shell $(PWD))
!
! # Root of all test results
! ifdef TEST_OUTPUT_DIR
! $(shell $(MKDIR) -p $(TEST_OUTPUT_DIR)/jtreg)
! ABS_TEST_OUTPUT_DIR := \
! $(shell $(CD) $(TEST_OUTPUT_DIR)/jtreg && $(PWD))
! else
! ifdef ALT_OUTPUTDIR
! ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD))
! else
! ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD))
! endif
!
! ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
! ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
! endif
!
! # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
! ifndef PRODUCT_HOME
! # Try to use images/jdk if it exists
! ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/jdk
! PRODUCT_HOME := \
! $(shell \
! if [ -d $(ABS_JDK_IMAGE) ] ; then \
! $(ECHO) "$(ABS_JDK_IMAGE)"; \
! else \
! $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \
! fi)
! PRODUCT_HOME := $(PRODUCT_HOME)
! endif
!
! # Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
! # Should be passed into 'java' only.
! # Could include: -d64 -server -client OR any java option
! ifdef JPRT_PRODUCT_ARGS
! JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
! endif
!
! # Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
! # Should be passed into anything running the vm (java, javac, javadoc, ...).
! ifdef JPRT_PRODUCT_VM_ARGS
! JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
! endif
!
! # jtreg failure handler config
! ifeq ($(FAILURE_HANDLER_DIR), )
! ifneq ($(TESTNATIVE_DIR), )
! FAILURE_HANDLER_DIR := $(TESTNATIVE_DIR)/failure_handler
! endif
! endif
! ifneq ($(FAILURE_HANDLER_DIR), )
! FAILURE_HANDLER_DIR_MIXED := $(shell $(GETMIXEDPATH) "$(FAILURE_HANDLER_DIR)")
! JTREG_FAILURE_HANDLER_OPTIONS := \
! -timeoutHandlerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
! -observerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
! -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
! -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
! -timeoutHandlerTimeout:0
! ifeq ($(UNAME_S), CYGWIN)
! JTREG_FAILURE_HANDLER_OPTIONS += -J-Djava.library.path="$(FAILURE_HANDLER_DIR_MIXED)"
! endif
! endif
!
! # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
! ifdef JPRT_ARCHIVE_BUNDLE
! ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
! else
! ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
! endif
!
! # How to create the test bundle (pass or fail, we want to create this)
! # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
! ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
! && $(CD) $(ABS_TEST_OUTPUT_DIR) \
! && $(CHMOD) -R a+r . \
! && $(ZIPEXE) -q -r $(ARCHIVE_BUNDLE) . )
!
! # important results files
! SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
! STATS_TXT_NAME = Stats.txt
! STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
! RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
! PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
! FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
! EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
!
! TESTEXIT = \
! if [ ! -s $(EXITCODE) ] ; then \
! $(ECHO) "ERROR: EXITCODE file not filled in."; \
! $(ECHO) "1" > $(EXITCODE); \
! fi ; \
! testExitCode=`$(CAT) $(EXITCODE)`; \
! $(ECHO) "EXIT CODE: $${testExitCode}"; \
! exit $${testExitCode}
! BUNDLE_UP_AND_EXIT = \
! ( \
! jtregExitCode=$$? && \
! _summary="$(SUMMARY_TXT)"; \
! $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
! $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
! if [ -r "$${_summary}" ] ; then \
! $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
! $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
! $(EGREP) ' Passed\.' $(RUNLIST) \
! | $(EGREP) -v ' Error\.' \
! | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
! ( $(EGREP) ' Failed\.' $(RUNLIST); \
! $(EGREP) ' Error\.' $(RUNLIST); \
! $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
! | $(SORT) | $(UNIQ) > $(FAILLIST); \
! if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
! $(EXPAND) $(FAILLIST) \
! | $(CUT) -d' ' -f1 \
! | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
! if [ $${jtregExitCode} = 0 ] ; then \
! jtregExitCode=1; \
! fi; \
! fi; \
! runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
! passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
! failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
! exclc="FIXME CODETOOLS-7900176"; \
! $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
! >> $(STATS_TXT); \
! else \
! $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
! fi; \
! if [ -f $(STATS_TXT) ] ; then \
! $(CAT) $(STATS_TXT); \
! fi; \
! $(ZIP_UP_RESULTS) ; \
! $(TESTEXIT) \
! )
! ################################################################
# Default make rule (runs default nashorn tests)
all: nashorn_default
@$(ECHO) "Testing completed successfully"
- # Prep for output
- # Change execute permissions on shared library files.
- # Files in repositories should never have execute permissions, but
- # there are some tests that have pre-built shared libraries, and these
- # windows dll files must have execute permission. Adding execute
- # permission may happen automatically on windows when using certain
- # versions of mercurial but it cannot be guaranteed. And blindly
- # adding execute permission might be seen as a mercurial 'change', so
- # we avoid adding execute permission to repository files. But testing
- # from a plain source tree needs the chmod a+rx. Applying the chmod to
- # all shared libraries not just dll files. And with CYGWIN and sshd
- # service, you may need CYGWIN=ntsec for this to work.
- prep:
- @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
- @$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`
- @if [ ! -d $(TEST_ROOT)/../.hg ] ; then \
- $(FIND) $(TEST_ROOT) \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \
- -exec $(CHMOD) a+rx {} \; ; \
- fi
-
- # Cleanup
- clean:
- @$(RM) -r $(ABS_TEST_OUTPUT_DIR)
- @$(RM) $(ARCHIVE_BUNDLE)
-
- ################################################################
-
- # jtreg tests
-
- # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
- ifndef JT_HOME
- JT_HOME = $(SLASH_JAVA)/re/jtreg/4.2/promoted/latest/binaries/jtreg
- ifdef JPRT_JTREG_HOME
- JT_HOME = $(JPRT_JTREG_HOME)
- endif
- endif
-
- # Problematic tests to be excluded
- PROBLEM_LISTS=$(call MixedDirs,$(wildcard ProblemList.txt closed/ProblemList.txt))
-
- # Create exclude list for this platform and arch
- ifdef NO_EXCLUDES
- JTREG_EXCLUSIONS =
- else
- JTREG_EXCLUSIONS = $(PROBLEM_LISTS:%=-exclude:%)
- endif
-
- # convert list of directories to dos paths
- define MixedDirs
- $(foreach i,$1,$(shell $(GETMIXEDPATH) "${i}"))
- endef
-
- define SummaryInfo
- $(ECHO) "########################################################"
- $(CAT) $(?:%=$(ABS_TEST_OUTPUT_DIR)/%/$(STATS_TXT_NAME))
- $(ECHO) "########################################################"
- endef
-
# ------------------------------------------------------------------
nashorn_%:
$(ECHO) "Running tests: $@"
for each in $@; do \
$(MAKE) -j 1 TEST_SELECTION=":$$each" UNIQUE_DIR=$$each jtreg_tests; \
done
- # ------------------------------------------------------------------
-
- # When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
- ifdef TESTDIRS
- TEST_SELECTION = $(TESTDIRS)
- endif
-
- ifdef CONCURRENCY
- JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY)
- endif
- ifdef EXTRA_JTREG_OPTIONS
- JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
- endif
-
- # Default JTREG to run
- JTREG = $(JT_HOME)/bin/jtreg
- # run in agentvm mode
- JTREG_BASIC_OPTIONS += -agentvm
- # Only run automatic tests
- JTREG_BASIC_OPTIONS += -a
- # Always turn on assertions
- JTREG_ASSERT_OPTION = -ea -esa
- JTREG_BASIC_OPTIONS += $(JTREG_ASSERT_OPTION)
- # Report details on all failed or error tests, times too
- JTREG_BASIC_OPTIONS += -v:fail,error,time
- # Retain all files for failing tests
- JTREG_BASIC_OPTIONS += -retain:fail,error
- # Ignore tests are not run and completely silent about it
- JTREG_IGNORE_OPTION = -ignore:quiet
- JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
- # Multiple by 4 the timeout numbers
- JTREG_TIMEOUT_OPTION = -timeoutFactor:4
- JTREG_BASIC_OPTIONS += $(JTREG_TIMEOUT_OPTION)
- # Set the max memory for jtreg control vm
- JTREG_MEMORY_OPTION = -J-Xmx512m
- JTREG_BASIC_OPTIONS += $(JTREG_MEMORY_OPTION)
- # Give tests access to JT_JAVA, see JDK-8141609
- JTREG_BASIC_OPTIONS += -e:JDK8_HOME=${JT_JAVA}
- # Set other vm and test options
- JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
- # Set the GC options for test vms
- #JTREG_GC_OPTION = -vmoption:-XX:+UseSerialGC
- #JTREG_TEST_OPTIONS += $(JTREG_GC_OPTION)
- # Set the max memory for jtreg target test vms
- JTREG_TESTVM_MEMORY_OPTION = -vmoption:-Xmx512m
- JTREG_TEST_OPTIONS += $(JTREG_TESTVM_MEMORY_OPTION)
-
- # Make sure jtreg exists
- $(JTREG): $(JT_HOME)
-
- # Run jtreg
- jtreg_tests: prep $(PRODUCT_HOME) $(JTREG)
- ( \
- ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
- export JT_HOME; \
- $(shell $(GETMIXEDPATH) "$(JTREG)") \
- $(JTREG_BASIC_OPTIONS) \
- -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
- -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
- -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
- $(JTREG_NATIVE_PATH) \
- $(JTREG_FAILURE_HANDLER_OPTIONS) \
- $(JTREG_EXCLUSIONS) \
- $(JTREG_TEST_OPTIONS) \
- $(TEST_SELECTION) \
- ) ; \
- $(BUNDLE_UP_AND_EXIT) \
- ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
-
- PHONY_LIST += jtreg_tests
-
- ################################################################
-
- # Phony targets (e.g. these are not filenames)
- .PHONY: all clean prep $(PHONY_LIST)
-
- ################################################################
--- 21,43 ----
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
! default: all
! USE_FAILURE_HANDLER := true
! include ../../test/TestCommon.gmk
# Default make rule (runs default nashorn tests)
all: nashorn_default
@$(ECHO) "Testing completed successfully"
# ------------------------------------------------------------------
nashorn_%:
$(ECHO) "Running tests: $@"
for each in $@; do \
$(MAKE) -j 1 TEST_SELECTION=":$$each" UNIQUE_DIR=$$each jtreg_tests; \
done
< prev index next >