Mholloway has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/379115 )
Change subject: Add image response size logging ...................................................................... Add image response size logging Provides for storing data on image response lengths in SessionData. Adds a network interceptor that logs the content-length and running total for responses with image content-types. A network interceptor (rather than an application interceptor) is used so that we don't count responses served from cache. Change-Id: I1eb695dabae74cf0870ab5e43157e2093a454adb --- M app/src/main/java/org/wikipedia/analytics/SessionData.java M app/src/main/java/org/wikipedia/analytics/SessionFunnel.java A app/src/main/java/org/wikipedia/dataclient/okhttp/ImageResponseSizeLoggingInterceptor.java M app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java 4 files changed, 60 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/15/379115/1 diff --git a/app/src/main/java/org/wikipedia/analytics/SessionData.java b/app/src/main/java/org/wikipedia/analytics/SessionData.java index 3ba006d..f5d4c02 100644 --- a/app/src/main/java/org/wikipedia/analytics/SessionData.java +++ b/app/src/main/java/org/wikipedia/analytics/SessionData.java @@ -20,6 +20,8 @@ private int pagesFromBack; private int pagesWithNoDescription; + private long imageResponseBytes; // not for Scheme:MobileWikiAppSessions logging + public void addPageViewed(HistoryEntry entry) { switch (entry.getSource()) { case HistoryEntry.SOURCE_SEARCH: @@ -135,6 +137,14 @@ pagesWithNoDescription++; } + public long getImageResponseBytes() { + return imageResponseBytes; + } + + public void addImageResponseBytes(long bytes) { + imageResponseBytes += bytes; + } + public int getTotalPages() { return pagesFromSearch + pagesFromRandom + pagesFromLangLink + pagesFromInternal + pagesFromExternal + pagesFromHistory + pagesFromReadingList + pagesFromNearby diff --git a/app/src/main/java/org/wikipedia/analytics/SessionFunnel.java b/app/src/main/java/org/wikipedia/analytics/SessionFunnel.java index 71e00a4..9073ea5 100644 --- a/app/src/main/java/org/wikipedia/analytics/SessionFunnel.java +++ b/app/src/main/java/org/wikipedia/analytics/SessionFunnel.java @@ -94,6 +94,14 @@ sessionData.addRestLatency(System.currentTimeMillis() - restSectionsStartTime); } + public void addImageResponseBytes(long bytes) { + sessionData.addImageResponseBytes(bytes); + } + + public long getTotalImageResponseBytes() { + return sessionData.getImageResponseBytes(); + } + private boolean hasTimedOut() { return System.currentTimeMillis() - sessionData.getLastTouchTime() > Prefs.getSessionTimeout() * DateUtils.MINUTE_IN_MILLIS; diff --git a/app/src/main/java/org/wikipedia/dataclient/okhttp/ImageResponseSizeLoggingInterceptor.java b/app/src/main/java/org/wikipedia/dataclient/okhttp/ImageResponseSizeLoggingInterceptor.java new file mode 100644 index 0000000..d771457 --- /dev/null +++ b/app/src/main/java/org/wikipedia/dataclient/okhttp/ImageResponseSizeLoggingInterceptor.java @@ -0,0 +1,41 @@ +package org.wikipedia.dataclient.okhttp; + +import org.wikipedia.WikipediaApp; +import org.wikipedia.util.log.L; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.MediaType; +import okhttp3.Response; + +class ImageResponseSizeLoggingInterceptor implements Interceptor { + private final WikipediaApp app = WikipediaApp.getInstance(); + + @Override + public Response intercept(Chain chain) throws IOException { + Response rsp = chain.proceed(chain.request()); + + if (rsp.body() != null) { + // noinspection ConstantConditions + MediaType contentType = rsp.body().contentType(); + if (contentType != null && "image".equals(contentType.type())) { + // noinspection ConstantConditions + long contentLength = rsp.body().contentLength(); + app.getSessionFunnel().addImageResponseBytes(contentLength); + long totalImageBytes = app.getSessionFunnel().getTotalImageResponseBytes(); + L.v(getLoggingString(contentLength, totalImageBytes)); + } + } + + return rsp; + } + + private static String getLoggingString(long curBytes, long totalBytes) { + return "Received " + str(curBytes) + " byte image; " + str(totalBytes) + " total image bytes received"; + } + + private static String str(long l) { + return Long.toString(l); + } +} diff --git a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java index 8badaf2..3770bec 100644 --- a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java +++ b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java @@ -46,6 +46,7 @@ .addInterceptor(new UnsuccessfulResponseInterceptor()) .addInterceptor(new StatusResponseInterceptor(RbSwitch.INSTANCE)) .addNetworkInterceptor(new StripMustRevalidateResponseInterceptor()) + .addNetworkInterceptor(new ImageResponseSizeLoggingInterceptor()) .addInterceptor(new CommonHeaderRequestInterceptor()) .addInterceptor(new DefaultMaxStaleRequestInterceptor()) .addInterceptor(new CacheIfErrorInterceptor()) -- To view, visit https://gerrit.wikimedia.org/r/379115 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1eb695dabae74cf0870ab5e43157e2093a454adb Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits