From a71c41457e66f281308f9340c3cd0f527df3a976 Mon Sep 17 00:00:00 2001 From: Marco Ballesio Date: Tue, 9 Feb 2021 09:50:50 -0800 Subject: [PATCH] mockingservicestest: add jni dependency Test: atest com.android.server.am.CachedAppOptimizerTest#init_withDeviceConfigSetsParameters Bug: 179006802 Change-Id: I82bc1c5028b32771b00e39c5497389b9118b5ad4 --- services/core/jni/Android.bp | 9 +++- .../tests/mockingservicestests/Android.bp | 9 +++- .../tests/mockingservicestests/jni/Android.bp | 33 ++++++++++++++ .../tests/mockingservicestests/jni/onload.cpp | 45 +++++++++++++++++++ .../server/am/CachedAppOptimizerTest.java | 1 + 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 services/tests/mockingservicestests/jni/Android.bp create mode 100644 services/tests/mockingservicestests/jni/onload.cpp diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 91be0564a26f8..1c4b034981441 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -56,10 +56,10 @@ cc_library_static { "com_android_server_vibrator_VibratorController.cpp", "com_android_server_VibratorManagerService.cpp", "com_android_server_PersistentDataBlockService.cpp", - "com_android_server_am_CachedAppOptimizer.cpp", "com_android_server_am_LowMemDetector.cpp", "com_android_server_pm_PackageManagerShellCommandDataLoader.cpp", "onload.cpp", + ":lib_cachedAppOptimizer_native", ":lib_networkStatsFactory_native", ], @@ -193,3 +193,10 @@ filegroup { "com_android_server_net_NetworkStatsFactory.cpp", ], } + +filegroup { + name: "lib_cachedAppOptimizer_native", + srcs: [ + "com_android_server_am_CachedAppOptimizer.cpp", + ], +} diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp index 7c935d532f22a..e7d56a070182e 100644 --- a/services/tests/mockingservicestests/Android.bp +++ b/services/tests/mockingservicestests/Android.bp @@ -11,9 +11,16 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +java_defaults { + name: "FrameworkMockingServicesTests-jni-defaults", + jni_libs: [ + "libactivitymanagermockingservicestestjni", + ], +} android_test { name: "FrameworksMockingServicesTests", + defaults: ["FrameworkMockingServicesTests-jni-defaults"], srcs: ["src/**/*.java", "src/**/*.kt"], @@ -72,4 +79,4 @@ java_library { libs: [ "android.test.runner", ], -} \ No newline at end of file +} diff --git a/services/tests/mockingservicestests/jni/Android.bp b/services/tests/mockingservicestests/jni/Android.bp new file mode 100644 index 0000000000000..928065a7ebd98 --- /dev/null +++ b/services/tests/mockingservicestests/jni/Android.bp @@ -0,0 +1,33 @@ +cc_library_shared { + name: "libactivitymanagermockingservicestestjni", + + cflags: [ + "-Wall", + "-Werror", + "-Wno-unused-parameter", + "-Wthread-safety", + ], + + srcs: [ + ":lib_cachedAppOptimizer_native", + "onload.cpp", + ], + + include_dirs: [ + "frameworks/base/libs", + "frameworks/native/services", + "system/memory/libmeminfo/include", + ], + + shared_libs: [ + "libandroid", + "libandroid_runtime", + "libbase", + "libbinder", + "liblog", + "libmeminfo", + "libnativehelper", + "libprocessgroup", + "libutils", + ], +} diff --git a/services/tests/mockingservicestests/jni/onload.cpp b/services/tests/mockingservicestests/jni/onload.cpp new file mode 100644 index 0000000000000..147cc479be18b --- /dev/null +++ b/services/tests/mockingservicestests/jni/onload.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * this is a mini native libaray for cached app optimizer tests to run properly. It + * loads all the native methods necessary. + */ +#include +#include "jni.h" +#include "utils/Log.h" +#include "utils/misc.h" + +namespace android { +int register_android_server_am_CachedAppOptimizer(JNIEnv* env); +}; + +using namespace android; + +extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) +{ + JNIEnv* env = NULL; + jint result = -1; + + if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { + ALOGE("GetEnv failed!"); + return result; + } + ALOG_ASSERT(env, "Could not retrieve the env!"); + register_android_server_am_CachedAppOptimizer(env); + return JNI_VERSION_1_4; +} + diff --git a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java index d86032622e43d..56d30ccdf59fb 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java @@ -97,6 +97,7 @@ public final class CachedAppOptimizerTest { @Before public void setUp() { + System.loadLibrary("activitymanagermockingservicestestjni"); mHandlerThread = new HandlerThread(""); mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper());