summaryrefslogtreecommitdiff
path: root/src/android/net/metrics/DataStallStatsUtils.java
diff options
context:
space:
mode:
authorChiachang Wang <chiachangwang@google.com>2019-02-22 11:13:07 +0800
committerChiachang Wang <chiachangwang@google.com>2019-02-22 03:14:45 +0000
commit8b5f84ac9c08f27bea6fcbfacbabcfda8773ea07 (patch)
tree63b7cab0e0c33e901418060f6e56c9d6a9b255ec /src/android/net/metrics/DataStallStatsUtils.java
parent0aceb93c918dcc3a3da49338181fddb00774badc (diff)
Injecting data stall event to statsd
Bug: 121185319 Bug: 120452078 Test: - Build and test against data stall code - atest NetworkStackTests Change-Id: I2ee16085e7861d38bcd203c98ffd682f86fdc867
Diffstat (limited to 'src/android/net/metrics/DataStallStatsUtils.java')
-rw-r--r--src/android/net/metrics/DataStallStatsUtils.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/android/net/metrics/DataStallStatsUtils.java b/src/android/net/metrics/DataStallStatsUtils.java
new file mode 100644
index 0000000..17a36ad
--- /dev/null
+++ b/src/android/net/metrics/DataStallStatsUtils.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 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 android.net.metrics;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.captiveportal.CaptivePortalProbeResult;
+import android.util.Log;
+
+import com.android.internal.util.HexDump;
+import com.android.server.connectivity.nano.DataStallEventProto;
+
+/**
+ * Collection of utilities for data stall metrics.
+ *
+ * To see if the logs are properly sent to statsd, execute following command.
+ *
+ * $ adb shell cmd stats print-logs
+ * $ adb logcat | grep statsd OR $ adb logcat -b stats
+ *
+ * @hide
+ */
+public class DataStallStatsUtils {
+ private static final String TAG = DataStallStatsUtils.class.getSimpleName();
+ private static final boolean DBG = false;
+
+ private static int probeResultToEnum(@Nullable final CaptivePortalProbeResult result) {
+ if (result == null) return DataStallEventProto.INVALID;
+
+ // TODO: Add partial connectivity support.
+ if (result.isSuccessful()) {
+ return DataStallEventProto.VALID;
+ } else if (result.isPortal()) {
+ return DataStallEventProto.PORTAL;
+ } else {
+ return DataStallEventProto.INVALID;
+ }
+ }
+
+ /**
+ * Write the metric to {@link StatsLog}.
+ */
+ public static void write(@NonNull final DataStallDetectionStats stats,
+ @NonNull final CaptivePortalProbeResult result) {
+ int validationResult = probeResultToEnum(result);
+ if (DBG) {
+ Log.d(TAG, "write: " + stats + " with result: " + validationResult
+ + ", dns: " + HexDump.toHexString(stats.mDns));
+ }
+ // TODO(b/124613085): Send to Statsd once the public StatsLog API is ready.
+ }
+}