< 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 >