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

Commit c27834e7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "IP connectivity metrics: ConnectStats additions"

parents d6f4be8e a2decca4
Loading
Loading
Loading
Loading
+25 −3
Original line number Original line Diff line number Diff line
@@ -43,6 +43,8 @@ public class ConnectStats {
    private final int mMaxLatencyRecords;
    private final int mMaxLatencyRecords;
    /** Total count of successful connects. */
    /** Total count of successful connects. */
    private int mConnectCount = 0;
    private int mConnectCount = 0;
    /** Total count of successful connects done in blocking mode. */
    private int mConnectBlockingCount = 0;
    /** Total count of successful connects with IPv6 socket address. */
    /** Total count of successful connects with IPv6 socket address. */
    private int mIpv6ConnectCount = 0;
    private int mIpv6ConnectCount = 0;


@@ -54,6 +56,7 @@ public class ConnectStats {
    public ConnectStatistics toProto() {
    public ConnectStatistics toProto() {
        ConnectStatistics stats = new ConnectStatistics();
        ConnectStatistics stats = new ConnectStatistics();
        stats.connectCount = mConnectCount;
        stats.connectCount = mConnectCount;
        stats.connectBlockingCount = mConnectBlockingCount;
        stats.ipv6AddrCount = mIpv6ConnectCount;
        stats.ipv6AddrCount = mIpv6ConnectCount;
        stats.latenciesMs = mLatencies.toArray();
        stats.latenciesMs = mLatencies.toArray();
        stats.errnosCounters = toPairArrays(mErrnos);
        stats.errnosCounters = toPairArrays(mErrnos);
@@ -62,16 +65,21 @@ public class ConnectStats {


    public void addEvent(int errno, int latencyMs, String ipAddr) {
    public void addEvent(int errno, int latencyMs, String ipAddr) {
        if (isSuccess(errno)) {
        if (isSuccess(errno)) {
            countConnect(ipAddr);
            countConnect(errno, ipAddr);
            countLatency(errno, latencyMs);
            countLatency(errno, latencyMs);
        } else {
        } else {
            countError(errno);
            countError(errno);
        }
        }
    }
    }


    private void countConnect(String ipAddr) {
    private void countConnect(int errno, String ipAddr) {
        mConnectCount++;
        mConnectCount++;
        if (isIPv6(ipAddr)) mIpv6ConnectCount++;
        if (!isNonBlocking(errno)) {
            mConnectBlockingCount++;
        }
        if (isIPv6(ipAddr)) {
            mIpv6ConnectCount++;
        }
    }
    }


    private void countLatency(int errno, int ms) {
    private void countLatency(int errno, int ms) {
@@ -120,4 +128,18 @@ public class ConnectStats {
        }
        }
        return pairs;
        return pairs;
    }
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder("ConnectStats(")
                .append(String.format("%d success, ", mConnectCount))
                .append(String.format("%d blocking, ", mConnectBlockingCount))
                .append(String.format("%d IPv6 dst", mIpv6ConnectCount));
        for (int i = 0; i < mErrnos.size(); i++) {
            String errno = OsConstants.errnoName(mErrnos.keyAt(i));
            int count = mErrnos.valueAt(i);
            builder.append(String.format(", %s: %d", errno, count));
        }
        return builder.append(")").toString();
    }
}
}
+6 −0
Original line number Original line Diff line number Diff line
@@ -201,12 +201,18 @@ final public class IpConnectivityMetrics extends SystemService {
            for (IpConnectivityEvent ev : IpConnectivityEventBuilder.toProto(events)) {
            for (IpConnectivityEvent ev : IpConnectivityEventBuilder.toProto(events)) {
                pw.print(ev.toString());
                pw.print(ev.toString());
            }
            }
            if (mNetdListener != null) {
                mNetdListener.listAsProtos(pw);
            }
            return;
            return;
        }
        }


        for (ConnectivityMetricsEvent ev : events) {
        for (ConnectivityMetricsEvent ev : events) {
            pw.println(ev.toString());
            pw.println(ev.toString());
        }
        }
        if (mNetdListener != null) {
            mNetdListener.list(pw);
        }
    }
    }


    private void cmdStats(FileDescriptor fd, PrintWriter pw, String[] args) {
    private void cmdStats(FileDescriptor fd, PrintWriter pw, String[] args) {
+17 −4
Original line number Original line Diff line number Diff line
@@ -204,10 +204,15 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
        // TODO: migrate DnsEventBatch to IpConnectivityLogClass.DNSLatencies
        // TODO: migrate DnsEventBatch to IpConnectivityLogClass.DNSLatencies
    }
    }


    private IpConnectivityEvent flushConnectStats() {
    private IpConnectivityEvent connectStatsProto() {
        // TODO: add transport information
        IpConnectivityEvent ev = new IpConnectivityEvent();
        IpConnectivityEvent ev = new IpConnectivityEvent();
        ev.setConnectStatistics(mConnectStats.toProto());
        ev.setConnectStatistics(mConnectStats.toProto());
        // TODO: add transport information
        return ev;
    }

    private IpConnectivityEvent flushConnectStats() {
        IpConnectivityEvent ev = connectStatsProto();
        mConnectStats = makeConnectStats();
        mConnectStats = makeConnectStats();
        return ev;
        return ev;
    }
    }
@@ -216,11 +221,19 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
        IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
        IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
        pw.println(TAG + ":");
        pw.println(TAG + ":");
        pw.increaseIndent();
        pw.increaseIndent();
        list(pw);
        pw.decreaseIndent();
    }

    public synchronized void list(PrintWriter pw) {
        for (DnsEventBatch batch : mEventBatches.values()) {
        for (DnsEventBatch batch : mEventBatches.values()) {
            pw.println(batch.toString());
            pw.println(batch.toString());
        }
        }
        // TODO: also dump ConnectStats
        pw.println(mConnectStats.toString());
        pw.decreaseIndent();
    }

    public synchronized void listAsProtos(PrintWriter pw) {
        pw.println(connectStatsProto().toString());
    }
    }


    private ConnectStats makeConnectStats() {
    private ConnectStats makeConnectStats() {
+1 −1
Original line number Original line Diff line number Diff line
@@ -219,7 +219,7 @@ public class NetdEventListenerServiceTest extends TestCase {
                "time_ms: 0",
                "time_ms: 0",
                "transports: 0",
                "transports: 0",
                "connect_statistics <",
                "connect_statistics <",
                "  connect_blocking_count: 0",
                "  connect_blocking_count: 7",
                "  connect_count: 12",
                "  connect_count: 12",
                "  errnos_counters <",
                "  errnos_counters <",
                "    key: 1",
                "    key: 1",