Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions common/src/main/java/org/conscrypt/metrics/ConscryptStatsLog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.conscrypt.metrics;

import org.conscrypt.Internal;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.lang.Thread.UncaughtExceptionHandler;

/**
* Reimplement with reflection calls the logging class,
* generated by frameworks/statsd.
* <p>
* In case atom is changed, generate new wrapper with stats-log-api-gen
* tool as shown below and add corresponding methods to ReflexiveStatsEvent's
* newEvent() method.
* <p>
* $ stats-log-api-gen \
* --java "common/src/main/java/org/conscrypt/metrics/ConscryptStatsLog.java" \
* --module conscrypt \
* --javaPackage org.conscrypt.metrics \
* --javaClass ConscryptStatsLog
**/
@Internal
public final class ConscryptStatsLog {
public static final int TLS_HANDSHAKE_REPORTED = 317;

private ConscryptStatsLog() {}

public static void write(int atomId, boolean success, int protocol, int cipherSuite,
int duration, Source source) {
ReflexiveStatsEvent event = ReflexiveStatsEvent.buildEvent(
atomId, success, protocol, cipherSuite, duration, source.ordinal());

ReflexiveStatsLog.write(event);
}

public static void write(
int atomId, boolean success, int protocol, int cipherSuite, int duration, Source source,
int uids[]) {
ReflexiveStatsEvent event = ReflexiveStatsEvent.buildEvent(
atomId, success, protocol, cipherSuite, duration, source.ordinal(), uids);

ReflexiveStatsLog.write(event);
}

public static void write(int atomId, int status, int loadedCompatVersion,
int minCompatVersionAvailable, int majorVersion, int minorVersion) {
ReflexiveStatsEvent.Builder builder = ReflexiveStatsEvent.newBuilder();
builder.setAtomId(atomId);
builder.writeInt(status);
builder.writeInt(loadedCompatVersion);
builder.writeInt(minCompatVersionAvailable);
builder.writeInt(majorVersion);
builder.writeInt(minorVersion);
builder.usePooledBuffer();
ReflexiveStatsLog.write(builder.build());
}
}
19 changes: 5 additions & 14 deletions common/src/main/java/org/conscrypt/metrics/StatsLogImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public void countTlsHandshake(
CipherSuite suite = CipherSuite.forName(cipherSuite);

write(TLS_HANDSHAKE_REPORTED, success, proto.getId(), suite.getId(), (int) duration,
Platform.getStatsSource().ordinal(), Platform.getUids());
Platform.getStatsSource(), Platform.getUids());
}

private static int logStoreStateToMetricsState(LogStore.State state) {
Expand Down Expand Up @@ -123,14 +123,12 @@ public void updateCTLogListStatusChanged(LogStore logStore) {
}

private void write(int atomId, boolean success, int protocol, int cipherSuite, int duration,
int source, int[] uids) {
org.conscrypt.metrics.Source source, int[] uids) {
e.execute(new Runnable() {
@Override
public void run() {
ReflexiveStatsEvent event = ReflexiveStatsEvent.buildEvent(
ConscryptStatsLog.write(
atomId, success, protocol, cipherSuite, duration, source, uids);

ReflexiveStatsLog.write(event);
}
});
}
Expand All @@ -140,15 +138,8 @@ private void write(int atomId, int status, int loadedCompatVersion,
e.execute(new Runnable() {
@Override
public void run() {
ReflexiveStatsEvent.Builder builder = ReflexiveStatsEvent.newBuilder();
builder.setAtomId(atomId);
builder.writeInt(status);
builder.writeInt(loadedCompatVersion);
builder.writeInt(minCompatVersionAvailable);
builder.writeInt(majorVersion);
builder.writeInt(minorVersion);
builder.usePooledBuffer();
ReflexiveStatsLog.write(builder.build());
ConscryptStatsLog.write(atomId, status, loadedCompatVersion,
minCompatVersionAvailable, majorVersion, minorVersion);
}
});
}
Expand Down
Loading