aboutsummaryrefslogtreecommitdiff
path: root/dexmaker-mockito-inline-tests/src
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2018-03-13 13:11:07 -0700
committerPhilip P. Moltmann <moltmann@google.com>2018-03-15 12:33:59 -0700
commitd4a20568bcbaa34526676e4758e011ea32784825 (patch)
tree2fefe4d0032fd648c0024fd5258496dfae7ad1bb /dexmaker-mockito-inline-tests/src
parenta0553730d3fb78f907bdb79a270fdfc43b59ace5 (diff)
downloaddexmaker-d4a20568bcbaa34526676e4758e011ea32784825.tar.gz
Update dexmaker to almost 2.16
Test: atest CtsMockingTestCases CtsInlineMockingTestCases Bug: 74344734 Change-Id: Ib79431a454b3ae9715906da61fc9267d54ae7f07
Diffstat (limited to 'dexmaker-mockito-inline-tests/src')
-rw-r--r--dexmaker-mockito-inline-tests/src/androidTest/java/com/android/dx/mockito/inline/tests/MultipleJvmtiAgentsInterference.java46
-rw-r--r--dexmaker-mockito-inline-tests/src/main/jni/multiplejvmtiagentsinterferenceagent/agent.cc19
2 files changed, 26 insertions, 39 deletions
diff --git a/dexmaker-mockito-inline-tests/src/androidTest/java/com/android/dx/mockito/inline/tests/MultipleJvmtiAgentsInterference.java b/dexmaker-mockito-inline-tests/src/androidTest/java/com/android/dx/mockito/inline/tests/MultipleJvmtiAgentsInterference.java
index 9231202..bdc0626 100644
--- a/dexmaker-mockito-inline-tests/src/androidTest/java/com/android/dx/mockito/inline/tests/MultipleJvmtiAgentsInterference.java
+++ b/dexmaker-mockito-inline-tests/src/androidTest/java/com/android/dx/mockito/inline/tests/MultipleJvmtiAgentsInterference.java
@@ -17,27 +17,18 @@
package com.android.dx.mockito.inline.tests;
import android.os.Build;
+import android.os.Debug;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import dalvik.system.BaseDexClassLoader;
-
import static org.junit.Assert.assertNull;
import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.mock;
-@Ignore("Leaving the transformation hook enabled causes a lot of unnecessary transformations. " +
- "This is too expensive. Hence for now, we cannot support multiple agents")
public class MultipleJvmtiAgentsInterference {
- private static final String AGENT_LIB_NAME = "multiplejvmtiagentsinterferenceagent";
+ private static final String AGENT_LIB_NAME = "libmultiplejvmtiagentsinterferenceagent.so";
public class TestClass {
public String returnA() {
@@ -50,29 +41,8 @@ public class MultipleJvmtiAgentsInterference {
// TODO (moltmann@google.com): Replace with proper check for >= P
assumeTrue(Build.VERSION.CODENAME.equals("P"));
- // Currently Debug.attachJvmtiAgent requires a file in the right directory
- File copiedAgent = File.createTempFile("testagent", ".so");
- copiedAgent.deleteOnExit();
-
- try (InputStream is = new FileInputStream(((BaseDexClassLoader)
- MultipleJvmtiAgentsInterference.class.getClassLoader()).findLibrary
- (AGENT_LIB_NAME))) {
- try (OutputStream os = new FileOutputStream(copiedAgent)) {
- byte[] buffer = new byte[64 * 1024];
-
- while (true) {
- int numRead = is.read(buffer);
- if (numRead == -1) {
- break;
- }
- os.write(buffer, 0, numRead);
- }
- }
- }
-
- // TODO (moltmann@google.com): Replace with regular method call once the API becomes public
- Class.forName("android.os.Debug").getMethod("attachJvmtiAgent", String.class, String
- .class).invoke(null, copiedAgent.getAbsolutePath(), null);
+ Debug.attachJvmtiAgent(AGENT_LIB_NAME, null,
+ MultipleJvmtiAgentsInterference.class.getClassLoader());
}
@Test
@@ -90,5 +60,11 @@ public class MultipleJvmtiAgentsInterference {
assertNull(t.returnA());
}
+ @AfterClass
+ public static void DisableRetransfromHook() {
+ disableRetransformHook();
+ }
+
private native int nativeRetransformClasses(Class<?>[] classes);
+ private static native int disableRetransformHook();
}
diff --git a/dexmaker-mockito-inline-tests/src/main/jni/multiplejvmtiagentsinterferenceagent/agent.cc b/dexmaker-mockito-inline-tests/src/main/jni/multiplejvmtiagentsinterferenceagent/agent.cc
index a293fe7..b1c5455 100644
--- a/dexmaker-mockito-inline-tests/src/main/jni/multiplejvmtiagentsinterferenceagent/agent.cc
+++ b/dexmaker-mockito-inline-tests/src/main/jni/multiplejvmtiagentsinterferenceagent/agent.cc
@@ -22,9 +22,9 @@
#include "jvmti.h"
-#include <dex_ir.h>
-#include <writer.h>
-#include <reader.h>
+#include <slicer/dex_ir.h>
+#include <slicer/writer.h>
+#include <slicer/reader.h>
using namespace dex;
@@ -148,4 +148,15 @@ namespace com_android_dx_mockito_inline_tests {
return error;
}
-} \ No newline at end of file
+
+ // Disable hook to not slow down test
+ extern "C" JNIEXPORT jint JNICALL
+ Java_com_android_dx_mockito_inline_tests_MultipleJvmtiAgentsInterference_disableRetransformHook(
+ JNIEnv *env,
+ jclass ignored) {
+ return localJvmtiEnv->SetEventNotificationMode(JVMTI_DISABLE,
+ JVMTI_EVENT_CLASS_FILE_LOAD_HOOK,
+ NULL);
+
+ }
+}