/* * Copyright (C) 2024 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.networkstack.util import android.net.MacAddress import android.net.apf.ProcfsParsingUtils import androidx.test.filters.SmallTest import com.android.internal.util.HexDump import java.net.Inet6Address import java.net.InetAddress import kotlin.test.assertEquals import org.junit.Test @SmallTest class ProcfsParsingUtilsTest { @Test fun testParseNdTrafficClass() { val inputString = listOf("25") val expectedResult = 25 assertEquals( expectedResult, ProcfsParsingUtils.parseNdTrafficClass(inputString) ) } @Test fun testParseAnycast6Address() { val inputString = listOf( "41 eth0 2a0034e2abc1334591a733387s2e322e 2", "42 wlan0 2a0012e2abcddee459123738456e134a 4", "47 wlan0 2a0079e10abc15391ba735397a2e311f 1", "48 wlan1 2a004591a733387s2e334e2abc13322e 3" ) val expectedResult = listOf( InetAddress.getByAddress( HexDump.hexStringToByteArray("2a0012e2abcddee459123738456e134a") ) as Inet6Address, InetAddress.getByAddress( HexDump.hexStringToByteArray("2a0079e10abc15391ba735397a2e311f") ) as Inet6Address ) assertEquals( expectedResult, ProcfsParsingUtils.parseAnycast6Addresses(inputString, "wlan0") ) } @Test fun testParseEtherMulticastAddress() { val inputString = listOf( "2 dummy0 1 0 333300000001", "2 dummy0 1 0 01005e000001", "3 ifb0 1 0 333300000001", "4 ifb1 1 0 333300000001", "7 gretap0 1 0 333300000001", "8 erspan0 1 0 333300000001", "47 wlan0 1 0 01005e000001", "47 wlan0 1 0 333300000001", "47 wlan0 1 0 3333ff8a3667", "47 wlan0 1 0 3333ff59c632", "47 wlan0 1 0 3333ff574870", "48 wlan1 1 0 333300000001" ) val expectedResult = listOf( MacAddress.fromBytes(HexDump.hexStringToByteArray("01005e000001")), MacAddress.fromBytes(HexDump.hexStringToByteArray("333300000001")), MacAddress.fromBytes(HexDump.hexStringToByteArray("3333ff8a3667")), MacAddress.fromBytes(HexDump.hexStringToByteArray("3333ff59c632")), MacAddress.fromBytes(HexDump.hexStringToByteArray("3333ff574870")) ) assertEquals( expectedResult, ProcfsParsingUtils.parseEtherMulticastAddresses(inputString, "wlan0") ) } @Test fun testParseIpv6MulticastAddress() { val inputString = listOf( "44 umts_dummy ff020000000000000000000000000001 1 0000000C 0", "44 umts_dummy ff010000000000000000000000000001 1 00000008 0", "46 aware_nmi0 ff020000000000000000000000000001 1 00000008 0", "46 aware_nmi0 ff010000000000000000000000000001 1 00000008 0", "47 wlan0 ff0200000000000000000001ff574870 1 00000004 0", "47 wlan0 ff0200000000000000000001ff59c632 1 00000004 0", "47 wlan0 ff0200000000000000000001ff8a3667 2 00000004 0", "47 wlan0 ff020000000000000000000000000001 1 0000000C 0", "47 wlan0 ff010000000000000000000000000001 1 00000008 0", "48 wlan1 ff020000000000000000000000000001 1 0000000C 0", "48 wlan1 ff010000000000000000000000000001 1 00000008 0", "49 radiotap0 ff020000000000000000000000000001 1 0000000C 0", "49 radiotap0 ff010000000000000000000000000001 1 00000008 0", "50 v4-wlan0 ff020000000000000000000000000001 1 0000000C 0", "50 v4-wlan0 ff010000000000000000000000000001 1 00000008 0" ) val expectedResult = listOf( InetAddress.getByAddress( HexDump.hexStringToByteArray("ff0200000000000000000001ff574870") ) as Inet6Address, InetAddress.getByAddress( HexDump.hexStringToByteArray("ff0200000000000000000001ff59c632") ) as Inet6Address, InetAddress.getByAddress( HexDump.hexStringToByteArray("ff0200000000000000000001ff8a3667") ) as Inet6Address, InetAddress.getByAddress( HexDump.hexStringToByteArray("ff020000000000000000000000000001") ) as Inet6Address, InetAddress.getByAddress( HexDump.hexStringToByteArray("ff010000000000000000000000000001") ) as Inet6Address ) assertEquals( expectedResult, ProcfsParsingUtils.parseIPv6MulticastAddresses(inputString, "wlan0") ) } }