diff --git a/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java b/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java index f84d10f395..94f0c2a5b0 100644 --- a/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java +++ b/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java @@ -36,6 +36,7 @@ import static org.mockito.Mockito.argThat; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.spy; import android.annotation.NonNull; import android.net.INetd; @@ -46,6 +47,7 @@ import android.os.ParcelFileDescriptor; import androidx.test.filters.SmallTest; +import com.android.internal.util.IndentingPrintWriter; import com.android.net.module.util.IBpfMap; import com.android.net.module.util.bpf.ClatEgress4Key; import com.android.net.module.util.bpf.ClatEgress4Value; @@ -53,6 +55,7 @@ import com.android.net.module.util.bpf.ClatIngress6Key; import com.android.net.module.util.bpf.ClatIngress6Value; import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRunner; +import com.android.testutils.TestBpfMap; import org.junit.Before; import org.junit.Test; @@ -64,6 +67,7 @@ import org.mockito.Spy; import java.io.FileDescriptor; import java.io.IOException; +import java.io.StringWriter; import java.net.Inet4Address; import java.net.Inet6Address; import java.util.Objects; @@ -121,10 +125,13 @@ public class ClatCoordinatorTest { private static final ClatIngress6Value INGRESS_VALUE = new ClatIngress6Value(STACKED_IFINDEX, INET4_LOCAL4); + private final TestBpfMap mIngressMap = + spy(new TestBpfMap<>(ClatIngress6Key.class, ClatIngress6Value.class)); + private final TestBpfMap mEgressMap = + spy(new TestBpfMap<>(ClatEgress4Key.class, ClatEgress4Value.class)); + @Mock private INetd mNetd; @Spy private TestDependencies mDeps = new TestDependencies(); - @Mock private IBpfMap mIngressMap; - @Mock private IBpfMap mEgressMap; /** * The dependency injection class is used to mock the JNI functions and system functions @@ -505,4 +512,25 @@ public class ClatCoordinatorTest { // Expected mtu is that CLAT_MAX_MTU(65536) minus MTU_DELTA(28). assertEquals(65508, ClatCoordinator.adjustMtu(CLAT_MAX_MTU + 1 /* over maximum mtu */)); } + + @Test + public void testDump() throws Exception { + final ClatCoordinator coordinator = makeClatCoordinator(); + final StringWriter stringWriter = new StringWriter(); + final IndentingPrintWriter ipw = new IndentingPrintWriter(stringWriter, " "); + coordinator.clatStart(BASE_IFACE, NETID, NAT64_IP_PREFIX); + coordinator.dump(ipw); + + final String[] dumpStrings = stringWriter.toString().split("\n"); + assertEquals(5, dumpStrings.length); + assertEquals("Forwarding rules:", dumpStrings[0].trim()); + assertEquals("BPF ingress map: iif nat64Prefix v6Addr -> v4Addr oif", + dumpStrings[1].trim()); + assertEquals("1000 /64:ff9b::/96 /2001:db8:0:b11::464 -> /192.0.0.46 1001", + dumpStrings[2].trim()); + assertEquals("BPF egress map: iif v4Addr -> v6Addr nat64Prefix oif", + dumpStrings[3].trim()); + assertEquals("1001 /192.0.0.46 -> /2001:db8:0:b11::464 /64:ff9b::/96 1000 ether", + dumpStrings[4].trim()); + } }