Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42e55d81 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "ConnectivityServiceTest: fix testAvoidBadWifiSettings"

parents 7149a23c 99c8294e
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BooleanSupplier;

/**
 * Tests for {@link ConnectivityService}.
@@ -623,7 +624,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
    }

    private class WrappedAvoidBadWifiTracker extends AvoidBadWifiTracker {
        public boolean configRestrictsAvoidBadWifi;
        public volatile boolean configRestrictsAvoidBadWifi;

        public WrappedAvoidBadWifiTracker(Context c, Handler h, Runnable r) {
            super(c, h, r);
@@ -2166,7 +2167,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
            tracker.reevaluate();
            mService.waitForIdle();
            String msg = String.format("config=false, setting=%s", values[i]);
            assertTrue(msg, mService.avoidBadWifi());
            assertEventuallyTrue(() -> mService.avoidBadWifi(), 50);
            assertFalse(msg, tracker.shouldNotifyWifiUnvalidated());
        }

@@ -2175,19 +2176,19 @@ public class ConnectivityServiceTest extends AndroidTestCase {
        Settings.Global.putInt(cr, settingName, 0);
        tracker.reevaluate();
        mService.waitForIdle();
        assertFalse(mService.avoidBadWifi());
        assertEventuallyTrue(() -> !mService.avoidBadWifi(), 50);
        assertFalse(tracker.shouldNotifyWifiUnvalidated());

        Settings.Global.putInt(cr, settingName, 1);
        tracker.reevaluate();
        mService.waitForIdle();
        assertTrue(mService.avoidBadWifi());
        assertEventuallyTrue(() -> mService.avoidBadWifi(), 50);
        assertFalse(tracker.shouldNotifyWifiUnvalidated());

        Settings.Global.putString(cr, settingName, null);
        tracker.reevaluate();
        mService.waitForIdle();
        assertFalse(mService.avoidBadWifi());
        assertEventuallyTrue(() -> !mService.avoidBadWifi(), 50);
        assertTrue(tracker.shouldNotifyWifiUnvalidated());
    }

@@ -2404,6 +2405,17 @@ public class ConnectivityServiceTest extends AndroidTestCase {
        networkCallback.assertNoCallback();
    }

    public void assertEventuallyTrue(BooleanSupplier fn, long maxWaitingTimeMs) throws Exception {
        long start = SystemClock.elapsedRealtime();
        while (SystemClock.elapsedRealtime() <= start + maxWaitingTimeMs) {
            if (fn.getAsBoolean()) {
                return;
            }
            Thread.sleep(10);
        }
        assertTrue(fn.getAsBoolean());
    }

    private static class TestKeepaliveCallback extends PacketKeepaliveCallback {

        public static enum CallbackType { ON_STARTED, ON_STOPPED, ON_ERROR };