diff options
author | Chiachang Wang <chiachangwang@google.com> | 2019-02-22 11:13:07 +0800 |
---|---|---|
committer | Chiachang Wang <chiachangwang@google.com> | 2019-02-22 03:14:45 +0000 |
commit | 8b5f84ac9c08f27bea6fcbfacbabcfda8773ea07 (patch) | |
tree | 63b7cab0e0c33e901418060f6e56c9d6a9b255ec /src/android/net/metrics/DataStallStatsUtils.java | |
parent | 0aceb93c918dcc3a3da49338181fddb00774badc (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.java | 66 |
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. + } +} |