Move static method to non static method in `ApfTestHelpers`
This changes is for follow-up CL to support different apfjni version in the constructor.
Bug: 391118179
Test: atest NetworkStackTests
Change-Id: Idb7140f7f3f6fe9b40571db5e5cbceab03dde8cc
diff --git a/tests/unit/src/android/net/apf/ApfFilterTest.kt b/tests/unit/src/android/net/apf/ApfFilterTest.kt
index 42986c5..9dfc707 100644
--- a/tests/unit/src/android/net/apf/ApfFilterTest.kt
+++ b/tests/unit/src/android/net/apf/ApfFilterTest.kt
@@ -70,9 +70,6 @@
import android.net.apf.ApfCounterTracker.Counter.PASSED_MLD
import android.net.apf.ApfFilter.Dependencies
import android.net.apf.ApfTestHelpers.Companion.TIMEOUT_MS
-import android.net.apf.ApfTestHelpers.Companion.consumeInstalledProgram
-import android.net.apf.ApfTestHelpers.Companion.consumeTransmittedPackets
-import android.net.apf.ApfTestHelpers.Companion.verifyProgramRun
import android.net.apf.BaseApfGenerator.APF_VERSION_3
import android.net.apf.BaseApfGenerator.APF_VERSION_6
import android.net.nsd.NsdManager
@@ -274,9 +271,11 @@
private val handler by lazy { Handler(handlerThread.looper) }
private var writerSocket = FileDescriptor()
private var igmpWriteSocket = FileDescriptor()
+ private lateinit var apfTestHelpers: ApfTestHelpers
@Before
fun setUp() {
+ apfTestHelpers = ApfTestHelpers()
MockitoAnnotations.initMocks(this)
// mock anycast6 address from /proc/net/anycast6
doReturn(hostAnycast6Addresses).`when`(dependencies).getAnycast6Addresses(any())
@@ -328,7 +327,7 @@
shutdownApfFilters()
handler.waitForIdle(TIMEOUT_MS)
Mockito.framework().clearInlineMocks()
- ApfTestHelpers.resetTransmittedPacketMemory()
+ apfTestHelpers.resetTransmittedPacketMemory()
handlerThread.quitSafely()
handlerThread.join()
}
@@ -386,7 +385,7 @@
}
private fun doTestEtherTypeAllowListFilter(apfFilter: ApfFilter) {
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Using scapy to generate IPv4 mDNS packet:
// eth = Ether(src="E8:9F:80:66:60:BB", dst="01:00:5E:00:00:FB")
@@ -398,7 +397,7 @@
01005e0000fbe89f806660bb080045000035000100004011d812c0a80101e00000f
b14e914e900214d970000010000010000000000000161056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(mdnsPkt),
@@ -414,7 +413,7 @@
333300000001e89f806660bb86dd6000000000103afffe800000000000000000000000
000001ff0200000000000000000000000000018600600700080e100000000000000e10
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(raPkt),
@@ -424,7 +423,7 @@
// Using scapy to generate ethernet packet with type 0x88A2:
// p = Ether(type=0x88A2)/Raw(load="01")
val ethPkt = "ffffffffffff047bcb463fb588a23031"
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ethPkt),
@@ -496,7 +495,7 @@
fun testIPv4PacketFilterOnV6OnlyNetwork() {
val apfFilter = getApfFilter()
apfFilter.updateClatInterfaceState(true)
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IPv4 mDNS packet:
// eth = Ether(src="E8:9F:80:66:60:BB", dst="01:00:5E:00:00:FB")
@@ -508,7 +507,7 @@
01005e0000fbe89f806660bb080045000035000100004011d812c0a80101e00000f
b14e914e900214d970000010000010000000000000161056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(mdnsPkt),
@@ -522,7 +521,7 @@
val nonUdpPkt = """
ffffffffffff00112233445508004500001400010000400cb934c0a80101ffffffff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonUdpPkt),
@@ -536,7 +535,7 @@
val fragmentUdpPkt = """
ffffffffffff0011223344550800450000140001200a40119925c0a80101ffffffff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(fragmentUdpPkt),
@@ -551,7 +550,7 @@
val nonDhcpServerPkt = """
ffffffffffff00112233445508004500001c000100004011b927c0a80101ffffffff0035004600083dba
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpServerPkt),
@@ -586,7 +585,7 @@
0000000000000000000000000000000000000000000000000000638253633501023604c0
a801010104ffffff000304c0a80101330400015180060408080808ff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(dhcp4Pkt),
@@ -605,7 +604,7 @@
0000000000000000000000000000000000000000000000000000638253633501023604c0
a801010104ffffff000304c0a80101330400015180060408080808ff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(dhcp4PktDf),
@@ -624,7 +623,7 @@
01005e0000fbe89f806660bb08004500001d000100034011f75dc0a8010ac0a8
01146f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(fragmentedUdpPkt),
@@ -636,7 +635,7 @@
fun testLoopbackFilter() {
val apfConfig = getDefaultConfig()
val apfFilter = getApfFilter(apfConfig)
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Using scapy to generate echo-ed broadcast packet:
// ether = Ether(src=${ifParams.macAddr}, dst='ff:ff:ff:ff:ff:ff')
// ip = IP(src='192.168.1.1', dst='255.255.255.255', proto=21)
@@ -644,7 +643,7 @@
val nonDhcpBcastPkt = """
ffffffffffff020304050607080045000014000100004015b92bc0a80101ffffffff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpBcastPkt),
@@ -656,7 +655,7 @@
@Test
fun testInvalidIgmpPacketDropped() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate invalid length IGMPv1 general query packet:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1', len=24, proto=2)
@@ -666,7 +665,7 @@
01005e00000100112233445508004500001800010000400290e00a000002e00000011100eeff010203040506
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(payloadLen10Pkt),
@@ -682,7 +681,7 @@
01005e00000100112233445508004500001400010000400290e40a000002e00000011100eeff010203
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(payloadLen7Pkt),
@@ -699,7 +698,7 @@
01005e00000300112233445508004500001c000100000102cfda0a000002e00000031100eeff00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pktWithWrongDst),
@@ -715,7 +714,7 @@
01005e00000100112233445508004500001c000100000102cfdc0a000002e00000015100aeff00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pktWithWrongType),
@@ -727,7 +726,7 @@
@Test
fun testIgmpV1ReportDropped() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv1 report packet:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:7f:00:01')
// ip = IP(src='10.0.0.2', dst='239.0.0.1')
@@ -737,7 +736,7 @@
01005e7f000100112233445508004500001c000100000102c0dc0a000002ef0000011200fefdef000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -749,7 +748,7 @@
@Test
fun testIgmpV1GeneralQueryPassed() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv1 general query packet:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1')
@@ -759,7 +758,7 @@
01005e00000100112233445508004500001c000100000102cfdc0a000002e00000011100eeff00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -771,7 +770,7 @@
@Test
fun testIgmpV2ReportDropped() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv2 report packet:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:7f:00:01')
// ip = IP(src='10.0.0.2', dst='239.0.0.1')
@@ -781,7 +780,7 @@
01005e7f000100112233445508004500001c000100000102c0dc0a000002ef0000011614fae9ef000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(v2ReportPkt),
@@ -797,7 +796,7 @@
01005e7f000100112233445508004500001c000100000102c0dc0a000002ef0000011714f9e9ef000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(v2LeaveReportPkt),
@@ -809,7 +808,7 @@
@Test
fun testIgmpV2GeneralQueryReplied() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv2 general query packet without router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1')
@@ -819,7 +818,7 @@
01005e00000100112233445508004500001c000100000102cfdc0a000002e00000011114eeeb00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -929,7 +928,7 @@
""".replace("\\s+".toRegex(), "").trim().uppercase()
)
- val transmitPackets = ApfTestHelpers.getAllTransmittedPackets()
+ val transmitPackets = apfTestHelpers.getAllTransmittedPackets()
.map { HexDump.toHexString(it).uppercase() }.toSet()
assertEquals(igmpv2ReportPkts, transmitPackets)
}
@@ -938,7 +937,7 @@
@Test
fun testIgmpV2GeneralQueryWithRouterAlertOptionReplied() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv2 general query packet with router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1', options=[IPOption_Router_Alert()])
@@ -949,7 +948,7 @@
00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -1060,7 +1059,7 @@
""".replace("\\s+".toRegex(), "").trim().uppercase()
)
- val transmitPackets = ApfTestHelpers.getAllTransmittedPackets()
+ val transmitPackets = apfTestHelpers.getAllTransmittedPackets()
.map { HexDump.toHexString(it).uppercase() }.toSet()
assertEquals(igmpv2ReportPkts, transmitPackets)
}
@@ -1069,7 +1068,7 @@
@Test
fun testIgmpV2GroupSpecificQueryPassed() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv2 group specific query packet without router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:7f:00:01')
// ip = IP(src='10.0.0.2', dst='239.0.0.1')
@@ -1079,7 +1078,7 @@
01005e7f000100112233445508004500001c000100000102c0dc0a000002ef0000011114ffe9ef000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -1091,7 +1090,7 @@
@Test
fun testIgmpV3ReportDropped() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv3 report packet without router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:16')
// ip = IP(src='10.0.0.2', dst='224.0.0.22')
@@ -1102,7 +1101,7 @@
0102000000ef000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -1114,7 +1113,7 @@
@Test
fun testIgmpV3GeneralQueryReplied() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv3 general query packet without router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1')
@@ -1125,14 +1124,14 @@
00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
DROPPED_IGMP_V3_GENERAL_QUERY_REPLIED
)
- val transmittedIgmpv3Reports = consumeTransmittedPackets(1)
+ val transmittedIgmpv3Reports = apfTestHelpers.consumeTransmittedPackets(1)
// ###[ Ethernet ]###
// dst = 01:00:5e:00:00:16
@@ -1199,7 +1198,7 @@
@Test
fun testIgmpV3GeneralQueryWithRouterAlertOptionReplied() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv3 general query packet with router alert option:
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:00:00:01')
// ip = IP(src='10.0.0.2', dst='224.0.0.1', options=[IPOption_Router_Alert()])
@@ -1210,14 +1209,14 @@
000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
DROPPED_IGMP_V3_GENERAL_QUERY_REPLIED
)
- val transmittedIgmpv3Reports = consumeTransmittedPackets(1)
+ val transmittedIgmpv3Reports = apfTestHelpers.consumeTransmittedPackets(1)
// ###[ Ethernet ]###
// dst = 01:00:5e:00:00:16
@@ -1284,7 +1283,7 @@
@Test
fun testIgmpV3GroupSpecificQueryPassed() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv3 group specific query packet
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:7f:00:01')
// ip = IP(src='10.0.0.2', dst='239.0.0.1')
@@ -1295,7 +1294,7 @@
00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -1307,7 +1306,7 @@
@Test
fun testIgmpV3GroupAndSourceSpecificQueryPassed() {
val apfFilter = getIgmpApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IGMPv3 group and source specific query packet
// ether = Ether(src='00:11:22:33:44:55', dst='01:00:5e:7f:00:01')
// ip = IP(src='10.0.0.2', dst='239.0.0.1')
@@ -1318,7 +1317,7 @@
00000010a000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(pkt),
@@ -1331,12 +1330,12 @@
val apfConfig = getDefaultConfig()
apfConfig.multicastFilter = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Using scapy to generate DHCP4 offer packet:
// ether = Ether(src='00:11:22:33:44:55', dst='ff:ff:ff:ff:ff:ff')
@@ -1366,7 +1365,7 @@
0000000000000000000000000000000000000000000000000000638253633501023604c0
a801010104ffffff000304c0a80101330400015180060408080808ff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(dhcp4Pkt),
@@ -1380,7 +1379,7 @@
val nonDhcpMcastPkt = """
ffffffffffff001122334455080045000014000100004015d929c0a80101e0000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpMcastPkt),
@@ -1394,7 +1393,7 @@
val nonDhcpBcastPkt = """
ffffffffffff001122334455080045000014000100004015b92bc0a80101ffffffff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpBcastPkt),
@@ -1408,7 +1407,7 @@
val nonDhcpNetBcastPkt = """
ffffffffffff001122334455080045000014000100004015ae2cc0a801010a0000ff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpNetBcastPkt),
@@ -1422,7 +1421,7 @@
val nonDhcpUcastPkt = """
020304050607001122334455080045000014000100004015f780c0a80101c0a80102
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpUcastPkt),
@@ -1436,7 +1435,7 @@
val nonDhcpUcastL2BcastPkt = """
ffffffffffff001122334455080045000014000100004015f780c0a80101c0a80102
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDhcpUcastL2BcastPkt),
@@ -1447,9 +1446,9 @@
@Test
fun testArpFilterDropPktsOnV6OnlyNetwork() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
apfFilter.updateClatInterfaceState(true)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Drop ARP request packet when clat is enabled
// Using scapy to generate ARP request packet:
@@ -1459,7 +1458,7 @@
val arpPkt = """
010203040506000102030405080600010800060400015c857e3c74e1c0a8012200000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(arpPkt),
@@ -1490,9 +1489,9 @@
apfConfig.multicastFilter = true
apfConfig.ieee802_3Filter = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
apfFilter.addTcpKeepalivePacketFilter(1, parcel)
- var program = consumeInstalledProgram(apfController, installCnt = 1)
+ var program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Drop IPv4 keepalive ack
// Using scapy to generate IPv4 TCP keepalive ack packet with seq + 1:
@@ -1504,7 +1503,7 @@
01020304050600010203040508004500002800010000400666c50a0000060a000005d4313039499602d2
7e916116501020004b4f0000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(keepaliveAckPkt),
@@ -1521,7 +1520,7 @@
01020304050600010203040508004500002800010000400666c50a0000060a000005d431303949960336
7e916115501020004aec0000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonKeepaliveAckPkt1),
@@ -1539,7 +1538,7 @@
01020304050600010203040508004500003200010000400666bb0a0000060a000005d4313039499602d27
e91611650102000372c000000010203040506070809
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonKeepaliveAckPkt2),
@@ -1556,7 +1555,7 @@
01020304050600010203040508004500002800010000400666c40a0000070a0000055ba0ff987e91610c4
2f697155010200066e60000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(otherSrcKeepaliveAck),
@@ -1565,15 +1564,15 @@
// test IPv4 packets when TCP keepalive filter is removed
apfFilter.removeKeepalivePacketFilter(1)
- program = consumeInstalledProgram(apfController, installCnt = 1)
- verifyProgramRun(
+ program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(keepaliveAckPkt),
PASSED_IPV4_UNICAST
)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(otherSrcKeepaliveAck),
@@ -1600,9 +1599,9 @@
apfConfig.multicastFilter = true
apfConfig.ieee802_3Filter = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
apfFilter.addNattKeepalivePacketFilter(1, parcel)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Drop IPv4 keepalive response packet
// Using scapy to generate IPv4 NAT-T keepalive ack packet with payload 0xff:
@@ -1614,7 +1613,7 @@
val validNattPkt = """
01020304050600010203040508004500001d00010000401166c50a0000060a000005119404000009d73cff
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(validNattPkt),
@@ -1631,7 +1630,7 @@
val invalidNattPkt = """
01020304050600010203040508004500001d00010000401166c50a0000060a000005119404000009d83cfe
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidNattPkt),
@@ -1649,7 +1648,7 @@
01020304050600010203040508004500002600010000401166bc0a0000060a000005119404000012c2120
0010203040506070809
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonNattPkt),
@@ -1667,7 +1666,7 @@
01020304050600010203040508004500002600010000401166bb0a0000070a000005119404000012c2110
0010203040506070809
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(otherSrcNonNattPkt),
@@ -1678,7 +1677,7 @@
@Test
fun testIPv4TcpPort7Filter() {
val apfFilter = getApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Drop IPv4 TCP port 7 packet
// Using scapy to generate IPv4 TCP port 7 packet:
@@ -1690,7 +1689,7 @@
01020304050600010203040508004500002800010000400666c50a0000060a00000500140007000000000
0000000500220007bbd0000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(tcpPort7Pkt),
@@ -1707,7 +1706,7 @@
01020304050600010203040508004500002800012000400646c50a0000060a00000500140050000000000
0000000500220007b740000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(initialFragmentTcpPkt),
@@ -1724,7 +1723,7 @@
01020304050600010203040508004500002800012064400646610a0000060a00000500140050000000000
0000000500220007b740000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(fragmentTcpPkt),
@@ -1737,14 +1736,14 @@
val apfConfig = getDefaultConfig()
apfConfig.multicastFilter = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val lp = LinkProperties()
for (addr in hostIpv6Addresses) {
lp.addLinkAddress(LinkAddress(InetAddress.getByAddress(addr), 64))
}
apfFilter.setLinkProperties(lp)
apfFilter.setDozeMode(true)
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Using scapy to generate non ICMPv6 sent to ff00::/8 (multicast prefix) packet:
// eth = Ether(src="00:01:02:03:04:05", dst="01:02:03:04:05:06")
// ip6 = IPv6(src="2001::200:1a:1122:3344", dst="ff00::1", nh=59)
@@ -1753,7 +1752,7 @@
ffffffffffff00112233445586dd6000000000003b4020010000000000000200001a11223344ff00000
0000000000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonIcmpv6McastPkt),
@@ -1769,7 +1768,7 @@
02030405060700010203040586dd6000000000083aff20010000000000000200001a11223344ff00000
000000000000000000000000180001a3a00000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(icmpv6EchoPkt),
@@ -1780,13 +1779,13 @@
@Test
fun testIPv6PacketFilter() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val lp = LinkProperties()
for (addr in hostIpv6Addresses) {
lp.addLinkAddress(LinkAddress(InetAddress.getByAddress(addr), 64))
}
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Using scapy to generate non ICMPv6 packet:
// eth = Ether(src="00:01:02:03:04:05", dst="01:02:03:04:05:06")
// ip6 = IPv6(src="2001::200:1a:1122:3344", dst="2001::200:1a:3344:1122", nh=59)
@@ -1795,7 +1794,7 @@
ffffffffffff00112233445586dd6000000000003b4020010000000000000200001a112233442001000
0000000000200001a33441122
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonIcmpv6Pkt),
@@ -1811,7 +1810,7 @@
01020304050600010203040586dd6000000000183aff20010000000000000200001a11223344ff02000
000000000000000000000000188007227a000000000000000000000000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(icmpv6McastNaPkt),
@@ -1826,7 +1825,7 @@
01020304050600010203040586dd600000000000004020010000000000000200001a112233442001000
0000000000200001a33441122
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(ipv6WithHopByHopOptionPkt),
@@ -1837,7 +1836,7 @@
@Test
fun testArpFilterDropPktsNoIPv4() {
val apfFilter = getApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Drop ARP request packet with invalid hw type
// Using scapy to generate ARP request packet with invalid hw type :
@@ -1847,7 +1846,7 @@
val invalidHwTypePkt = """
01020304050600010203040508060003080000040001c0a8012200000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidHwTypePkt),
@@ -1862,7 +1861,7 @@
val invalidProtoTypePkt = """
010203040506000102030405080600010014060000015c857e3c74e1000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidProtoTypePkt),
@@ -1879,7 +1878,7 @@
0000000000000000c0a8012200000000000000000000000000000000000000000000
0000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidHwLenPkt),
@@ -1896,7 +1895,7 @@
00000000000000000000000000000000000000000000000000000000000000000000
000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidProtoLenPkt),
@@ -1911,7 +1910,7 @@
val invalidOpPkt = """
010203040506000102030405080600010800060400055c857e3c74e1c0a8012200000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(invalidOpPkt),
@@ -1926,7 +1925,7 @@
val noHostArpReplyPkt = """
010203040506000102030405080600010800060400025c857e3c74e10000000000000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(noHostArpReplyPkt),
@@ -1941,7 +1940,7 @@
val garpReplyPkt = """
ffffffffffff000102030405080600010800060400025c857e3c74e1c0a8012200000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(garpReplyPkt),
@@ -1952,7 +1951,7 @@
@Test
fun testArpFilterPassPktsNoIPv4() {
val apfFilter = getApfFilter()
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Pass non-broadcast ARP reply packet
// Using scapy to generate unicast ARP reply packet:
// eth = Ether(src="00:01:02:03:04:05", dst="01:02:03:04:05:06")
@@ -1961,7 +1960,7 @@
val nonBcastArpReplyPkt = """
010203040506000102030405080600010800060400025c857e3c74e10102030400000000000000000000
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(nonBcastArpReplyPkt),
@@ -1976,7 +1975,7 @@
val arpRequestPkt = """
ffffffffffff000102030405080600010800060400015c857e3c74e1c0a8012200000000000001020304
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(arpRequestPkt),
@@ -1987,12 +1986,12 @@
@Test
fun testArpFilterDropPktsWithIPv4() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Drop ARP reply packet is not for the device
// Using scapy to generate ARP reply packet not for the device:
// eth = Ether(src="00:01:02:03:04:05", dst="FF:FF:FF:FF:FF:FF")
@@ -2001,7 +2000,7 @@
val otherHostArpReplyPkt = """
ffffffffffff000102030405080600010800060400025c857e3c74e1c0a8012200000000000001020304
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(otherHostArpReplyPkt),
@@ -2016,7 +2015,7 @@
val otherHostArpRequestPkt = """
ffffffffffff000102030405080600010800060400015c857e3c74e1c0a8012200000000000001020304
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(otherHostArpRequestPkt),
@@ -2027,12 +2026,12 @@
@Test
fun testArpFilterPassPktsWithIPv4() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// Using scapy to generate ARP broadcast reply packet:
// eth = Ether(src="00:01:02:03:04:05", dst="FF:FF:FF:FF:FF:FF")
@@ -2041,7 +2040,7 @@
val bcastArpReplyPkt = """
ffffffffffff000102030405080600010800060400025c857e3c74e1c0a801220000000000000a000001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
HexDump.hexStringToByteArray(bcastArpReplyPkt),
@@ -2054,12 +2053,12 @@
@Test
fun testArpTransmit() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
val receivedArpPacketBuf = ArpPacket.buildArpPacket(
arpBroadcastMacAddress,
senderMacAddress,
@@ -2070,14 +2069,14 @@
)
val receivedArpPacket = ByteArray(ARP_ETHER_IPV4_LEN)
receivedArpPacketBuf.get(receivedArpPacket)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedArpPacket,
DROPPED_ARP_REQUEST_REPLIED
)
- val transmittedPackets = consumeTransmittedPackets(1)
+ val transmittedPackets = apfTestHelpers.consumeTransmittedPackets(1)
val expectedArpReplyBuf = ArpPacket.buildArpPacket(
senderMacAddress,
apfFilter.mHardwareAddress,
@@ -2099,12 +2098,12 @@
val apfConfig = getDefaultConfig()
apfConfig.handleArpOffload = false
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
val receivedArpPacketBuf = ArpPacket.buildArpPacket(
arpBroadcastMacAddress,
senderMacAddress,
@@ -2115,7 +2114,7 @@
)
val receivedArpPacket = ByteArray(ARP_ETHER_IPV4_LEN)
receivedArpPacketBuf.get(receivedArpPacket)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedArpPacket,
@@ -2129,7 +2128,7 @@
doReturn(listOf<ByteArray>()).`when`(dependencies).getAnycast6Addresses(any())
val apfFilter = getApfFilter()
// validate NS packet check when there is no IPv6 address
- val program = consumeInstalledProgram(apfController, installCnt = 2)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// Using scapy to generate IPv6 NS packet:
// eth = Ether(src="00:01:02:03:04:05", dst="01:02:03:04:05:06")
// ip6 = IPv6(src="2001::200:1a:1122:3344", dst="2001::200:1a:3344:1122", hlim=255)
@@ -2141,7 +2140,7 @@
00000020010000000000000200001A33441122
""".replace("\\s+".toRegex(), "").trim()
// when there is no IPv6 addresses -> pass NS packet
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nsPkt),
@@ -2153,7 +2152,7 @@
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
fun testNsFilter() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val lp = LinkProperties()
for (addr in hostIpv6Addresses) {
lp.addLinkAddress(LinkAddress(InetAddress.getByAddress(addr), 64))
@@ -2171,9 +2170,9 @@
}
apfFilter.setLinkProperties(lp)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
apfFilter.updateClatInterfaceState(true)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// validate Ethernet dst address check
// Using scapy to generate IPv6 NS packet:
@@ -2188,7 +2187,7 @@
000020010000000000000200001A334411220201000102030405
""".replace("\\s+".toRegex(), "").trim()
// invalid unicast ether dst -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonHostDstMacNsPkt),
@@ -2207,7 +2206,7 @@
0000000020010000000000000200001A334411220201000102030405
""".replace("\\s+".toRegex(), "").trim()
// mcast dst mac is not one of solicited mcast mac derived from one of device's ip -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonMcastDstMacNsPkt),
@@ -2227,7 +2226,7 @@
""".replace("\\s+".toRegex(), "").trim()
// mcast dst mac is one of solicited mcast mac derived from one of device's ip
// -> drop and replied
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(hostMcastDstMacNsPkt),
@@ -2246,7 +2245,7 @@
00000000000200001A334411220101000102030405
""".replace("\\s+".toRegex(), "").trim()
// mcast dst mac is broadcast address -> drop and replied
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(broadcastNsPkt),
@@ -2267,7 +2266,7 @@
00000020010000000000000200001A334411220101000102030405
""".replace("\\s+".toRegex(), "").trim()
// dst ip is one of device's ip -> drop and replied
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(validHostDstIpNsPkt),
@@ -2287,7 +2286,7 @@
0101000102030405
""".replace("\\s+".toRegex(), "").trim()
// dst ip is device's anycast address -> drop and replied
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(validHostAnycastDstIpNsPkt),
@@ -2306,7 +2305,7 @@
E30000000020010000000000000200001A334411220101000102030405
""".replace("\\s+".toRegex(), "").trim()
// unicast dst ip is not one of device's ip -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonHostUcastDstIpNsPkt),
@@ -2325,7 +2324,7 @@
1C0000000020010000000000000200001A334411220101000102030405
""".replace("\\s+".toRegex(), "").trim()
// mcast dst ip is not one of solicited mcast ip derived from one of device's ip -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonHostMcastDstIpNsPkt),
@@ -2344,7 +2343,7 @@
"000020010000000000000200001A334411220101000102030405"
// mcast dst ip is one of solicited mcast ip derived from one of device's ip
// -> drop and replied
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(hostMcastDstIpNsPkt),
@@ -2365,7 +2364,7 @@
000200001A334411220101010203040506
""".replace("\\s+".toRegex(), "").trim()
// payload len < 24 -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(shortNsPkt),
@@ -2384,7 +2383,7 @@
00000000000200001A444455550101010203040506
""".replace("\\s+".toRegex(), "").trim()
// target ip is not one of device's ip -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(otherHostNsPkt),
@@ -2403,7 +2402,7 @@
00000020010000000000000200001A334411220101010203040506
""".replace("\\s+".toRegex(), "").trim()
// hoplimit is not 255 -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(invalidHoplimitNsPkt),
@@ -2422,7 +2421,7 @@
00000020010000000000000200001A334411220101010203040506
""".replace("\\s+".toRegex(), "").trim()
// icmp6 code is not 0 -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(invalidIcmpCodeNsPkt),
@@ -2441,7 +2440,7 @@
16CE0000000020010000000000000200001A123456780101010203040506
""".replace("\\s+".toRegex(), "").trim()
// target ip is one of tentative address -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tentativeTargetIpNsPkt),
@@ -2460,7 +2459,7 @@
00000020010000000000000200001C225566660101010203040506
""".replace("\\s+".toRegex(), "").trim()
// target ip is none of {non-tentative, anycast} -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(invalidTargetIpNsPkt),
@@ -2479,7 +2478,7 @@
00001A334411220201020304050607
""".replace("\\s+".toRegex(), "").trim()
// DAD NS request -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(dadNsPkt),
@@ -2497,7 +2496,7 @@
000000000200001A33441122
""".replace("\\s+".toRegex(), "").trim()
// payload len < 32 -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(noOptionNsPkt),
@@ -2516,7 +2515,7 @@
000020010000000000000200001A334411220101010203040506
""".replace("\\s+".toRegex(), "").trim()
// non-DAD src IPv6 is FF::/8 -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDadMcastSrcIpPkt),
@@ -2535,7 +2534,7 @@
140000000020010000000000000200001A334411220101010203040506
""".replace("\\s+".toRegex(), "").trim()
// non-DAD src IPv6 is 00::/8 -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(nonDadLoopbackSrcIpPkt),
@@ -2556,7 +2555,7 @@
05060101010203040506
""".replace("\\s+".toRegex(), "").trim()
// non-DAD with multiple options, SLLA in 2nd option -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(sllaNotFirstOptionNsPkt),
@@ -2575,7 +2574,7 @@
20010000000000000200001A334411220201010203040506
""".replace("\\s+".toRegex(), "").trim()
// non-DAD with one option but not SLLA -> pass
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(noSllaOptionNsPkt),
@@ -2595,7 +2594,7 @@
0506
""".replace("\\s+".toRegex(), "").trim()
// non-DAD, SLLA is multicast MAC -> drop
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(mcastMacSllaOptionNsPkt),
@@ -2614,7 +2613,7 @@
}
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
val validIpv6Addresses = hostIpv6Addresses + hostAnycast6Addresses
val expectPackets = mutableListOf<ByteArray>()
for (addr in validIpv6Addresses) {
@@ -2627,7 +2626,7 @@
addr
)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedUcastNsPacket,
@@ -2659,7 +2658,7 @@
addr
)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedMcastNsPacket,
@@ -2677,7 +2676,7 @@
expectPackets.add(expectedMcastNaPacket)
}
- val transmitPackets = consumeTransmittedPackets(expectPackets.size)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(expectPackets.size)
for (i in transmitPackets.indices) {
assertContentEquals(expectPackets[i], transmitPackets[i])
}
@@ -2695,7 +2694,7 @@
lp.addLinkAddress(LinkAddress(InetAddress.getByAddress(addr), 64))
}
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
// Using scapy to generate IPv6 NS packet:
// eth = Ether(src="00:01:02:03:04:05", dst="02:03:04:05:06:07")
// ip6 = IPv6(src="2001::200:1a:1122:3344", dst="ff02::1:ff44:1122", hlim=255, tc=20)
@@ -2707,14 +2706,14 @@
0200001A11223344FF0200000000000000000001FF4411228700952D0000
000020010000000000000200001A334411220101000102030405
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(hostMcastDstIpNsPkt),
DROPPED_IPV6_NS_REPLIED_NON_DAD
)
- val transmitPkts = consumeTransmittedPackets(1)
+ val transmitPkts = apfTestHelpers.consumeTransmittedPackets(1)
// Using scapy to generate IPv6 NA packet:
// eth = Ether(src="02:03:04:05:06:07", dst="00:01:02:03:04:05")
// ip6 = IPv6(src="2001::200:1a:3344:1122", dst="2001::200:1a:1122:3344", hlim=255, tc=20)
@@ -2743,7 +2742,7 @@
}
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 3)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 3)
val validIpv6Addresses = hostIpv6Addresses + hostAnycast6Addresses
for (addr in validIpv6Addresses) {
// unicast solicited NS request
@@ -2755,7 +2754,7 @@
addr
)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedUcastNsPacket,
@@ -2777,7 +2776,7 @@
addr
)
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
receivedMcastNsPacket,
@@ -2793,12 +2792,12 @@
apfConfig.multicastFilter = enableMultiCastFilter
apfConfig.handleIpv4PingOffload = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
val lp = LinkProperties()
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
return Pair(apfFilter, program)
}
@@ -2817,14 +2816,14 @@
000010800b3b10001007b68656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoRequestPkt),
DROPPED_IPV4_PING_REQUEST_REPLIED
)
- val transmitPkt = consumeTransmittedPackets(1)[0]
+ val transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
// ###[ Ethernet ]###
// dst = 01:02:03:04:05:06
@@ -2876,7 +2875,7 @@
0000168656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoRequestPkt),
@@ -2898,7 +2897,7 @@
00001940400000800b3b10001007b68656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoRequestPkt),
@@ -2920,7 +2919,7 @@
0006f0800b3b10001007b68656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoRequestPkt),
@@ -2942,7 +2941,7 @@
000ff0800b3b10001007b68656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoRequestPkt),
@@ -2964,7 +2963,7 @@
000010000bbb10001007b68656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(ipv4EchoReplyPkt),
@@ -2978,7 +2977,7 @@
val apfConfig = getDefaultConfig()
apfConfig.handleMdnsOffload = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val captor = ArgumentCaptor.forClass(OffloadEngine::class.java)
verify(nsdManager).registerOffloadEngine(
eq(ifParams.name),
@@ -3010,7 +3009,7 @@
val apfConfig = getDefaultConfig()
apfConfig.handleMdnsOffload = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val captor = ArgumentCaptor.forClass(OffloadEngine::class.java)
verify(nsdManager).registerOffloadEngine(
eq(ifParams.name),
@@ -3031,7 +3030,7 @@
visibleOnHandlerThread(handler) {
offloadEngine.onOffloadServiceUpdated(castOffloadInfo)
}
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
val corruptedOffloadInfo = OffloadServiceInfo(
OffloadServiceInfo.Key("gambit", "_${"a".repeat(63)}._tcp"),
listOf(),
@@ -3057,7 +3056,7 @@
apfConfig.multicastFilter = true
}
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val captor = ArgumentCaptor.forClass(OffloadEngine::class.java)
verify(nsdManager).registerOffloadEngine(
eq(ifParams.name),
@@ -3070,7 +3069,7 @@
val lp = LinkProperties()
if (v6Only) {
apfFilter.updateClatInterfaceState(true)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
} else {
val ipv4LinkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
lp.addLinkAddress(ipv4LinkAddress)
@@ -3078,7 +3077,7 @@
val ipv6LinkAddress = LinkAddress(hostLinkLocalIpv6Address, 64)
lp.addLinkAddress(ipv6LinkAddress)
apfFilter.setLinkProperties(lp)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
val castOffloadInfo = OffloadServiceInfo(
OffloadServiceInfo.Key("gambit-3cb56c6253638b3641e3d289013cc0ae", "_googlecast._tcp"),
listOf(),
@@ -3103,7 +3102,7 @@
offloadEngine.onOffloadServiceRemoved(tvRemoteOffloadInfo)
}
}
- val program = consumeInstalledProgram(
+ val program = apfTestHelpers.consumeInstalledProgram(
apfController,
installCnt = if (removeTvRemoteRecord) 3 else 2
)
@@ -3126,14 +3125,14 @@
617374045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv4MdnsPtrQuery),
DROPPED_MDNS_REPLIED
)
- var transmitPkt = consumeTransmittedPackets(1)[0]
+ var transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
// ###[ Ethernet ]###
// dst = 01:00:5e:00:00:fb
@@ -3278,14 +3277,14 @@
617374045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv4MdnsTxtQuery),
DROPPED_MDNS_REPLIED
)
- transmitPkt = consumeTransmittedPackets(1)[0]
+ transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
assertContentEquals(
HexDump.hexStringToByteArray(expectedIPv4CastMdnsReply),
@@ -3304,14 +3303,14 @@
747672656d6f746532045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv4MdnsPtrQuery),
DROPPED_MDNS_REPLIED
)
- transmitPkt = consumeTransmittedPackets(1)[0]
+ transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
// ###[ Ethernet ]###
// dst = 01:00:5e:00:00:fb
@@ -3451,7 +3450,7 @@
045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(airplayIPv4MdnsPtrQuery),
@@ -3470,7 +3469,7 @@
747672656d6f746532045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv4MdnsPtrQuery),
@@ -3494,7 +3493,7 @@
676c6563617374045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv4MdnsPtrQueryWithOption),
@@ -3518,7 +3517,7 @@
617374045f746370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv4MdnsPtrQuery),
@@ -3544,7 +3543,7 @@
6f63616c00
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv4MdnsPtrAnswer),
@@ -3566,7 +3565,7 @@
000fb14e914e9000da73168656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(corruptedIPv4MdnsPkt),
@@ -3591,14 +3590,14 @@
3616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv6MdnsPtrQuery),
DROPPED_MDNS_REPLIED
)
- var transmitPkt = consumeTransmittedPackets(1)[0]
+ var transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
// ###[ Ethernet ]###
// dst = 33:33:00:00:00:fb
@@ -3741,14 +3740,14 @@
336432383930313363633061650b5f676f6f676c6563617374c01500100001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(castIPv6MdnsTxtQuery),
DROPPED_MDNS_REPLIED
)
- transmitPkt = consumeTransmittedPackets(1)[0]
+ transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
assertContentEquals(
HexDump.hexStringToByteArray(expectedIPv6CastMdnsReply),
@@ -3768,14 +3767,14 @@
46370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv6MdnsPtrQuery),
DROPPED_MDNS_REPLIED
)
- transmitPkt = consumeTransmittedPackets(1)[0]
+ transmitPkt = apfTestHelpers.consumeTransmittedPackets(1)[0]
// ###[ Ethernet ]###
// dst = 33:33:00:00:00:fb
@@ -3912,7 +3911,7 @@
0000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(airplayIPv6MdnsPtrQuery),
@@ -3932,7 +3931,7 @@
46370056c6f63616c00000c0001
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv6MdnsPtrQuery),
@@ -3958,7 +3957,7 @@
726f6964747672656d6f746532045f746370056c6f63616c00
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(tvRemoteIPv6MdnsPtrAnswer),
@@ -3981,7 +3980,7 @@
656c6c6f
""".replace("\\s+".toRegex(), "").trim()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
apfFilter.mApfVersionSupported,
program,
HexDump.hexStringToByteArray(corruptedIPv6MdnsPkt),
@@ -3992,13 +3991,13 @@
@Test
fun testApfProgramUpdate() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
// add IPv4 address, expect to have apf program update
val lp = LinkProperties()
val linkAddress = LinkAddress(InetAddress.getByAddress(hostIpv4Address), 24)
lp.addLinkAddress(linkAddress)
apfFilter.setLinkProperties(lp)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// add the same IPv4 address, expect to have no apf program update
apfFilter.setLinkProperties(lp)
@@ -4010,7 +4009,7 @@
}
apfFilter.setLinkProperties(lp)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// add the same IPv6 addresses, expect to have no apf program update
apfFilter.setLinkProperties(lp)
@@ -4029,7 +4028,7 @@
}
apfFilter.setLinkProperties(lp)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
// add the same IPv6 addresses, expect to have no apf program update
apfFilter.setLinkProperties(lp)
@@ -4047,13 +4046,13 @@
val apfConfig = getDefaultConfig()
apfConfig.handleIgmpOffload = true
val apfFilter = getApfFilter(apfConfig)
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
val addr = InetAddress.getByName("239.0.0.1") as Inet4Address
mcastAddrs.add(addr)
doReturn(mcastAddrs).`when`(dependencies).getIPv4MulticastAddresses(any())
val testPacket = HexDump.hexStringToByteArray("000000")
Os.write(igmpWriteSocket, testPacket, 0, testPacket.size)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
Os.write(igmpWriteSocket, testPacket, 0, testPacket.size)
Thread.sleep(NO_CALLBACK_TIMEOUT_MS)
@@ -4062,7 +4061,7 @@
mcastAddrs.remove(addr)
doReturn(mcastAddrs).`when`(dependencies).getIPv4MulticastAddresses(any())
Os.write(igmpWriteSocket, testPacket, 0, testPacket.size)
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
}
@Test
@@ -4077,9 +4076,9 @@
@Test
fun testApfFilterResumeWillCleanUpTheApfMemoryRegion() {
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
apfFilter.resume()
- val program = consumeInstalledProgram(apfController, installCnt = 1)
+ val program = apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
assertContentEquals(ByteArray(4096) { 0 }, program)
}
@@ -4095,7 +4094,7 @@
)
doReturn(mcastAddrs).`when`(dependencies).getIPv4MulticastAddresses(any())
val apfFilter = getApfFilter()
- consumeInstalledProgram(apfController, installCnt = 2)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 2)
assertEquals(mcastAddrs.toSet(), apfFilter.mIPv4MulticastAddresses)
assertEquals(mcastAddrsExcludeAllHost.toSet(), apfFilter.mIPv4McastAddrsExcludeAllHost)
@@ -4104,7 +4103,7 @@
mcastAddrsExcludeAllHost.add(addr)
doReturn(mcastAddrs).`when`(dependencies).getIPv4MulticastAddresses(any())
apfFilter.updateIPv4MulticastAddrs()
- consumeInstalledProgram(apfController, installCnt = 1)
+ apfTestHelpers.consumeInstalledProgram(apfController, installCnt = 1)
assertEquals(mcastAddrs.toSet(), apfFilter.mIPv4MulticastAddresses)
assertEquals(mcastAddrsExcludeAllHost.toSet(), apfFilter.mIPv4McastAddrsExcludeAllHost)
diff --git a/tests/unit/src/android/net/apf/ApfGeneratorTest.kt b/tests/unit/src/android/net/apf/ApfGeneratorTest.kt
index 96b4067..98ef45d 100644
--- a/tests/unit/src/android/net/apf/ApfGeneratorTest.kt
+++ b/tests/unit/src/android/net/apf/ApfGeneratorTest.kt
@@ -26,12 +26,7 @@
import android.net.apf.ApfTestHelpers.Companion.DROP
import android.net.apf.ApfTestHelpers.Companion.MIN_PKT_SIZE
import android.net.apf.ApfTestHelpers.Companion.PASS
-import android.net.apf.ApfTestHelpers.Companion.assertDrop
-import android.net.apf.ApfTestHelpers.Companion.assertPass
-import android.net.apf.ApfTestHelpers.Companion.assertVerdict
-import android.net.apf.ApfTestHelpers.Companion.consumeTransmittedPackets
import android.net.apf.ApfTestHelpers.Companion.decodeCountersIntoMap
-import android.net.apf.ApfTestHelpers.Companion.verifyProgramRun
import android.net.apf.BaseApfGenerator.APF_VERSION_2
import android.net.apf.BaseApfGenerator.APF_VERSION_3
import android.net.apf.BaseApfGenerator.APF_VERSION_6
@@ -54,6 +49,7 @@
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import org.junit.After
+import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -76,10 +72,16 @@
private val clampSize = 2048
private val testPacket = byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
+ private lateinit var apfTestHelpers: ApfTestHelpers
+
+ @Before
+ fun setUp() {
+ apfTestHelpers = ApfTestHelpers()
+ }
@After
fun tearDown() {
- ApfTestHelpers.resetTransmittedPacketMemory()
+ apfTestHelpers.resetTransmittedPacketMemory()
}
@Test
@@ -442,7 +444,7 @@
)
assertContentEquals(
listOf("0: pass"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
var gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -455,7 +457,7 @@
)
assertContentEquals(
listOf("0: drop"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -471,7 +473,7 @@
)
assertContentEquals(
listOf("0: pass counter=129"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -488,7 +490,7 @@
)
assertContentEquals(
listOf("0: drop counter=1000"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -504,7 +506,7 @@
)
assertContentEquals(
listOf("0: pass counter=11"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -520,7 +522,7 @@
)
assertContentEquals(
listOf("0: drop counter=46"),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -543,7 +545,7 @@
assertContentEquals(listOf(
"0: allocate r0",
"2: allocate 1500"
- ), ApfTestHelpers.disassembleApf(program).map { it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map { it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addTransmitWithoutChecksum()
@@ -559,7 +561,7 @@
assertContentEquals(listOf(
"0: transmit ip_ofs=255",
"4: transmitudp ip_ofs=30, csum_ofs=40, csum_start=50, partial_csum=0x0100",
- ), ApfTestHelpers.disassembleApf(program).map { it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map { it.trim() })
val largeByteArray = ByteArray(256) { 0x01 }
gen = ApfV6Generator(largeByteArray, APF_VERSION_6, ramSize, clampSize)
@@ -577,7 +579,7 @@
"0: data 256, " + "01".repeat(256),
"259: debugbuf size=1533"
),
- ApfTestHelpers.disassembleApf(program).map { it.trim() }
+ apfTestHelpers.disassembleApf(program).map { it.trim() }
)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -619,7 +621,7 @@
"25: write 0x80000000",
"30: write 0xfffffffe",
"35: write 0xfffefdfc"
- ), ApfTestHelpers.disassembleApf(program).map { it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map { it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addWriteU8(R0)
@@ -644,7 +646,7 @@
"6: ewrite1 r1",
"8: ewrite2 r1",
"10: ewrite4 r1"
- ), ApfTestHelpers.disassembleApf(program).map { it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map { it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addDataCopy(0, 10)
@@ -661,7 +663,7 @@
"0: datacopy src=0, len=10",
"2: datacopy src=1, len=5",
"5: pktcopy src=1000, len=255"
- ), ApfTestHelpers.disassembleApf(program).map { it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map { it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addDataCopyFromR0(5)
@@ -680,7 +682,7 @@
"3: epktcopy src=r0, len=5",
"6: edatacopy src=r0, len=r1",
"8: epktcopy src=r0, len=r1"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfBytesAtR0Equal(byteArrayOf('a'.code.toByte()), ApfV4Generator.DROP_LABEL)
@@ -693,7 +695,7 @@
), program)
assertContentEquals(listOf(
"0: jbseq r0, 0x1, DROP, 61"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
val qnames = byteArrayOf(1, 'A'.code.toByte(), 1, 'B'.code.toByte(), 0, 0)
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
@@ -708,7 +710,7 @@
assertContentEquals(listOf(
"0: jdnsqne r0, DROP, 12, (1)A(1)B(0)(0)",
"10: jdnsqeq r0, DROP, 12, (1)A(1)B(0)(0)"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfPktAtR0DoesNotContainDnsQSafe(qnames, 0x0c, ApfV4Generator.DROP_LABEL)
@@ -722,7 +724,7 @@
assertContentEquals(listOf(
"0: jdnsqnesafe r0, DROP, 12, (1)A(1)B(0)(0)",
"10: jdnsqeqsafe r0, DROP, 12, (1)A(1)B(0)(0)"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfPktAtR0DoesNotContainDnsA(qnames, ApfV4Generator.DROP_LABEL)
@@ -736,7 +738,7 @@
assertContentEquals(listOf(
"0: jdnsane r0, DROP, (1)A(1)B(0)(0)",
"9: jdnsaeq r0, DROP, (1)A(1)B(0)(0)"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfPktAtR0DoesNotContainDnsASafe(qnames, ApfV4Generator.DROP_LABEL)
@@ -750,7 +752,7 @@
assertContentEquals(listOf(
"0: jdnsanesafe r0, DROP, (1)A(1)B(0)(0)",
"9: jdnsaeqsafe r0, DROP, (1)A(1)B(0)(0)"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfOneOf(R1, List(32) { (it + 1).toLong() }.toSet(), DROP_LABEL)
@@ -773,7 +775,7 @@
assertContentEquals(listOf(
"0: joneof r0, DROP, { 0, 128, 256, 65536 }",
"20: jnoneof r1, DROP, { 0, 128, 256, 65536 }"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
gen = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
gen.addJumpIfBytesAtR0EqualsAnyOf(listOf(byteArrayOf(1, 2), byteArrayOf(3, 4)), DROP_LABEL)
@@ -792,7 +794,7 @@
"0: jbseq r0, 0x2, DROP, { 0102, 0304 }",
"9: jbsne r0, 0x2, DROP, { 0102, 0304 }",
"18: jbsne r0, 0x2, DROP, 0101"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
}
@Test
@@ -812,8 +814,8 @@
.addWriteU32(R1)
.addTransmitWithoutChecksum()
.generate()
- assertPass(APF_VERSION_6, program, ByteArray(MIN_PKT_SIZE))
- val transmitPackets = consumeTransmittedPackets(1)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, ByteArray(MIN_PKT_SIZE))
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
assertContentEquals(
byteArrayOf(
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xff.toByte(),
@@ -843,8 +845,8 @@
.addPacketCopyFromR0LenR1()
.addTransmitWithoutChecksum()
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
- val transmitPackets = consumeTransmittedPackets(1)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
assertContentEquals(
byteArrayOf(33, 34, 35, 1, 2, 3, 4, 33, 34, 35, 1, 2, 3, 4),
transmitPackets[0]
@@ -870,9 +872,9 @@
"26: datacopy src=9, len=3",
"29: datacopy src=3, len=6",
"32: transmit ip_ofs=255"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
- assertPass(APF_VERSION_6, program, testPacket)
- val transmitPackets = consumeTransmittedPackets(1)
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
val transmitPkt = HexDump.toHexString(transmitPackets[0])
assertEquals("112233445566223344778899112233445566", transmitPkt)
}
@@ -902,9 +904,9 @@
"277: datacopy src=258, len=5",
"281: datacopy src=255, len=5",
"284: transmit ip_ofs=255"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
- assertPass(APF_VERSION_6, program, testPacket)
- val transmitPackets = consumeTransmittedPackets(1)
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
val transmitPkt = HexDump.toHexString(transmitPackets[0])
assertEquals(
"01".repeat(290) + "02".repeat(5) + "01".repeat(3) + "02".repeat(2),
@@ -929,9 +931,9 @@
"311: datacopy src=3, len=255",
"314: datacopy src=258, len=45",
"318: transmit ip_ofs=255"
- ), ApfTestHelpers.disassembleApf(program).map{ it.trim() })
- assertPass(APF_VERSION_6, program, testPacket)
- val transmitPackets = consumeTransmittedPackets(1)
+ ), apfTestHelpers.disassembleApf(program).map{ it.trim() })
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
val transmitPkt = HexDump.toHexString(transmitPackets[0])
assertEquals( "03".repeat(255) + "04".repeat(45), transmitPkt)
}
@@ -942,17 +944,17 @@
.addDrop()
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addCountAndDrop(Counter.DROPPED_ETH_BROADCAST)
.generate()
- verifyProgramRun(APF_VERSION_6, program, testPacket, DROPPED_ETH_BROADCAST)
+ apfTestHelpers.verifyProgramRun(APF_VERSION_6, program, testPacket, DROPPED_ETH_BROADCAST)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addCountAndPass(Counter.PASSED_ARP_REQUEST)
.generate()
- verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_ARP_REQUEST)
+ apfTestHelpers.verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_ARP_REQUEST)
}
@Test
@@ -976,7 +978,7 @@
.addPass()
.generate()
var dataRegion = ByteArray(Counter.totalSize()) { 0 }
- assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
+ apfTestHelpers.assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
var counterMap = decodeCountersIntoMap(dataRegion)
var expectedMap = getInitialMap()
expectedMap[PASSED_ARP_REQUEST] = 2
@@ -1009,7 +1011,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1023,7 +1025,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1037,7 +1039,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1051,7 +1053,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1065,7 +1067,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1079,7 +1081,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1093,7 +1095,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1107,7 +1109,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1122,7 +1124,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1137,7 +1139,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1151,7 +1153,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1165,7 +1167,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1179,7 +1181,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1193,7 +1195,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1207,7 +1209,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1221,7 +1223,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1235,7 +1237,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1249,7 +1251,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1263,7 +1265,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1277,7 +1279,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1294,7 +1296,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1311,7 +1313,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1328,7 +1330,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1345,7 +1347,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1360,7 +1362,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1375,7 +1377,7 @@
.addPass()
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1390,7 +1392,7 @@
.addCountAndDrop(Counter.DROPPED_ETH_BROADCAST)
.addCountTrampoline()
.generate()
- verifyProgramRun(
+ apfTestHelpers.verifyProgramRun(
APF_VERSION_6,
program,
testPacket,
@@ -1402,7 +1404,13 @@
.addCountAndPass(Counter.PASSED_ARP_REQUEST)
.addCountTrampoline()
.generate()
- verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_ARP_REQUEST, incTotal = false)
+ apfTestHelpers.verifyProgramRun(
+ APF_VERSION_6,
+ program,
+ testPacket,
+ PASSED_ARP_REQUEST,
+ incTotal = false
+ )
}
@Test
@@ -1412,7 +1420,7 @@
.addCountTrampoline()
.generate()
var dataRegion = ByteArray(Counter.totalSize()) { 0 }
- assertVerdict(APF_VERSION_6, DROP, program, testPacket, dataRegion)
+ apfTestHelpers.assertVerdict(APF_VERSION_6, DROP, program, testPacket, dataRegion)
assertContentEquals(ByteArray(Counter.totalSize()) { 0 }, dataRegion)
program = ApfV4Generator(APF_VERSION_2, ramSize, clampSize)
@@ -1420,7 +1428,7 @@
.addCountTrampoline()
.generate()
dataRegion = ByteArray(Counter.totalSize()) { 0 }
- assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
+ apfTestHelpers.assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
assertContentEquals(ByteArray(Counter.totalSize()) { 0 }, dataRegion)
}
@@ -1431,7 +1439,7 @@
.addAllocate(65535)
.addDrop()
.generate()
- verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_ALLOCATE_FAILURE)
+ apfTestHelpers.verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_ALLOCATE_FAILURE)
}
@Test
@@ -1444,7 +1452,7 @@
.addTransmitWithoutChecksum()
.addDrop()
.generate()
- verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_TRANSMIT_FAILURE)
+ apfTestHelpers.verifyProgramRun(APF_VERSION_6, program, testPacket, PASSED_TRANSMIT_FAILURE)
}
@Test
@@ -1483,8 +1491,8 @@
true // isUdp
)
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
- val transmitPackets = consumeTransmittedPackets(1)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
+ val transmitPackets = apfTestHelpers.consumeTransmittedPackets(1)
val txBuf = ByteBuffer.wrap(transmitPackets[0])
Struct.parse(EthernetHeader::class.java, txBuf)
val ipv4Hdr = Struct.parse(Ipv4Header::class.java, txBuf)
@@ -1524,28 +1532,28 @@
.addJumpIfPktAtR0ContainDnsQ(needlesMatch, 0x01, DROP_LABEL) // arg2=qtype
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0ContainDnsQSafe(needlesMatch, 0x01, DROP_LABEL)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0DoesNotContainDnsQ(needlesMatch, 0x01, DROP_LABEL) // arg2=qtype
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0DoesNotContainDnsQSafe(needlesMatch, 0x01, DROP_LABEL) // arg2=qtype
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, udpPayload)
val badUdpPayload = intArrayOf(
0x00, 0x00, 0x00, 0x00, // tid = 0x00, flags = 0x00,
@@ -1567,14 +1575,26 @@
.addJumpIfPktAtR0ContainDnsQ(needlesMatch, 0x01, DROP_LABEL) // arg2=qtype
.addPass()
.generate()
- verifyProgramRun(APF_VERSION_6, program, badUdpPayload, CORRUPT_DNS_PACKET, result = DROP)
+ apfTestHelpers.verifyProgramRun(
+ APF_VERSION_6,
+ program,
+ badUdpPayload,
+ CORRUPT_DNS_PACKET,
+ result = DROP
+ )
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0ContainDnsQSafe(needlesMatch, 0x01, DROP_LABEL) // arg2=qtype
.addPass()
.generate()
- verifyProgramRun(APF_VERSION_6, program, badUdpPayload, CORRUPT_DNS_PACKET, result = PASS)
+ apfTestHelpers.verifyProgramRun(
+ APF_VERSION_6,
+ program,
+ badUdpPayload,
+ CORRUPT_DNS_PACKET,
+ result = PASS
+ )
}
@Test
@@ -1613,28 +1633,28 @@
.addJumpIfPktAtR0ContainDnsA(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0ContainDnsASafe(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0DoesNotContainDnsA(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, udpPayload)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0DoesNotContainDnsASafe(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, udpPayload)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, udpPayload)
val badUdpPayload = intArrayOf(
0x00, 0x00, 0x84, 0x00, // tid = 0x00, flags = 0x8400,
@@ -1660,14 +1680,26 @@
.addJumpIfPktAtR0ContainDnsA(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- verifyProgramRun(APF_VERSION_6, program, badUdpPayload, CORRUPT_DNS_PACKET, result = DROP)
+ apfTestHelpers.verifyProgramRun(
+ APF_VERSION_6,
+ program,
+ badUdpPayload,
+ CORRUPT_DNS_PACKET,
+ result = DROP
+ )
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
.addJumpIfPktAtR0ContainDnsASafe(needlesMatch, DROP_LABEL)
.addPass()
.generate()
- verifyProgramRun(APF_VERSION_6, program, badUdpPayload, CORRUPT_DNS_PACKET, result = PASS)
+ apfTestHelpers.verifyProgramRun(
+ APF_VERSION_6,
+ program,
+ badUdpPayload,
+ CORRUPT_DNS_PACKET,
+ result = PASS
+ )
}
@Test
@@ -1687,7 +1719,7 @@
)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 2)
@@ -1697,7 +1729,7 @@
)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 1)
@@ -1707,7 +1739,7 @@
)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 0)
@@ -1717,7 +1749,7 @@
)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
}
@Test
@@ -1727,28 +1759,28 @@
.addJumpIfOneOf(R0, setOf(1, 2, 3, 128, 255), DROP_LABEL)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 254)
.addJumpIfOneOf(R0, setOf(1, 2, 3, 128, 255), DROP_LABEL)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 254)
.addJumpIfNoneOf(R0, setOf(1, 2, 3, 128, 255), DROP_LABEL)
.addPass()
.generate()
- assertDrop(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertDrop(APF_VERSION_6, program, testPacket)
program = ApfV6Generator(APF_VERSION_6, ramSize, clampSize)
.addLoadImmediate(R0, 255)
.addJumpIfNoneOf(R0, setOf(1, 2, 3, 128, 255), DROP_LABEL)
.addPass()
.generate()
- assertPass(APF_VERSION_6, program, testPacket)
+ apfTestHelpers.assertPass(APF_VERSION_6, program, testPacket)
}
@Test
@@ -1758,7 +1790,7 @@
.generate()
val dataRegion = ByteArray(ramSize - program.size) { 0 }
- assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
+ apfTestHelpers.assertVerdict(APF_VERSION_6, PASS, program, testPacket, dataRegion)
// offset 3 in the data region should contain if the interpreter is APFv6 mode or not
assertEquals(1, dataRegion[3])
}
diff --git a/tests/unit/src/android/net/apf/ApfStandaloneTest.kt b/tests/unit/src/android/net/apf/ApfStandaloneTest.kt
index 2a918f8..b47eac6 100644
--- a/tests/unit/src/android/net/apf/ApfStandaloneTest.kt
+++ b/tests/unit/src/android/net/apf/ApfStandaloneTest.kt
@@ -38,6 +38,7 @@
import com.android.net.module.util.NetworkStackConstants.ICMPV6_ROUTER_SOLICITATION
import com.android.testutils.DevSdkIgnoreRunner
import kotlin.test.assertEquals
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -56,6 +57,12 @@
private val etherTypeDenyList = listOf(0x88A2, 0x88A4, 0x88B8, 0x88CD, 0x88E1, 0x88E3)
private val ramSize = 1024
private val clampSize = 1024
+ private lateinit var apfTestHelpers: ApfTestHelpers
+
+ @Before
+ fun setUp() {
+ apfTestHelpers = ApfTestHelpers()
+ }
fun runApfTest(isSuspendMode: Boolean) {
val program = generateApfV4Program(isSuspendMode)
@@ -78,7 +85,7 @@
val packetBadEtherType =
HexDump.hexStringToByteArray("ffffffffffff047bcb463fb588a201")
val dataRegion = ByteArray(Counter.totalSize()) { 0 }
- ApfTestHelpers.assertVerdict(
+ apfTestHelpers.assertVerdict(
APF_VERSION_4,
ApfTestHelpers.DROP,
program,
@@ -154,7 +161,7 @@
c0a801013204c0a80164ff
""".replace("\\s+".toRegex(), "").trim()
val dhcpRequestPkt = HexDump.hexStringToByteArray(dhcpRequestPktRawBytes)
- ApfTestHelpers.assertVerdict(
+ apfTestHelpers.assertVerdict(
APF_VERSION_4,
ApfTestHelpers.DROP,
program,
@@ -195,7 +202,7 @@
0000000000000000000000028500c81d00000000
""".replace("\\s+".toRegex(), "").trim()
val rsPkt = HexDump.hexStringToByteArray(rsPktRawBytes)
- ApfTestHelpers.assertVerdict(APF_VERSION_4, ApfTestHelpers.DROP, program, rsPkt, dataRegion)
+ apfTestHelpers.assertVerdict(APF_VERSION_4, ApfTestHelpers.DROP, program, rsPkt, dataRegion)
assertEquals(mapOf<Counter, Long>(
Counter.TOTAL_PACKETS to 3,
Counter.DROPPED_RS to 1,
@@ -238,7 +245,7 @@
00000000
""".replace("\\s+".toRegex(), "").trim()
val pingRequestPkt = HexDump.hexStringToByteArray(pingRequestPktRawBytes)
- ApfTestHelpers.assertVerdict(
+ apfTestHelpers.assertVerdict(
APF_VERSION_4,
ApfTestHelpers.DROP,
program,
diff --git a/tests/unit/src/android/net/apf/ApfTest.java b/tests/unit/src/android/net/apf/ApfTest.java
index dfeacf4..6bf3a2f 100644
--- a/tests/unit/src/android/net/apf/ApfTest.java
+++ b/tests/unit/src/android/net/apf/ApfTest.java
@@ -18,7 +18,6 @@
import static android.net.apf.ApfCounterTracker.Counter.getCounterEnumFromOffset;
import static android.net.apf.ApfTestHelpers.TIMEOUT_MS;
-import static android.net.apf.ApfTestHelpers.consumeInstalledProgram;
import static android.net.apf.ApfTestHelpers.DROP;
import static android.net.apf.ApfTestHelpers.MIN_PKT_SIZE;
import static android.net.apf.ApfTestHelpers.PASS;
@@ -179,6 +178,7 @@
private HandlerThread mHandlerThread;
private Handler mHandler;
private long mCurrentTimeMs;
+ private ApfTestHelpers mApfTestHelpers;
@Before
public void setUp() throws Exception {
@@ -202,6 +202,7 @@
mHandlerThread = new HandlerThread("ApfTestThread");
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
+ mApfTestHelpers = new ApfTestHelpers();
}
private void shutdownApfFilters() throws Exception {
@@ -274,58 +275,58 @@
}
private void assertPass(ApfV4Generator gen) throws ApfV4Generator.IllegalInstructionException {
- ApfTestHelpers.assertPass(mApfVersion, gen);
+ mApfTestHelpers.assertPass(mApfVersion, gen);
}
private void assertDrop(ApfV4Generator gen) throws ApfV4Generator.IllegalInstructionException {
- ApfTestHelpers.assertDrop(mApfVersion, gen);
+ mApfTestHelpers.assertDrop(mApfVersion, gen);
}
private void assertPass(byte[] program, byte[] packet) {
- ApfTestHelpers.assertPass(mApfVersion, program, packet);
+ mApfTestHelpers.assertPass(mApfVersion, program, packet);
}
private void assertDrop(byte[] program, byte[] packet) {
- ApfTestHelpers.assertDrop(mApfVersion, program, packet);
+ mApfTestHelpers.assertDrop(mApfVersion, program, packet);
}
private void assertPass(byte[] program, byte[] packet, int filterAge) {
- ApfTestHelpers.assertPass(mApfVersion, program, packet, filterAge);
+ mApfTestHelpers.assertPass(mApfVersion, program, packet, filterAge);
}
private void assertDrop(byte[] program, byte[] packet, int filterAge) {
- ApfTestHelpers.assertDrop(mApfVersion, program, packet, filterAge);
+ mApfTestHelpers.assertDrop(mApfVersion, program, packet, filterAge);
}
private void assertPass(ApfV4Generator gen, byte[] packet, int filterAge)
throws ApfV4Generator.IllegalInstructionException {
- ApfTestHelpers.assertPass(mApfVersion, gen, packet, filterAge);
+ mApfTestHelpers.assertPass(mApfVersion, gen, packet, filterAge);
}
private void assertDrop(ApfV4Generator gen, byte[] packet, int filterAge)
throws ApfV4Generator.IllegalInstructionException {
- ApfTestHelpers.assertDrop(mApfVersion, gen, packet, filterAge);
+ mApfTestHelpers.assertDrop(mApfVersion, gen, packet, filterAge);
}
private void assertDataMemoryContents(int expected, byte[] program, byte[] packet,
byte[] data, byte[] expectedData) throws Exception {
- ApfTestHelpers.assertDataMemoryContents(mApfVersion, expected, program, packet, data,
+ mApfTestHelpers.assertDataMemoryContents(mApfVersion, expected, program, packet, data,
expectedData, false /* ignoreInterpreterVersion */);
}
private void assertDataMemoryContentsIgnoreVersion(int expected, byte[] program,
byte[] packet, byte[] data, byte[] expectedData) throws Exception {
- ApfTestHelpers.assertDataMemoryContents(mApfVersion, expected, program, packet, data,
+ mApfTestHelpers.assertDataMemoryContents(mApfVersion, expected, program, packet, data,
expectedData, true /* ignoreInterpreterVersion */);
}
private void assertVerdict(String msg, int expected, byte[] program,
byte[] packet, int filterAge) {
- ApfTestHelpers.assertVerdict(mApfVersion, msg, expected, program, packet, filterAge);
+ mApfTestHelpers.assertVerdict(mApfVersion, msg, expected, program, packet, filterAge);
}
private void assertVerdict(int expected, byte[] program, byte[] packet) {
- ApfTestHelpers.assertVerdict(mApfVersion, expected, program, packet);
+ mApfTestHelpers.assertVerdict(mApfVersion, expected, program, packet);
}
/**
@@ -1003,9 +1004,9 @@
String pcap_filename = stageFile(R.raw.apf);
for (String tcpdump_filter : tcpdump_filters) {
byte[] apf_program = Bpf2Apf.convert(
- ApfTestHelpers.compileToBpf(tcpdump_filter));
+ mApfTestHelpers.compileToBpf(tcpdump_filter));
assertTrue("Failed to match for filter: " + tcpdump_filter,
- ApfTestHelpers.compareBpfApf(
+ mApfTestHelpers.compareBpfApf(
mApfVersion, tcpdump_filter, pcap_filename, apf_program));
}
}
@@ -1042,13 +1043,14 @@
config.multicastFilter = DROP_MULTICAST;
config.ieee802_3Filter = DROP_802_3_FRAMES;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 2 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 2 /* installCnt */);
apfFilter.setLinkProperties(lp);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
byte[] data = new byte[Counter.totalSize()];
final boolean result;
- result = ApfTestHelpers.dropsAllPackets(
+ result = mApfTestHelpers.dropsAllPackets(
mApfVersion, program, data, pcapFilename);
Log.i(TAG, "testApfFilterPcapFile(): Data counters: " + HexDump.toHexString(data, false));
@@ -1191,10 +1193,11 @@
ApfConfiguration config = getDefaultConfig();
config.multicastFilter = DROP_MULTICAST;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
apfFilter.setLinkProperties(lp);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
if (SdkLevel.isAtLeastV()) {
@@ -1246,7 +1249,8 @@
public void testApfFilterIPv6() throws Exception {
ApfConfiguration config = getDefaultConfig();
ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify empty IPv6 packet is passed
ByteBuffer packet = makeIpv6Packet(IPPROTO_UDP);
@@ -1659,10 +1663,11 @@
ApfConfiguration config = getDefaultConfig();
config.ieee802_3Filter = DROP_802_3_FRAMES;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
apfFilter.setLinkProperties(lp);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Construct IPv4 and IPv6 multicast packets.
ByteBuffer mcastv4packet = makeIpv4Packet(IPPROTO_UDP);
@@ -1697,7 +1702,7 @@
// Turn on multicast filter and verify it works
apfFilter.setMulticastFilter(true);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, mcastv4packet.array());
assertDrop(program, mcastv6packet.array());
assertDrop(program, bcastv4packet1.array());
@@ -1706,7 +1711,7 @@
// Turn off multicast filter and verify it's off
apfFilter.setMulticastFilter(false);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertPass(program, mcastv4packet.array());
assertPass(program, mcastv6packet.array());
assertPass(program, bcastv4packet1.array());
@@ -1718,9 +1723,9 @@
config.ieee802_3Filter = DROP_802_3_FRAMES;
clearInvocations(mApfController);
final ApfFilter apfFilter2 = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
apfFilter2.setLinkProperties(lp);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, mcastv4packet.array());
assertDrop(program, mcastv6packet.array());
assertDrop(program, bcastv4packet1.array());
@@ -1745,7 +1750,8 @@
private void doTestApfFilterMulticastPingWhileDozing(boolean isLightDozing) throws Exception {
final ApfConfiguration configuration = getDefaultConfig();
final ApfFilter apfFilter = getApfFilter(configuration);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final ArgumentCaptor<BroadcastReceiver> receiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
verify(mDependencies).addDeviceIdleReceiver(receiverCaptor.capture());
@@ -1767,13 +1773,13 @@
doReturn(true).when(mPowerManager).isDeviceIdleMode();
receiver.onReceive(mContext, new Intent(ACTION_DEVICE_IDLE_MODE_CHANGED));
}
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// ...and even while dozing...
assertPass(program, packet.array());
// ...but when the multicast filter is also enabled, drop the multicast pings to save power.
apfFilter.setMulticastFilter(true);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, packet.array());
// However, we should still let through all other ICMPv6 types.
@@ -1792,7 +1798,7 @@
doReturn(false).when(mPowerManager).isDeviceIdleMode();
receiver.onReceive(mContext, new Intent(ACTION_DEVICE_IDLE_MODE_CHANGED));
}
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertPass(program, packet.array());
}
@@ -1801,7 +1807,8 @@
public void testApfFilter802_3() throws Exception {
ApfConfiguration config = getDefaultConfig();
ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify empty packet of 100 zero bytes is passed
// Note that eth-type = 0 makes it an IEEE802.3 frame
@@ -1819,7 +1826,7 @@
// Now turn on the filter
config.ieee802_3Filter = DROP_802_3_FRAMES;
apfFilter = getApfFilter(config);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify that IEEE802.3 frame is dropped
// In this case ethtype is used for payload length
@@ -1844,7 +1851,8 @@
ApfConfiguration config = getDefaultConfig();
ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify empty packet of 100 zero bytes is passed
// Note that eth-type = 0 makes it an IEEE802.3 frame
@@ -1862,7 +1870,7 @@
// Now add IPv4 to the black list
config.ethTypeBlackList = ipv4BlackList;
apfFilter = getApfFilter(config);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify that IPv4 frame will be dropped
setIpv4VersionFields(packet);
@@ -1875,7 +1883,7 @@
// Now let us have both IPv4 and IPv6 in the black list
config.ethTypeBlackList = ipv4Ipv6BlackList;
apfFilter = getApfFilter(config);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify that IPv4 frame will be dropped
setIpv4VersionFields(packet);
@@ -1913,7 +1921,8 @@
config.multicastFilter = DROP_MULTICAST;
config.ieee802_3Filter = DROP_802_3_FRAMES;
ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Verify initially ARP request filter is off, and GARP filter is on.
verifyArpFilter(program, PASS);
@@ -1923,11 +1932,11 @@
LinkProperties lp = new LinkProperties();
assertTrue(lp.addLinkAddress(linkAddress));
apfFilter.setLinkProperties(lp);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
verifyArpFilter(program, DROP);
apfFilter.setLinkProperties(new LinkProperties());
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Inform ApfFilter of loss of IP and verify ARP filtering is off
verifyArpFilter(program, PASS);
}
@@ -2197,7 +2206,8 @@
// Verify new program generated if ApfFilter witnesses RA
clearInvocations(mApfController);
pretendPacketReceived(packet.array());
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
verifyRaLifetime(program, packet, lifetime);
return program;
}
@@ -2216,7 +2226,8 @@
config.multicastFilter = DROP_MULTICAST;
config.ieee802_3Filter = DROP_802_3_FRAMES;
ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final int ROUTER_LIFETIME = 1000;
final int PREFIX_VALID_LIFETIME = 200;
@@ -2300,7 +2311,8 @@
config.multicastFilter = DROP_MULTICAST;
config.ieee802_3Filter = DROP_802_3_FRAMES;
final ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final int RA_REACHABLE_TIME = 1800;
final int RA_RETRANSMISSION_TIMER = 1234;
@@ -2315,7 +2327,7 @@
// Assume apf is shown the given RA, it generates program to filter it.
pretendPacketReceived(raPacket);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, raPacket);
// A packet with different reachable time should be passed.
@@ -2340,7 +2352,7 @@
config.multicastFilter = DROP_MULTICAST;
config.ieee802_3Filter = DROP_802_3_FRAMES;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final int routerLifetime = 1000;
final int timePassedSeconds = 12;
@@ -2355,7 +2367,8 @@
synchronized (apfFilter) {
apfFilter.installNewProgram();
}
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
verifyRaLifetime(program, basePacket, routerLifetime, timePassedSeconds);
// Packet should be passed if the program is installed after 1/6 * lifetime from last seen
@@ -2365,7 +2378,7 @@
synchronized (apfFilter) {
apfFilter.installNewProgram();
}
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, basePacket.array());
mCurrentTimeMs += DateUtils.SECOND_IN_MILLIS;
@@ -2373,7 +2386,7 @@
synchronized (apfFilter) {
apfFilter.installNewProgram();
}
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertPass(program, basePacket.array());
}
@@ -2446,12 +2459,13 @@
@Test
public void testMatchedRaUpdatesLifetime() throws Exception {
final ApfFilter apfFilter = getApfFilter(getDefaultConfig());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an RA and build an APF program
byte[] ra = new RaPacketBuilder(1800 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// lifetime dropped significantly, assert pass
ra = new RaPacketBuilder(200 /* router lifetime */).build();
@@ -2459,7 +2473,7 @@
// update program with the new RA
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// assert program was updated and new lifetimes were taken into account.
assertDrop(program, ra);
@@ -2470,7 +2484,7 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Template packet:
// Frame 1: 150 bytes on wire (1200 bits), 150 bytes captured (1200 bits)
// Ethernet II, Src: Netgear_23:67:2c (28:c6:8e:23:67:2c), Dst: IPv6mcast_01 (33:33:00:00:00:01)
@@ -2522,7 +2536,7 @@
String.format(packetStringFmt, lifetime + lifetime));
// feed the RA into APF and generate the filter, the filter shouldn't crash.
pretendPacketReceived(ra);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
}
}
@@ -2534,7 +2548,7 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(1800 /* router lifetime */)
@@ -2542,7 +2556,8 @@
.build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2562,7 +2577,7 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(1800 /* router lifetime */)
@@ -2570,7 +2585,8 @@
.build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2597,13 +2613,14 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(0 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2625,13 +2642,14 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(100 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2661,13 +2679,14 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(200 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2693,13 +2712,14 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(1800 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped
assertDrop(program, ra);
@@ -2731,12 +2751,13 @@
final ApfConfiguration config = getDefaultConfig();
config.acceptRaMinLft = 180;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Create an initial RA and build an APF program
byte[] ra = new RaPacketBuilder(1800 /* router lifetime */).build();
pretendPacketReceived(ra);
- byte[] program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// repeated RA is dropped.
assertDrop(program, ra);
@@ -2745,37 +2766,37 @@
ra = new RaPacketBuilder(599 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
ra = new RaPacketBuilder(180 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
ra = new RaPacketBuilder(0 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
ra = new RaPacketBuilder(180 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
ra = new RaPacketBuilder(599 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
ra = new RaPacketBuilder(1800 /* router lifetime */).build();
assertPass(program, ra);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
assertDrop(program, ra);
}
@@ -2821,11 +2842,11 @@
config.apfVersionSupported = 2;
config.apfRamSize = 512;
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final byte[] ra = buildLargeRa();
pretendPacketReceived(ra);
// The generated program size will be 529, which is larger than 512
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
verify(mNetworkQuirkMetrics).setEvent(NetworkQuirkEvent.QE_APF_OVER_SIZE_FAILURE);
verify(mNetworkQuirkMetrics).statsWrite();
}
@@ -2839,7 +2860,8 @@
final long durationTimeMs = config.minMetricsSessionDurationMs;
doReturn(startTimeMs).when(mDependencies).elapsedRealtime();
final ApfFilter apfFilter = getApfFilter(config);
- byte[] program = consumeInstalledProgram(mApfController, 2 /* installCnt */);
+ byte[] program =
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 2 /* installCnt */);
int maxProgramSize = 0;
int numProgramUpdated = 0;
maxProgramSize = Math.max(maxProgramSize, program.length);
@@ -2859,13 +2881,13 @@
expectedData[passedIpv6IcmpCounterIdx + 3] += 1;
assertDataMemoryContentsIgnoreVersion(PASS, program, ra, data, expectedData);
pretendPacketReceived(ra);
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
maxProgramSize = Math.max(maxProgramSize, program.length);
numProgramUpdated++;
apfFilter.setMulticastFilter(true);
// setMulticastFilter will trigger program installation.
- program = consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ program = mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
maxProgramSize = Math.max(maxProgramSize, program.length);
numProgramUpdated++;
@@ -2918,7 +2940,7 @@
final long durationTimeMs = config.minMetricsSessionDurationMs;
doReturn(startTimeMs).when(mDependencies).elapsedRealtime();
final ApfFilter apfFilter = getApfFilter(config);
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
final int routerLifetime = 1000;
final int prefixValidLifetime = 200;
@@ -2956,20 +2978,20 @@
// Inject RA packets. Calling assertProgramUpdateAndGet()/assertNoProgramUpdate() is to make
// sure that the RA packet has been processed.
pretendPacketReceived(ra1.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
pretendPacketReceived(ra2.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
pretendPacketReceived(raInvalid.build());
Thread.sleep(NO_CALLBACK_TIMEOUT_MS);
verify(mApfController, never()).installPacketFilter(any());
pretendPacketReceived(raZeroRouterLifetime.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
pretendPacketReceived(raZeroPioValidLifetime.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
pretendPacketReceived(raZeroRdnssLifetime.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
pretendPacketReceived(raZeroRioRouteLifetime.build());
- consumeInstalledProgram(mApfController, 1 /* installCnt */);
+ mApfTestHelpers.consumeInstalledProgram(mApfController, 1 /* installCnt */);
// Write metrics data to statsd pipeline when shutdown.
doReturn(startTimeMs + durationTimeMs).when(mDependencies).elapsedRealtime();
diff --git a/tests/unit/src/android/net/apf/ApfTestHelpers.kt b/tests/unit/src/android/net/apf/ApfTestHelpers.kt
index f105ac4..0a4cdb6 100644
--- a/tests/unit/src/android/net/apf/ApfTestHelpers.kt
+++ b/tests/unit/src/android/net/apf/ApfTestHelpers.kt
@@ -27,7 +27,8 @@
import org.mockito.Mockito.timeout
import org.mockito.Mockito.verify
-class ApfTestHelpers private constructor() {
+class ApfTestHelpers {
+ private val apfJniUtils = ApfJniUtils()
companion object {
const val TIMEOUT_MS: Long = 1000
const val PASS: Int = 1
@@ -36,7 +37,6 @@
// Interpreter will just accept packets without link layer headers, so pad fake packet to at
// least the minimum packet size.
const val MIN_PKT_SIZE: Int = 15
- private val apfJniUtils = ApfJniUtils()
private fun label(code: Int): String {
return when (code) {
PASS -> "PASS"
@@ -53,172 +53,6 @@
assertEquals(label(expected), label(got))
}
- private fun assertVerdict(
- apfVersion: Int,
- expected: Int,
- program: ByteArray,
- packet: ByteArray,
- filterAge: Int
- ) {
- val msg = """Unexpected APF verdict. To debug:
- apf_run
- --program ${HexDump.toHexString(program)}
- --packet ${HexDump.toHexString(packet)}
- --age $filterAge
- ${if (apfVersion > 4) " --v6" else ""}
- --trace " + " | less\n
- """
- assertReturnCodesEqual(
- msg,
- expected,
- apfJniUtils.apfSimulate(apfVersion, program, packet, null, filterAge)
- )
- }
-
- @Throws(BaseApfGenerator.IllegalInstructionException::class)
- private fun assertVerdict(
- apfVersion: Int,
- expected: Int,
- gen: ApfV4Generator,
- packet: ByteArray,
- filterAge: Int
- ) {
- assertVerdict(apfVersion, expected, gen.generate(), packet, null, filterAge)
- }
-
- private fun assertVerdict(
- apfVersion: Int,
- expected: Int,
- program: ByteArray,
- packet: ByteArray,
- data: ByteArray?,
- filterAge: Int
- ) {
- val msg = "Unexpected APF verdict. To debug: \n" + """
- apf_run
- --program ${HexDump.toHexString(program)}
- --packet ${HexDump.toHexString(packet)}
- ${if (data != null) "--data ${HexDump.toHexString(data)}" else ""}
- --age $filterAge
- ${if (apfVersion > 4) "--v6" else ""}
- --trace | less
- """.replace("\n", " ").replace("\\s+".toRegex(), " ") + "\n"
- assertReturnCodesEqual(
- msg,
- expected,
- apfJniUtils.apfSimulate(apfVersion, program, packet, data, filterAge)
- )
- }
-
- /**
- * Runs the APF program with customized data region and checks the return code.
- */
- fun assertVerdict(
- apfVersion: Int,
- expected: Int,
- program: ByteArray,
- packet: ByteArray,
- data: ByteArray?
- ) {
- assertVerdict(apfVersion, expected, program, packet, data, filterAge = 0)
- }
-
- /**
- * Runs the APF program and checks the return code is equals to expected value. If not, the
- * customized message is printed.
- */
- @JvmStatic
- fun assertVerdict(
- apfVersion: Int,
- msg: String,
- expected: Int,
- program: ByteArray?,
- packet: ByteArray?,
- filterAge: Int
- ) {
- assertReturnCodesEqual(
- msg,
- expected,
- apfJniUtils.apfSimulate(apfVersion, program, packet, null, filterAge)
- )
- }
-
- /**
- * Runs the APF program and checks the return code is equals to expected value.
- */
- @JvmStatic
- fun assertVerdict(apfVersion: Int, expected: Int, program: ByteArray, packet: ByteArray) {
- assertVerdict(apfVersion, expected, program, packet, 0)
- }
-
- /**
- * Runs the APF program and checks the return code is PASS.
- */
- @JvmStatic
- fun assertPass(apfVersion: Int, program: ByteArray, packet: ByteArray, filterAge: Int) {
- assertVerdict(apfVersion, PASS, program, packet, filterAge)
- }
-
- /**
- * Runs the APF program and checks the return code is PASS.
- */
- @JvmStatic
- fun assertPass(apfVersion: Int, program: ByteArray, packet: ByteArray) {
- assertVerdict(apfVersion, PASS, program, packet)
- }
-
- /**
- * Runs the APF program and checks the return code is DROP.
- */
- @JvmStatic
- fun assertDrop(apfVersion: Int, program: ByteArray, packet: ByteArray, filterAge: Int) {
- assertVerdict(apfVersion, DROP, program, packet, filterAge)
- }
-
- /**
- * Runs the APF program and checks the return code is DROP.
- */
- @JvmStatic
- fun assertDrop(apfVersion: Int, program: ByteArray, packet: ByteArray) {
- assertVerdict(apfVersion, DROP, program, packet)
- }
-
- /**
- * Runs the APF program and checks the return code is PASS.
- */
- @Throws(BaseApfGenerator.IllegalInstructionException::class)
- @JvmStatic
- fun assertPass(apfVersion: Int, gen: ApfV4Generator, packet: ByteArray, filterAge: Int) {
- assertVerdict(apfVersion, PASS, gen, packet, filterAge)
- }
-
- /**
- * Runs the APF program and checks the return code is DROP.
- */
- @Throws(BaseApfGenerator.IllegalInstructionException::class)
- @JvmStatic
- fun assertDrop(apfVersion: Int, gen: ApfV4Generator, packet: ByteArray, filterAge: Int) {
- assertVerdict(apfVersion, DROP, gen, packet, filterAge)
- }
-
- /**
- * Runs the APF program and checks the return code is PASS.
- */
- @Throws(BaseApfGenerator.IllegalInstructionException::class)
- @JvmStatic
- fun assertPass(apfVersion: Int, gen: ApfV4Generator) {
- assertVerdict(apfVersion, PASS, gen, ByteArray(MIN_PKT_SIZE), 0)
- }
-
- /**
- * Runs the APF program and checks the return code is DROP.
- */
- @Throws(BaseApfGenerator.IllegalInstructionException::class)
- @JvmStatic
- fun assertDrop(apfVersion: Int, gen: ApfV4Generator) {
- assertVerdict(apfVersion, DROP, gen, ByteArray(MIN_PKT_SIZE), 0)
- }
-
/**
* Checks the generated APF program equals to the expected value.
*/
@@ -234,69 +68,6 @@
}
}
- /**
- * Runs the APF program and checks the return code and data regions
- * equals to expected value.
- */
- @Throws(BaseApfGenerator.IllegalInstructionException::class, Exception::class)
- @JvmStatic
- fun assertDataMemoryContents(
- apfVersion: Int,
- expected: Int,
- program: ByteArray?,
- packet: ByteArray?,
- data: ByteArray,
- expectedData: ByteArray,
- ignoreInterpreterVersion: Boolean
- ) {
- assertReturnCodesEqual(
- expected,
- apfJniUtils.apfSimulate(apfVersion, program, packet, data, 0)
- )
-
- if (ignoreInterpreterVersion) {
- val apfVersionIdx = (Counter.totalSize() +
- APF_VERSION.offset())
- val apfProgramIdIdx = (Counter.totalSize() +
- APF_PROGRAM_ID.offset())
- for (i in 0..3) {
- data[apfVersionIdx + i] = 0
- data[apfProgramIdIdx + i] = 0
- }
- }
- // assertArrayEquals() would only print one byte, making debugging difficult.
- if (!expectedData.contentEquals(data)) {
- throw Exception(
- ("\nprogram: " + HexDump.toHexString(program) +
- "\ndata memory: " + HexDump.toHexString(data) +
- "\nexpected: " + HexDump.toHexString(expectedData))
- )
- }
- }
-
- fun verifyProgramRun(
- version: Int,
- program: ByteArray,
- pkt: ByteArray,
- targetCnt: Counter,
- cntMap: MutableMap<Counter, Long> = mutableMapOf(),
- dataRegion: ByteArray = ByteArray(Counter.totalSize()) { 0 },
- incTotal: Boolean = true,
- result: Int = if (targetCnt.name.startsWith("PASSED")) PASS else DROP
- ) {
- assertVerdict(version, result, program, pkt, dataRegion)
- cntMap[targetCnt] = cntMap.getOrDefault(targetCnt, 0) + 1
- if (incTotal) {
- cntMap[TOTAL_PACKETS] = cntMap.getOrDefault(TOTAL_PACKETS, 0) + 1
- }
- val errMsg = "Counter is not increased properly. To debug: \n" +
- " apf_run --program ${HexDump.toHexString(program)} " +
- "--packet ${HexDump.toHexString(pkt)} " +
- "--data ${HexDump.toHexString(dataRegion)} --age 0 " +
- "${if (version == APF_VERSION_6) "--v6" else "" } --trace | less \n"
- assertEquals(cntMap, decodeCountersIntoMap(dataRegion), errMsg)
- }
-
fun decodeCountersIntoMap(counterBytes: ByteArray): Map<Counter, Long> {
val counters = Counter::class.java.enumConstants
val ret = HashMap<Counter, Long>()
@@ -313,68 +84,282 @@
}
return ret
}
+ }
- @JvmStatic
- fun consumeInstalledProgram(
- apfController: ApfFilter.IApfController,
- installCnt: Int
- ): ByteArray {
- val programCaptor = ArgumentCaptor.forClass(
- ByteArray::class.java
+ private fun assertVerdict(
+ apfVersion: Int,
+ expected: Int,
+ program: ByteArray,
+ packet: ByteArray,
+ filterAge: Int
+ ) {
+ val msg = """Unexpected APF verdict. To debug:
+ apf_run
+ --program ${HexDump.toHexString(program)}
+ --packet ${HexDump.toHexString(packet)}
+ --age $filterAge
+ ${if (apfVersion > 4) " --v6" else ""}
+ --trace " + " | less\n
+ """
+ assertReturnCodesEqual(
+ msg,
+ expected,
+ apfJniUtils.apfSimulate(apfVersion, program, packet, null, filterAge)
+ )
+ }
+
+ @Throws(BaseApfGenerator.IllegalInstructionException::class)
+ private fun assertVerdict(
+ apfVersion: Int,
+ expected: Int,
+ gen: ApfV4Generator,
+ packet: ByteArray,
+ filterAge: Int
+ ) {
+ assertVerdict(apfVersion, expected, gen.generate(), packet, null, filterAge)
+ }
+
+ private fun assertVerdict(
+ apfVersion: Int,
+ expected: Int,
+ program: ByteArray,
+ packet: ByteArray,
+ data: ByteArray?,
+ filterAge: Int
+ ) {
+ val msg = "Unexpected APF verdict. To debug: \n" + """
+ apf_run
+ --program ${HexDump.toHexString(program)}
+ --packet ${HexDump.toHexString(packet)}
+ ${if (data != null) "--data ${HexDump.toHexString(data)}" else ""}
+ --age $filterAge
+ ${if (apfVersion > 4) "--v6" else ""}
+ --trace | less
+ """.replace("\n", " ").replace("\\s+".toRegex(), " ") + "\n"
+ assertReturnCodesEqual(
+ msg,
+ expected,
+ apfJniUtils.apfSimulate(apfVersion, program, packet, data, filterAge)
+ )
+ }
+
+ /**
+ * Runs the APF program with customized data region and checks the return code.
+ */
+ fun assertVerdict(
+ apfVersion: Int,
+ expected: Int,
+ program: ByteArray,
+ packet: ByteArray,
+ data: ByteArray?
+ ) {
+ assertVerdict(apfVersion, expected, program, packet, data, filterAge = 0)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is equals to expected value. If not, the
+ * customized message is printed.
+ */
+ fun assertVerdict(
+ apfVersion: Int,
+ msg: String,
+ expected: Int,
+ program: ByteArray?,
+ packet: ByteArray?,
+ filterAge: Int
+ ) {
+ assertReturnCodesEqual(
+ msg,
+ expected,
+ apfJniUtils.apfSimulate(apfVersion, program, packet, null, filterAge)
+ )
+ }
+
+ /**
+ * Runs the APF program and checks the return code is equals to expected value.
+ */
+ fun assertVerdict(apfVersion: Int, expected: Int, program: ByteArray, packet: ByteArray) {
+ assertVerdict(apfVersion, expected, program, packet, 0)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is PASS.
+ */
+ fun assertPass(apfVersion: Int, program: ByteArray, packet: ByteArray, filterAge: Int) {
+ assertVerdict(apfVersion, PASS, program, packet, filterAge)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is PASS.
+ */
+ fun assertPass(apfVersion: Int, program: ByteArray, packet: ByteArray) {
+ assertVerdict(apfVersion, PASS, program, packet)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is DROP.
+ */
+ fun assertDrop(apfVersion: Int, program: ByteArray, packet: ByteArray, filterAge: Int) {
+ assertVerdict(apfVersion, DROP, program, packet, filterAge)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is DROP.
+ */
+ fun assertDrop(apfVersion: Int, program: ByteArray, packet: ByteArray) {
+ assertVerdict(apfVersion, DROP, program, packet)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is PASS.
+ */
+ @Throws(BaseApfGenerator.IllegalInstructionException::class)
+ fun assertPass(apfVersion: Int, gen: ApfV4Generator, packet: ByteArray, filterAge: Int) {
+ assertVerdict(apfVersion, PASS, gen, packet, filterAge)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is DROP.
+ */
+ @Throws(BaseApfGenerator.IllegalInstructionException::class)
+ fun assertDrop(apfVersion: Int, gen: ApfV4Generator, packet: ByteArray, filterAge: Int) {
+ assertVerdict(apfVersion, DROP, gen, packet, filterAge)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is PASS.
+ */
+ @Throws(BaseApfGenerator.IllegalInstructionException::class)
+ fun assertPass(apfVersion: Int, gen: ApfV4Generator) {
+ assertVerdict(apfVersion, PASS, gen, ByteArray(MIN_PKT_SIZE), 0)
+ }
+
+ /**
+ * Runs the APF program and checks the return code is DROP.
+ */
+ @Throws(BaseApfGenerator.IllegalInstructionException::class)
+ fun assertDrop(apfVersion: Int, gen: ApfV4Generator) {
+ assertVerdict(apfVersion, DROP, gen, ByteArray(MIN_PKT_SIZE), 0)
+ }
+
+ /**
+ * Runs the APF program and checks the return code and data regions
+ * equals to expected value.
+ */
+ @Throws(BaseApfGenerator.IllegalInstructionException::class, Exception::class)
+ fun assertDataMemoryContents(
+ apfVersion: Int,
+ expected: Int,
+ program: ByteArray?,
+ packet: ByteArray?,
+ data: ByteArray,
+ expectedData: ByteArray,
+ ignoreInterpreterVersion: Boolean
+ ) {
+ assertReturnCodesEqual(
+ expected,
+ apfJniUtils.apfSimulate(apfVersion, program, packet, data, 0)
+ )
+
+ if (ignoreInterpreterVersion) {
+ val apfVersionIdx = (Counter.totalSize() +
+ APF_VERSION.offset())
+ val apfProgramIdIdx = (Counter.totalSize() +
+ APF_PROGRAM_ID.offset())
+ for (i in 0..3) {
+ data[apfVersionIdx + i] = 0
+ data[apfProgramIdIdx + i] = 0
+ }
+ }
+ // assertArrayEquals() would only print one byte, making debugging difficult.
+ if (!expectedData.contentEquals(data)) {
+ throw Exception(
+ ("\nprogram: " + HexDump.toHexString(program) +
+ "\ndata memory: " + HexDump.toHexString(data) +
+ "\nexpected: " + HexDump.toHexString(expectedData))
)
-
- verify(apfController, timeout(TIMEOUT_MS).times(installCnt)).installPacketFilter(
- programCaptor.capture()
- )
-
- clearInvocations<Any>(apfController)
- return programCaptor.value
}
+ }
- fun consumeTransmittedPackets(
- expectCnt: Int
- ): List<ByteArray> {
- val transmittedPackets = apfJniUtils.getAllTransmittedPackets()
- assertEquals(expectCnt, transmittedPackets.size)
- resetTransmittedPacketMemory()
- return transmittedPackets
+ fun verifyProgramRun(
+ version: Int,
+ program: ByteArray,
+ pkt: ByteArray,
+ targetCnt: Counter,
+ cntMap: MutableMap<Counter, Long> = mutableMapOf(),
+ dataRegion: ByteArray = ByteArray(Counter.totalSize()) { 0 },
+ incTotal: Boolean = true,
+ result: Int = if (targetCnt.name.startsWith("PASSED")) PASS else DROP
+ ) {
+ assertVerdict(version, result, program, pkt, dataRegion)
+ cntMap[targetCnt] = cntMap.getOrDefault(targetCnt, 0) + 1
+ if (incTotal) {
+ cntMap[TOTAL_PACKETS] = cntMap.getOrDefault(TOTAL_PACKETS, 0) + 1
}
+ val errMsg = "Counter is not increased properly. To debug: \n" +
+ " apf_run --program ${HexDump.toHexString(program)} " +
+ "--packet ${HexDump.toHexString(pkt)} " +
+ "--data ${HexDump.toHexString(dataRegion)} --age 0 " +
+ "${if (version == APF_VERSION_6) "--v6" else "" } --trace | less \n"
+ assertEquals(cntMap, decodeCountersIntoMap(dataRegion), errMsg)
+ }
- fun resetTransmittedPacketMemory() {
- apfJniUtils.resetTransmittedPacketMemory()
- }
+ fun consumeInstalledProgram(
+ apfController: ApfFilter.IApfController,
+ installCnt: Int
+ ): ByteArray {
+ val programCaptor = ArgumentCaptor.forClass(
+ ByteArray::class.java
+ )
- fun disassembleApf(program: ByteArray): Array<String> {
- return apfJniUtils.disassembleApf(program)
- }
+ verify(apfController, timeout(TIMEOUT_MS).times(installCnt)).installPacketFilter(
+ programCaptor.capture()
+ )
- fun getAllTransmittedPackets(): List<ByteArray> {
- return apfJniUtils.allTransmittedPackets
- }
+ clearInvocations<Any>(apfController)
+ return programCaptor.value
+ }
- @JvmStatic
- fun compareBpfApf(
- apfVersion: Int,
- filter: String,
- pcapFilename: String,
- apfProgram: ByteArray
- ): Boolean {
- return apfJniUtils.compareBpfApf(apfVersion, filter, pcapFilename, apfProgram)
- }
+ fun consumeTransmittedPackets(
+ expectCnt: Int
+ ): List<ByteArray> {
+ val transmittedPackets = apfJniUtils.getAllTransmittedPackets()
+ assertEquals(expectCnt, transmittedPackets.size)
+ resetTransmittedPacketMemory()
+ return transmittedPackets
+ }
- @JvmStatic
- fun compileToBpf(filter: String): String {
- return apfJniUtils.compileToBpf(filter)
- }
+ fun resetTransmittedPacketMemory() {
+ apfJniUtils.resetTransmittedPacketMemory()
+ }
- @JvmStatic
- fun dropsAllPackets(
- apfVersion: Int,
- program: ByteArray,
- data: ByteArray,
- pcapFilename: String
- ): Boolean {
- return apfJniUtils.dropsAllPackets(apfVersion, program, data, pcapFilename)
- }
+ fun disassembleApf(program: ByteArray): Array<String> {
+ return apfJniUtils.disassembleApf(program)
+ }
+
+ fun getAllTransmittedPackets(): List<ByteArray> {
+ return apfJniUtils.allTransmittedPackets
+ }
+
+ fun compareBpfApf(
+ apfVersion: Int,
+ filter: String,
+ pcapFilename: String,
+ apfProgram: ByteArray
+ ): Boolean {
+ return apfJniUtils.compareBpfApf(apfVersion, filter, pcapFilename, apfProgram)
+ }
+
+ fun compileToBpf(filter: String): String {
+ return apfJniUtils.compileToBpf(filter)
+ }
+
+ fun dropsAllPackets(
+ apfVersion: Int,
+ program: ByteArray,
+ data: ByteArray,
+ pcapFilename: String
+ ): Boolean {
+ return apfJniUtils.dropsAllPackets(apfVersion, program, data, pcapFilename)
}
}