Add metrics logging around get resumable upload url request.

This commit is contained in:
Cody Henthorne 2022-02-22 13:44:58 -05:00 committed by Greyson Parrelli
parent 7b499f96be
commit bd18b731c8
2 changed files with 145 additions and 0 deletions

View file

@ -0,0 +1,144 @@
package org.whispersystems.signalservice.internal.push;
import org.whispersystems.libsignal.logging.Log;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.List;
import java.util.Locale;
import okhttp3.Call;
import okhttp3.Connection;
import okhttp3.EventListener;
import okhttp3.Handshake;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.Response;
/**
* Logs okhttp {@link Call} events for a single instance.
*/
@SuppressWarnings("NullableProblems")
final class LoggingOkhttpEventListener extends EventListener {
private static final String TAG = "LoggingOkhttpEventListe";
private long callStartNanos;
private StringBuilder logMessage;
private void printEvent(String name) {
long nowNanos = System.nanoTime();
if (name.equals("callStart")) {
callStartNanos = nowNanos;
logMessage = new StringBuilder();
}
long elapsedNanos = nowNanos - callStartNanos;
logMessage.append(String.format(Locale.US, "[%.3f %s] ", elapsedNanos / 1000000000d, name));
if (name.equals("callEnd") || name.equals("callFailed")) {
Log.d(TAG, logMessage.toString());
}
}
@Override
public void callStart(Call call) {
printEvent("callStart");
}
@Override
public void dnsStart(Call call, String domainName) {
printEvent("dnsStart");
}
@Override
public void dnsEnd(Call call, String domainName, List<InetAddress> inetAddressList) {
printEvent("dnsEnd");
}
@Override
public void connectStart(Call call, InetSocketAddress inetSocketAddress, Proxy proxy) {
printEvent("connectStart");
}
@Override
public void secureConnectStart(Call call) {
printEvent("secureConnectStart");
}
@Override
public void secureConnectEnd(Call call, Handshake handshake) {
printEvent("secureConnectEnd");
}
@Override
public void connectEnd(Call call, InetSocketAddress inetSocketAddress, Proxy proxy, Protocol protocol) {
printEvent("connectEnd");
}
@Override
public void connectFailed(Call call, InetSocketAddress inetSocketAddress, Proxy proxy, Protocol protocol, IOException ioException) {
printEvent("connectFailed");
}
@Override
public void connectionAcquired(Call call, Connection connection) {
printEvent("connectionAcquired");
}
@Override
public void connectionReleased(Call call, Connection connection) {
printEvent("connectionReleased");
}
@Override
public void requestHeadersStart(Call call) {
printEvent("requestHeadersStart");
}
@Override
public void requestHeadersEnd(Call call, Request request) {
printEvent("requestHeadersEnd");
}
@Override
public void requestBodyStart(Call call) {
printEvent("requestBodyStart");
}
@Override
public void requestBodyEnd(Call call, long byteCount) {
printEvent("requestBodyEnd");
}
@Override
public void responseHeadersStart(Call call) {
printEvent("responseHeadersStart");
}
@Override
public void responseHeadersEnd(Call call, Response response) {
printEvent("responseHeadersEnd");
}
@Override
public void responseBodyStart(Call call) {
printEvent("responseBodyStart");
}
@Override
public void responseBodyEnd(Call call, long byteCount) {
printEvent("responseBodyEnd");
}
@Override
public void callEnd(Call call) {
printEvent("callEnd");
}
@Override
public void callFailed(Call call, IOException ioException) {
printEvent("callFailed");
}
}

View file

@ -1336,6 +1336,7 @@ public class PushServiceSocket {
.newBuilder()
.connectTimeout(soTimeoutMillis, TimeUnit.MILLISECONDS)
.readTimeout(soTimeoutMillis, TimeUnit.MILLISECONDS)
.eventListener(new LoggingOkhttpEventListener())
.build();
Request.Builder request = new Request.Builder().url(buildConfiguredUrl(connectionHolder, signedUrl))