OSDN Git Service

Add a GC stress run that uses a moving collector and small heap sizes.
authorIan Rogers <irogers@google.com>
Fri, 18 Jul 2014 22:06:53 +0000 (15:06 -0700)
committerIan Rogers <irogers@google.com>
Fri, 18 Jul 2014 22:06:53 +0000 (15:06 -0700)
Disable 3 run-tests for this configuration that fail for reasons relating to
OOME handling.
Add 012-math to the failing trace tests, it fails due to hitting a file size
limit when running in the interpreter.

Change-Id: Ia58f4c245d9d2d14caf5f2f2f3dcbfa40d4ccadb

build/Android.common_test.mk
test/Android.oat.mk
test/Android.run-test.mk

index bd698de..d5cfc52 100644 (file)
@@ -45,6 +45,9 @@ ART_TEST_TRACE ?= $(ART_TEST_FULL)
 # Do you want tests with GC verification enabled run?
 ART_TEST_GC_VERIFY ?= $(ART_TEST_FULL)
 
+# Do you want tests with the GC stress mode enabled run?
+ART_TEST_GC_STRESS ?= $(ART_TEST_FULL)
+
 # Define the command run on test failure. $(1) is the name of the test. Executed by the shell.
 define ART_TEST_FAILED
   ( [ -f $(ART_HOST_TEST_DIR)/skipped/$(1) ] || \
index 16f1fb7..8d31f8d 100644 (file)
@@ -248,6 +248,19 @@ $$(gcverify_test_rule):
   ART_TEST_HOST_OAT_DEFAULT_RULES += $$(gcverify_test_rule)
   ART_TEST_HOST_OAT_DEFAULT_$(1)_RULES += $$(gcverify_test_rule)
 
+  gcstress_test_rule := test-art-host-oat-gcstress-default-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
+  ifeq ($$(ART_TEST_GC_STRESS),true)
+    $(call define-test-art-oat-rule-host,$(1),$(2),$$(gcstress_test_rule),,-Xgc:SS -Xms2m -Xmx2m -Xgc:preverify -Xgc:postverify)
+  else
+    .PHONY: $$(gcstress_test_rule)
+$$(gcstress_test_rule):
+
+  endif
+
+  ART_TEST_HOST_OAT_DEFAULT$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gcstress_test_rule)
+  ART_TEST_HOST_OAT_DEFAULT_RULES += $$(gcstress_test_rule)
+  ART_TEST_HOST_OAT_DEFAULT_$(1)_RULES += $$(gcstress_test_rule)
+
   # Create a rule to run the host oat test with the optimizing compiler.
   optimizing_test_rule := test-art-host-oat-optimizing-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
   ifeq ($$(ART_TEST_OPTIMIZING),true)
@@ -273,7 +286,7 @@ $$(optimizing_test_rule):
   # Define a phony rule to run both the default and interpreter variants.
   all_test_rule :=  test-art-host-oat-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
 .PHONY: $$(all_test_rule)
-$$(all_test_rule): $$(default_test_rule) $$(gcverify_test_rule) $$(interpreter_test_rule) $$(optimizing_test_rule)
+$$(all_test_rule): $$(default_test_rule) $$(gcverify_test_rule) $$(gcstress_test_rule) $$(interpreter_test_rule) $$(optimizing_test_rule)
        $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
 
   ART_TEST_HOST_OAT$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(all_test_rule)
index 6fcb11b..ecb4ecc 100644 (file)
@@ -54,6 +54,7 @@ endif
 TEST_ART_BROKEN_TRACE_RUN_TESTS := \
   003-omnibus-opcodes \
   004-annotations \
+  012-math \
   018-stack-overflow \
   023-many-interfaces \
   031-class-attributes \
@@ -78,6 +79,16 @@ TEST_ART_BROKEN_TRACE_RUN_TESTS := \
 
 ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace))
 
+# Tests that need more than 2MB of RAM or are running into other corner cases in GC stress related
+# to OOMEs.
+TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \
+  074-gc-thrash \
+  080-oom-throw \
+  096-array-copy-concurrent
+
+ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress))
+
+
 # The path where build only targets will be output, e.g.
 # out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
 art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
@@ -111,9 +122,14 @@ LOCAL_PICKUP_FILES := $(art_run_tests_dir)
 include $(BUILD_PHONY_PACKAGE)
 
 # Clear temp vars.
-TEST_ART_RUN_TEST_BUILD_RULES :=
+all-run-test-names :=
 art_run_tests_dir :=
 define-build-art-run-test :=
+TEST_ART_RUN_TEST_BUILD_RULES :=
+TEST_ART_RUN_TESTS :=
+TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
+TEST_ART_BROKEN_TRACE_RUN_TESTS :=
+TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
 
 ########################################################################
 
@@ -169,7 +185,7 @@ define define-test-art-run-test
   run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
   uc_host_or_target :=
   prereq_rule :=
-  skip_test := false
+  skip_test := true
   ifeq ($(2),host)
     uc_host_or_target := HOST
     run_test_options += --host
@@ -223,8 +239,17 @@ define define-test-art-run-test
         skip_test := true
       endif
     else
-      ifneq (,$(5))
-        $$(error found $(5) expected undefined or -trace)
+      ifeq ($(5),gcstress)
+        run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
+          --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
+        run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(1)$(4)
+        ifneq ($$(ART_TEST_GC_STRESS),true)
+          skip_test := true
+        endif
+      else
+        ifneq (,$(5))
+          $$(error found $(5) expected undefined or gcverify, gcstress or trace)
+        endif
       endif
     endif
   endif
@@ -301,6 +326,9 @@ define define-test-art-run-test-group
   $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
   $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
   $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
+  $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
+  $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
+  $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
   do_second := false
   ifeq ($(2),host)
     ifneq ($$(HOST_PREFER_32_BIT),true)
@@ -321,6 +349,9 @@ define define-test-art-run-test-group
     $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
     $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
     $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
+    $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
+    $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
+    $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
   endif
 
   $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
@@ -401,7 +432,6 @@ endif
 define-test-art-run-test :=
 define-test-art-run-test-group-rule :=
 define-test-art-run-test-group :=
-all-run-test-names :=
 ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
 ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
 ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=