Merge "deflake DscpPolicyTest"
This commit is contained in:
commit
b70bda58db
1 changed files with 30 additions and 31 deletions
|
|
@ -16,10 +16,8 @@
|
|||
|
||||
package android.net.cts
|
||||
|
||||
import android.net.cts.util.CtsNetUtils.TestNetworkCallback
|
||||
|
||||
import android.app.Instrumentation
|
||||
import android.Manifest.permission.MANAGE_TEST_NETWORKS
|
||||
import android.app.Instrumentation
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.DscpPolicy
|
||||
|
|
@ -27,8 +25,8 @@ import android.net.InetAddresses
|
|||
import android.net.IpPrefix
|
||||
import android.net.LinkAddress
|
||||
import android.net.LinkProperties
|
||||
import android.net.Network
|
||||
import android.net.MacAddress
|
||||
import android.net.Network
|
||||
import android.net.NetworkAgent
|
||||
import android.net.NetworkAgent.DSCP_POLICY_STATUS_DELETED
|
||||
import android.net.NetworkAgent.DSCP_POLICY_STATUS_SUCCESS
|
||||
|
|
@ -43,9 +41,10 @@ import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN
|
|||
import android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED
|
||||
import android.net.NetworkCapabilities.TRANSPORT_TEST
|
||||
import android.net.NetworkRequest
|
||||
import android.net.RouteInfo
|
||||
import android.net.TestNetworkInterface
|
||||
import android.net.TestNetworkManager
|
||||
import android.net.RouteInfo
|
||||
import android.net.cts.util.CtsNetUtils.TestNetworkCallback
|
||||
import android.os.HandlerThread
|
||||
import android.os.SystemClock
|
||||
import android.platform.test.annotations.AppModeFull
|
||||
|
|
@ -61,6 +60,7 @@ import android.util.Log
|
|||
import android.util.Range
|
||||
import androidx.test.InstrumentationRegistry
|
||||
import androidx.test.runner.AndroidJUnit4
|
||||
import com.android.net.module.util.IpUtils
|
||||
import com.android.net.module.util.NetworkStackConstants.ETHER_TYPE_IPV4
|
||||
import com.android.net.module.util.NetworkStackConstants.ETHER_TYPE_IPV6
|
||||
import com.android.net.module.util.Struct
|
||||
|
|
@ -69,33 +69,31 @@ import com.android.testutils.ArpResponder
|
|||
import com.android.testutils.CompatUtil
|
||||
import com.android.testutils.ConnectivityModuleTest
|
||||
import com.android.testutils.DevSdkIgnoreRule
|
||||
import com.android.testutils.assertParcelingIsLossless
|
||||
import com.android.testutils.RouterAdvertisementResponder
|
||||
import com.android.testutils.runAsShell
|
||||
import com.android.testutils.SC_V2
|
||||
import com.android.testutils.TapPacketReader
|
||||
import com.android.testutils.TestableNetworkAgent
|
||||
import com.android.testutils.TestableNetworkAgent.CallbackEntry.OnNetworkCreated
|
||||
import com.android.testutils.TestableNetworkAgent.CallbackEntry.OnDscpPolicyStatusUpdated
|
||||
import com.android.testutils.TestableNetworkAgent.CallbackEntry.OnNetworkCreated
|
||||
import com.android.testutils.TestableNetworkCallback
|
||||
import com.android.net.module.util.IpUtils
|
||||
import com.android.testutils.assertParcelingIsLossless
|
||||
import com.android.testutils.runAsShell
|
||||
import java.net.Inet4Address
|
||||
import java.net.Inet6Address
|
||||
import java.net.InetSocketAddress
|
||||
import java.nio.ByteBuffer
|
||||
import java.nio.ByteOrder
|
||||
import java.util.regex.Pattern
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.fail
|
||||
import org.junit.After
|
||||
import org.junit.Assume.assumeTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import java.net.Inet4Address
|
||||
import java.net.Inet6Address
|
||||
import java.net.InetSocketAddress
|
||||
import java.nio.ByteBuffer
|
||||
import java.nio.ByteOrder
|
||||
import java.util.Arrays
|
||||
import java.util.regex.Pattern
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.fail
|
||||
|
||||
private const val MAX_PACKET_LENGTH = 1500
|
||||
|
||||
|
|
@ -222,31 +220,32 @@ class DscpPolicyTest {
|
|||
|
||||
private fun waitForGlobalIpv6Address(network: Network): Inet6Address {
|
||||
// Wait for global IPv6 address to be available
|
||||
val sock = Os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)
|
||||
network.bindSocket(sock)
|
||||
|
||||
var inet6Addr: Inet6Address? = null
|
||||
val timeout = SystemClock.elapsedRealtime() + PACKET_TIMEOUT_MS
|
||||
val onLinkPrefix = raResponder.prefix
|
||||
while (timeout > SystemClock.elapsedRealtime()) {
|
||||
val startTime = SystemClock.elapsedRealtime()
|
||||
while (SystemClock.elapsedRealtime() - startTime < PACKET_TIMEOUT_MS) {
|
||||
SystemClock.sleep(1 /* ms */)
|
||||
val sock = Os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)
|
||||
try {
|
||||
// Pick any arbitrary port
|
||||
Os.connect(sock, TEST_TARGET_IPV6_ADDR, 12345)
|
||||
network.bindSocket(sock)
|
||||
|
||||
try {
|
||||
// Pick any arbitrary port
|
||||
Os.connect(sock, TEST_TARGET_IPV6_ADDR, 12345)
|
||||
} catch (e: ErrnoException) {
|
||||
// there may not be an address available yet.
|
||||
if (e.errno == ENETUNREACH) continue
|
||||
throw e
|
||||
}
|
||||
val sockAddr = Os.getsockname(sock) as InetSocketAddress
|
||||
if (onLinkPrefix.contains(sockAddr.address)) {
|
||||
inet6Addr = sockAddr.address as Inet6Address
|
||||
break
|
||||
}
|
||||
} catch (e: ErrnoException) {
|
||||
// ignore ENETUNREACH -- there may not be an address available yet.
|
||||
if (e.errno != ENETUNREACH) {
|
||||
Os.close(sock)
|
||||
throw e
|
||||
}
|
||||
} finally {
|
||||
Os.close(sock)
|
||||
}
|
||||
SystemClock.sleep(10 /* ms */)
|
||||
}
|
||||
Os.close(sock)
|
||||
assertNotNull(inet6Addr)
|
||||
return inet6Addr!!
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue