Merge changes from topic "conn-diags-skipped" am: 05752a5316 am: da7f313fb4

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1665082

Change-Id: I11d040232c8e24747966c7aa22a9c3bc7c3150c4
This commit is contained in:
Lorenzo Colitti
2021-07-02 06:56:58 +00:00
committed by Automerger Merge Worker

View File

@@ -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_ATTEMPTED_BITMASK;
import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport.KEY_NETWORK_PROBES_SUCCEEDED_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.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.ConnectivityReport.NETWORK_VALIDATION_RESULT_VALID;
import static android.net.ConnectivityDiagnosticsManager.DataStallReport; import static android.net.ConnectivityDiagnosticsManager.DataStallReport;
import static android.net.ConnectivityDiagnosticsManager.DataStallReport.DETECTION_METHOD_DNS_EVENTS; 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.telephony.uicc.IccUtils;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.modules.utils.build.SdkLevel;
import com.android.net.module.util.ArrayTrackRecord; import com.android.net.module.util.ArrayTrackRecord;
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
import com.android.testutils.DevSdkIgnoreRunner; import com.android.testutils.DevSdkIgnoreRunner;
@@ -292,7 +294,7 @@ public class ConnectivityDiagnosticsManagerTest {
final String interfaceName = final String interfaceName =
mConnectivityManager.getLinkProperties(network).getInterfaceName(); mConnectivityManager.getLinkProperties(network).getInterfaceName();
connDiagsCallback.expectOnConnectivityReportAvailable( connDiagsCallback.expectOnConnectivityReportAvailable(
network, interfaceName, TRANSPORT_CELLULAR); network, interfaceName, TRANSPORT_CELLULAR, NETWORK_VALIDATION_RESULT_VALID);
connDiagsCallback.assertNoCallback(); connDiagsCallback.assertNoCallback();
} }
@@ -423,9 +425,10 @@ public class ConnectivityDiagnosticsManagerTest {
cb.expectOnNetworkConnectivityReported(mTestNetwork, hasConnectivity); cb.expectOnNetworkConnectivityReported(mTestNetwork, hasConnectivity);
// if hasConnectivity does not match the network's known connectivity, it will be // All calls to #onNetworkConnectivityReported are expected to be accompanied by a call to
// revalidated which will trigger another onConnectivityReportAvailable callback. // #onConnectivityReportAvailable for S+ (for R, ConnectivityReports were only sent when the
if (!hasConnectivity) { // Network was re-validated - when reported connectivity != known connectivity).
if (SdkLevel.isAtLeastS() || !hasConnectivity) {
cb.expectOnConnectivityReportAvailable(mTestNetwork, interfaceName); cb.expectOnConnectivityReportAvailable(mTestNetwork, interfaceName);
} }
@@ -479,11 +482,19 @@ public class ConnectivityDiagnosticsManagerTest {
public void expectOnConnectivityReportAvailable( public void expectOnConnectivityReportAvailable(
@NonNull Network network, @NonNull String interfaceName) { @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( public void expectOnConnectivityReportAvailable(@NonNull Network network,
@NonNull Network network, @NonNull String interfaceName, int transportType) { @NonNull String interfaceName, int transportType, int expectedValidationResult) {
final ConnectivityReport result = final ConnectivityReport result =
(ConnectivityReport) mHistory.poll(CALLBACK_TIMEOUT_MILLIS, x -> true); (ConnectivityReport) mHistory.poll(CALLBACK_TIMEOUT_MILLIS, x -> true);
assertEquals(network, result.getNetwork()); assertEquals(network, result.getNetwork());
@@ -496,9 +507,9 @@ public class ConnectivityDiagnosticsManagerTest {
final PersistableBundle extras = result.getAdditionalInfo(); final PersistableBundle extras = result.getAdditionalInfo();
assertTrue(extras.containsKey(KEY_NETWORK_VALIDATION_RESULT)); assertTrue(extras.containsKey(KEY_NETWORK_VALIDATION_RESULT));
final int validationResult = extras.getInt(KEY_NETWORK_VALIDATION_RESULT); final int actualValidationResult = extras.getInt(KEY_NETWORK_VALIDATION_RESULT);
assertEquals("Network validation result is not 'valid'", assertEquals("Network validation result is incorrect",
NETWORK_VALIDATION_RESULT_VALID, validationResult); expectedValidationResult, actualValidationResult);
assertTrue(extras.containsKey(KEY_NETWORK_PROBES_SUCCEEDED_BITMASK)); assertTrue(extras.containsKey(KEY_NETWORK_PROBES_SUCCEEDED_BITMASK));
final int probesSucceeded = extras.getInt(KEY_NETWORK_VALIDATION_RESULT); final int probesSucceeded = extras.getInt(KEY_NETWORK_VALIDATION_RESULT);