Snap for 8820681 from 7ddfa8952a5b7378c315e7874b240b700e360f8e to mainline-go-wifi-release Change-Id: Ie638bda0b0e3c1f1792ba6a4a709e9b44071cb09
diff --git a/TEST_MAPPING b/TEST_MAPPING index 5dd1654..f7dc8f0 100644 --- a/TEST_MAPPING +++ b/TEST_MAPPING
@@ -10,23 +10,6 @@ "name": "NetworkStackIntegrationTests" } ], - "auto-postsubmit": [ - // Test tag for automotive targets. These are only running in postsubmit so as to harden the - // automotive targets to avoid introducing additional test flake and build time. The plan for - // presubmit testing for auto is to augment the existing tests to cover auto use cases as well. - // Additionally, this tag is used in targeted test suites to limit resource usage on the test - // infra during the hardening phase. - // TODO: this tag to be removed once the above is no longer an issue. - { - "name": "NetworkStackTests" - }, - { - "name": "NetworkStackNextTests" - }, - { - "name": "NetworkStackIntegrationTests" - } - ], "mainline-presubmit": [ // These are unit tests only, so they don't actually require any modules to be installed. // We must specify at least one module here or the tests won't run. Use the same set as CTS
diff --git a/common/moduleutils/Android.bp b/common/moduleutils/Android.bp index c0ee3f4..07e322d 100644 --- a/common/moduleutils/Android.bp +++ b/common/moduleutils/Android.bp
@@ -26,7 +26,6 @@ name: "net-module-utils-srcs", srcs: [ "src/android/net/shared/NetdUtils.java", - "src/android/net/util/SharedLog.java", ], visibility: [ "//frameworks/base/services/net", @@ -36,7 +35,6 @@ filegroup { name: "connectivity-module-utils-srcs", srcs: [ - "src/android/net/util/SharedLog.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetworkMonitorUtils.java", ], @@ -62,7 +60,6 @@ "src/android/net/ip/IpNeighborMonitor.java", "src/android/net/ip/NetlinkMonitor.java", "src/android/net/shared/NetdUtils.java", - "src/android/net/util/SharedLog.java", ], visibility: [ "//frameworks/base/packages/Tethering",
diff --git a/common/moduleutils/src/android/net/ip/ConntrackMonitor.java b/common/moduleutils/src/android/net/ip/ConntrackMonitor.java index 43005cd..dac4a0f 100644 --- a/common/moduleutils/src/android/net/ip/ConntrackMonitor.java +++ b/common/moduleutils/src/android/net/ip/ConntrackMonitor.java
@@ -19,13 +19,13 @@ import static com.android.net.module.util.netlink.ConntrackMessage.DYING_MASK; import static com.android.net.module.util.netlink.ConntrackMessage.ESTABLISHED_MASK; -import android.net.util.SharedLog; import android.os.Handler; import android.system.OsConstants; import androidx.annotation.NonNull; import com.android.internal.annotations.VisibleForTesting; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.ConntrackMessage; import com.android.net.module.util.netlink.NetlinkConstants; import com.android.net.module.util.netlink.NetlinkMessage;
diff --git a/common/moduleutils/src/android/net/ip/InterfaceController.java b/common/moduleutils/src/android/net/ip/InterfaceController.java index e8fc72c..9338792 100644 --- a/common/moduleutils/src/android/net/ip/InterfaceController.java +++ b/common/moduleutils/src/android/net/ip/InterfaceController.java
@@ -22,11 +22,12 @@ import android.net.INetd; import android.net.InterfaceConfigurationParcel; import android.net.LinkAddress; -import android.net.util.SharedLog; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.system.OsConstants; +import com.android.net.module.util.SharedLog; + import java.net.Inet4Address; import java.net.InetAddress;
diff --git a/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java b/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java index a16fdf2..507841b 100644 --- a/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java +++ b/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java
@@ -23,12 +23,12 @@ import static com.android.net.module.util.netlink.NetlinkConstants.stringForNlMsgType; import android.net.MacAddress; -import android.net.util.SharedLog; import android.os.Handler; import android.system.ErrnoException; import android.system.OsConstants; import android.util.Log; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.NetlinkMessage; import com.android.net.module.util.netlink.NetlinkSocket; import com.android.net.module.util.netlink.RtNetlinkNeighborMessage;
diff --git a/common/moduleutils/src/android/net/ip/NetlinkMonitor.java b/common/moduleutils/src/android/net/ip/NetlinkMonitor.java index e58b44e..8266f76 100644 --- a/common/moduleutils/src/android/net/ip/NetlinkMonitor.java +++ b/common/moduleutils/src/android/net/ip/NetlinkMonitor.java
@@ -27,7 +27,6 @@ import static com.android.net.module.util.netlink.NetlinkConstants.hexify; import android.annotation.NonNull; -import android.net.util.SharedLog; import android.net.util.SocketUtils; import android.os.Handler; import android.os.SystemClock; @@ -36,6 +35,7 @@ import android.util.Log; import com.android.net.module.util.PacketReader; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.NetlinkErrorMessage; import com.android.net.module.util.netlink.NetlinkMessage; import com.android.net.module.util.netlink.NetlinkSocket;
diff --git a/common/moduleutils/src/android/net/util/SharedLog.java b/common/moduleutils/src/android/net/util/SharedLog.java deleted file mode 100644 index c569689..0000000 --- a/common/moduleutils/src/android/net/util/SharedLog.java +++ /dev/null
@@ -1,249 +0,0 @@ -/* - * Copyright (C) 2017 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. - */ - -package android.net.util; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.text.TextUtils; -import android.util.Log; - -import java.io.FileDescriptor; -import java.io.PrintWriter; -import java.time.LocalDateTime; -import java.util.ArrayDeque; -import java.util.Deque; -import java.util.Iterator; -import java.util.StringJoiner; - - -/** - * Class to centralize logging functionality for tethering. - * - * All access to class methods other than dump() must be on the same thread. - * - * @hide - */ -public class SharedLog { - private static final int DEFAULT_MAX_RECORDS = 500; - private static final String COMPONENT_DELIMITER = "."; - - private enum Category { - NONE, - ERROR, - MARK, - WARN, - } - - private final LocalLog mLocalLog; - // The tag to use for output to the system log. This is not output to the - // LocalLog because that would be redundant. - private final String mTag; - // The component (or subcomponent) of a system that is sharing this log. - // This can grow in depth if components call forSubComponent() to obtain - // their SharedLog instance. The tag is not included in the component for - // brevity. - private final String mComponent; - - public SharedLog(String tag) { - this(DEFAULT_MAX_RECORDS, tag); - } - - public SharedLog(int maxRecords, String tag) { - this(new LocalLog(maxRecords), tag, tag); - } - - private SharedLog(LocalLog localLog, String tag, String component) { - mLocalLog = localLog; - mTag = tag; - mComponent = component; - } - - public String getTag() { - return mTag; - } - - /** - * Create a SharedLog based on this log with an additional component prefix on each logged line. - */ - public SharedLog forSubComponent(String component) { - if (!isRootLogInstance()) { - component = mComponent + COMPONENT_DELIMITER + component; - } - return new SharedLog(mLocalLog, mTag, component); - } - - /** - * Dump the contents of this log. - * - * <p>This method may be called on any thread. - */ - public void dump(FileDescriptor fd, PrintWriter writer, String[] args) { - mLocalLog.dump(writer); - } - - /** - * Reverse dump the contents of this log. - * - * <p>This method may be called on any thread. - */ - public void reverseDump(PrintWriter writer) { - mLocalLog.reverseDump(writer); - } - - ////// - // Methods that both log an entry and emit it to the system log. - ////// - - /** - * Log an error due to an exception. This does not include the exception stacktrace. - * - * <p>The log entry will be also added to the system log. - * @see #e(String, Throwable) - */ - public void e(Exception e) { - Log.e(mTag, record(Category.ERROR, e.toString())); - } - - /** - * Log an error message. - * - * <p>The log entry will be also added to the system log. - */ - public void e(String msg) { - Log.e(mTag, record(Category.ERROR, msg)); - } - - /** - * Log an error due to an exception, with the exception stacktrace if provided. - * - * <p>The error and exception message appear in the shared log, but the stacktrace is only - * logged in general log output (logcat). The log entry will be also added to the system log. - */ - public void e(@NonNull String msg, @Nullable Throwable exception) { - if (exception == null) { - e(msg); - return; - } - Log.e(mTag, record(Category.ERROR, msg + ": " + exception.getMessage()), exception); - } - - /** - * Log an informational message. - * - * <p>The log entry will be also added to the system log. - */ - public void i(String msg) { - Log.i(mTag, record(Category.NONE, msg)); - } - - /** - * Log a warning message. - * - * <p>The log entry will be also added to the system log. - */ - public void w(String msg) { - Log.w(mTag, record(Category.WARN, msg)); - } - - ////// - // Methods that only log an entry (and do NOT emit to the system log). - ////// - - /** - * Log a general message to be only included in the in-memory log. - * - * <p>The log entry will *not* be added to the system log. - */ - public void log(String msg) { - record(Category.NONE, msg); - } - - /** - * Log a general, formatted message to be only included in the in-memory log. - * - * <p>The log entry will *not* be added to the system log. - * @see String#format(String, Object...) - */ - public void logf(String fmt, Object... args) { - log(String.format(fmt, args)); - } - - /** - * Log a message with MARK level. - * - * <p>The log entry will *not* be added to the system log. - */ - public void mark(String msg) { - record(Category.MARK, msg); - } - - private String record(Category category, String msg) { - final String entry = logLine(category, msg); - mLocalLog.append(entry); - return entry; - } - - private String logLine(Category category, String msg) { - final StringJoiner sj = new StringJoiner(" "); - if (!isRootLogInstance()) sj.add("[" + mComponent + "]"); - if (category != Category.NONE) sj.add(category.toString()); - return sj.add(msg).toString(); - } - - // Check whether this SharedLog instance is nominally the top level in - // a potential hierarchy of shared logs (the root of a tree), - // or is a subcomponent within the hierarchy. - private boolean isRootLogInstance() { - return TextUtils.isEmpty(mComponent) || mComponent.equals(mTag); - } - - private static final class LocalLog { - private final Deque<String> mLog; - private final int mMaxLines; - - LocalLog(int maxLines) { - mMaxLines = Math.max(0, maxLines); - mLog = new ArrayDeque<>(mMaxLines); - } - - synchronized void append(String logLine) { - if (mMaxLines <= 0) return; - while (mLog.size() >= mMaxLines) { - mLog.remove(); - } - mLog.add(LocalDateTime.now() + " - " + logLine); - } - - /** - * Dumps the content of local log to print writer with each log entry - * - * @param pw printer writer to write into - */ - synchronized void dump(PrintWriter pw) { - for (final String s : mLog) { - pw.println(s); - } - } - - synchronized void reverseDump(PrintWriter pw) { - final Iterator<String> itr = mLog.descendingIterator(); - while (itr.hasNext()) { - pw.println(itr.next()); - } - } - } -}
diff --git a/common/networkstackclient/Android.bp b/common/networkstackclient/Android.bp index c363a2b..038caad 100644 --- a/common/networkstackclient/Android.bp +++ b/common/networkstackclient/Android.bp
@@ -204,7 +204,7 @@ "//packages/apps/Bluetooth", "//packages/modules/Bluetooth/android/app", "//packages/modules/NetworkStack", - "//packages/modules/Wifi/service", + "//packages/modules/Wifi/service:__subpackages__", ], apex_available: [ "//apex_available:platform",
diff --git a/src/android/net/dhcp/DhcpLeaseRepository.java b/src/android/net/dhcp/DhcpLeaseRepository.java index b404296..34c086b 100644 --- a/src/android/net/dhcp/DhcpLeaseRepository.java +++ b/src/android/net/dhcp/DhcpLeaseRepository.java
@@ -30,7 +30,6 @@ import android.net.IpPrefix; import android.net.MacAddress; import android.net.dhcp.DhcpServer.Clock; -import android.net.util.SharedLog; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.util.ArrayMap; @@ -39,6 +38,8 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import com.android.net.module.util.SharedLog; + import java.net.Inet4Address; import java.util.ArrayList; import java.util.Collections;
diff --git a/src/android/net/dhcp/DhcpServer.java b/src/android/net/dhcp/DhcpServer.java index dbd85a4..c700453 100644 --- a/src/android/net/dhcp/DhcpServer.java +++ b/src/android/net/dhcp/DhcpServer.java
@@ -49,7 +49,6 @@ import android.net.MacAddress; import android.net.TrafficStats; import android.net.util.NetworkStackUtils; -import android.net.util.SharedLog; import android.net.util.SocketUtils; import android.os.Handler; import android.os.Message; @@ -68,6 +67,7 @@ import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.net.module.util.DeviceConfigUtils; +import com.android.net.module.util.SharedLog; import java.io.FileDescriptor; import java.io.IOException;
diff --git a/src/android/net/ip/IpClient.java b/src/android/net/ip/IpClient.java index 4ada67f..c1b27e6 100644 --- a/src/android/net/ip/IpClient.java +++ b/src/android/net/ip/IpClient.java
@@ -74,7 +74,6 @@ import android.net.shared.ProvisioningConfiguration.ScanResultInfo; import android.net.shared.ProvisioningConfiguration.ScanResultInfo.InformationElement; import android.net.util.NetworkStackUtils; -import android.net.util.SharedLog; import android.os.Build; import android.os.ConditionVariable; import android.os.Handler; @@ -107,6 +106,7 @@ import com.android.internal.util.WakeupMessage; import com.android.net.module.util.DeviceConfigUtils; import com.android.net.module.util.InterfaceParams; +import com.android.net.module.util.SharedLog; import com.android.networkstack.R; import com.android.networkstack.apishim.NetworkInformationShimImpl; import com.android.networkstack.apishim.SocketUtilsShimImpl; @@ -516,10 +516,10 @@ private static final Map<Byte, List<byte[]>> DHCP_OPTIONS_ALLOWED = Map.of( (byte) 60, Arrays.asList( // KT OUI: 00:17:C3, type: 17. See b/170928882. - new byte[]{ (byte) 0x00, (byte) 0x17, (byte) 0xc3, (byte) 0x17 }), + new byte[]{ (byte) 0x00, (byte) 0x17, (byte) 0xc3, (byte) 0x11 }), (byte) 77, Arrays.asList( // KT OUI: 00:17:C3, type: 17. See b/170928882. - new byte[]{ (byte) 0x00, (byte) 0x17, (byte) 0xc3, (byte) 0x17 }) + new byte[]{ (byte) 0x00, (byte) 0x17, (byte) 0xc3, (byte) 0x11 }) ); // Initialize configurable particular SSID set supporting DHCP Roaming feature. See @@ -2558,6 +2558,15 @@ case DhcpClient.CMD_CONFIGURE_LINKADDRESS: { final LinkAddress ipAddress = (LinkAddress) msg.obj; if (mInterfaceCtrl.setIPv4Address(ipAddress)) { + // Although it's impossible to happen that DHCP client becomes null in + // RunningState and then NPE is thrown when it attempts to send a message + // on an null object, sometimes it's found during stress tests. If this + // issue does happen, log the terrible failure, that would be helpful to + // see how often this case occurs on fields and the log trace would be + // also useful for debugging(see b/203174383). + if (mDhcpClient == null) { + Log.wtf(mTag, "DhcpClient should never be null in RunningState."); + } mDhcpClient.sendMessage(DhcpClient.EVENT_LINKADDRESS_CONFIGURED); } else { logError("Failed to set IPv4 address.");
diff --git a/src/android/net/ip/IpClientLinkObserver.java b/src/android/net/ip/IpClientLinkObserver.java index bebe7c9..94f028d 100644 --- a/src/android/net/ip/IpClientLinkObserver.java +++ b/src/android/net/ip/IpClientLinkObserver.java
@@ -37,7 +37,6 @@ import android.net.LinkAddress; import android.net.LinkProperties; import android.net.RouteInfo; -import android.net.util.SharedLog; import android.os.Handler; import android.system.OsConstants; import android.util.Log; @@ -47,6 +46,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.net.module.util.InterfaceParams; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.NduseroptMessage; import com.android.net.module.util.netlink.NetlinkConstants; import com.android.net.module.util.netlink.NetlinkMessage;
diff --git a/src/android/net/ip/IpReachabilityMonitor.java b/src/android/net/ip/IpReachabilityMonitor.java index 7614cf3..5a30b54 100644 --- a/src/android/net/ip/IpReachabilityMonitor.java +++ b/src/android/net/ip/IpReachabilityMonitor.java
@@ -33,7 +33,6 @@ import android.net.metrics.IpConnectivityLog; import android.net.metrics.IpReachabilityEvent; import android.net.networkstack.aidl.ip.ReachabilityLossReason; -import android.net.util.SharedLog; import android.os.ConditionVariable; import android.os.Handler; import android.os.Looper; @@ -54,6 +53,7 @@ import com.android.internal.util.Preconditions; import com.android.net.module.util.DeviceConfigUtils; import com.android.net.module.util.InterfaceParams; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.StructNdMsg; import com.android.networkstack.R; import com.android.networkstack.metrics.IpReachabilityMonitorMetrics;
diff --git a/src/com/android/networkstack/netlink/TcpSocketTracker.java b/src/com/android/networkstack/netlink/TcpSocketTracker.java index 9cc2d60..99d2c13 100644 --- a/src/com/android/networkstack/netlink/TcpSocketTracker.java +++ b/src/com/android/networkstack/netlink/TcpSocketTracker.java
@@ -433,6 +433,11 @@ if (DBG) Log.d(TAG, str); } + /** Stops monitoring and releases resources. */ + public void quit() { + mDependencies.removeDeviceConfigChangedListener(mConfigListener); + } + /** * Corresponds to {@code struct rtattr} from bionic/libc/kernel/uapi/linux/rtnetlink.h * @@ -615,5 +620,11 @@ DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_CONNECTIVITY, AsyncTask.THREAD_POOL_EXECUTOR, listener); } + + /** Remove device config change listener */ + public void removeDeviceConfigChangedListener( + @NonNull final DeviceConfig.OnPropertiesChangedListener listener) { + DeviceConfig.removeOnPropertiesChangedListener(listener); + } } }
diff --git a/src/com/android/server/NetworkStackService.java b/src/com/android/server/NetworkStackService.java index 64cbc24..1e09f45 100644 --- a/src/com/android/server/NetworkStackService.java +++ b/src/com/android/server/NetworkStackService.java
@@ -45,7 +45,6 @@ import android.net.ip.IpClient; import android.net.networkstack.aidl.NetworkMonitorParameters; import android.net.shared.PrivateDnsConfig; -import android.net.util.SharedLog; import android.os.Build; import android.os.HandlerThread; import android.os.IBinder; @@ -60,6 +59,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; +import com.android.net.module.util.SharedLog; import com.android.networkstack.NetworkStackNotifier; import com.android.networkstack.R; import com.android.networkstack.apishim.common.ShimUtils;
diff --git a/src/com/android/server/connectivity/NetworkMonitor.java b/src/com/android/server/connectivity/NetworkMonitor.java index 19a9f60..91de032 100755 --- a/src/com/android/server/connectivity/NetworkMonitor.java +++ b/src/com/android/server/connectivity/NetworkMonitor.java
@@ -118,7 +118,6 @@ import android.net.shared.PrivateDnsConfig; import android.net.util.DataStallUtils.EvaluationType; import android.net.util.NetworkStackUtils; -import android.net.util.SharedLog; import android.net.util.Stopwatch; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -161,6 +160,7 @@ import com.android.modules.utils.build.SdkLevel; import com.android.net.module.util.DeviceConfigUtils; import com.android.net.module.util.NetworkStackConstants; +import com.android.net.module.util.SharedLog; import com.android.networkstack.NetworkStackNotifier; import com.android.networkstack.R; import com.android.networkstack.apishim.CaptivePortalDataShimImpl; @@ -934,6 +934,9 @@ case CMD_NETWORK_DISCONNECTED: maybeStopCollectionAndSendMetrics(); logNetworkEvent(NetworkEvent.NETWORK_DISCONNECTED); + if (mTcpTracker != null) { + mTcpTracker.quit(); + } quit(); return HANDLED; case CMD_FORCE_REEVALUATION:
diff --git a/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java b/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java index 959b0b7..b36e4bf 100644 --- a/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java +++ b/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java
@@ -136,7 +136,6 @@ import android.net.shared.ProvisioningConfiguration; import android.net.shared.ProvisioningConfiguration.ScanResultInfo; import android.net.util.NetworkStackUtils; -import android.net.util.SharedLog; import android.os.Build; import android.os.Handler; import android.os.HandlerThread; @@ -160,6 +159,7 @@ import com.android.net.module.util.ArrayTrackRecord; import com.android.net.module.util.InterfaceParams; import com.android.net.module.util.Ipv6Utils; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.StructNdOptPref64; import com.android.net.module.util.structs.LlaOption; import com.android.net.module.util.structs.PrefixInformationOption; @@ -3070,8 +3070,8 @@ @Test public void testDiscoverCustomizedDhcpOptions() throws Exception { - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, false /* isDhcpLeaseCacheEnabled */); @@ -3082,8 +3082,8 @@ @Test public void testDiscoverCustomizedDhcpOptions_nullDhcpOptions() throws Exception { - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(null /* options */, info, false /* isDhcpLeaseCacheEnabled */); @@ -3104,8 +3104,8 @@ @Test public void testDiscoverCustomizedDhcpOptions_disallowedOui() throws Exception { - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, - new byte[]{ 0x00, 0x11, 0x22} /* oui */, (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, + new byte[]{ 0x00, 0x11, 0x22} /* oui */, (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, false /* isDhcpLeaseCacheEnabled */); @@ -3116,8 +3116,8 @@ @Test public void testDiscoverCustomizedDhcpOptions_invalidIeId() throws Exception { - final ScanResultInfo info = makeScanResultInfo(0xde /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xde /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, false /* isDhcpLeaseCacheEnabled */); @@ -3128,7 +3128,7 @@ @Test public void testDiscoverCustomizedDhcpOptions_invalidVendorSpecificType() throws Exception { - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, (byte) 0x10 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, false /* isDhcpLeaseCacheEnabled */); @@ -3145,8 +3145,8 @@ makeDhcpOption((byte) 77, TEST_OEM_USER_CLASS_INFO), // Option 26: MTU makeDhcpOption((byte) 26, HexDump.toByteArray(TEST_DEFAULT_MTU))); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, false /* isDhcpLeaseCacheEnabled */); @@ -3163,8 +3163,8 @@ makeDhcpOption((byte) 77, TEST_OEM_USER_CLASS_INFO), // NTP_SERVER makeDhcpOption((byte) 42, null)); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, false /* isDhcpLeaseCacheEnabled */); @@ -3179,8 +3179,8 @@ final List<DhcpOption> options = Arrays.asList( // DHCP_USER_CLASS makeDhcpOption((byte) 77, null)); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, false /* isDhcpLeaseCacheEnabled */); @@ -3193,8 +3193,8 @@ public void testRequestCustomizedDhcpOptions() throws Exception { setUpRetrievedNetworkAttributesForInitRebootState(); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, true /* isDhcpLeaseCacheEnabled */); @@ -3207,8 +3207,8 @@ public void testRequestCustomizedDhcpOptions_nullDhcpOptions() throws Exception { setUpRetrievedNetworkAttributesForInitRebootState(); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(null /* options */, info, true /* isDhcpLeaseCacheEnabled */); @@ -3233,8 +3233,8 @@ public void testRequestCustomizedDhcpOptions_disallowedOui() throws Exception { setUpRetrievedNetworkAttributesForInitRebootState(); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, - new byte[]{ 0x00, 0x11, 0x22} /* oui */, (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, + new byte[]{ 0x00, 0x11, 0x22} /* oui */, (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, true /* isDhcpLeaseCacheEnabled */); @@ -3247,8 +3247,8 @@ public void testRequestCustomizedDhcpOptions_invalidIeId() throws Exception { setUpRetrievedNetworkAttributesForInitRebootState(); - final ScanResultInfo info = makeScanResultInfo(0xde /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xde /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, true /* isDhcpLeaseCacheEnabled */); @@ -3261,7 +3261,7 @@ public void testRequestCustomizedDhcpOptions_invalidVendorSpecificType() throws Exception { setUpRetrievedNetworkAttributesForInitRebootState(); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, (byte) 0x10 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(TEST_OEM_DHCP_OPTIONS, info, true /* isDhcpLeaseCacheEnabled */); @@ -3280,8 +3280,8 @@ makeDhcpOption((byte) 77, TEST_OEM_USER_CLASS_INFO), // Option 26: MTU makeDhcpOption((byte) 26, HexDump.toByteArray(TEST_DEFAULT_MTU))); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, true /* isDhcpLeaseCacheEnabled */); @@ -3300,8 +3300,8 @@ makeDhcpOption((byte) 77, TEST_OEM_USER_CLASS_INFO), // NTP_SERVER makeDhcpOption((byte) 42, null)); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, true /* isDhcpLeaseCacheEnabled */); @@ -3318,8 +3318,8 @@ final List<DhcpOption> options = Arrays.asList( // DHCP_USER_CLASS makeDhcpOption((byte) 77, null)); - final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specificIE */, TEST_OEM_OUI, - (byte) 0x17 /* vendor-specific IE type */); + final ScanResultInfo info = makeScanResultInfo(0xdd /* vendor-specific IE */, TEST_OEM_OUI, + (byte) 0x11 /* vendor-specific IE type */); final DhcpPacket packet = doCustomizedDhcpOptionsTest(options, info, true /* isDhcpLeaseCacheEnabled */);
diff --git a/tests/unit/src/android/net/apf/ApfTest.java b/tests/unit/src/android/net/apf/ApfTest.java index b2feaf1..6532f95 100644 --- a/tests/unit/src/android/net/apf/ApfTest.java +++ b/tests/unit/src/android/net/apf/ApfTest.java
@@ -51,7 +51,6 @@ import android.net.ip.IpClient.IpClientCallbacksWrapper; import android.net.metrics.IpConnectivityLog; import android.net.metrics.RaEvent; -import android.net.util.SharedLog; import android.os.ConditionVariable; import android.os.Parcelable; import android.os.SystemClock; @@ -68,6 +67,7 @@ import com.android.net.module.util.Inet4AddressUtils; import com.android.net.module.util.InterfaceParams; import com.android.net.module.util.NetworkStackConstants; +import com.android.net.module.util.SharedLog; import com.android.networkstack.apishim.NetworkInformationShimImpl; import com.android.server.networkstack.tests.R;
diff --git a/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java b/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java index 243bf63..95d782d 100644 --- a/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java +++ b/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java
@@ -49,13 +49,14 @@ import android.net.IpPrefix; import android.net.MacAddress; import android.net.dhcp.DhcpServer.Clock; -import android.net.util.SharedLog; import android.os.Binder; import android.os.RemoteException; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import com.android.net.module.util.SharedLog; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith;
diff --git a/tests/unit/src/android/net/dhcp/DhcpServerTest.java b/tests/unit/src/android/net/dhcp/DhcpServerTest.java index 58f9a36..345c341 100644 --- a/tests/unit/src/android/net/dhcp/DhcpServerTest.java +++ b/tests/unit/src/android/net/dhcp/DhcpServerTest.java
@@ -52,13 +52,13 @@ import android.net.dhcp.DhcpLeaseRepository.OutOfAddressesException; import android.net.dhcp.DhcpServer.Clock; import android.net.dhcp.DhcpServer.Dependencies; -import android.net.util.SharedLog; import android.os.ConditionVariable; import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.net.module.util.Inet4AddressUtils; +import com.android.net.module.util.SharedLog; import com.android.testutils.HandlerUtils; import org.junit.After;
diff --git a/tests/unit/src/android/net/ip/ConntrackMonitorTest.java b/tests/unit/src/android/net/ip/ConntrackMonitorTest.java index fc0d52b..bb2175a 100644 --- a/tests/unit/src/android/net/ip/ConntrackMonitorTest.java +++ b/tests/unit/src/android/net/ip/ConntrackMonitorTest.java
@@ -34,7 +34,6 @@ import static org.mockito.Mockito.verify; import android.net.InetAddresses; -import android.net.util.SharedLog; import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; @@ -45,6 +44,7 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import com.android.net.module.util.SharedLog; import com.android.net.module.util.netlink.NetlinkConstants; import com.android.net.module.util.netlink.NetlinkSocket;
diff --git a/tests/unit/src/android/net/ip/InterfaceControllerTest.java b/tests/unit/src/android/net/ip/InterfaceControllerTest.java index 02bc73c..944d6be 100644 --- a/tests/unit/src/android/net/ip/InterfaceControllerTest.java +++ b/tests/unit/src/android/net/ip/InterfaceControllerTest.java
@@ -27,11 +27,12 @@ import android.net.InetAddresses; import android.net.InterfaceConfigurationParcel; import android.net.LinkAddress; -import android.net.util.SharedLog; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import com.android.net.module.util.SharedLog; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith;
diff --git a/tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt b/tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt index cabd14a..55f9b6b 100644 --- a/tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt +++ b/tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt
@@ -26,7 +26,6 @@ import android.net.RouteInfo import android.net.metrics.IpConnectivityLog import android.net.util.NetworkStackUtils.IP_REACHABILITY_MCAST_RESOLICIT_VERSION -import android.net.util.SharedLog import android.os.Handler import android.os.HandlerThread import android.os.MessageQueue @@ -57,6 +56,7 @@ import com.android.net.module.util.netlink.StructNdMsg.NUD_FAILED import com.android.net.module.util.netlink.StructNdMsg.NUD_REACHABLE import com.android.net.module.util.netlink.StructNdMsg.NUD_STALE +import com.android.net.module.util.SharedLog import com.android.testutils.makeNewNeighMessage import com.android.testutils.waitForIdle import org.junit.After
diff --git a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java index f83c02f..fad11a6 100644 --- a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java +++ b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
@@ -124,7 +124,6 @@ import android.net.metrics.IpConnectivityLog; import android.net.networkstack.aidl.NetworkMonitorParameters; import android.net.shared.PrivateDnsConfig; -import android.net.util.SharedLog; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; @@ -150,6 +149,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.modules.utils.build.SdkLevel; +import com.android.net.module.util.SharedLog; import com.android.networkstack.NetworkStackNotifier; import com.android.networkstack.R; import com.android.networkstack.apishim.CaptivePortalDataShimImpl; @@ -601,6 +601,10 @@ 0, mCreatedNetworkMonitors.size()); assertEquals("BroadcastReceiver still registered after disconnect", 0, mRegisteredReceivers.size()); + if (mTstDependencies.isTcpInfoParsingSupported()) { + verify(mTstDependencies, times(networkMonitors.length)) + .removeDeviceConfigChangedListener(any()); + } } private void resetCallbacks() { @@ -1850,12 +1854,12 @@ @Test public void testIsDataStall_EvaluationTcp() throws Exception { + when(mTstDependencies.isTcpInfoParsingSupported()).thenReturn(true); // Evaluate TCP only. Expect ignoring DNS signal. setDataStallEvaluationType(DATA_STALL_EVALUATION_TYPE_TCP); WrappedNetworkMonitor wrappedMonitor = makeMonitor(CELL_METERED_CAPABILITIES); assertFalse(wrappedMonitor.isDataStall()); // Packet received. - when(mTstDependencies.isTcpInfoParsingSupported()).thenReturn(true); when(mTst.getLatestReceivedCount()).thenReturn(5); // Trigger a tcp event immediately. setTcpPollingInterval(0);
diff --git a/tests/unit/src/com/android/server/util/SharedLogTest.java b/tests/unit/src/com/android/server/util/SharedLogTest.java deleted file mode 100644 index b1db051..0000000 --- a/tests/unit/src/com/android/server/util/SharedLogTest.java +++ /dev/null
@@ -1,97 +0,0 @@ -/* - * Copyright (C) 2017 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. - */ - -package com.android.server.util; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import android.net.util.SharedLog; - -import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.io.ByteArrayOutputStream; -import java.io.PrintWriter; - -@RunWith(AndroidJUnit4.class) -@SmallTest -public class SharedLogTest { - private static final String TIMESTAMP_PATTERN = "\\d{2}:\\d{2}:\\d{2}"; - private static final String TIMESTAMP = "HH:MM:SS"; - - @Test - public void testBasicOperation() { - final SharedLog logTop = new SharedLog("top"); - logTop.mark("first post!"); - - final SharedLog logLevel2a = logTop.forSubComponent("twoA"); - final SharedLog logLevel2b = logTop.forSubComponent("twoB"); - logLevel2b.e("2b or not 2b"); - logLevel2b.e("No exception", null); - logLevel2b.e("Wait, here's one", new Exception("Test")); - logLevel2a.w("second post?"); - - final SharedLog logLevel3 = logLevel2a.forSubComponent("three"); - logTop.log("still logging"); - logLevel3.log("3 >> 2"); - logLevel2a.mark("ok: last post"); - - final String[] expected = { - " - MARK first post!", - " - [twoB] ERROR 2b or not 2b", - " - [twoB] ERROR No exception", - // No stacktrace in shared log, only in logcat - " - [twoB] ERROR Wait, here's one: Test", - " - [twoA] WARN second post?", - " - still logging", - " - [twoA.three] 3 >> 2", - " - [twoA] MARK ok: last post", - }; - // Verify the logs are all there and in the correct order. - verifyLogLines(expected, logTop); - - // In fact, because they all share the same underlying LocalLog, - // every subcomponent SharedLog's dump() is identical. - verifyLogLines(expected, logLevel2a); - verifyLogLines(expected, logLevel2b); - verifyLogLines(expected, logLevel3); - } - - private static void verifyLogLines(String[] expected, SharedLog log) { - final ByteArrayOutputStream ostream = new ByteArrayOutputStream(); - final PrintWriter pw = new PrintWriter(ostream, true); - log.dump(null, pw, null); - - final String dumpOutput = ostream.toString(); - assertTrue(dumpOutput != null); - assertTrue(!"".equals(dumpOutput)); - - final String[] lines = dumpOutput.split("\n"); - assertEquals(expected.length, lines.length); - - for (int i = 0; i < expected.length; i++) { - String got = lines[i]; - String want = expected[i]; - assertTrue(String.format("'%s' did not contain '%s'", got, want), got.endsWith(want)); - assertTrue(String.format("'%s' did not contain a %s timestamp", got, TIMESTAMP), - got.replaceFirst(TIMESTAMP_PATTERN, TIMESTAMP).contains(TIMESTAMP)); - } - } -}