Add unit test to verify ipv6AddressToSolicitedNodeMulticast method.
Bug: 258093757
Test: atest android.net.util.NetworkStackUtilsIntegrationTest
Change-Id: Iecd19f1287aa785940481dca37210d34562b249f
diff --git a/tests/integration/signature/android/net/util/NetworkStackUtilsIntegrationTest.kt b/tests/integration/signature/android/net/util/NetworkStackUtilsIntegrationTest.kt
index 17153de..3436cb6 100644
--- a/tests/integration/signature/android/net/util/NetworkStackUtilsIntegrationTest.kt
+++ b/tests/integration/signature/android/net/util/NetworkStackUtilsIntegrationTest.kt
@@ -59,8 +59,10 @@
import java.net.Inet4Address
import java.net.Inet6Address
import java.nio.ByteBuffer
+import java.util.Arrays
import kotlin.reflect.KClass
import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
import kotlin.test.assertTrue
import kotlin.test.fail
@@ -75,6 +77,10 @@
private val TEST_TARGET_MAC = MacAddress.fromString("01:23:45:67:89:0A")
private val TEST_INET6ADDR_1 = parseNumericAddress("2001:db8::1") as Inet6Address
private val TEST_INET6ADDR_2 = parseNumericAddress("2001:db8::2") as Inet6Address
+ private val TEST_INET6ADDR_3 = parseNumericAddress("fd01:db8::3") as Inet6Address
+
+ // RFC4291 section 2.7.1
+ private val SOLICITED_NODE_MULTICAST_PREFIX = "FF02:0:0:0:0:1:FF00::/104"
private val readerHandler = HandlerThread(
NetworkStackUtilsIntegrationTest::class.java.simpleName)
@@ -185,6 +191,31 @@
assertArrayEquals("Received packet != expected $descr",
expected, buffer.copyOfRange(0, readPacket))
}
+
+ private fun assertSolicitedNodeMulticastAddress(
+ expected: Inet6Address?,
+ unicast: Inet6Address
+ ) {
+ assertNotNull(expected)
+ val prefix = IpPrefix(SOLICITED_NODE_MULTICAST_PREFIX)
+ assertTrue(prefix.contains(expected))
+ assertTrue(expected.isMulticastAddress())
+ // check the last 3 bytes of address
+ assertArrayEquals(Arrays.copyOfRange(expected.getAddress(), 13, 15),
+ Arrays.copyOfRange(unicast.getAddress(), 13, 15))
+ }
+
+ @Test
+ fun testConvertIpv6AddressToSolicitedNodeMulticast() {
+ val addr1 = NetworkStackUtils.ipv6AddressToSolicitedNodeMulticast(TEST_INET6ADDR_1)
+ assertSolicitedNodeMulticastAddress(addr1, TEST_INET6ADDR_1)
+
+ val addr2 = NetworkStackUtils.ipv6AddressToSolicitedNodeMulticast(TEST_INET6ADDR_2)
+ assertSolicitedNodeMulticastAddress(addr2, TEST_INET6ADDR_2)
+
+ val addr3 = NetworkStackUtils.ipv6AddressToSolicitedNodeMulticast(TEST_INET6ADDR_3)
+ assertSolicitedNodeMulticastAddress(addr3, TEST_INET6ADDR_3)
+ }
}
private fun ByteBuffer.readAsArray(): ByteArray {