Merge "Fix NetworkStackTests compatibility with Q"
diff --git a/tests/unit/jni/Android.bp b/tests/unit/jni/Android.bp
index 4bef7c8..fa1f420 100644
--- a/tests/unit/jni/Android.bp
+++ b/tests/unit/jni/Android.bp
@@ -28,14 +28,13 @@
"hardware/google/apf",
],
shared_libs: [
- "libbinder",
"liblog",
- "libcutils",
- "libnativehelper",
- "netd_aidl_interface-cpp",
+ "libnativehelper_compat_libc++",
],
static_libs: [
"libapf",
"libpcap",
],
+ sdk_version: "29",
+ stl: "c++_static",
}
diff --git a/tests/unit/jni/apf_jni.cpp b/tests/unit/jni/apf_jni.cpp
index 4222adf..ff30bd1 100644
--- a/tests/unit/jni/apf_jni.cpp
+++ b/tests/unit/jni/apf_jni.cpp
@@ -14,19 +14,20 @@
* limitations under the License.
*/
+#include <android/log.h>
#include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedUtfChars.h>
#include <jni.h>
#include <pcap.h>
#include <stdlib.h>
#include <string>
-#include <utils/Log.h>
#include <vector>
#include "apf_interpreter.h"
#include "nativehelper/scoped_primitive_array.h"
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+#define LOG_TAG "NetworkStackUtils-JNI"
// JNI function acting as simply call-through to native APF interpreter.
static jint com_android_server_ApfTest_apfSimulate(
@@ -226,7 +227,7 @@
extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
JNIEnv *env;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
- ALOGE("ERROR: GetEnv failed");
+ __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "ERROR: GetEnv failed");
return -1;
}
diff --git a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
index 7a34c59..ae234b1 100644
--- a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
+++ b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
@@ -83,6 +83,7 @@
import android.net.util.SharedLog;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.os.Build;
import android.os.Bundle;
import android.os.ConditionVariable;
import android.os.Handler;
@@ -105,6 +106,7 @@
import com.android.internal.util.CollectionUtils;
import com.android.networkstack.R;
+import com.android.networkstack.apishim.ShimUtils;
import com.android.networkstack.metrics.DataStallDetectionStats;
import com.android.networkstack.metrics.DataStallStatsUtils;
import com.android.networkstack.netlink.TcpSocketTracker;
@@ -123,6 +125,7 @@
import org.mockito.stubbing.Answer;
import java.io.IOException;
+import java.lang.reflect.Constructor;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;
@@ -542,11 +545,10 @@
final CellInfoGsm cellInfoGsm1 = new CellInfoGsm();
final CellInfoGsm cellInfoGsm2 = new CellInfoGsm();
final CellInfoLte cellInfoLte = new CellInfoLte();
- final CellIdentityGsm cellIdentityGsm =
- new CellIdentityGsm(0, 0, 0, 0, "460", "01", "", "", Collections.emptyList());
- final CellIdentityLte cellIdentityLte =
- new CellIdentityLte(0, 0, 0, 0, 0, "466", "01", "", "",
- Collections.emptyList(), null);
+ final CellIdentityGsm cellIdentityGsm = makeCellIdentityGsm(
+ 0, 0, 0, 0, "460", "01", "", "");
+ final CellIdentityLte cellIdentityLte = makeCellIdentityLte(
+ 0, 0, 0, 0, 0, "466", "01", "", "");
cellInfoGsm1.setCellIdentity(cellIdentityGsm);
cellInfoGsm2.setCellIdentity(cellIdentityGsm);
cellInfoLte.setCellIdentity(cellIdentityLte);
@@ -569,6 +571,37 @@
assertEquals(wnm.getContext(), wnm.getContextByMccIfNoSimCardOrDefault());
}
+ private static CellIdentityGsm makeCellIdentityGsm(int lac, int cid, int arfcn, int bsic,
+ String mccStr, String mncStr, String alphal, String alphas)
+ throws ReflectiveOperationException {
+ if (ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) {
+ return new CellIdentityGsm(lac, cid, arfcn, bsic, mccStr, mncStr, alphal, alphas,
+ Collections.emptyList() /* additionalPlmns */);
+ } else {
+ // API <= Q does not have the additionalPlmns parameter
+ final Constructor<CellIdentityGsm> constructor = CellIdentityGsm.class.getConstructor(
+ int.class, int.class, int.class, int.class, String.class, String.class,
+ String.class, String.class);
+ return constructor.newInstance(lac, cid, arfcn, bsic, mccStr, mncStr, alphal, alphas);
+ }
+ }
+
+ private static CellIdentityLte makeCellIdentityLte(int ci, int pci, int tac, int earfcn,
+ int bandwidth, String mccStr, String mncStr, String alphal, String alphas)
+ throws ReflectiveOperationException {
+ if (ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) {
+ return new CellIdentityLte(ci, pci, tac, earfcn, bandwidth, mccStr, mncStr, alphal,
+ alphas, Collections.emptyList() /* additionalPlmns */, null /* csgInfo */);
+ } else {
+ // API <= Q does not have the additionalPlmns and csgInfo parameters
+ final Constructor<CellIdentityLte> constructor = CellIdentityLte.class.getConstructor(
+ int.class, int.class, int.class, int.class, int.class, String.class,
+ String.class, String.class, String.class);
+ return constructor.newInstance(ci, pci, tac, earfcn, bandwidth, mccStr, mncStr, alphal,
+ alphas);
+ }
+ }
+
@Test
public void testGetIntSetting() throws Exception {
WrappedNetworkMonitor wnm = makeNotMeteredNetworkMonitor();