From 22e2195a8a15b8151efd6c3ff468692021d53d8a Mon Sep 17 00:00:00 2001 From: paulhu Date: Fri, 30 Aug 2019 19:24:36 +0800 Subject: [PATCH] Fix flaky testTcpBufferReset If EVENT_NETWORK_INFO_CHANGED was handled after waitForIdle() method done, this test will be failed due to INetd#setTcpRWmemorySize() was not executed yet. Instead of waiting for idle state, it's better to use NetworkCallback to ensure events completely on ConnectivityService. Bug: 140206578 Test: atest ConnectivityServiceTest#testTcpBufferReset\ --generate-new-metrics 500 Change-Id: Iad77415db38038603881d9ebe0e37586b549a45c --- .../android/server/ConnectivityServiceTest.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index a028a54a5b..f6e986eac3 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -5692,7 +5692,6 @@ public class ConnectivityServiceTest { String[] values = tcpBufferSizes.split(","); String rmemValues = String.join(" ", values[0], values[1], values[2]); String wmemValues = String.join(" ", values[3], values[4], values[5]); - waitForIdle(); verify(mMockNetd, atLeastOnce()).setTcpRWmemorySize(rmemValues, wmemValues); reset(mMockNetd); } @@ -5700,18 +5699,32 @@ public class ConnectivityServiceTest { @Test public void testTcpBufferReset() throws Exception { final String testTcpBufferSizes = "1,2,3,4,5,6"; + final NetworkRequest networkRequest = new NetworkRequest.Builder() + .addTransportType(TRANSPORT_CELLULAR) + .addCapability(NET_CAPABILITY_INTERNET) + .build(); + final TestNetworkCallback networkCallback = new TestNetworkCallback(); + mCm.registerNetworkCallback(networkRequest, networkCallback); mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR); reset(mMockNetd); // Switching default network updates TCP buffer sizes. mCellNetworkAgent.connect(false); + networkCallback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent); verifyTcpBufferSizeChange(ConnectivityService.DEFAULT_TCP_BUFFER_SIZES); // Change link Properties should have updated tcp buffer size. LinkProperties lp = new LinkProperties(); lp.setTcpBufferSizes(testTcpBufferSizes); mCellNetworkAgent.sendLinkProperties(lp); + networkCallback.expectCallback(CallbackRecord.LINK_PROPERTIES_CHANGED, mCellNetworkAgent); verifyTcpBufferSizeChange(testTcpBufferSizes); + + // Clean up. + mCellNetworkAgent.disconnect(); + networkCallback.expectCallback(CallbackRecord.LOST, mCellNetworkAgent); + networkCallback.assertNoCallback(); + mCm.unregisterNetworkCallback(networkCallback); } @Test