Merge "Add SkDestroyListener log in dumpsys netstats" into main
diff --git a/service-t/src/com/android/server/net/NetworkStatsService.java b/service-t/src/com/android/server/net/NetworkStatsService.java
index 7cf6293..a36149e 100644
--- a/service-t/src/com/android/server/net/NetworkStatsService.java
+++ b/service-t/src/com/android/server/net/NetworkStatsService.java
@@ -481,6 +481,8 @@
@Nullable
private final SkDestroyListener mSkDestroyListener;
+ private static final int MAX_SOCKET_DESTROY_LISTENER_LOGS = 20;
+
private static @NonNull Clock getDefaultClock() {
return new BestClock(ZoneOffset.UTC, SystemClock.currentNetworkTimeClock(),
Clock.systemUTC());
@@ -881,7 +883,8 @@
/** Create a new SkDestroyListener. */
public SkDestroyListener makeSkDestroyListener(
IBpfMap<CookieTagMapKey, CookieTagMapValue> cookieTagMap, Handler handler) {
- return new SkDestroyListener(cookieTagMap, handler, new SharedLog(TAG));
+ return new SkDestroyListener(
+ cookieTagMap, handler, new SharedLog(MAX_SOCKET_DESTROY_LISTENER_LOGS, TAG));
}
/**
@@ -2912,6 +2915,12 @@
dumpStatsMapLocked(mStatsMapB, pw, "mStatsMapB");
dumpIfaceStatsMapLocked(pw);
pw.decreaseIndent();
+
+ pw.println();
+ pw.println("SkDestroyListener logs:");
+ pw.increaseIndent();
+ mSkDestroyListener.dump(pw);
+ pw.decreaseIndent();
}
}
diff --git a/service-t/src/com/android/server/net/SkDestroyListener.java b/service-t/src/com/android/server/net/SkDestroyListener.java
index 7b68f89..a6cc2b5 100644
--- a/service-t/src/com/android/server/net/SkDestroyListener.java
+++ b/service-t/src/com/android/server/net/SkDestroyListener.java
@@ -30,6 +30,8 @@
import com.android.net.module.util.netlink.NetlinkMessage;
import com.android.net.module.util.netlink.StructInetDiagSockId;
+import java.io.PrintWriter;
+
/**
* Monitor socket destroy and delete entry from cookie tag bpf map.
*/
@@ -72,4 +74,11 @@
mLog.e("Failed to delete CookieTagMap entry for " + sockId.cookie + ": " + e);
}
}
+
+ /**
+ * Dump the contents of SkDestroyListener log.
+ */
+ public void dump(PrintWriter pw) {
+ mLog.reverseDump(pw);
+ }
}
diff --git a/tests/unit/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/unit/java/com/android/server/net/NetworkStatsServiceTest.java
index 1ee3f9d..a5fee5b 100644
--- a/tests/unit/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/unit/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -85,6 +85,7 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -130,6 +131,7 @@
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArrayMap;
+import android.util.IndentingPrintWriter;
import android.util.Pair;
import androidx.annotation.Nullable;
@@ -2802,4 +2804,16 @@
final String dump = getDump();
assertDumpContains(dump, pollReasonNameOf(POLL_REASON_RAT_CHANGED));
}
+
+ @Test
+ public void testDumpSkDestroyListenerLogs() throws ErrnoException {
+ doAnswer((invocation) -> {
+ final IndentingPrintWriter ipw = (IndentingPrintWriter) invocation.getArgument(0);
+ ipw.println("Log for testing");
+ return null;
+ }).when(mSkDestroyListener).dump(any());
+
+ final String dump = getDump();
+ assertDumpContains(dump, "Log for testing");
+ }
}