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

Commit af71487d authored by Hugo Benichi's avatar Hugo Benichi Committed by android-build-merger
Browse files

Merge \"IpConn metrics: add times to DHCP bound state\" into nyc-mr1-dev

am: bbf97cd1

Change-Id: I0002c00d03165ac4bfa4a9790984d9e5615d7ff4
parents 2ae8c05f bbf97cd1
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -26,6 +26,13 @@ import android.os.Parcelable;
 */
@SystemApi
public final class DhcpClientEvent implements Parcelable {

    // Names for recording DhcpClient pseudo-state transitions.
    /** {@hide} Represents transitions from DhcpInitState to DhcpBoundState */
    public static final String INITIAL_BOUND = "InitialBoundState";
    /** {@hide} Represents transitions from and to DhcpBoundState via DhcpRenewingState */
    public static final String RENEWING_BOUND = "RenewingBoundState";

    public final String ifName;
    public final String msg;
    public final int durationMs;
+26 −2
Original line number Diff line number Diff line
@@ -194,6 +194,10 @@ public class DhcpClient extends StateMachine {
    private long mDhcpLeaseExpiry;
    private DhcpResults mOffer;

    // Milliseconds SystemClock timestamps used to record transition times to DhcpBoundState.
    private long mLastInitEnterTime;
    private long mLastBoundExitTime;

    // States.
    private State mStoppedState = new StoppedState();
    private State mDhcpState = new DhcpState();
@@ -498,13 +502,12 @@ public class DhcpClient extends StateMachine {
        public void enter() {
            if (STATE_DBG) Log.d(TAG, "Entering state " + getName());
            mEnterTimeMs = SystemClock.elapsedRealtime();
            // TODO: record time for Init -> Bound and Bound -> Renewing -> Bound
        }

        @Override
        public void exit() {
            long durationMs = SystemClock.elapsedRealtime() - mEnterTimeMs;
            mMetricsLog.log(new DhcpClientEvent(mIfaceName, getName(), (int) durationMs));
            logState(getName(), (int) durationMs);
        }

        private String messageName(int what) {
@@ -742,6 +745,7 @@ public class DhcpClient extends StateMachine {
        public void enter() {
            super.enter();
            startNewTransaction();
            mLastInitEnterTime = SystemClock.elapsedRealtime();
        }

        protected boolean sendPacket() {
@@ -866,6 +870,13 @@ public class DhcpClient extends StateMachine {
            }

            scheduleLeaseTimers();
            logTimeToBoundState();
        }

        @Override
        public void exit() {
            super.exit();
            mLastBoundExitTime = SystemClock.elapsedRealtime();
        }

        @Override
@@ -883,6 +894,15 @@ public class DhcpClient extends StateMachine {
                    return NOT_HANDLED;
            }
        }

        private void logTimeToBoundState() {
            long now = SystemClock.elapsedRealtime();
            if (mLastBoundExitTime > mLastInitEnterTime) {
                logState(DhcpClientEvent.RENEWING_BOUND, (int)(now - mLastBoundExitTime));
            } else {
                logState(DhcpClientEvent.INITIAL_BOUND, (int)(now - mLastInitEnterTime));
            }
        }
    }

    abstract class DhcpReacquiringState extends PacketRetransmittingState {
@@ -993,4 +1013,8 @@ public class DhcpClient extends StateMachine {
    private void logError(int errorCode) {
        mMetricsLog.log(new DhcpErrorEvent(mIfaceName, errorCode));
    }

    private void logState(String name, int durationMs) {
        mMetricsLog.log(new DhcpClientEvent(mIfaceName, name, durationMs));
    }
}