Merge changes Ib7d53620,I2d4c5d64 am: bca1b9dab1
Change-Id: Icfe823bf2238e912f63313c5de2f4e511f5b033a
diff --git a/metrictests/memory/apps/AndroidManifest.xml b/metrictests/memory/apps/AndroidManifest.xml
index a8856aa..a4b3488 100644
--- a/metrictests/memory/apps/AndroidManifest.xml
+++ b/metrictests/memory/apps/AndroidManifest.xml
@@ -18,7 +18,9 @@
package="libcore.heapdumper">
<uses-sdk android:minSdkVersion="19" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<instrumentation
android:name="libcore.heapdumper.HeapDumpInstrumentation"
diff --git a/metrictests/memory/apps/src/libcore/heapdumper/Actions.java b/metrictests/memory/apps/src/libcore/heapdumper/Actions.java
index e8b56f1..e5ef4ba 100644
--- a/metrictests/memory/apps/src/libcore/heapdumper/Actions.java
+++ b/metrictests/memory/apps/src/libcore/heapdumper/Actions.java
@@ -19,6 +19,8 @@
import java.text.Collator;
import java.util.Arrays;
import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* An enumeration of actions for which we'd like to measure the effect on the post-GC heap.
@@ -65,6 +67,33 @@
}
},
+ REGEX {
+ @Override
+ public void run() {
+ final String sequence = "foo 123 bar baz";
+ Pattern p = Pattern.compile("foo (\\d+) bar (\\w+)");
+ Matcher m = p.matcher(sequence);
+
+ boolean found = m.find();
+ boolean matches = m.matches();
+ int groups = m.groupCount();
+ String first = m.group(1);
+ String second = m.group(2);
+ boolean hitEnd = m.hitEnd();
+
+ // Set region to prefix of the original sequence
+ m.region(0, "foo 123".length());
+ boolean matchesPrefix = m.lookingAt();
+ boolean requireEnd = m.requireEnd();
+
+ m.useTransparentBounds(true);
+ boolean matchesPrefixTransparentBounds = m.lookingAt();
+
+ m.useAnchoringBounds(true);
+ boolean matchesPrefixAnchoringBounds = m.lookingAt();
+ }
+ }
+
;
private static void useCollatorForLocale(Locale locale) {
diff --git a/metrictests/memory/host/src/libcore/heapmetrics/LibcoreHeapMetricsTest.java b/metrictests/memory/host/src/libcore/heapmetrics/LibcoreHeapMetricsTest.java
index 5340d90..2231614 100644
--- a/metrictests/memory/host/src/libcore/heapmetrics/LibcoreHeapMetricsTest.java
+++ b/metrictests/memory/host/src/libcore/heapmetrics/LibcoreHeapMetricsTest.java
@@ -103,6 +103,12 @@
recordBeforeAndAfterAppHeapMetrics(result.getBeforeDump(), result.getAfterDump());
}
+ @Test
+ public void measureRegexes() throws Exception {
+ MetricsRunner.Result result = metricsRunner.runAllInstrumentations("REGEX");
+ recordBeforeAndAfterAppHeapMetrics(result.getBeforeDump(), result.getAfterDump());
+ }
+
private void recordHeapMetrics(AhatSnapshot dump, String metricPrefix, String heapName) {
AhatHeap heap = dump.getHeap(heapName);
recordSizeMetric(metricPrefix, heap.getSize());
diff --git a/metrictests/memory/host/src/libcore/heapmetrics/MetricsRunner.java b/metrictests/memory/host/src/libcore/heapmetrics/MetricsRunner.java
index c3f9e0d..00d5554 100644
--- a/metrictests/memory/host/src/libcore/heapmetrics/MetricsRunner.java
+++ b/metrictests/memory/host/src/libcore/heapmetrics/MetricsRunner.java
@@ -155,7 +155,7 @@
String action, String relativeDirectoryName, String deviceDirectoryName, String apk)
throws DeviceNotAvailableException, IOException {
String command = String.format(
- "am instrument -w -e dumpdir %s -e action %s %s",
+ "am instrument --no-isolated-storage -w -e dumpdir %s -e action %s %s",
relativeDirectoryName, action, apk);
testDevice.executeShellCommand(command);
checkForErrorFile(deviceDirectoryName);