diff options
author | Chiachang Wang <chiachangwang@google.com> | 2020-06-22 03:20:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-06-22 03:20:18 +0000 |
commit | 59e4621953ff863cc3f62440ad8ba273f84c5895 (patch) | |
tree | 8b4dcd01ca960cbda8fda3cb512b4a4f3d73d1cf | |
parent | 9163b2a5ce712ccda67c80ee97a006486c3777e8 (diff) | |
parent | ce9a9013a7e4427fbfbc5fa5237311025936619f (diff) |
Merge "Test DataStallStatsUtils.write" into rvc-dev
-rw-r--r-- | tests/unit/src/com/android/networkstack/metrics/DataStallStatsUtilsTest.kt | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/tests/unit/src/com/android/networkstack/metrics/DataStallStatsUtilsTest.kt b/tests/unit/src/com/android/networkstack/metrics/DataStallStatsUtilsTest.kt index 4c62071..578e6ca 100644 --- a/tests/unit/src/com/android/networkstack/metrics/DataStallStatsUtilsTest.kt +++ b/tests/unit/src/com/android/networkstack/metrics/DataStallStatsUtilsTest.kt @@ -16,18 +16,33 @@ package com.android.networkstack.metrics +import android.net.NetworkCapabilities.TRANSPORT_CELLULAR import android.net.captiveportal.CaptivePortalProbeResult +import android.net.metrics.ValidationProbeEvent +import android.net.util.DataStallUtils.DATA_STALL_EVALUATION_TYPE_DNS +import android.telephony.TelephonyManager import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 +import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession +import com.android.dx.mockito.inline.extended.ExtendedMockito.verify +import com.android.server.connectivity.nano.CellularData import com.android.server.connectivity.nano.DataStallEventProto +import com.android.server.connectivity.nano.DnsEvent +import com.google.protobuf.nano.MessageNano +import java.util.Arrays import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import android.net.metrics.ValidationProbeEvent +import org.mockito.ArgumentMatchers.eq @RunWith(AndroidJUnit4::class) @SmallTest class DataStallStatsUtilsTest { + private val TEST_ELAPSED_TIME_MS = 123456789L + private val TEST_MCCMNC = "123456" + private val TEST_SIGNAL_STRENGTH = -100 + private val RETURN_CODE_DNS_TIMEOUT = 255 + @Test fun testProbeResultToEnum() { assertEquals(DataStallStatsUtils.probeResultToEnum(null), DataStallEventProto.INVALID) @@ -53,4 +68,61 @@ class DataStallStatsUtilsTest { CaptivePortalProbeResult.PORTAL_CODE, ValidationProbeEvent.PROBE_HTTPS)), DataStallEventProto.PORTAL) } + + @Test + fun testWrite() { + val session = mockitoSession().spyStatic(NetworkStackStatsLog::class.java).startMocking() + val stats = DataStallDetectionStats.Builder() + .setEvaluationType(DATA_STALL_EVALUATION_TYPE_DNS) + .setNetworkType(TRANSPORT_CELLULAR) + .setCellData(TelephonyManager.NETWORK_TYPE_LTE /* radioType */, + true /* roaming */, + TEST_MCCMNC /* networkMccmnc */, + TEST_MCCMNC /* simMccmnc */, + TEST_SIGNAL_STRENGTH /* signalStrength */) + .setTcpFailRate(90) + .setTcpSentSinceLastRecv(10) + generateTimeoutDnsEvent(stats, count = 5) + DataStallStatsUtils.write(stats.build(), CaptivePortalProbeResult.PARTIAL) + + verify { NetworkStackStatsLog.write( + eq(NetworkStackStatsLog.DATA_STALL_EVENT), + eq(DATA_STALL_EVALUATION_TYPE_DNS), + eq(DataStallEventProto.PARTIAL), + eq(TRANSPORT_CELLULAR), + eq(DataStallDetectionStats.emptyWifiInfoIfNull(null)), + eq(makeTestCellDataNano()), + eq(makeTestDnsTimeoutNano(5)), + eq(90) /* tcpFailRate */, + eq(10) /* tcpSentSinceLastRecv */) } + + session.finishMocking() + } + + private fun makeTestDnsTimeoutNano(timeoutCount: Int): ByteArray? { + // Make an expected nano dns message. + val event = DnsEvent() + event.dnsReturnCode = IntArray(timeoutCount) + event.dnsTime = LongArray(timeoutCount) + Arrays.fill(event.dnsReturnCode, RETURN_CODE_DNS_TIMEOUT) + Arrays.fill(event.dnsTime, TEST_ELAPSED_TIME_MS) + return MessageNano.toByteArray(event) + } + + private fun makeTestCellDataNano(): ByteArray? { + // Make an expected nano cell data message. + val data = CellularData() + data.ratType = DataStallEventProto.RADIO_TECHNOLOGY_LTE + data.networkMccmnc = TEST_MCCMNC + data.simMccmnc = TEST_MCCMNC + data.isRoaming = true + data.signalStrength = TEST_SIGNAL_STRENGTH + return MessageNano.toByteArray(data) + } + + private fun generateTimeoutDnsEvent(stats: DataStallDetectionStats.Builder, count: Int) { + repeat(count) { + stats.addDnsEvent(RETURN_CODE_DNS_TIMEOUT, TEST_ELAPSED_TIME_MS) + } + } } |