From 69ec69341eeb122f2c10ea4b8e1637c2b3604368 Mon Sep 17 00:00:00 2001 From: Cody Kesting Date: Mon, 3 Aug 2020 18:48:09 -0700 Subject: [PATCH] Update ConnDiags CTS test to expect validation result SKIPPED. This CL updates ConnectivityDiagnosticsManagerTest to expect NETWORK_VALIDATION_RESULT_SKIPPED for its TestNetworks. The tests also expect a ConnectivityReport to be sent for all calls to ConnectivityManager#reportNetworkConnectivity. Bug: 162407730 Test: atest ConnectivityDiagnosticsManagerTest Change-Id: I525ea22a38c54a6b5b969a70301852e7af12849c --- .../ConnectivityDiagnosticsManagerTest.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java index ccbdbd35b5..a40c92d852 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java @@ -22,6 +22,7 @@ import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport; import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.KEY_NETWORK_PROBES_ATTEMPTED_BITMASK; import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.KEY_NETWORK_PROBES_SUCCEEDED_BITMASK; import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.KEY_NETWORK_VALIDATION_RESULT; +import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.NETWORK_VALIDATION_RESULT_SKIPPED; import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.NETWORK_VALIDATION_RESULT_VALID; import static android.net.ConnectivityDiagnosticsManager.DataStallReport; import static android.net.ConnectivityDiagnosticsManager.DataStallReport.DETECTION_METHOD_DNS_EVENTS; @@ -78,6 +79,7 @@ import androidx.test.InstrumentationRegistry; import com.android.internal.telephony.uicc.IccUtils; import com.android.internal.util.ArrayUtils; +import com.android.modules.utils.build.SdkLevel; import com.android.net.module.util.ArrayTrackRecord; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRunner; @@ -292,7 +294,7 @@ public class ConnectivityDiagnosticsManagerTest { final String interfaceName = mConnectivityManager.getLinkProperties(network).getInterfaceName(); connDiagsCallback.expectOnConnectivityReportAvailable( - network, interfaceName, TRANSPORT_CELLULAR); + network, interfaceName, TRANSPORT_CELLULAR, NETWORK_VALIDATION_RESULT_VALID); connDiagsCallback.assertNoCallback(); } @@ -423,9 +425,10 @@ public class ConnectivityDiagnosticsManagerTest { cb.expectOnNetworkConnectivityReported(mTestNetwork, hasConnectivity); - // if hasConnectivity does not match the network's known connectivity, it will be - // revalidated which will trigger another onConnectivityReportAvailable callback. - if (!hasConnectivity) { + // All calls to #onNetworkConnectivityReported are expected to be accompanied by a call to + // #onConnectivityReportAvailable for S+ (for R, ConnectivityReports were only sent when the + // Network was re-validated - when reported connectivity != known connectivity). + if (SdkLevel.isAtLeastS() || !hasConnectivity) { cb.expectOnConnectivityReportAvailable(mTestNetwork, interfaceName); } @@ -479,11 +482,19 @@ public class ConnectivityDiagnosticsManagerTest { public void expectOnConnectivityReportAvailable( @NonNull Network network, @NonNull String interfaceName) { - expectOnConnectivityReportAvailable(network, interfaceName, TRANSPORT_TEST); + // Test Networks both do not require validation and are not tested for validation. This + // results in the validation result being reported as SKIPPED for S+ (for R, the + // platform marked these Networks as VALID). + final int expectedNetworkValidationResult = + SdkLevel.isAtLeastS() + ? NETWORK_VALIDATION_RESULT_SKIPPED + : NETWORK_VALIDATION_RESULT_VALID; + expectOnConnectivityReportAvailable( + network, interfaceName, TRANSPORT_TEST, expectedNetworkValidationResult); } - public void expectOnConnectivityReportAvailable( - @NonNull Network network, @NonNull String interfaceName, int transportType) { + public void expectOnConnectivityReportAvailable(@NonNull Network network, + @NonNull String interfaceName, int transportType, int expectedValidationResult) { final ConnectivityReport result = (ConnectivityReport) mHistory.poll(CALLBACK_TIMEOUT_MILLIS, x -> true); assertEquals(network, result.getNetwork()); @@ -496,9 +507,9 @@ public class ConnectivityDiagnosticsManagerTest { final PersistableBundle extras = result.getAdditionalInfo(); assertTrue(extras.containsKey(KEY_NETWORK_VALIDATION_RESULT)); - final int validationResult = extras.getInt(KEY_NETWORK_VALIDATION_RESULT); - assertEquals("Network validation result is not 'valid'", - NETWORK_VALIDATION_RESULT_VALID, validationResult); + final int actualValidationResult = extras.getInt(KEY_NETWORK_VALIDATION_RESULT); + assertEquals("Network validation result is incorrect", + expectedValidationResult, actualValidationResult); assertTrue(extras.containsKey(KEY_NETWORK_PROBES_SUCCEEDED_BITMASK)); final int probesSucceeded = extras.getInt(KEY_NETWORK_VALIDATION_RESULT);