From 550ed5642694f601747048171d8beb8535bc2880 Mon Sep 17 00:00:00 2001 From: Chenbo Feng Date: Fri, 1 Mar 2019 15:07:24 -0800 Subject: [PATCH] Move NetworkStatsFactory into service directory In order to notify netd to swap eBPF maps before pulling the networkStats from eBPF maps, NetworkStatsFactory need to use the NetdServices to issue binder calls. So it need to be moved from framework/base/core to framework/base/service since object in framework/base/core cannot get any system services. This change is also necessary for setting up a lock inside NetworkStatsFactory to prevent racing between two netstats caller since the lock need to be hold before netd trigger the map swap. Also fix the compile problem caused by moving the NetworkStatsFactory and the related tests. Rename the packages and the jni functions to a more proper name. Bug: 124764595 Bug: 128900919 Test: NetworkStatsFactoryTest android.app.usage.cts.NetworkUsageStatsTest android.net.cts.TrafficStatsTest Merged-In: Ifcfe4df81caf8ede2e4e66a76552cb3200378fa8 Change-Id: Ifcfe4df81caf8ede2e4e66a76552cb3200378fa8 --- tests/net/Android.bp | 53 +++++++++++++++++-- .../net/NetworkStatsFactoryTest.java | 6 ++- 2 files changed, 53 insertions(+), 6 deletions(-) rename tests/net/java/com/android/{internal => server}/net/NetworkStatsFactoryTest.java (96%) diff --git a/tests/net/Android.bp b/tests/net/Android.bp index c62d85e418..1c86983937 100644 --- a/tests/net/Android.bp +++ b/tests/net/Android.bp @@ -1,11 +1,8 @@ //######################################################################## // Build FrameworksNetTests package //######################################################################## - -android_test { - name: "FrameworksNetTests", - // Include all test java files. - srcs: ["java/**/*.java"], +java_defaults { + name: "FrameworksNetTests-jni-defaults", static_libs: [ "frameworks-base-testutils", "framework-protos", @@ -20,6 +17,52 @@ android_test { "android.test.base", "android.test.mock", ], + jni_libs: [ + "ld-android", + "libartbase", + "libbacktrace", + "libbase", + "libbinder", + "libbinderthreadstate", + "libbpf", + "libbpf_android", + "libc++", + "libcrypto", + "libcutils", + "libdexfile", + "libdl_android", + "libhidl-gen-utils", + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libjsoncpp", + "liblog", + "liblzma", + "libnativehelper", + "libnetdbpf", + "libnetdutils", + "libpackagelistparser", + "libpcre2", + "libprocessgroup", + "libselinux", + "libui", + "libutils", + "libvintf", + "libvndksupport", + "libtinyxml2", + "libunwindstack", + "libutilscallstack", + "libziparchive", + "libz", + "netd_aidl_interface-cpp", + "libnetworkstatsfactorytestjni", + ], +} + +android_test { + name: "FrameworksNetTests", + defaults: ["FrameworksNetTests-jni-defaults"], + srcs: ["java/**/*.java"], platform_apis: true, test_suites: ["device-tests"], certificate: "platform", diff --git a/tests/net/java/com/android/internal/net/NetworkStatsFactoryTest.java b/tests/net/java/com/android/server/net/NetworkStatsFactoryTest.java similarity index 96% rename from tests/net/java/com/android/internal/net/NetworkStatsFactoryTest.java rename to tests/net/java/com/android/server/net/NetworkStatsFactoryTest.java index 4ec4fdd80a..95bc7d92d5 100644 --- a/tests/net/java/com/android/internal/net/NetworkStatsFactoryTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsFactoryTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.net; +package com.android.server.net; import static android.net.NetworkStats.DEFAULT_NETWORK_NO; import static android.net.NetworkStats.METERED_NO; @@ -70,6 +70,10 @@ public class NetworkStatsFactoryTest { IoUtils.deleteContents(mTestProc); } + // The libandroid_servers which have the native method is not available to + // applications. So in order to have a test support native library, the native code + // related to networkStatsFactory is compiled to a minimal native library and loaded here. + System.loadLibrary("networkstatsfactorytestjni"); mFactory = new NetworkStatsFactory(mTestProc, false); }