Merge "Handle more commands in StoppingState" into nyc-mr1-dev

This commit is contained in:
Erik Kline
2016-09-21 01:05:31 +00:00
committed by Android (Google) Code Review

View File

@@ -45,6 +45,7 @@ import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.IState;
import com.android.internal.util.State; import com.android.internal.util.State;
import com.android.internal.util.StateMachine; import com.android.internal.util.StateMachine;
import com.android.server.net.NetlinkTracker; import com.android.server.net.NetlinkTracker;
@@ -395,6 +396,7 @@ public class IpManager extends StateMachine {
private final WakeupMessage mProvisioningTimeoutAlarm; private final WakeupMessage mProvisioningTimeoutAlarm;
private final WakeupMessage mDhcpActionTimeoutAlarm; private final WakeupMessage mDhcpActionTimeoutAlarm;
private final LocalLog mLocalLog; private final LocalLog mLocalLog;
private final MessageHandlingLogger mMsgStateLogger;
private final IpConnectivityLog mMetricsLog = new IpConnectivityLog(); private final IpConnectivityLog mMetricsLog = new IpConnectivityLog();
private NetworkInterface mNetworkInterface; private NetworkInterface mNetworkInterface;
@@ -482,6 +484,7 @@ public class IpManager extends StateMachine {
setInitialState(mStoppedState); setInitialState(mStoppedState);
mLocalLog = new LocalLog(MAX_LOG_RECORDS); mLocalLog = new LocalLog(MAX_LOG_RECORDS);
mMsgStateLogger = new MessageHandlingLogger();
super.start(); super.start();
} }
@@ -591,9 +594,9 @@ public class IpManager extends StateMachine {
@Override @Override
protected String getLogRecString(Message msg) { protected String getLogRecString(Message msg) {
final String logLine = String.format( final String logLine = String.format(
"%s/%d %d %d %s", "%s/%d %d %d %s [%s]",
mInterfaceName, mNetworkInterface == null ? -1 : mNetworkInterface.getIndex(), mInterfaceName, mNetworkInterface == null ? -1 : mNetworkInterface.getIndex(),
msg.arg1, msg.arg2, Objects.toString(msg.obj)); msg.arg1, msg.arg2, Objects.toString(msg.obj), mMsgStateLogger);
final String richerLogLine = getWhatToString(msg.what) + " " + logLine; final String richerLogLine = getWhatToString(msg.what) + " " + logLine;
mLocalLog.log(richerLogLine); mLocalLog.log(richerLogLine);
@@ -601,6 +604,7 @@ public class IpManager extends StateMachine {
Log.d(mTag, richerLogLine); Log.d(mTag, richerLogLine);
} }
mMsgStateLogger.reset();
return logLine; return logLine;
} }
@@ -609,7 +613,11 @@ public class IpManager extends StateMachine {
// Don't log EVENT_NETLINK_LINKPROPERTIES_CHANGED. They can be noisy, // Don't log EVENT_NETLINK_LINKPROPERTIES_CHANGED. They can be noisy,
// and we already log any LinkProperties change that results in an // and we already log any LinkProperties change that results in an
// invocation of IpManager.Callback#onLinkPropertiesChange(). // invocation of IpManager.Callback#onLinkPropertiesChange().
return (msg.what != EVENT_NETLINK_LINKPROPERTIES_CHANGED); final boolean shouldLog = (msg.what != EVENT_NETLINK_LINKPROPERTIES_CHANGED);
if (!shouldLog) {
mMsgStateLogger.reset();
}
return shouldLog;
} }
private void getNetworkInterface() { private void getNetworkInterface() {
@@ -965,7 +973,6 @@ public class IpManager extends StateMachine {
} }
} }
class StoppedState extends State { class StoppedState extends State {
@Override @Override
public void enter() { public void enter() {
@@ -1015,6 +1022,8 @@ public class IpManager extends StateMachine {
default: default:
return NOT_HANDLED; return NOT_HANDLED;
} }
mMsgStateLogger.handled(this, getCurrentState());
return HANDLED; return HANDLED;
} }
} }
@@ -1031,6 +1040,13 @@ public class IpManager extends StateMachine {
@Override @Override
public boolean processMessage(Message msg) { public boolean processMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case CMD_STOP:
break;
case DhcpClient.CMD_CLEAR_LINKADDRESS:
clearIPv4Address();
break;
case DhcpClient.CMD_ON_QUIT: case DhcpClient.CMD_ON_QUIT:
mDhcpClient = null; mDhcpClient = null;
transitionTo(mStoppedState); transitionTo(mStoppedState);
@@ -1039,6 +1055,8 @@ public class IpManager extends StateMachine {
default: default:
deferMessage(msg); deferMessage(msg);
} }
mMsgStateLogger.handled(this, getCurrentState());
return HANDLED; return HANDLED;
} }
} }
@@ -1095,6 +1113,8 @@ public class IpManager extends StateMachine {
// is EVENT_NETLINK_LINKPROPERTIES_CHANGED (handled above). // is EVENT_NETLINK_LINKPROPERTIES_CHANGED (handled above).
deferMessage(msg); deferMessage(msg);
} }
mMsgStateLogger.handled(this, getCurrentState());
return HANDLED; return HANDLED;
} }
@@ -1302,7 +1322,29 @@ public class IpManager extends StateMachine {
default: default:
return NOT_HANDLED; return NOT_HANDLED;
} }
mMsgStateLogger.handled(this, getCurrentState());
return HANDLED; return HANDLED;
} }
} }
private static class MessageHandlingLogger {
public String processedInState;
public String receivedInState;
public void reset() {
processedInState = null;
receivedInState = null;
}
public void handled(State processedIn, IState receivedIn) {
processedInState = processedIn.getClass().getSimpleName();
receivedInState = receivedIn.getName();
}
public String toString() {
return String.format("rcvd_in=%s, proc_in=%s",
receivedInState, processedInState);
}
}
} }