Refactor assertion into assertInRange() method
It's hard to read in current design, refactor the assertion into assertInRange() for readability. Bug: 153614624 Test: atest android.net.cts.TrafficStatsTest Change-Id: I6d939dd62cad3d6ba23a3c5ca7b1e6a8b4131a90 Merged-In: I6d939dd62cad3d6ba23a3c5ca7b1e6a8b4131a90 (cherry picked from commit af3469bdc7031d80f3d3838518fd7518b3e8eb9c)
This commit is contained in:
@@ -24,6 +24,7 @@ import android.os.SystemProperties;
|
|||||||
import android.platform.test.annotations.AppModeFull;
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.util.Range;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -36,6 +37,13 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class TrafficStatsTest extends AndroidTestCase {
|
public class TrafficStatsTest extends AndroidTestCase {
|
||||||
private static final String LOG_TAG = "TrafficStatsTest";
|
private static final String LOG_TAG = "TrafficStatsTest";
|
||||||
|
|
||||||
|
/** Verify the given value is in range [lower, upper] */
|
||||||
|
private void assertInRange(String tag, long value, long lower, long upper) {
|
||||||
|
final Range range = new Range(lower, upper);
|
||||||
|
assertTrue(tag + ": " + value + " is not within range [" + lower + ", " + upper + "]",
|
||||||
|
range.contains(value));
|
||||||
|
}
|
||||||
|
|
||||||
public void testValidMobileStats() {
|
public void testValidMobileStats() {
|
||||||
// We can't assume a mobile network is even present in this test, so
|
// We can't assume a mobile network is even present in this test, so
|
||||||
// we simply assert that a valid value is returned.
|
// we simply assert that a valid value is returned.
|
||||||
@@ -107,12 +115,12 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Socket socket = new Socket("localhost", server.getLocalPort());
|
final Socket socket = new Socket("localhost", server.getLocalPort());
|
||||||
// Make sure that each write()+flush() turns into a packet:
|
// Make sure that each write()+flush() turns into a packet:
|
||||||
// disable Nagle.
|
// disable Nagle.
|
||||||
socket.setTcpNoDelay(true);
|
socket.setTcpNoDelay(true);
|
||||||
OutputStream out = socket.getOutputStream();
|
final OutputStream out = socket.getOutputStream();
|
||||||
byte[] buf = new byte[byteCount];
|
final byte[] buf = new byte[byteCount];
|
||||||
TrafficStats.setThreadStatsTag(0x42);
|
TrafficStats.setThreadStatsTag(0x42);
|
||||||
TrafficStats.tagSocket(socket);
|
TrafficStats.tagSocket(socket);
|
||||||
for (int i = 0; i < packetCount; i++) {
|
for (int i = 0; i < packetCount; i++) {
|
||||||
@@ -135,12 +143,12 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
|
|
||||||
int read = 0;
|
int read = 0;
|
||||||
try {
|
try {
|
||||||
Socket socket = server.accept();
|
final Socket socket = server.accept();
|
||||||
socket.setTcpNoDelay(true);
|
socket.setTcpNoDelay(true);
|
||||||
TrafficStats.setThreadStatsTag(0x43);
|
TrafficStats.setThreadStatsTag(0x43);
|
||||||
TrafficStats.tagSocket(socket);
|
TrafficStats.tagSocket(socket);
|
||||||
InputStream in = socket.getInputStream();
|
final InputStream in = socket.getInputStream();
|
||||||
byte[] buf = new byte[byteCount];
|
final byte[] buf = new byte[byteCount];
|
||||||
while (read < byteCount * packetCount) {
|
while (read < byteCount * packetCount) {
|
||||||
int n = in.read(buf);
|
int n = in.read(buf);
|
||||||
assertTrue("Unexpected EOF", n > 0);
|
assertTrue("Unexpected EOF", n > 0);
|
||||||
@@ -156,24 +164,24 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
}
|
}
|
||||||
NetworkStats testStats = TrafficStats.stopDataProfiling(null);
|
final NetworkStats testStats = TrafficStats.stopDataProfiling(null);
|
||||||
|
|
||||||
long mobileTxPacketsAfter = TrafficStats.getMobileTxPackets();
|
final long mobileTxPacketsAfter = TrafficStats.getMobileTxPackets();
|
||||||
long mobileRxPacketsAfter = TrafficStats.getMobileRxPackets();
|
final long mobileRxPacketsAfter = TrafficStats.getMobileRxPackets();
|
||||||
long mobileTxBytesAfter = TrafficStats.getMobileTxBytes();
|
final long mobileTxBytesAfter = TrafficStats.getMobileTxBytes();
|
||||||
long mobileRxBytesAfter = TrafficStats.getMobileRxBytes();
|
final long mobileRxBytesAfter = TrafficStats.getMobileRxBytes();
|
||||||
long totalTxPacketsAfter = TrafficStats.getTotalTxPackets();
|
final long totalTxPacketsAfter = TrafficStats.getTotalTxPackets();
|
||||||
long totalRxPacketsAfter = TrafficStats.getTotalRxPackets();
|
final long totalRxPacketsAfter = TrafficStats.getTotalRxPackets();
|
||||||
long totalTxBytesAfter = TrafficStats.getTotalTxBytes();
|
final long totalTxBytesAfter = TrafficStats.getTotalTxBytes();
|
||||||
long totalRxBytesAfter = TrafficStats.getTotalRxBytes();
|
final long totalRxBytesAfter = TrafficStats.getTotalRxBytes();
|
||||||
long uidTxBytesAfter = TrafficStats.getUidTxBytes(Process.myUid());
|
final long uidTxBytesAfter = TrafficStats.getUidTxBytes(Process.myUid());
|
||||||
long uidRxBytesAfter = TrafficStats.getUidRxBytes(Process.myUid());
|
final long uidRxBytesAfter = TrafficStats.getUidRxBytes(Process.myUid());
|
||||||
long uidTxPacketsAfter = TrafficStats.getUidTxPackets(Process.myUid());
|
final long uidTxPacketsAfter = TrafficStats.getUidTxPackets(Process.myUid());
|
||||||
long uidRxPacketsAfter = TrafficStats.getUidRxPackets(Process.myUid());
|
final long uidRxPacketsAfter = TrafficStats.getUidRxPackets(Process.myUid());
|
||||||
long uidTxDeltaBytes = uidTxBytesAfter - uidTxBytesBefore;
|
final long uidTxDeltaBytes = uidTxBytesAfter - uidTxBytesBefore;
|
||||||
long uidTxDeltaPackets = uidTxPacketsAfter - uidTxPacketsBefore;
|
final long uidTxDeltaPackets = uidTxPacketsAfter - uidTxPacketsBefore;
|
||||||
long uidRxDeltaBytes = uidRxBytesAfter - uidRxBytesBefore;
|
final long uidRxDeltaBytes = uidRxBytesAfter - uidRxBytesBefore;
|
||||||
long uidRxDeltaPackets = uidRxPacketsAfter - uidRxPacketsBefore;
|
final long uidRxDeltaPackets = uidRxPacketsAfter - uidRxPacketsBefore;
|
||||||
|
|
||||||
// Localhost traffic *does* count against per-UID stats.
|
// Localhost traffic *does* count against per-UID stats.
|
||||||
/*
|
/*
|
||||||
@@ -192,10 +200,13 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
// Some other tests don't cleanup connections correctly.
|
// Some other tests don't cleanup connections correctly.
|
||||||
// They have the same UID, so we discount their lingering traffic
|
// They have the same UID, so we discount their lingering traffic
|
||||||
// which happens only on non-localhost, such as TCP FIN retranmission packets
|
// which happens only on non-localhost, such as TCP FIN retranmission packets
|
||||||
long deltaTxOtherPackets = (totalTxPacketsAfter - totalTxPacketsBefore) - uidTxDeltaPackets;
|
final long deltaTxOtherPackets = (totalTxPacketsAfter - totalTxPacketsBefore)
|
||||||
long deltaRxOtherPackets = (totalRxPacketsAfter - totalRxPacketsBefore) - uidRxDeltaPackets;
|
- uidTxDeltaPackets;
|
||||||
|
final long deltaRxOtherPackets = (totalRxPacketsAfter - totalRxPacketsBefore)
|
||||||
|
- uidRxDeltaPackets;
|
||||||
if (deltaTxOtherPackets > 0 || deltaRxOtherPackets > 0) {
|
if (deltaTxOtherPackets > 0 || deltaRxOtherPackets > 0) {
|
||||||
Log.i(LOG_TAG, "lingering traffic data: " + deltaTxOtherPackets + "/" + deltaRxOtherPackets);
|
Log.i(LOG_TAG, "lingering traffic data: " + deltaTxOtherPackets + "/"
|
||||||
|
+ deltaRxOtherPackets);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the per uid stats read from data profiling have the stats expected. The data
|
// Check the per uid stats read from data profiling have the stats expected. The data
|
||||||
@@ -203,39 +214,29 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
// networkStatsService and in this way we can verify the detail networkStats of a given uid
|
// networkStatsService and in this way we can verify the detail networkStats of a given uid
|
||||||
// is correct.
|
// is correct.
|
||||||
NetworkStats.Entry entry = testStats.getTotal(null, Process.myUid());
|
NetworkStats.Entry entry = testStats.getTotal(null, Process.myUid());
|
||||||
assertTrue("txPackets detail: " + entry.txPackets + " uidTxPackets: " + uidTxDeltaPackets,
|
assertInRange("txPackets detail", entry.txPackets, packetCount + minExpectedExtraPackets,
|
||||||
entry.txPackets >= packetCount + minExpectedExtraPackets
|
uidTxDeltaPackets);
|
||||||
&& entry.txPackets <= uidTxDeltaPackets);
|
assertInRange("rxPackets detail", entry.rxPackets, packetCount + minExpectedExtraPackets,
|
||||||
assertTrue("rxPackets detail: " + entry.rxPackets + " uidRxPackets: " + uidRxDeltaPackets,
|
uidRxDeltaPackets);
|
||||||
entry.rxPackets >= packetCount + minExpectedExtraPackets
|
assertInRange("txBytes detail", entry.txBytes, tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
&& entry.rxPackets <= uidRxDeltaPackets);
|
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0), uidTxDeltaBytes);
|
||||||
assertTrue("txBytes detail: " + entry.txBytes + " uidTxDeltaBytes: " + uidTxDeltaBytes,
|
assertInRange("rxBytes detail", entry.rxBytes, tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
entry.txBytes >= tcpPacketToIpBytes(packetCount, byteCount)
|
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0), uidRxDeltaBytes);
|
||||||
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0) && entry.txBytes <= uidTxDeltaBytes);
|
|
||||||
assertTrue("rxBytes detail: " + entry.rxBytes + " uidRxDeltaBytes: " + uidRxDeltaBytes,
|
|
||||||
entry.rxBytes >= tcpPacketToIpBytes(packetCount, byteCount)
|
|
||||||
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0) && entry.rxBytes <= uidRxDeltaBytes);
|
|
||||||
|
|
||||||
assertTrue("uidtxp: " + uidTxPacketsBefore + " -> " + uidTxPacketsAfter + " delta=" + uidTxDeltaPackets +
|
assertInRange("uidtxp", uidTxDeltaPackets, packetCount + minExpectedExtraPackets,
|
||||||
" Wanted: " + uidTxDeltaPackets + ">=" + packetCount + "+" + minExpectedExtraPackets + " && " +
|
packetCount + packetCount + maxExpectedExtraPackets + deltaTxOtherPackets);
|
||||||
uidTxDeltaPackets + "<=" + packetCount + "+" + packetCount + "+" + maxExpectedExtraPackets + "+" + deltaTxOtherPackets,
|
assertInRange("uidrxp", uidRxDeltaPackets, packetCount + minExpectedExtraPackets,
|
||||||
uidTxDeltaPackets >= packetCount + minExpectedExtraPackets &&
|
packetCount + packetCount + maxExpectedExtraPackets + deltaRxOtherPackets);
|
||||||
uidTxDeltaPackets <= packetCount + packetCount + maxExpectedExtraPackets + deltaTxOtherPackets);
|
assertInRange("uidtxb", uidTxDeltaBytes, tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
assertTrue("uidrxp: " + uidRxPacketsBefore + " -> " + uidRxPacketsAfter + " delta=" + uidRxDeltaPackets +
|
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0),
|
||||||
" Wanted: " + uidRxDeltaPackets + ">=" + packetCount + "+" + minExpectedExtraPackets + " && " +
|
tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
uidRxDeltaPackets + "<=" + packetCount + "+" + packetCount + "+" + maxExpectedExtraPackets,
|
+ tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets
|
||||||
uidRxDeltaPackets >= packetCount + minExpectedExtraPackets &&
|
+ deltaTxOtherPackets, 0));
|
||||||
uidRxDeltaPackets <= packetCount + packetCount + maxExpectedExtraPackets + deltaRxOtherPackets);
|
assertInRange("uidrxb", uidRxDeltaBytes, tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
assertTrue("uidtxb: " + uidTxBytesBefore + " -> " + uidTxBytesAfter + " delta=" + uidTxDeltaBytes +
|
+ tcpPacketToIpBytes(minExpectedExtraPackets, 0),
|
||||||
" Wanted: " + uidTxDeltaBytes + ">=" + tcpPacketToIpBytes(packetCount, byteCount) + "+" + tcpPacketToIpBytes(minExpectedExtraPackets, 0) + " && " +
|
tcpPacketToIpBytes(packetCount, byteCount)
|
||||||
uidTxDeltaBytes + "<=" + tcpPacketToIpBytes(packetCount, byteCount) + "+" + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets, 0),
|
+ tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets
|
||||||
uidTxDeltaBytes >= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(minExpectedExtraPackets, 0) &&
|
+ deltaRxOtherPackets, 0));
|
||||||
uidTxDeltaBytes <= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets + deltaTxOtherPackets, 0));
|
|
||||||
assertTrue("uidrxb: " + uidRxBytesBefore + " -> " + uidRxBytesAfter + " delta=" + uidRxDeltaBytes +
|
|
||||||
" Wanted: " + uidRxDeltaBytes + ">=" + tcpPacketToIpBytes(packetCount, byteCount) + "+" + tcpPacketToIpBytes(minExpectedExtraPackets, 0) + " && " +
|
|
||||||
uidRxDeltaBytes + "<=" + tcpPacketToIpBytes(packetCount, byteCount) + "+" + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets, 0),
|
|
||||||
uidRxDeltaBytes >= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(minExpectedExtraPackets, 0) &&
|
|
||||||
uidRxDeltaBytes <= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets + deltaRxOtherPackets, 0));
|
|
||||||
|
|
||||||
// Localhost traffic *does* count against total stats.
|
// Localhost traffic *does* count against total stats.
|
||||||
// Check the total stats increased after test data transfer over localhost has been made.
|
// Check the total stats increased after test data transfer over localhost has been made.
|
||||||
@@ -272,17 +273,13 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
|
|
||||||
// Localhost traffic should *not* count against mobile stats,
|
// Localhost traffic should *not* count against mobile stats,
|
||||||
// There might be some other traffic, but nowhere near 1MB.
|
// There might be some other traffic, but nowhere near 1MB.
|
||||||
assertTrue("mtxp: " + mobileTxPacketsBefore + " -> " + mobileTxPacketsAfter,
|
assertInRange("mtxp", mobileTxPacketsAfter, mobileTxPacketsBefore,
|
||||||
mobileTxPacketsAfter >= mobileTxPacketsBefore &&
|
mobileTxPacketsBefore + 500);
|
||||||
mobileTxPacketsAfter <= mobileTxPacketsBefore + 500);
|
assertInRange("mrxp", mobileRxPacketsAfter, mobileRxPacketsBefore,
|
||||||
assertTrue("mrxp: " + mobileRxPacketsBefore + " -> " + mobileRxPacketsAfter,
|
mobileRxPacketsBefore + 500);
|
||||||
mobileRxPacketsAfter >= mobileRxPacketsBefore &&
|
assertInRange("mtxb", mobileTxBytesAfter, mobileTxBytesBefore,
|
||||||
mobileRxPacketsAfter <= mobileRxPacketsBefore + 500);
|
mobileTxBytesBefore + 200000);
|
||||||
assertTrue("mtxb: " + mobileTxBytesBefore + " -> " + mobileTxBytesAfter,
|
assertInRange("mrxb", mobileRxBytesAfter, mobileRxBytesBefore,
|
||||||
mobileTxBytesAfter >= mobileTxBytesBefore &&
|
mobileRxBytesBefore + 200000);
|
||||||
mobileTxBytesAfter <= mobileTxBytesBefore + 200000);
|
|
||||||
assertTrue("mrxb: " + mobileRxBytesBefore + " -> " + mobileRxBytesAfter,
|
|
||||||
mobileRxBytesAfter >= mobileRxBytesBefore &&
|
|
||||||
mobileRxBytesAfter <= mobileRxBytesBefore + 200000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user