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

Commit 7d5c2cf2 authored by markchien's avatar markchien
Browse files

Test conflict notification work when using cached address

This test catch the regression introduced in r.android.com/1432958.

Bug: 1432958
Test: atest TetheringTest

Change-Id: Id0c1afb5563954ffee1f598a3a5de6a245d77a0e
parent 8a8e7e03
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -194,17 +194,16 @@ public final class PrivateAddressCoordinatorTest {

    @Test
    public void testRequestLastDownstreamAddress() throws Exception {
        final int fakeHotspotSubAddr = 0x2b05;
        final IpPrefix predefinedPrefix = new IpPrefix("192.168.43.0/24");
        final int fakeHotspotSubAddr = 0x2b05; // 43.5
        when(mPrivateAddressCoordinator.getRandomInt()).thenReturn(fakeHotspotSubAddr);
        final LinkAddress hotspotAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
                mHotspotIpServer, true /* useLastAddress */);
        assertEquals("Wrong wifi prefix: ", predefinedPrefix, asIpPrefix(hotspotAddress));
        assertEquals("Wrong wifi prefix: ", new LinkAddress("192.168.43.5/24"), hotspotAddress);
        when(mHotspotIpServer.getAddress()).thenReturn(hotspotAddress);

        final LinkAddress usbAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
                mUsbIpServer, true /* useLastAddress */);
        assertNotEquals(predefinedPrefix, asIpPrefix(usbAddress));
        assertEquals("Wrong wifi prefix: ", new LinkAddress("192.168.45.5/24"), usbAddress);

        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
        mPrivateAddressCoordinator.releaseDownstream(mUsbIpServer);
@@ -218,6 +217,18 @@ public final class PrivateAddressCoordinatorTest {
        final LinkAddress newUsbAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
                mUsbIpServer, true /* useLastAddress */);
        assertEquals(usbAddress, newUsbAddress);

        // BUG: the code should detect a conflict, but it doesn't.
        // Regression introduced in r.android.com/168169687.
        // Ensure conflict notification works when using cached address.
        when(mHotspotIpServer.getAddress()).thenReturn(newHotspotAddress);
        when(mUsbIpServer.getAddress()).thenReturn(usbAddress);
        final UpstreamNetworkState wifiUpstream = buildUpstreamNetworkState(mWifiNetwork,
                new LinkAddress("192.168.88.23/16"), null,
                makeNetworkCapabilities(TRANSPORT_WIFI));
        mPrivateAddressCoordinator.updateUpstreamPrefix(wifiUpstream);
        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
        verify(mUsbIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
    }

    private UpstreamNetworkState buildUpstreamNetworkState(final Network network,