From 8d6f7c7280231cb9e48188dd8d48795d59bd7c3a Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Mon, 19 Jul 2021 15:26:56 -0700 Subject: [PATCH] Set TRANSPORT_PRIMARY for VCN NetworkOffers and NetworkAgents This change sets TRANSPORT_PRIMARY for all NetworkScore objects passed to ConnectivityService by the VCN. Without this patch, a VCN in safe mode will never get any NetworkRequests, since the new Policy-based NetworkRanker always prioritizes a existing satisfier of a network, regardless of score. However, a higher-priority policy check ensures that a TRANSPORT_PRIMARY request is used if it exists. This changes the VCN to utilize that functionality. Bug: 194122634 Test: atest FrameworksVcnTests Change-Id: I3a298a6c4c594c6e224f3f05764614802c00e9b0 --- services/core/java/com/android/server/vcn/Vcn.java | 7 ++++++- .../com/android/server/vcn/VcnNetworkProviderTest.java | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java index 44a6d13153fd..871befe8bebf 100644 --- a/services/core/java/com/android/server/vcn/Vcn.java +++ b/services/core/java/com/android/server/vcn/Vcn.java @@ -599,7 +599,12 @@ public class Vcn extends Handler { /** Retrieves the network score for a VCN Network */ // Package visibility for use in VcnGatewayConnection and VcnNetworkProvider static NetworkScore getNetworkScore() { - return new NetworkScore.Builder().setLegacyInt(VCN_LEGACY_SCORE_INT).build(); + // TODO(b/193687515): Stop setting TRANSPORT_PRIMARY, define a TRANSPORT_VCN, and set in + // NetworkOffer/NetworkAgent. + return new NetworkScore.Builder() + .setLegacyInt(VCN_LEGACY_SCORE_INT) + .setTransportPrimary(true) + .build(); } /** Callback used for passing status signals from a VcnGatewayConnection to its managing Vcn. */ diff --git a/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java b/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java index 72db55b3f4c5..e9026e22b6b2 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java @@ -87,8 +87,8 @@ public class VcnNetworkProviderTest { eq(mVcnNetworkProvider), argThat( score -> - score.getLegacyInt() - == Vcn.getNetworkScore().getLegacyInt()), + score.getLegacyInt() == Vcn.getNetworkScore().getLegacyInt() + && score.isTransportPrimary()), any(), any(), cbCaptor.capture());