Merge "Move NetworkStatsFactory into service directory"
am: 48294e098f
Change-Id: If92f556cbf3badcb057a3b6e43bb3ef74d0c9ac0
This commit is contained in:
@ -196,7 +196,6 @@ cc_library_shared {
|
|||||||
"android_content_res_Configuration.cpp",
|
"android_content_res_Configuration.cpp",
|
||||||
"android_animation_PropertyValuesHolder.cpp",
|
"android_animation_PropertyValuesHolder.cpp",
|
||||||
"android_security_Scrypt.cpp",
|
"android_security_Scrypt.cpp",
|
||||||
"com_android_internal_net_NetworkStatsFactory.cpp",
|
|
||||||
"com_android_internal_os_ClassLoaderFactory.cpp",
|
"com_android_internal_os_ClassLoaderFactory.cpp",
|
||||||
"com_android_internal_os_FuseAppLoop.cpp",
|
"com_android_internal_os_FuseAppLoop.cpp",
|
||||||
"com_android_internal_os_Zygote.cpp",
|
"com_android_internal_os_Zygote.cpp",
|
||||||
|
@ -213,7 +213,6 @@ extern int register_android_content_res_Configuration(JNIEnv* env);
|
|||||||
extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
|
extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
|
||||||
extern int register_android_security_Scrypt(JNIEnv *env);
|
extern int register_android_security_Scrypt(JNIEnv *env);
|
||||||
extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env);
|
extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env);
|
||||||
extern int register_com_android_internal_net_NetworkStatsFactory(JNIEnv *env);
|
|
||||||
extern int register_com_android_internal_os_ClassLoaderFactory(JNIEnv* env);
|
extern int register_com_android_internal_os_ClassLoaderFactory(JNIEnv* env);
|
||||||
extern int register_com_android_internal_os_FuseAppLoop(JNIEnv* env);
|
extern int register_com_android_internal_os_FuseAppLoop(JNIEnv* env);
|
||||||
extern int register_com_android_internal_os_Zygote(JNIEnv *env);
|
extern int register_com_android_internal_os_Zygote(JNIEnv *env);
|
||||||
@ -1538,7 +1537,6 @@ static const RegJNIRec gRegJNI[] = {
|
|||||||
REG_JNI(register_android_animation_PropertyValuesHolder),
|
REG_JNI(register_android_animation_PropertyValuesHolder),
|
||||||
REG_JNI(register_android_security_Scrypt),
|
REG_JNI(register_android_security_Scrypt),
|
||||||
REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
|
REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
|
||||||
REG_JNI(register_com_android_internal_net_NetworkStatsFactory),
|
|
||||||
REG_JNI(register_com_android_internal_os_FuseAppLoop),
|
REG_JNI(register_com_android_internal_os_FuseAppLoop),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -88,10 +88,10 @@ import android.util.SparseIntArray;
|
|||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.app.IBatteryStats;
|
import com.android.internal.app.IBatteryStats;
|
||||||
import com.android.internal.net.NetworkStatsFactory;
|
|
||||||
import com.android.internal.util.DumpUtils;
|
import com.android.internal.util.DumpUtils;
|
||||||
import com.android.internal.util.HexDump;
|
import com.android.internal.util.HexDump;
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.server.net.NetworkStatsFactory;
|
||||||
|
|
||||||
import com.google.android.collect.Maps;
|
import com.google.android.collect.Maps;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.internal.net;
|
package com.android.server.net;
|
||||||
|
|
||||||
import static android.net.NetworkStats.SET_ALL;
|
import static android.net.NetworkStats.SET_ALL;
|
||||||
import static android.net.NetworkStats.TAG_ALL;
|
import static android.net.NetworkStats.TAG_ALL;
|
@ -129,7 +129,6 @@ import android.util.proto.ProtoOutputStream;
|
|||||||
|
|
||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.net.NetworkStatsFactory;
|
|
||||||
import com.android.internal.net.VpnInfo;
|
import com.android.internal.net.VpnInfo;
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.internal.util.DumpUtils;
|
import com.android.internal.util.DumpUtils;
|
||||||
|
@ -51,6 +51,7 @@ cc_library_static {
|
|||||||
"com_android_server_PersistentDataBlockService.cpp",
|
"com_android_server_PersistentDataBlockService.cpp",
|
||||||
"com_android_server_GraphicsStatsService.cpp",
|
"com_android_server_GraphicsStatsService.cpp",
|
||||||
"onload.cpp",
|
"onload.cpp",
|
||||||
|
":lib_networkStatsFactory_native",
|
||||||
],
|
],
|
||||||
|
|
||||||
include_dirs: [
|
include_dirs: [
|
||||||
@ -140,3 +141,10 @@ cc_defaults {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filegroup {
|
||||||
|
name: "lib_networkStatsFactory_native",
|
||||||
|
srcs: [
|
||||||
|
"com_android_server_net_NetworkStatsFactory.cpp",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include <core_jni_helpers.h>
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
|
||||||
|
#include <nativehelper/JNIHelp.h>
|
||||||
#include <nativehelper/ScopedUtfChars.h>
|
#include <nativehelper/ScopedUtfChars.h>
|
||||||
#include <nativehelper/ScopedLocalRef.h>
|
#include <nativehelper/ScopedLocalRef.h>
|
||||||
#include <nativehelper/ScopedPrimitiveArray.h>
|
#include <nativehelper/ScopedPrimitiveArray.h>
|
||||||
@ -333,29 +333,27 @@ static const JNINativeMethod gMethods[] = {
|
|||||||
(void*) readNetworkStatsDev },
|
(void*) readNetworkStatsDev },
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_com_android_internal_net_NetworkStatsFactory(JNIEnv* env) {
|
int register_android_server_net_NetworkStatsFactory(JNIEnv* env) {
|
||||||
int err = RegisterMethodsOrDie(env,
|
int err = jniRegisterNativeMethods(env, "com/android/server/net/NetworkStatsFactory", gMethods,
|
||||||
"com/android/internal/net/NetworkStatsFactory", gMethods,
|
|
||||||
NELEM(gMethods));
|
NELEM(gMethods));
|
||||||
|
gStringClass = env->FindClass("java/lang/String");
|
||||||
|
gStringClass = static_cast<jclass>(env->NewGlobalRef(gStringClass));
|
||||||
|
|
||||||
gStringClass = FindClassOrDie(env, "java/lang/String");
|
jclass clazz = env->FindClass("android/net/NetworkStats");
|
||||||
gStringClass = MakeGlobalRefOrDie(env, gStringClass);
|
gNetworkStatsClassInfo.size = env->GetFieldID(clazz, "size", "I");
|
||||||
|
gNetworkStatsClassInfo.capacity = env->GetFieldID(clazz, "capacity", "I");
|
||||||
jclass clazz = FindClassOrDie(env, "android/net/NetworkStats");
|
gNetworkStatsClassInfo.iface = env->GetFieldID(clazz, "iface", "[Ljava/lang/String;");
|
||||||
gNetworkStatsClassInfo.size = GetFieldIDOrDie(env, clazz, "size", "I");
|
gNetworkStatsClassInfo.uid = env->GetFieldID(clazz, "uid", "[I");
|
||||||
gNetworkStatsClassInfo.capacity = GetFieldIDOrDie(env, clazz, "capacity", "I");
|
gNetworkStatsClassInfo.set = env->GetFieldID(clazz, "set", "[I");
|
||||||
gNetworkStatsClassInfo.iface = GetFieldIDOrDie(env, clazz, "iface", "[Ljava/lang/String;");
|
gNetworkStatsClassInfo.tag = env->GetFieldID(clazz, "tag", "[I");
|
||||||
gNetworkStatsClassInfo.uid = GetFieldIDOrDie(env, clazz, "uid", "[I");
|
gNetworkStatsClassInfo.metered = env->GetFieldID(clazz, "metered", "[I");
|
||||||
gNetworkStatsClassInfo.set = GetFieldIDOrDie(env, clazz, "set", "[I");
|
gNetworkStatsClassInfo.roaming = env->GetFieldID(clazz, "roaming", "[I");
|
||||||
gNetworkStatsClassInfo.tag = GetFieldIDOrDie(env, clazz, "tag", "[I");
|
gNetworkStatsClassInfo.defaultNetwork = env->GetFieldID(clazz, "defaultNetwork", "[I");
|
||||||
gNetworkStatsClassInfo.metered = GetFieldIDOrDie(env, clazz, "metered", "[I");
|
gNetworkStatsClassInfo.rxBytes = env->GetFieldID(clazz, "rxBytes", "[J");
|
||||||
gNetworkStatsClassInfo.roaming = GetFieldIDOrDie(env, clazz, "roaming", "[I");
|
gNetworkStatsClassInfo.rxPackets = env->GetFieldID(clazz, "rxPackets", "[J");
|
||||||
gNetworkStatsClassInfo.defaultNetwork = GetFieldIDOrDie(env, clazz, "defaultNetwork", "[I");
|
gNetworkStatsClassInfo.txBytes = env->GetFieldID(clazz, "txBytes", "[J");
|
||||||
gNetworkStatsClassInfo.rxBytes = GetFieldIDOrDie(env, clazz, "rxBytes", "[J");
|
gNetworkStatsClassInfo.txPackets = env->GetFieldID(clazz, "txPackets", "[J");
|
||||||
gNetworkStatsClassInfo.rxPackets = GetFieldIDOrDie(env, clazz, "rxPackets", "[J");
|
gNetworkStatsClassInfo.operations = env->GetFieldID(clazz, "operations", "[J");
|
||||||
gNetworkStatsClassInfo.txBytes = GetFieldIDOrDie(env, clazz, "txBytes", "[J");
|
|
||||||
gNetworkStatsClassInfo.txPackets = GetFieldIDOrDie(env, clazz, "txPackets", "[J");
|
|
||||||
gNetworkStatsClassInfo.operations = GetFieldIDOrDie(env, clazz, "operations", "[J");
|
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
@ -54,6 +54,7 @@ int register_android_server_HardwarePropertiesManagerService(JNIEnv* env);
|
|||||||
int register_android_server_SyntheticPasswordManager(JNIEnv* env);
|
int register_android_server_SyntheticPasswordManager(JNIEnv* env);
|
||||||
int register_android_server_GraphicsStatsService(JNIEnv* env);
|
int register_android_server_GraphicsStatsService(JNIEnv* env);
|
||||||
int register_android_hardware_display_DisplayViewport(JNIEnv* env);
|
int register_android_hardware_display_DisplayViewport(JNIEnv* env);
|
||||||
|
int register_android_server_net_NetworkStatsFactory(JNIEnv* env);
|
||||||
int register_android_server_net_NetworkStatsService(JNIEnv* env);
|
int register_android_server_net_NetworkStatsService(JNIEnv* env);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,6 +103,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
|
|||||||
register_android_server_SyntheticPasswordManager(env);
|
register_android_server_SyntheticPasswordManager(env);
|
||||||
register_android_server_GraphicsStatsService(env);
|
register_android_server_GraphicsStatsService(env);
|
||||||
register_android_hardware_display_DisplayViewport(env);
|
register_android_hardware_display_DisplayViewport(env);
|
||||||
|
register_android_server_net_NetworkStatsFactory(env);
|
||||||
register_android_server_net_NetworkStatsService(env);
|
register_android_server_net_NetworkStatsService(env);
|
||||||
return JNI_VERSION_1_4;
|
return JNI_VERSION_1_4;
|
||||||
}
|
}
|
||||||
|
29
tests/benchmarks/Android.bp
Normal file
29
tests/benchmarks/Android.bp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// Copyright (C) 2015 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.
|
||||||
|
|
||||||
|
// build framework base core benchmarks
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "networkStatsFactory-benchmarks",
|
||||||
|
installable: true,
|
||||||
|
|
||||||
|
srcs: ["src/**/*.java"],
|
||||||
|
|
||||||
|
libs: [
|
||||||
|
"caliper-api-target",
|
||||||
|
"services.core",
|
||||||
|
],
|
||||||
|
|
||||||
|
}
|
@ -14,10 +14,11 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.internal.net;
|
package com.android.server.net;
|
||||||
|
|
||||||
import android.net.NetworkStats;
|
import android.net.NetworkStats;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import com.android.server.net.NetworkStatsFactory;
|
||||||
import com.google.caliper.AfterExperiment;
|
import com.google.caliper.AfterExperiment;
|
||||||
import com.google.caliper.BeforeExperiment;
|
import com.google.caliper.BeforeExperiment;
|
||||||
import java.io.File;
|
import java.io.File;
|
@ -1,11 +1,8 @@
|
|||||||
//########################################################################
|
//########################################################################
|
||||||
// Build FrameworksNetTests package
|
// Build FrameworksNetTests package
|
||||||
//########################################################################
|
//########################################################################
|
||||||
|
java_defaults {
|
||||||
android_test {
|
name: "FrameworksNetTests-jni-defaults",
|
||||||
name: "FrameworksNetTests",
|
|
||||||
// Include all test java files.
|
|
||||||
srcs: ["java/**/*.java"],
|
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"FrameworksNetCommonTests",
|
"FrameworksNetCommonTests",
|
||||||
"frameworks-base-testutils",
|
"frameworks-base-testutils",
|
||||||
@ -21,6 +18,52 @@ android_test {
|
|||||||
"android.test.base",
|
"android.test.base",
|
||||||
"android.test.mock",
|
"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,
|
platform_apis: true,
|
||||||
test_suites: ["device-tests"],
|
test_suites: ["device-tests"],
|
||||||
certificate: "platform",
|
certificate: "platform",
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* 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.DEFAULT_NETWORK_NO;
|
||||||
import static android.net.NetworkStats.METERED_NO;
|
import static android.net.NetworkStats.METERED_NO;
|
||||||
@ -70,6 +70,10 @@ public class NetworkStatsFactoryTest {
|
|||||||
IoUtils.deleteContents(mTestProc);
|
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);
|
mFactory = new NetworkStatsFactory(mTestProc, false);
|
||||||
}
|
}
|
||||||
|
|
23
tests/net/jni/Android.bp
Normal file
23
tests/net/jni/Android.bp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
cc_library_shared {
|
||||||
|
name: "libnetworkstatsfactorytestjni",
|
||||||
|
|
||||||
|
cflags: [
|
||||||
|
"-Wall",
|
||||||
|
"-Werror",
|
||||||
|
"-Wno-unused-parameter",
|
||||||
|
"-Wthread-safety",
|
||||||
|
],
|
||||||
|
|
||||||
|
srcs: [
|
||||||
|
":lib_networkStatsFactory_native",
|
||||||
|
"test_onload.cpp",
|
||||||
|
],
|
||||||
|
|
||||||
|
shared_libs: [
|
||||||
|
"libbpf_android",
|
||||||
|
"liblog",
|
||||||
|
"libnativehelper",
|
||||||
|
"libnetdbpf",
|
||||||
|
"libnetdutils",
|
||||||
|
],
|
||||||
|
}
|
44
tests/net/jni/test_onload.cpp
Normal file
44
tests/net/jni/test_onload.cpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 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 NetworkStatsFactoryTest to run properly. It
|
||||||
|
* load all the native method related to NetworkStatsFactory when test run
|
||||||
|
*/
|
||||||
|
#include <nativehelper/JNIHelp.h>
|
||||||
|
#include "jni.h"
|
||||||
|
#include "utils/Log.h"
|
||||||
|
#include "utils/misc.h"
|
||||||
|
|
||||||
|
namespace android {
|
||||||
|
int register_android_server_net_NetworkStatsFactory(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_net_NetworkStatsFactory(env);
|
||||||
|
return JNI_VERSION_1_4;
|
||||||
|
}
|
Reference in New Issue
Block a user