summaryrefslogtreecommitdiff
path: root/common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java')
-rw-r--r--common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java195
1 files changed, 0 insertions, 195 deletions
diff --git a/common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java b/common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java
deleted file mode 100644
index 1dcb9b59..00000000
--- a/common/tests/unit/src/com/android/net/module/util/netlink/StructNdOptRdnssTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.netlink;
-
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ND_OPTION_RDNSS;
-import static com.android.testutils.MiscAsserts.assertThrows;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import android.net.InetAddresses;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.net.module.util.structs.RdnssOption;
-
-import libcore.util.HexEncoding;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet6Address;
-import java.nio.ByteBuffer;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class StructNdOptRdnssTest {
- private static final String DNS_SERVER1 = "2001:4860:4860::64";
- private static final String DNS_SERVER2 = "2001:4860:4860::6464";
-
- private static final Inet6Address[] DNS_SERVER_ADDRESSES = new Inet6Address[] {
- (Inet6Address) InetAddresses.parseNumericAddress(DNS_SERVER1),
- (Inet6Address) InetAddresses.parseNumericAddress(DNS_SERVER2),
- };
-
- private static final String RDNSS_OPTION_BYTES =
- "1905" // type=25, len=5 (40 bytes)
- + "0000" // reserved
- + "00000E10" // lifetime=3600
- + "20014860486000000000000000000064" // 2001:4860:4860::64
- + "20014860486000000000000000006464"; // 2001:4860:4860::6464
-
- private static final String RDNSS_INFINITY_LIFETIME_OPTION_BYTES =
- "1905" // type=25, len=3 (24 bytes)
- + "0000" // reserved
- + "FFFFFFFF" // lifetime=0xffffffff
- + "20014860486000000000000000000064" // 2001:4860:4860::64
- + "20014860486000000000000000006464"; // 2001:4860:4860::6464
-
- private void assertRdnssOptMatches(final StructNdOptRdnss opt, int length, long lifetime,
- final Inet6Address[] servers) {
- assertEquals(StructNdOptRdnss.TYPE, opt.type);
- assertEquals(length, opt.length);
- assertEquals(lifetime, opt.header.lifetime);
- assertEquals(servers, opt.servers);
- }
-
- private ByteBuffer makeRdnssOption(byte type, byte length, long lifetime, String... servers)
- throws Exception {
- final ByteBuffer buf = ByteBuffer.allocate(8 + servers.length * 16)
- .put(type)
- .put(length)
- .putShort((short) 0) // Reserved
- .putInt((int) (lifetime & 0xFFFFFFFFL));
- for (int i = 0; i < servers.length; i++) {
- final byte[] rawBytes =
- ((Inet6Address) InetAddresses.parseNumericAddress(servers[i])).getAddress();
- buf.put(rawBytes);
- }
- buf.flip();
- return buf;
- }
-
- private void assertToByteBufferMatches(StructNdOptRdnss opt, String expected) {
- String actual = HexEncoding.encodeToString(opt.toByteBuffer().array());
- assertEquals(expected, actual);
- }
-
- private void doRdnssOptionParsing(final String optionHexString, int length, long lifetime,
- final Inet6Address[] servers) {
- final byte[] rawBytes = HexEncoding.decode(optionHexString);
- final StructNdOptRdnss opt = StructNdOptRdnss.parse(ByteBuffer.wrap(rawBytes));
- assertRdnssOptMatches(opt, length, lifetime, servers);
- assertToByteBufferMatches(opt, optionHexString);
- }
-
- @Test
- public void testParsing() throws Exception {
- doRdnssOptionParsing(RDNSS_OPTION_BYTES, 5 /* length */, 3600 /* lifetime */,
- DNS_SERVER_ADDRESSES);
- }
-
- @Test
- public void testParsing_infinityLifetime() throws Exception {
- doRdnssOptionParsing(RDNSS_INFINITY_LIFETIME_OPTION_BYTES, 5 /* length */,
- 0xffffffffL /* lifetime */, DNS_SERVER_ADDRESSES);
- }
-
- @Test
- public void testToByteBuffer() {
- final StructNdOptRdnss rdnss = new StructNdOptRdnss(DNS_SERVER_ADDRESSES, 3600);
- assertToByteBufferMatches(rdnss, RDNSS_OPTION_BYTES);
- }
-
- @Test
- public void testToByteBuffer_infinityLifetime() {
- final StructNdOptRdnss rdnss = new StructNdOptRdnss(DNS_SERVER_ADDRESSES, 0xffffffffL);
- assertToByteBufferMatches(rdnss, RDNSS_INFINITY_LIFETIME_OPTION_BYTES);
- }
-
- @Test
- public void testParsing_invalidType() throws Exception {
- final ByteBuffer buf = makeRdnssOption((byte) 38, (byte) 5 /* length */,
- 3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- assertNull(StructNdOptRdnss.parse(buf));
- }
-
- @Test
- public void testParsing_smallOptionLength() throws Exception {
- final ByteBuffer buf = makeRdnssOption((byte) ICMPV6_ND_OPTION_RDNSS,
- (byte) 2 /* length */, 3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- assertNull(StructNdOptRdnss.parse(buf));
- }
-
- @Test
- public void testParsing_oddOptionLength() throws Exception {
- final ByteBuffer buf = makeRdnssOption((byte) ICMPV6_ND_OPTION_RDNSS,
- (byte) 6 /* length */, 3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- assertNull(StructNdOptRdnss.parse(buf));
- }
-
- @Test
- public void testParsing_truncatedByteBuffer() throws Exception {
- ByteBuffer buf = makeRdnssOption((byte) ICMPV6_ND_OPTION_RDNSS,
- (byte) 5 /* length */, 3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- final int len = buf.limit();
- for (int i = 0; i < buf.limit() - 1; i++) {
- buf.flip();
- buf.limit(i);
- assertNull("Option truncated to " + i + " bytes, should have returned null",
- StructNdOptRdnss.parse(buf));
- }
- buf.flip();
- buf.limit(len);
-
- final StructNdOptRdnss opt = StructNdOptRdnss.parse(buf);
- assertRdnssOptMatches(opt, 5 /* length */, 3600 /* lifetime */, DNS_SERVER_ADDRESSES);
- }
-
- @Test
- public void testParsing_invalidByteBufferLength() throws Exception {
- final ByteBuffer buf = makeRdnssOption((byte) ICMPV6_ND_OPTION_RDNSS,
- (byte) 5 /* length */, 3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- buf.limit(20); // less than MIN_OPT_LEN * 8
- assertNull(StructNdOptRdnss.parse(buf));
- }
-
- @Test
- public void testConstructor_nullDnsServerAddressArray() {
- assertThrows(NullPointerException.class,
- () -> new StructNdOptRdnss(null /* servers */, 3600 /* lifetime */));
- }
-
- @Test
- public void testConstructor_emptyDnsServerAddressArray() {
- assertThrows(IllegalArgumentException.class,
- () -> new StructNdOptRdnss(new Inet6Address[0] /* empty server array */,
- 3600 /* lifetime*/));
- }
-
- @Test
- public void testToString() {
- final ByteBuffer buf = RdnssOption.build(3600 /* lifetime */, DNS_SERVER1, DNS_SERVER2);
- final StructNdOptRdnss opt = StructNdOptRdnss.parse(buf);
- final String expected = "NdOptRdnss(type: 25, length: 5, reserved: 0, lifetime: 3600,"
- + "servers:[2001:4860:4860::64,2001:4860:4860::6464])";
- assertRdnssOptMatches(opt, 5 /* length */, 3600 /* lifetime */, DNS_SERVER_ADDRESSES);
- assertEquals(expected, opt.toString());
- }
-}