ethernet: broadcast state change for server interfaces
Also update the test to ensure mFactory.hasInterface is mocked to match mFactory.getInterfaceState: previously it would be called by the factory in the mocked getInterfaceState, but the new code calls it directly. Bug: 171872016 Test: atest EthernetManagerTest Change-Id: I9ac959f181c88a7992991923b98a836f2833fa88
This commit is contained in:
committed by
Remi NGUYEN VAN
parent
88692dc7c6
commit
f33f276b29
@@ -28,6 +28,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
@@ -67,6 +68,7 @@ import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@@ -432,7 +434,20 @@ public class EthernetTrackerTest {
|
||||
when(mNetd.interfaceGetList()).thenReturn(new String[] {testIface});
|
||||
when(mNetd.interfaceGetCfg(eq(testIface))).thenReturn(ifaceParcel);
|
||||
doReturn(new String[] {testIface}).when(mFactory).getAvailableInterfaces(anyBoolean());
|
||||
doReturn(EthernetManager.STATE_LINK_UP).when(mFactory).getInterfaceState(eq(testIface));
|
||||
|
||||
final AtomicBoolean ifaceUp = new AtomicBoolean(true);
|
||||
doAnswer(inv -> ifaceUp.get()).when(mFactory).hasInterface(testIface);
|
||||
doAnswer(inv ->
|
||||
ifaceUp.get() ? EthernetManager.STATE_LINK_UP : EthernetManager.STATE_ABSENT)
|
||||
.when(mFactory).getInterfaceState(testIface);
|
||||
doAnswer(inv -> {
|
||||
ifaceUp.set(true);
|
||||
return null;
|
||||
}).when(mFactory).addInterface(eq(testIface), eq(testHwAddr), any(), any());
|
||||
doAnswer(inv -> {
|
||||
ifaceUp.set(false);
|
||||
return null;
|
||||
}).when(mFactory).removeInterface(testIface);
|
||||
|
||||
final EthernetStateListener listener = spy(new EthernetStateListener());
|
||||
tracker.addListener(listener, true /* canUseRestrictedNetworks */);
|
||||
@@ -443,7 +458,6 @@ public class EthernetTrackerTest {
|
||||
verify(listener).onEthernetStateChanged(eq(EthernetManager.ETHERNET_STATE_ENABLED));
|
||||
reset(listener);
|
||||
|
||||
doReturn(EthernetManager.STATE_ABSENT).when(mFactory).getInterfaceState(eq(testIface));
|
||||
tracker.setEthernetEnabled(false);
|
||||
waitForIdle();
|
||||
verify(mFactory).removeInterface(eq(testIface));
|
||||
@@ -452,7 +466,6 @@ public class EthernetTrackerTest {
|
||||
anyInt(), any());
|
||||
reset(listener);
|
||||
|
||||
doReturn(EthernetManager.STATE_LINK_UP).when(mFactory).getInterfaceState(eq(testIface));
|
||||
tracker.setEthernetEnabled(true);
|
||||
waitForIdle();
|
||||
verify(mFactory).addInterface(eq(testIface), eq(testHwAddr), any(), any());
|
||||
|
||||
Reference in New Issue
Block a user