summaryrefslogtreecommitdiff
path: root/src/android/net/metrics/DataStallDetectionStats.java
diff options
context:
space:
mode:
authorChiachang Wang <chiachangwang@google.com>2019-04-11 21:24:28 +0800
committerChiachang Wang <chiachangwang@google.com>2019-04-11 21:24:28 +0800
commit53817ca825184966e4e84ead4b64e677c39d18a4 (patch)
tree5ff6c7b6267744225970ee0c1545c8ba9dfd5e91 /src/android/net/metrics/DataStallDetectionStats.java
parent1b40047789ca45d09401bed2c53e0fce17a1ee91 (diff)
Migrate NetworkStack metrics off StatsLog.write
Now that the new metrics API can be used, NetworkStack metrics need to migrate off the legacy StatsLog.write. Bug: 130323000 Test: Test with ./out/host/linux-x86/bin/statsd_testdrive 121 to ensure log properly Test: Ensure NetworkStackStatsLog will be generated as expected Test: atest NetworkStackTest Change-Id: I8c70503cf1d9f1d06f30a1936d2d88857d0cff53
Diffstat (limited to 'src/android/net/metrics/DataStallDetectionStats.java')
-rw-r--r--src/android/net/metrics/DataStallDetectionStats.java228
1 files changed, 0 insertions, 228 deletions
diff --git a/src/android/net/metrics/DataStallDetectionStats.java b/src/android/net/metrics/DataStallDetectionStats.java
deleted file mode 100644
index 225dc0f..0000000
--- a/src/android/net/metrics/DataStallDetectionStats.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * 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.util.NetworkStackUtils;
-import android.net.wifi.WifiInfo;
-
-import com.android.internal.util.HexDump;
-import com.android.server.connectivity.nano.CellularData;
-import com.android.server.connectivity.nano.DataStallEventProto;
-import com.android.server.connectivity.nano.DnsEvent;
-import com.android.server.connectivity.nano.WifiData;
-
-import com.google.protobuf.nano.MessageNano;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Class to record the stats of detection level information for data stall.
- *
- * @hide
- */
-public final class DataStallDetectionStats {
- private static final int UNKNOWN_SIGNAL_STRENGTH = -1;
- @NonNull
- final byte[] mCellularInfo;
- @NonNull
- final byte[] mWifiInfo;
- @NonNull
- final byte[] mDns;
- final int mEvaluationType;
- final int mNetworkType;
-
- public DataStallDetectionStats(@Nullable byte[] cell, @Nullable byte[] wifi,
- @NonNull int[] returnCode, @NonNull long[] dnsTime, int evalType, int netType) {
- mCellularInfo = emptyCellDataIfNull(cell);
- mWifiInfo = emptyWifiInfoIfNull(wifi);
-
- DnsEvent dns = new DnsEvent();
- dns.dnsReturnCode = returnCode;
- dns.dnsTime = dnsTime;
- mDns = MessageNano.toByteArray(dns);
- mEvaluationType = evalType;
- mNetworkType = netType;
- }
-
- private byte[] emptyCellDataIfNull(@Nullable byte[] cell) {
- if (cell != null) return cell;
-
- CellularData data = new CellularData();
- data.ratType = DataStallEventProto.RADIO_TECHNOLOGY_UNKNOWN;
- data.networkMccmnc = "";
- data.simMccmnc = "";
- data.signalStrength = UNKNOWN_SIGNAL_STRENGTH;
- return MessageNano.toByteArray(data);
- }
-
- private byte[] emptyWifiInfoIfNull(@Nullable byte[] wifi) {
- if (wifi != null) return wifi;
-
- WifiData data = new WifiData();
- data.wifiBand = DataStallEventProto.AP_BAND_UNKNOWN;
- data.signalStrength = UNKNOWN_SIGNAL_STRENGTH;
- return MessageNano.toByteArray(data);
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("type: ").append(mNetworkType)
- .append(", evaluation type: ")
- .append(mEvaluationType)
- .append(", wifi info: ")
- .append(HexDump.toHexString(mWifiInfo))
- .append(", cell info: ")
- .append(HexDump.toHexString(mCellularInfo))
- .append(", dns: ")
- .append(HexDump.toHexString(mDns));
- return sb.toString();
- }
-
- @Override
- public boolean equals(@Nullable final Object o) {
- if (!(o instanceof DataStallDetectionStats)) return false;
- final DataStallDetectionStats other = (DataStallDetectionStats) o;
- return (mNetworkType == other.mNetworkType)
- && (mEvaluationType == other.mEvaluationType)
- && Arrays.equals(mWifiInfo, other.mWifiInfo)
- && Arrays.equals(mCellularInfo, other.mCellularInfo)
- && Arrays.equals(mDns, other.mDns);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mNetworkType, mEvaluationType, mWifiInfo, mCellularInfo, mDns);
- }
-
- /**
- * Utility to create an instance of {@Link DataStallDetectionStats}
- *
- * @hide
- */
- public static class Builder {
- @Nullable
- private byte[] mCellularInfo;
- @Nullable
- private byte[] mWifiInfo;
- @NonNull
- private final List<Integer> mDnsReturnCode = new ArrayList<Integer>();
- @NonNull
- private final List<Long> mDnsTimeStamp = new ArrayList<Long>();
- private int mEvaluationType;
- private int mNetworkType;
-
- /**
- * Add a dns event into Builder.
- *
- * @param code the return code of the dns event.
- * @param timeMs the elapsedRealtime in ms that the the dns event was received from netd.
- * @return {@code this} {@link Builder} instance.
- */
- public Builder addDnsEvent(int code, long timeMs) {
- mDnsReturnCode.add(code);
- mDnsTimeStamp.add(timeMs);
- return this;
- }
-
- /**
- * Set the dns evaluation type into Builder.
- *
- * @param type the return code of the dns event.
- * @return {@code this} {@link Builder} instance.
- */
- public Builder setEvaluationType(int type) {
- mEvaluationType = type;
- return this;
- }
-
- /**
- * Set the network type into Builder.
- *
- * @param type the network type of the logged network.
- * @return {@code this} {@link Builder} instance.
- */
- public Builder setNetworkType(int type) {
- mNetworkType = type;
- return this;
- }
-
- /**
- * Set the wifi data into Builder.
- *
- * @param info a {@link WifiInfo} of the connected wifi network.
- * @return {@code this} {@link Builder} instance.
- */
- public Builder setWiFiData(@Nullable final WifiInfo info) {
- WifiData data = new WifiData();
- data.wifiBand = getWifiBand(info);
- data.signalStrength = (info != null) ? info.getRssi() : UNKNOWN_SIGNAL_STRENGTH;
- mWifiInfo = MessageNano.toByteArray(data);
- return this;
- }
-
- private static int getWifiBand(@Nullable final WifiInfo info) {
- if (info == null) return DataStallEventProto.AP_BAND_UNKNOWN;
-
- int freq = info.getFrequency();
- // Refer to ScanResult.is5GHz() and ScanResult.is24GHz().
- if (freq > 4900 && freq < 5900) {
- return DataStallEventProto.AP_BAND_5GHZ;
- } else if (freq > 2400 && freq < 2500) {
- return DataStallEventProto.AP_BAND_2GHZ;
- } else {
- return DataStallEventProto.AP_BAND_UNKNOWN;
- }
- }
-
- /**
- * Set the cellular data into Builder.
- *
- * @param radioType the radio technology of the logged cellular network.
- * @param roaming a boolean indicates if logged cellular network is roaming or not.
- * @param networkMccmnc the mccmnc of the camped network.
- * @param simMccmnc the mccmnc of the sim.
- * @return {@code this} {@link Builder} instance.
- */
- public Builder setCellData(int radioType, boolean roaming,
- @NonNull String networkMccmnc, @NonNull String simMccmnc, int ss) {
- CellularData data = new CellularData();
- data.ratType = radioType;
- data.isRoaming = roaming;
- data.networkMccmnc = networkMccmnc;
- data.simMccmnc = simMccmnc;
- data.signalStrength = ss;
- mCellularInfo = MessageNano.toByteArray(data);
- return this;
- }
-
- /**
- * Create a new {@Link DataStallDetectionStats}.
- */
- public DataStallDetectionStats build() {
- return new DataStallDetectionStats(mCellularInfo, mWifiInfo,
- NetworkStackUtils.convertToIntArray(mDnsReturnCode),
- NetworkStackUtils.convertToLongArray(mDnsTimeStamp),
- mEvaluationType, mNetworkType);
- }
- }
-}