diff options
author | Andreas Gampe <agampe@google.com> | 2015-06-22 22:53:45 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2015-06-26 10:08:39 -0700 |
commit | b91205e40fe692061edde19ecb87d51414a7fcee (patch) | |
tree | 450c5adcfd3d9f8ab4eafb75859c765d15ab8948 /test | |
parent | 1ff04abecc7318826248c24850c1116df5b68b33 (diff) | |
download | art-b91205e40fe692061edde19ecb87d51414a7fcee.zip art-b91205e40fe692061edde19ecb87d51414a7fcee.tar.gz art-b91205e40fe692061edde19ecb87d51414a7fcee.tar.bz2 |
ART: Fix streaming tracing issues
Fix a lock ordering issue in streaming-mode tracing.
Fix a moving-GC issue in streaming-mode tracing. DexCache
objects are not good keys for a map.
Expose streaming mode for testing in run-tests.
Bug: 21760614
Change-Id: Idcd0575684ee3cc0cec3f81b4fdd0d5988c11e8c
Diffstat (limited to 'test')
-rw-r--r-- | test/Android.run-test.mk | 15 | ||||
-rwxr-xr-x | test/run-test | 19 |
2 files changed, 30 insertions, 4 deletions
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index 5eda539..8c62ed7 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -101,6 +101,9 @@ TRACE_TYPES := ntrace ifeq ($(ART_TEST_TRACE),true) TRACE_TYPES += trace endif +ifeq ($(ART_TEST_TRACE_STREAM),true) + TRACE_TYPES += stream +endif GC_TYPES := cms ifeq ($(ART_TEST_GC_STRESS),true) GC_TYPES += gcstress @@ -310,9 +313,9 @@ TEST_ART_BROKEN_TRACING_RUN_TESTS := \ 137-cfi \ 802-deoptimization -ifneq (,$(filter trace,$(TRACE_TYPES))) +ifneq (,$(filter trace stream,$(TRACE_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ - $(COMPILER_TYPES),$(RELOCATE_TYPES),trace,$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ + $(COMPILER_TYPES),$(RELOCATE_TYPES),trace stream,$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ $(PICTEST_TYPES),$(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_TRACING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -661,7 +664,13 @@ define define-test-art-run-test ifeq ($(6),ntrace) test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_TRACE_RULES else - $$(error found $(6) expected $(TRACE_TYPES)) + ifeq ($(6),stream) + # Group streaming under normal tracing rules. + test_groups += ART_RUN_TEST_$$(uc_host_or_target)_TRACE_RULES + run_test_options += --trace --stream + else + $$(error found $(6) expected $(TRACE_TYPES)) + endif endif endif ifeq ($(7),gcverify) diff --git a/test/run-test b/test/run-test index dc60eda..3f17861 100755 --- a/test/run-test +++ b/test/run-test @@ -92,6 +92,7 @@ usage="no" build_only="no" suffix64="" trace="false" +trace_stream="false" basic_verify="false" gc_verify="false" gc_stress="false" @@ -267,6 +268,9 @@ while true; do elif [ "x$1" = "x--trace" ]; then trace="true" shift + elif [ "x$1" = "x--stream" ]; then + trace_stream="true" + shift elif [ "x$1" = "x--always-clean" ]; then always_clean="yes" shift @@ -303,7 +307,19 @@ if [ "$gc_stress" = "true" ]; then run_args="${run_args} --runtime-option -Xgc:SS --runtime-option -Xms2m --runtime-option -Xmx2m" fi if [ "$trace" = "true" ]; then - run_args="${run_args} --runtime-option -Xmethod-trace --runtime-option -Xmethod-trace-file:${DEX_LOCATION}/trace.bin --runtime-option -Xmethod-trace-file-size:2000000" + run_args="${run_args} --runtime-option -Xmethod-trace --runtime-option -Xmethod-trace-file-size:2000000" + if [ "$trace_stream" = "true" ]; then + # Streaming mode uses the file size as the buffer size. So output gets really large. Drop + # the ability to analyze the file and just write to /dev/null. + run_args="${run_args} --runtime-option -Xmethod-trace-file:/dev/null" + # Enable streaming mode. + run_args="${run_args} --runtime-option -Xmethod-trace-stream" + else + run_args="${run_args} --runtime-option -Xmethod-trace-file:${DEX_LOCATION}/trace.bin" + fi +elif [ "$trace_stream" = "true" ]; then + echo "Cannot use --stream without --trace." + exit 1 fi # Most interesting target architecture variables are Makefile variables, not environment variables. @@ -469,6 +485,7 @@ if [ "$usage" = "yes" ]; then "files." echo " --64 Run the test in 64-bit mode" echo " --trace Run with method tracing" + echo " --stream Run method tracing in streaming mode (requires --trace)" echo " --gcstress Run with gc stress testing" echo " --gcverify Run with gc verification" echo " --always-clean Delete the test files even if the test fails." |