summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java4
-rw-r--r--apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java4
-rw-r--r--apishim/29/com/android/networkstack/apishim/api29/NetworkShimImpl.java4
-rw-r--r--apishim/29/com/android/networkstack/apishim/api29/SocketUtilsShimImpl.java2
-rw-r--r--apishim/30/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java4
-rw-r--r--apishim/30/com/android/networkstack/apishim/NetworkInformationShimImpl.java4
-rw-r--r--apishim/30/com/android/networkstack/apishim/NetworkShimImpl.java3
-rw-r--r--apishim/30/com/android/networkstack/apishim/SocketUtilsShimImpl.java3
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java (renamed from apishim/common/com/android/networkstack/apishim/CaptivePortalDataShim.java)2
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java (renamed from apishim/common/com/android/networkstack/apishim/NetworkInformationShim.java)2
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/NetworkShim.java (renamed from apishim/common/com/android/networkstack/apishim/NetworkShim.java)2
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/ShimUtils.java (renamed from apishim/common/com/android/networkstack/apishim/ShimUtils.java)2
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/SocketUtilsShim.java (renamed from apishim/common/com/android/networkstack/apishim/SocketUtilsShim.java)2
-rw-r--r--apishim/common/com/android/networkstack/apishim/common/UnsupportedApiLevelException.java (renamed from apishim/common/com/android/networkstack/apishim/UnsupportedApiLevelException.java)2
-rw-r--r--src/android/net/captiveportal/CapportApiProbeResult.java2
-rw-r--r--src/android/net/dhcp/DhcpPacket.java2
-rw-r--r--src/android/net/ip/IpClient.java4
-rw-r--r--src/android/net/ip/IpClientLinkObserver.java2
-rw-r--r--src/com/android/networkstack/NetworkStackNotifier.java4
-rw-r--r--src/com/android/networkstack/netlink/TcpSocketTracker.java10
-rw-r--r--src/com/android/server/NetworkStackService.java2
-rwxr-xr-xsrc/com/android/server/connectivity/NetworkMonitor.java9
-rw-r--r--tests/integration/src/android/net/ip/IpClientIntegrationTest.java2
-rw-r--r--tests/unit/src/android/net/netlink/InetDiagSocketTest.java3
-rw-r--r--tests/unit/src/com/android/networkstack/netlink/TcpSocketTrackerTest.java61
-rw-r--r--tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java2
26 files changed, 99 insertions, 44 deletions
diff --git a/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
index 31be29c..681ba1a 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
@@ -19,8 +19,8 @@ package com.android.networkstack.apishim.api29;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
-import com.android.networkstack.apishim.CaptivePortalDataShim;
-import com.android.networkstack.apishim.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
index 2e42576..1fa4907 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
@@ -25,8 +25,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import com.android.networkstack.apishim.CaptivePortalDataShim;
-import com.android.networkstack.apishim.NetworkInformationShim;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.NetworkInformationShim;
import java.net.Inet4Address;
diff --git a/apishim/29/com/android/networkstack/apishim/api29/NetworkShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/NetworkShimImpl.java
index 54b2be8..3dfdd21 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/NetworkShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/NetworkShimImpl.java
@@ -20,8 +20,8 @@ import android.net.Network;
import androidx.annotation.NonNull;
-import com.android.networkstack.apishim.NetworkShim;
-import com.android.networkstack.apishim.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.NetworkShim;
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
/**
* Implementation of NetworkShim for API 29.
*/
diff --git a/apishim/29/com/android/networkstack/apishim/api29/SocketUtilsShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/SocketUtilsShimImpl.java
index be12662..4c8f0be 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/SocketUtilsShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/SocketUtilsShimImpl.java
@@ -20,7 +20,7 @@ import android.net.util.SocketUtils;
import androidx.annotation.NonNull;
-import com.android.networkstack.apishim.SocketUtilsShim;
+import com.android.networkstack.apishim.common.SocketUtilsShim;
import java.net.SocketAddress;
diff --git a/apishim/30/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java b/apishim/30/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
index bee43b4..dfe8833 100644
--- a/apishim/30/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
@@ -24,6 +24,10 @@ import android.os.RemoteException;
import androidx.annotation.NonNull;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.ShimUtils;
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
+
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/apishim/30/com/android/networkstack/apishim/NetworkInformationShimImpl.java b/apishim/30/com/android/networkstack/apishim/NetworkInformationShimImpl.java
index 029a687..c8c1949 100644
--- a/apishim/30/com/android/networkstack/apishim/NetworkInformationShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/NetworkInformationShimImpl.java
@@ -26,6 +26,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.NetworkInformationShim;
+import com.android.networkstack.apishim.common.ShimUtils;
+
import java.net.Inet4Address;
/**
diff --git a/apishim/30/com/android/networkstack/apishim/NetworkShimImpl.java b/apishim/30/com/android/networkstack/apishim/NetworkShimImpl.java
index 8c37852..edb1cd5 100644
--- a/apishim/30/com/android/networkstack/apishim/NetworkShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/NetworkShimImpl.java
@@ -21,6 +21,9 @@ import android.os.Build;
import androidx.annotation.NonNull;
+import com.android.networkstack.apishim.common.NetworkShim;
+import com.android.networkstack.apishim.common.ShimUtils;
+
/**
* Implementation of {@link NetworkShim} for API 30.
*/
diff --git a/apishim/30/com/android/networkstack/apishim/SocketUtilsShimImpl.java b/apishim/30/com/android/networkstack/apishim/SocketUtilsShimImpl.java
index 748878a..903de79 100644
--- a/apishim/30/com/android/networkstack/apishim/SocketUtilsShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/SocketUtilsShimImpl.java
@@ -21,6 +21,9 @@ import android.os.Build;
import androidx.annotation.NonNull;
+import com.android.networkstack.apishim.common.ShimUtils;
+import com.android.networkstack.apishim.common.SocketUtilsShim;
+
import java.net.SocketAddress;
/**
diff --git a/apishim/common/com/android/networkstack/apishim/CaptivePortalDataShim.java b/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java
index 9718ced..fe99c13 100644
--- a/apishim/common/com/android/networkstack/apishim/CaptivePortalDataShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
import android.net.INetworkMonitorCallbacks;
import android.net.Uri;
diff --git a/apishim/common/com/android/networkstack/apishim/NetworkInformationShim.java b/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java
index 7be73b2..ee19759 100644
--- a/apishim/common/com/android/networkstack/apishim/NetworkInformationShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
import android.net.IpPrefix;
import android.net.LinkProperties;
diff --git a/apishim/common/com/android/networkstack/apishim/NetworkShim.java b/apishim/common/com/android/networkstack/apishim/common/NetworkShim.java
index fcc66be..9ae2da9 100644
--- a/apishim/common/com/android/networkstack/apishim/NetworkShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/NetworkShim.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
/**
* Interface used to access API methods in {@link android.net.Network}, with appropriate fallbacks
diff --git a/apishim/common/com/android/networkstack/apishim/ShimUtils.java b/apishim/common/com/android/networkstack/apishim/common/ShimUtils.java
index a9afe51..d78cd0c 100644
--- a/apishim/common/com/android/networkstack/apishim/ShimUtils.java
+++ b/apishim/common/com/android/networkstack/apishim/common/ShimUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
import android.os.Build;
diff --git a/apishim/common/com/android/networkstack/apishim/SocketUtilsShim.java b/apishim/common/com/android/networkstack/apishim/common/SocketUtilsShim.java
index 33cb5f8..a1a35c5 100644
--- a/apishim/common/com/android/networkstack/apishim/SocketUtilsShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/SocketUtilsShim.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
import androidx.annotation.NonNull;
diff --git a/apishim/common/com/android/networkstack/apishim/UnsupportedApiLevelException.java b/apishim/common/com/android/networkstack/apishim/common/UnsupportedApiLevelException.java
index f302da7..05a8659 100644
--- a/apishim/common/com/android/networkstack/apishim/UnsupportedApiLevelException.java
+++ b/apishim/common/com/android/networkstack/apishim/common/UnsupportedApiLevelException.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.networkstack.apishim;
+package com.android.networkstack.apishim.common;
import androidx.annotation.Nullable;
diff --git a/src/android/net/captiveportal/CapportApiProbeResult.java b/src/android/net/captiveportal/CapportApiProbeResult.java
index 3ef07ce..f693bed 100644
--- a/src/android/net/captiveportal/CapportApiProbeResult.java
+++ b/src/android/net/captiveportal/CapportApiProbeResult.java
@@ -18,7 +18,7 @@ package android.net.captiveportal;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.android.networkstack.apishim.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
/**
* Captive portal probe detection result including capport API detection result.
diff --git a/src/android/net/dhcp/DhcpPacket.java b/src/android/net/dhcp/DhcpPacket.java
index a4dbda1..d022973 100644
--- a/src/android/net/dhcp/DhcpPacket.java
+++ b/src/android/net/dhcp/DhcpPacket.java
@@ -31,7 +31,7 @@ import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.ShimUtils;
import java.io.UnsupportedEncodingException;
import java.net.Inet4Address;
diff --git a/src/android/net/ip/IpClient.java b/src/android/net/ip/IpClient.java
index c6373d7..2079b2b 100644
--- a/src/android/net/ip/IpClient.java
+++ b/src/android/net/ip/IpClient.java
@@ -77,9 +77,9 @@ import com.android.internal.util.MessageUtils;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
import com.android.internal.util.WakeupMessage;
-import com.android.networkstack.apishim.NetworkInformationShim;
import com.android.networkstack.apishim.NetworkInformationShimImpl;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.NetworkInformationShim;
+import com.android.networkstack.apishim.common.ShimUtils;
import com.android.server.NetworkObserverRegistry;
import com.android.server.NetworkStackService.NetworkStackServiceManager;
diff --git a/src/android/net/ip/IpClientLinkObserver.java b/src/android/net/ip/IpClientLinkObserver.java
index ee7f18b..dcbca94 100644
--- a/src/android/net/ip/IpClientLinkObserver.java
+++ b/src/android/net/ip/IpClientLinkObserver.java
@@ -37,8 +37,8 @@ import android.os.Handler;
import android.system.OsConstants;
import android.util.Log;
-import com.android.networkstack.apishim.NetworkInformationShim;
import com.android.networkstack.apishim.NetworkInformationShimImpl;
+import com.android.networkstack.apishim.common.NetworkInformationShim;
import com.android.server.NetworkObserver;
import java.net.InetAddress;
diff --git a/src/com/android/networkstack/NetworkStackNotifier.java b/src/com/android/networkstack/NetworkStackNotifier.java
index 1e97617..a330c70 100644
--- a/src/com/android/networkstack/NetworkStackNotifier.java
+++ b/src/com/android/networkstack/NetworkStackNotifier.java
@@ -40,9 +40,9 @@ import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
-import com.android.networkstack.apishim.CaptivePortalDataShim;
-import com.android.networkstack.apishim.NetworkInformationShim;
import com.android.networkstack.apishim.NetworkInformationShimImpl;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.NetworkInformationShim;
import java.util.Hashtable;
import java.util.function.Consumer;
diff --git a/src/com/android/networkstack/netlink/TcpSocketTracker.java b/src/com/android/networkstack/netlink/TcpSocketTracker.java
index f660f81..ef33f13 100644
--- a/src/com/android/networkstack/netlink/TcpSocketTracker.java
+++ b/src/com/android/networkstack/netlink/TcpSocketTracker.java
@@ -49,6 +49,7 @@ import android.net.netlink.StructNlMsgHdr;
import android.net.util.NetworkStackUtils;
import android.net.util.SocketUtils;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.SystemClock;
@@ -65,7 +66,8 @@ import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
import com.android.networkstack.apishim.NetworkShimImpl;
-import com.android.networkstack.apishim.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.ShimUtils;
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import java.io.FileDescriptor;
import java.io.InterruptedIOException;
@@ -523,11 +525,9 @@ public class TcpSocketTracker {
@VisibleForTesting
public static class Dependencies {
private final Context mContext;
- private final boolean mIsTcpInfoParsingSupported;
- public Dependencies(final Context context, final boolean tcpSupport) {
+ public Dependencies(final Context context) {
mContext = context;
- mIsTcpInfoParsingSupported = tcpSupport;
}
/**
@@ -578,7 +578,7 @@ public class TcpSocketTracker {
public boolean isTcpInfoParsingSupported() {
// Request tcp info from NetworkStack directly needs extra SELinux permission added
// after Q release.
- return mIsTcpInfoParsingSupported;
+ return ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q);
}
/**
diff --git a/src/com/android/server/NetworkStackService.java b/src/com/android/server/NetworkStackService.java
index 3d57134..5de5837 100644
--- a/src/com/android/server/NetworkStackService.java
+++ b/src/com/android/server/NetworkStackService.java
@@ -58,7 +58,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.IndentingPrintWriter;
import com.android.networkstack.NetworkStackNotifier;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.ShimUtils;
import com.android.server.connectivity.NetworkMonitor;
import com.android.server.connectivity.ipmemorystore.IpMemoryStoreService;
import com.android.server.util.PermissionUtil;
diff --git a/src/com/android/server/connectivity/NetworkMonitor.java b/src/com/android/server/connectivity/NetworkMonitor.java
index 6d9cab4..7fb6761 100755
--- a/src/com/android/server/connectivity/NetworkMonitor.java
+++ b/src/com/android/server/connectivity/NetworkMonitor.java
@@ -158,11 +158,11 @@ import com.android.internal.util.StateMachine;
import com.android.internal.util.TrafficStatsConstants;
import com.android.networkstack.NetworkStackNotifier;
import com.android.networkstack.R;
-import com.android.networkstack.apishim.CaptivePortalDataShim;
import com.android.networkstack.apishim.CaptivePortalDataShimImpl;
import com.android.networkstack.apishim.NetworkInformationShimImpl;
-import com.android.networkstack.apishim.ShimUtils;
-import com.android.networkstack.apishim.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.CaptivePortalDataShim;
+import com.android.networkstack.apishim.common.ShimUtils;
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import com.android.networkstack.metrics.DataStallDetectionStats;
import com.android.networkstack.metrics.DataStallStatsUtils;
import com.android.networkstack.netlink.TcpSocketTracker;
@@ -3374,8 +3374,7 @@ public class NetworkMonitor extends StateMachine {
CONFIG_DATA_STALL_EVALUATION_TYPE,
DEFAULT_DATA_STALL_EVALUATION_TYPES)
& DATA_STALL_EVALUATION_TYPE_TCP) != 0)
- ? new TcpSocketTracker(new TcpSocketTracker.Dependencies(context,
- ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)), network)
+ ? new TcpSocketTracker(new TcpSocketTracker.Dependencies(context), network)
: null;
}
diff --git a/tests/integration/src/android/net/ip/IpClientIntegrationTest.java b/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
index 5625dd2..b4efcf9 100644
--- a/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
+++ b/tests/integration/src/android/net/ip/IpClientIntegrationTest.java
@@ -134,7 +134,7 @@ import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.StateMachine;
import com.android.networkstack.apishim.CaptivePortalDataShimImpl;
import com.android.networkstack.apishim.ConstantsShim;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.ShimUtils;
import com.android.networkstack.arp.ArpPacket;
import com.android.server.NetworkObserver;
import com.android.server.NetworkObserverRegistry;
diff --git a/tests/unit/src/android/net/netlink/InetDiagSocketTest.java b/tests/unit/src/android/net/netlink/InetDiagSocketTest.java
index 702de47..4879144 100644
--- a/tests/unit/src/android/net/netlink/InetDiagSocketTest.java
+++ b/tests/unit/src/android/net/netlink/InetDiagSocketTest.java
@@ -36,7 +36,6 @@ import static org.junit.Assume.assumeTrue;
import android.app.Instrumentation;
import android.content.Context;
import android.net.ConnectivityManager;
-import android.net.netlink.StructNlMsgHdr;
import android.os.Process;
import android.system.Os;
@@ -44,7 +43,7 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.ShimUtils;
import libcore.util.HexEncoding;
diff --git a/tests/unit/src/com/android/networkstack/netlink/TcpSocketTrackerTest.java b/tests/unit/src/com/android/networkstack/netlink/TcpSocketTrackerTest.java
index 6a09f12..a884f7e 100644
--- a/tests/unit/src/com/android/networkstack/netlink/TcpSocketTrackerTest.java
+++ b/tests/unit/src/com/android/networkstack/netlink/TcpSocketTrackerTest.java
@@ -22,6 +22,8 @@ import static android.net.util.DataStallUtils.DEFAULT_TCP_PACKETS_FAIL_PERCENTAG
import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
import static android.system.OsConstants.AF_INET;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
@@ -29,28 +31,37 @@ import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import android.net.INetd;
import android.net.MarkMaskParcel;
import android.net.Network;
import android.net.netlink.StructNlMsgHdr;
+import android.os.Build;
import android.util.Log;
import android.util.Log.TerribleFailureHandler;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
-import com.android.networkstack.apishim.NetworkShim;
+import com.android.networkstack.apishim.ConstantsShim;
import com.android.networkstack.apishim.NetworkShimImpl;
+import com.android.testutils.DevSdkIgnoreRule;
+import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter;
+import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
import libcore.util.HexEncoding;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -197,12 +208,15 @@ public class TcpSocketTrackerTest {
private static final int NETID_MASK = 0xffff;
@Mock private TcpSocketTracker.Dependencies mDependencies;
@Mock private FileDescriptor mMockFd;
- @Mock private Network mNetwork = new Network(TEST_NETID1);
@Mock private INetd mNetd;
+ private final Network mNetwork = new Network(TEST_NETID1);
+ private final Network mOtherNetwork = new Network(TEST_NETID2);
private MockitoSession mSession;
- @Mock NetworkShim mNetworkShim;
private TerribleFailureHandler mOldWtfHandler;
+ @Rule
+ public final DevSdkIgnoreRule mIgnoreRule = new DevSdkIgnoreRule();
+
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
@@ -222,8 +236,6 @@ public class TcpSocketTrackerTest {
.strictness(Strictness.WARN)
.startMocking();
- doReturn(mNetworkShim).when(() -> NetworkShimImpl.newInstance(mNetwork));
- when(mNetworkShim.getNetId()).thenReturn(TEST_NETID1);
when(mNetd.getFwmarkForNetwork(eq(TEST_NETID1)))
.thenReturn(makeMarkMaskParcel(NETID_MASK, TEST_NETID1_FWMARK));
}
@@ -275,8 +287,10 @@ public class TcpSocketTrackerTest {
assertFalse(TcpSocketTracker.enoughBytesRemainForValidNlMsg(buffer));
}
- @Test
+ @Test @IgnoreUpTo(Build.VERSION_CODES.Q) // TCP info parsing is not supported on Q
public void testPollSocketsInfo() throws Exception {
+ // This test requires shims that provide API 30 access
+ assumeTrue(ConstantsShim.VERSION >= 30);
when(mDependencies.isTcpInfoParsingSupported()).thenReturn(false);
final TcpSocketTracker tst = new TcpSocketTracker(mDependencies, mNetwork);
assertFalse(tst.pollSocketsInfo());
@@ -314,6 +328,34 @@ public class TcpSocketTrackerTest {
assertTrue(tst.isDataStallSuspected());
}
+ @Test
+ public void testTcpInfoParsingUnsupported() {
+ doReturn(false).when(mDependencies).isTcpInfoParsingSupported();
+ final TcpSocketTracker tst = new TcpSocketTracker(mDependencies, mNetwork);
+ verify(mDependencies).getNetd();
+
+ assertFalse(tst.pollSocketsInfo());
+ assertEquals(-1, tst.getLatestPacketFailPercentage());
+ assertEquals(-1, tst.getLatestReceivedCount());
+ assertEquals(-1, tst.getSentSinceLastRecv());
+ assertFalse(tst.isDataStallSuspected());
+
+ verify(mDependencies, atLeastOnce()).isTcpInfoParsingSupported();
+ verifyNoMoreInteractions(mDependencies);
+ }
+
+ @Test @IgnoreAfter(Build.VERSION_CODES.Q)
+ public void testTcpInfoParsingNotSupportedOnQ() {
+ assertFalse(new TcpSocketTracker.Dependencies(getInstrumentation().getContext())
+ .isTcpInfoParsingSupported());
+ }
+
+ @Test @IgnoreUpTo(Build.VERSION_CODES.Q)
+ public void testTcpInfoParsingSupportedFromR() {
+ assertTrue(new TcpSocketTracker.Dependencies(getInstrumentation().getContext())
+ .isTcpInfoParsingSupported());
+ }
+
private static final String BAD_DIAG_MSG_HEX =
// struct nlmsghdr.
"00000058" + // length = 1476395008
@@ -341,8 +383,10 @@ public class TcpSocketTrackerTest {
private static final byte[] BAD_SOCK_DIAG_MSG_BYTES =
HexEncoding.decode(BAD_DIAG_MSG_HEX.toCharArray(), false);
- @Test
+ @Test @IgnoreUpTo(Build.VERSION_CODES.Q) // TCP info parsing is not supported on Q
public void testPollSocketsInfo_BadFormat() throws Exception {
+ // This test requires shims that provide API 30 access
+ assumeTrue(ConstantsShim.VERSION >= 30);
final TcpSocketTracker tst = new TcpSocketTracker(mDependencies, mNetwork);
ByteBuffer tcpBuffer = getByteBuffer(TEST_RESPONSE_BYTES);
@@ -362,10 +406,9 @@ public class TcpSocketTrackerTest {
@Test
public void testUnMatchNetwork() throws Exception {
- when(mNetworkShim.getNetId()).thenReturn(TEST_NETID2);
when(mNetd.getFwmarkForNetwork(eq(TEST_NETID2)))
.thenReturn(makeMarkMaskParcel(NETID_MASK, TEST_NETID2_FWMARK));
- final TcpSocketTracker tst = new TcpSocketTracker(mDependencies, mNetwork);
+ final TcpSocketTracker tst = new TcpSocketTracker(mDependencies, mOtherNetwork);
final ByteBuffer tcpBuffer = getByteBuffer(TEST_RESPONSE_BYTES);
when(mDependencies.recvMessage(any())).thenReturn(tcpBuffer);
assertTrue(tst.pollSocketsInfo());
diff --git a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
index 57a53b4..e25c2e8 100644
--- a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
+++ b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
@@ -137,7 +137,7 @@ import com.android.networkstack.NetworkStackNotifier;
import com.android.networkstack.R;
import com.android.networkstack.apishim.CaptivePortalDataShimImpl;
import com.android.networkstack.apishim.ConstantsShim;
-import com.android.networkstack.apishim.ShimUtils;
+import com.android.networkstack.apishim.common.ShimUtils;
import com.android.networkstack.metrics.DataStallDetectionStats;
import com.android.networkstack.metrics.DataStallStatsUtils;
import com.android.networkstack.netlink.TcpSocketTracker;