diff --git a/tests/cts/net/src/android/net/cts/TrafficStatsTest.java b/tests/cts/net/src/android/net/cts/TrafficStatsTest.java index af096da089..503ba51727 100755 --- a/tests/cts/net/src/android/net/cts/TrafficStatsTest.java +++ b/tests/cts/net/src/android/net/cts/TrafficStatsTest.java @@ -16,15 +16,14 @@ package android.net.cts; +import android.content.pm.PackageManager; import android.net.NetworkStats; import android.net.TrafficStats; import android.os.Process; +import android.os.SystemProperties; import android.test.AndroidTestCase; import android.util.Log; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -237,19 +236,37 @@ public class TrafficStatsTest extends AndroidTestCase { uidRxDeltaBytes <= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets + deltaRxOtherPackets, 0)); // Localhost traffic *does* count against total stats. - // Fudge by 132 packets of 1500 bytes not related to the test. + // Check the total stats increased after test data transfer over localhost has been made. assertTrue("ttxp: " + totalTxPacketsBefore + " -> " + totalTxPacketsAfter, - totalTxPacketsAfter >= totalTxPacketsBefore + uidTxDeltaPackets && - totalTxPacketsAfter <= totalTxPacketsBefore + uidTxDeltaPackets + 132); + totalTxPacketsAfter >= totalTxPacketsBefore + uidTxDeltaPackets); assertTrue("trxp: " + totalRxPacketsBefore + " -> " + totalRxPacketsAfter, - totalRxPacketsAfter >= totalRxPacketsBefore + uidRxDeltaPackets && - totalRxPacketsAfter <= totalRxPacketsBefore + uidRxDeltaPackets + 132); + totalRxPacketsAfter >= totalRxPacketsBefore + uidRxDeltaPackets); assertTrue("ttxb: " + totalTxBytesBefore + " -> " + totalTxBytesAfter, - totalTxBytesAfter >= totalTxBytesBefore + uidTxDeltaBytes && - totalTxBytesAfter <= totalTxBytesBefore + uidTxDeltaBytes + 132 * 1500); + totalTxBytesAfter >= totalTxBytesBefore + uidTxDeltaBytes); assertTrue("trxb: " + totalRxBytesBefore + " -> " + totalRxBytesAfter, - totalRxBytesAfter >= totalRxBytesBefore + uidRxDeltaBytes && - totalRxBytesAfter <= totalRxBytesBefore + uidRxDeltaBytes + 132 * 1500); + totalRxBytesAfter >= totalRxBytesBefore + uidRxDeltaBytes); + + // If the adb TCP port is opened, this test may be run by adb over network. + // Huge amount of data traffic might go through the network and accounted into total packets + // stats. The upper bound check would be meaningless. + // TODO: Consider precisely calculate the traffic accounted due to adb over network and + // subtract it when checking upper bound instead of skip checking. + final PackageManager pm = mContext.getPackageManager(); + if (SystemProperties.getInt("persist.adb.tcp.port", -1) > -1 + || SystemProperties.getInt("service.adb.tcp.port", -1) > -1 + || !pm.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY)) { + Log.i(LOG_TAG, "adb is running over the network, skip the upper bound check"); + } else { + // Fudge by 132 packets of 1500 bytes not related to the test. + assertTrue("ttxp: " + totalTxPacketsBefore + " -> " + totalTxPacketsAfter, + totalTxPacketsAfter <= totalTxPacketsBefore + uidTxDeltaPackets + 132); + assertTrue("trxp: " + totalRxPacketsBefore + " -> " + totalRxPacketsAfter, + totalRxPacketsAfter <= totalRxPacketsBefore + uidRxDeltaPackets + 132); + assertTrue("ttxb: " + totalTxBytesBefore + " -> " + totalTxBytesAfter, + totalTxBytesAfter <= totalTxBytesBefore + uidTxDeltaBytes + 132 * 1500); + assertTrue("trxb: " + totalRxBytesBefore + " -> " + totalRxBytesAfter, + totalRxBytesAfter <= totalRxBytesBefore + uidRxDeltaBytes + 132 * 1500); + } // Localhost traffic should *not* count against mobile stats, // There might be some other traffic, but nowhere near 1MB. @@ -265,6 +282,5 @@ public class TrafficStatsTest extends AndroidTestCase { assertTrue("mrxb: " + mobileRxBytesBefore + " -> " + mobileRxBytesAfter, mobileRxBytesAfter >= mobileRxBytesBefore && mobileRxBytesAfter <= mobileRxBytesBefore + 200000); - } }