1 #
   2 # Copyright (c) 1995, 2016, 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.  Oracle designates this
   8 # particular file as subject to the "Classpath" exception as provided
   9 # by Oracle in the LICENSE file that accompanied this code.
  10 #
  11 # This code is distributed in the hope that it will be useful, but WITHOUT
  12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 #
  26 
  27 NATIVE_TEST_PATH := hotspot/jtreg/native
  28 
  29 TREAT_EXIT_CODE_1_AS_0 := true
  30 
  31 CLEAN_BEFORE_PREP := true
  32 
  33 USE_JTREG_VERSION := 4.1
  34 
  35 USE_JTREG_ASSERT := false
  36 
  37 LIMIT_JTREG_VM_MEMORY := false
  38 
  39 IGNORE_MARKED_TESTS := true
  40 
  41 # Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
  42 UNAME_S := $(shell uname -s | cut -f1 -d_)
  43 
  44 ifeq ($(UNAME_S), SunOS)
  45   NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line)
  46 endif
  47 ifeq ($(UNAME_S), Linux)
  48   NUM_CORES := $(shell cat /proc/cpuinfo  | grep -c processor)
  49 endif
  50 ifeq ($(UNAME_S), Darwin)
  51   NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
  52 endif
  53 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
  54   ifneq ($(NUMBER_OF_PROCESSORS), )
  55     NUM_CORES := $(NUMBER_OF_PROCESSORS)
  56   else
  57     ifneq ($(HOTSPOT_BUILD_JOBS), )
  58       NUM_CORES := $(HOTSPOT_BUILD_JOBS)
  59     else
  60       NUM_CORES := 1 # fallback
  61     endif
  62   endif
  63 endif
  64 
  65 # Concurrency based on min(cores / 2, 12)
  66 CONCURRENCY := $(shell expr $(NUM_CORES) / 2)
  67 ifeq ($(CONCURRENCY), 0)
  68   CONCURRENCY := 1
  69 else ifeq ($(shell expr $(CONCURRENCY) \> 12), 1)
  70   CONCURRENCY := 12
  71 endif
  72 
  73 # Make sure MaxRAMPercentage is high enough to not cause OOM or swapping since we may end up with a lot of JVM's
  74 JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMPercentage=$(shell expr 25 / $(CONCURRENCY))
  75 
  76 # Include the common base file with most of the logic
  77 include ../../test/TestCommon.gmk
  78 
  79 ################################################################
  80 # Default make rule (runs jtreg_tests)
  81 all: hotspot_all
  82         @$(ECHO) "Testing completed successfully"
  83 
  84 # Support "hotspot_" prefixed test make targets (too)
  85 # The hotspot_% targets are used by the top level Makefile
  86 # Unless explicitly defined below, hotspot_<x> is interpreted as a jtreg test group name
  87 hotspot_%:
  88         $(ECHO) "Running tests: $@"
  89         $(MAKE) -j 1 TEST_SELECTION=":$@" UNIQUE_DIR=$@ jtreg_tests;
  90 
  91 hotspot_internal:
  92         $(ALT_OUTPUTDIR)/jdk/bin/java -XX:+ExecuteInternalVMTests -XX:+ShowMessageBoxOnError -version
  93 
  94 ################################################################
  95 ALT_MAKE ?= closed
  96 -include $(ALT_MAKE)/Makefile
  97 
  98 ################################################################
  99 
 100 # Set up the directory in which the jvm directories live (client/, server/, etc.)
 101 ifeq ($(PLATFORM),windows)
 102 JVMS_DIR := $(PRODUCT_HOME)/bin
 103 else
 104 JVMS_DIR := $(PRODUCT_HOME)/lib
 105 endif
 106 
 107 # Use the existance of a directory as a sign that jvm variant is available
 108 CANDIDATE_JVM_VARIANTS := client minimal server
 109 JVM_VARIANTS := $(strip $(foreach x,$(CANDIDATE_JVM_VARIANTS),$(if $(wildcard $(JVMS_DIR)/$(x)),$(x))))
 110 
 111 ################################################################
 112 
 113 # Run the native gtest tests from the test image
 114 
 115 define NEWLINE
 116 
 117 
 118 endef
 119 
 120 
 121 hotspot_gtest:
 122         $(foreach v, $(JVM_VARIANTS), \
 123           $(MAKE) hotspot_gtest$v $(NEWLINE) )
 124 
 125 hotspot_gtestserver hotspot_gtestclient hotspot_gtestminimal: hotspot_gtest%:
 126         $(TESTNATIVE_DIR)/hotspot/gtest/$*/gtestLauncher \
 127             -jdk $(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")
 128 
 129 PHONY_LIST += hotspot_gtest hotspot_gtestserver hotspot_gtestclient \
 130     hotspot_gtestminimal