summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorYan Yan <evitayan@google.com>2024-03-20 22:27:08 +0000
committerYan Yan <evitayan@google.com>2024-03-22 01:51:32 +0000
commit3402e84c50d38a50daff762f72abc36387651b6f (patch)
tree9a4706bee695ffe06c243a781f90714bb75b7e58 /tests
parent356e0e163a2a9f59288ae7b225ebe91addb33111 (diff)
downloadbase-3402e84c50d38a50daff762f72abc36387651b6f.tar.gz
Re-evaluate IPsec packet loss on LP/NC change
Bug: 323238888 Test: atest FrameworksVcnTests(new tests) Change-Id: I83f2da42fe0ffed5d4403429e968510c7eeabec1
Diffstat (limited to 'tests')
-rw-r--r--tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java28
-rw-r--r--tests/vcn/java/com/android/server/vcn/routeselection/NetworkEvaluationTestBase.java1
-rw-r--r--tests/vcn/java/com/android/server/vcn/routeselection/UnderlyingNetworkEvaluatorTest.java33
3 files changed, 62 insertions, 0 deletions
diff --git a/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java b/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java
index 5107943c3528..fdf8fb8d3c41 100644
--- a/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java
+++ b/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java
@@ -34,6 +34,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -417,4 +418,31 @@ public class IpSecPacketLossDetectorTest extends NetworkEvaluationTestBase {
checkGetPacketLossRate(oldState, 20000, 14000, 4096, 19);
checkGetPacketLossRate(oldState, 20000, 14000, 3000, 10);
}
+
+ // Verify the polling event is scheduled with expected delays
+ private void verifyPollEventDelayAndScheduleNext(long expectedDelayMs) {
+ if (expectedDelayMs > 0) {
+ mTestLooper.dispatchAll();
+ verify(mIpSecTransform, never()).requestIpSecTransformState(any(), any());
+ mTestLooper.moveTimeForward(expectedDelayMs);
+ }
+
+ mTestLooper.dispatchAll();
+ verify(mIpSecTransform).requestIpSecTransformState(any(), any());
+ reset(mIpSecTransform);
+ }
+
+ @Test
+ public void testOnLinkPropertiesOrCapabilitiesChange() throws Exception {
+ // Start the monitor; verify the 1st poll is scheduled without delay
+ startMonitorAndCaptureStateReceiver();
+ verifyPollEventDelayAndScheduleNext(0 /* expectedDelayMs */);
+
+ // Verify the 2nd poll is rescheduled without delay
+ mIpSecPacketLossDetector.onLinkPropertiesOrCapabilitiesChanged();
+ verifyPollEventDelayAndScheduleNext(0 /* expectedDelayMs */);
+
+ // Verify the 3rd poll is scheduled with configured delay
+ verifyPollEventDelayAndScheduleNext(POLL_IPSEC_STATE_INTERVAL_MS);
+ }
}
diff --git a/tests/vcn/java/com/android/server/vcn/routeselection/NetworkEvaluationTestBase.java b/tests/vcn/java/com/android/server/vcn/routeselection/NetworkEvaluationTestBase.java
index 444208edc473..af6daa17e223 100644
--- a/tests/vcn/java/com/android/server/vcn/routeselection/NetworkEvaluationTestBase.java
+++ b/tests/vcn/java/com/android/server/vcn/routeselection/NetworkEvaluationTestBase.java
@@ -122,6 +122,7 @@ public abstract class NetworkEvaluationTestBase {
MockitoAnnotations.initMocks(this);
mSetFlagsRule.enableFlags(Flags.FLAG_VALIDATE_NETWORK_ON_IPSEC_LOSS);
+ mSetFlagsRule.enableFlags(Flags.FLAG_EVALUATE_IPSEC_LOSS_ON_LP_NC_CHANGE);
when(mNetwork.getNetId()).thenReturn(-1);
diff --git a/tests/vcn/java/com/android/server/vcn/routeselection/UnderlyingNetworkEvaluatorTest.java b/tests/vcn/java/com/android/server/vcn/routeselection/UnderlyingNetworkEvaluatorTest.java
index aa81efe9a1ce..1d6872195e81 100644
--- a/tests/vcn/java/com/android/server/vcn/routeselection/UnderlyingNetworkEvaluatorTest.java
+++ b/tests/vcn/java/com/android/server/vcn/routeselection/UnderlyingNetworkEvaluatorTest.java
@@ -31,6 +31,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyObject;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -333,4 +334,36 @@ public class UnderlyingNetworkEvaluatorTest extends NetworkEvaluationTestBase {
.compare(penalized, notPenalized);
assertEquals(1, result);
}
+
+ @Test
+ public void testNotifyNetworkMetricMonitorOnLpChange() throws Exception {
+ // Clear calls invoked when initializing mNetworkEvaluator
+ reset(mIpSecPacketLossDetector);
+
+ final UnderlyingNetworkEvaluator evaluator = newUnderlyingNetworkEvaluator();
+ evaluator.setNetworkCapabilities(
+ CELL_NETWORK_CAPABILITIES,
+ VcnGatewayConnectionConfig.DEFAULT_UNDERLYING_NETWORK_TEMPLATES,
+ SUB_GROUP,
+ mSubscriptionSnapshot,
+ mCarrierConfig);
+
+ verify(mIpSecPacketLossDetector).onLinkPropertiesOrCapabilitiesChanged();
+ }
+
+ @Test
+ public void testNotifyNetworkMetricMonitorOnNcChange() throws Exception {
+ // Clear calls invoked when initializing mNetworkEvaluator
+ reset(mIpSecPacketLossDetector);
+
+ final UnderlyingNetworkEvaluator evaluator = newUnderlyingNetworkEvaluator();
+ evaluator.setLinkProperties(
+ LINK_PROPERTIES,
+ VcnGatewayConnectionConfig.DEFAULT_UNDERLYING_NETWORK_TEMPLATES,
+ SUB_GROUP,
+ mSubscriptionSnapshot,
+ mCarrierConfig);
+
+ verify(mIpSecPacketLossDetector).onLinkPropertiesOrCapabilitiesChanged();
+ }
}