Loading services/core/java/com/android/server/vcn/VcnGatewayConnection.java +16 −2 Original line number Diff line number Diff line Loading @@ -1558,8 +1558,22 @@ public class VcnGatewayConnection extends StateMachine { teardownAsynchronously(); } /* networkUnwantedCallback */, (status) -> { if (status == NetworkAgent.VALIDATION_STATUS_VALID) { switch (status) { case NetworkAgent.VALIDATION_STATUS_VALID: clearFailedAttemptCounterAndSafeModeAlarm(); break; case NetworkAgent.VALIDATION_STATUS_NOT_VALID: // Will only set a new alarm if no safe mode alarm is // currently scheduled. setSafeModeAlarm(); break; default: Slog.wtf( TAG, "Unknown validation status " + status + "; ignoring"); break; } } /* validationStatusCallback */); Loading tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -343,6 +343,31 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection assertFalse(mGatewayConnection.isInSafeMode()); } @Test public void testSubsequentFailedValidationTriggersSafeMode() throws Exception { triggerChildOpened(); mTestLooper.dispatchAll(); triggerValidation(NetworkAgent.VALIDATION_STATUS_VALID); assertFalse(mGatewayConnection.isInSafeMode()); // Trigger a failed validation, and the subsequent safemode timeout. triggerValidation(NetworkAgent.VALIDATION_STATUS_NOT_VALID); mTestLooper.dispatchAll(); final ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class); verify(mDeps, times(2)) .newWakeupMessage( eq(mVcnContext), any(), eq(VcnGatewayConnection.SAFEMODE_TIMEOUT_ALARM), runnableCaptor.capture()); runnableCaptor.getValue().run(); mTestLooper.dispatchAll(); assertTrue(mGatewayConnection.isInSafeMode()); } private Consumer<VcnNetworkAgent> setupNetworkAndGetUnwantedCallback() { triggerChildOpened(); mTestLooper.dispatchAll(); Loading Loading
services/core/java/com/android/server/vcn/VcnGatewayConnection.java +16 −2 Original line number Diff line number Diff line Loading @@ -1558,8 +1558,22 @@ public class VcnGatewayConnection extends StateMachine { teardownAsynchronously(); } /* networkUnwantedCallback */, (status) -> { if (status == NetworkAgent.VALIDATION_STATUS_VALID) { switch (status) { case NetworkAgent.VALIDATION_STATUS_VALID: clearFailedAttemptCounterAndSafeModeAlarm(); break; case NetworkAgent.VALIDATION_STATUS_NOT_VALID: // Will only set a new alarm if no safe mode alarm is // currently scheduled. setSafeModeAlarm(); break; default: Slog.wtf( TAG, "Unknown validation status " + status + "; ignoring"); break; } } /* validationStatusCallback */); Loading
tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -343,6 +343,31 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection assertFalse(mGatewayConnection.isInSafeMode()); } @Test public void testSubsequentFailedValidationTriggersSafeMode() throws Exception { triggerChildOpened(); mTestLooper.dispatchAll(); triggerValidation(NetworkAgent.VALIDATION_STATUS_VALID); assertFalse(mGatewayConnection.isInSafeMode()); // Trigger a failed validation, and the subsequent safemode timeout. triggerValidation(NetworkAgent.VALIDATION_STATUS_NOT_VALID); mTestLooper.dispatchAll(); final ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class); verify(mDeps, times(2)) .newWakeupMessage( eq(mVcnContext), any(), eq(VcnGatewayConnection.SAFEMODE_TIMEOUT_ALARM), runnableCaptor.capture()); runnableCaptor.getValue().run(); mTestLooper.dispatchAll(); assertTrue(mGatewayConnection.isInSafeMode()); } private Consumer<VcnNetworkAgent> setupNetworkAndGetUnwantedCallback() { triggerChildOpened(); mTestLooper.dispatchAll(); Loading