Merge "ConnectivityServiceTest: some fixes in CallbackInfo" am: 37727596cc
am: ac7e9a2b47
Change-Id: I839ed526e802b88bbed490b611f90d829b952f26
This commit is contained in:
@@ -1089,6 +1089,29 @@ public class ConnectivityServiceTest extends AndroidTestCase {
|
||||
LOST
|
||||
}
|
||||
|
||||
private static class CallbackInfo {
|
||||
public final CallbackState state;
|
||||
public final Network network;
|
||||
public final Object arg;
|
||||
public CallbackInfo(CallbackState s, Network n, Object o) {
|
||||
state = s; network = n; arg = o;
|
||||
}
|
||||
public String toString() {
|
||||
return String.format("%s (%s)", state, network);
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof CallbackInfo)) return false;
|
||||
// Ignore timeMs, since it's unpredictable.
|
||||
CallbackInfo other = (CallbackInfo) o;
|
||||
return (state == other.state) && Objects.equals(network, other.network);
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(state, network);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility NetworkCallback for testing. The caller must explicitly test for all the callbacks
|
||||
* this class receives, by calling expectCallback() exactly once each time a callback is
|
||||
@@ -1100,21 +1123,6 @@ public class ConnectivityServiceTest extends AndroidTestCase {
|
||||
// the linger timeout.
|
||||
private final static int TIMEOUT_MS = 50;
|
||||
|
||||
private class CallbackInfo {
|
||||
public final CallbackState state;
|
||||
public final Network network;
|
||||
public Object arg;
|
||||
public CallbackInfo(CallbackState s, Network n, Object o) {
|
||||
state = s; network = n; arg = o;
|
||||
}
|
||||
public String toString() { return String.format("%s (%s)", state, network); }
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof CallbackInfo)) return false;
|
||||
// Ignore timeMs, since it's unpredictable.
|
||||
CallbackInfo other = (CallbackInfo) o;
|
||||
return state == other.state && Objects.equals(network, other.network);
|
||||
}
|
||||
}
|
||||
private final LinkedBlockingQueue<CallbackInfo> mCallbacks = new LinkedBlockingQueue<>();
|
||||
|
||||
protected void setLastCallback(CallbackState state, Network network, Object o) {
|
||||
@@ -1136,17 +1144,24 @@ public class ConnectivityServiceTest extends AndroidTestCase {
|
||||
setLastCallback(CallbackState.LOST, network, null);
|
||||
}
|
||||
|
||||
CallbackInfo nextCallback(int timeoutMs) {
|
||||
CallbackInfo cb = null;
|
||||
try {
|
||||
cb = mCallbacks.poll(timeoutMs, TimeUnit.MILLISECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
if (cb == null) {
|
||||
// LinkedBlockingQueue.poll() returns null if it timeouts.
|
||||
fail("Did not receive callback after " + timeoutMs + "ms");
|
||||
}
|
||||
return cb;
|
||||
}
|
||||
|
||||
void expectCallback(CallbackState state, MockNetworkAgent mockAgent, int timeoutMs) {
|
||||
CallbackInfo expected = new CallbackInfo(
|
||||
state, (mockAgent != null) ? mockAgent.getNetwork() : null, 0);
|
||||
CallbackInfo actual;
|
||||
try {
|
||||
actual = mCallbacks.poll(timeoutMs, TimeUnit.MILLISECONDS);
|
||||
assertEquals("Unexpected callback:", expected, actual);
|
||||
} catch (InterruptedException e) {
|
||||
fail("Did not receive expected " + expected + " after " + TIMEOUT_MS + "ms");
|
||||
actual = null; // Or the compiler can't tell it's never used uninitialized.
|
||||
}
|
||||
CallbackInfo actual = nextCallback(timeoutMs);
|
||||
assertEquals("Unexpected callback:", expected, actual);
|
||||
if (state == CallbackState.LOSING) {
|
||||
String msg = String.format(
|
||||
"Invalid linger time value %d, must be between %d and %d",
|
||||
|
||||
Reference in New Issue
Block a user