From 75d6665597c1a24568f9c2341613dc583ed92f90 Mon Sep 17 00:00:00 2001 From: Siim Sammul Date: Tue, 22 Jun 2021 17:11:45 +0100 Subject: [PATCH] Fix process source propagation for binder calls stats settings so that it is correctly reported in the pushed atom BinderLatencyReported. This is a direct cherrypick from sc-dev: https://googleplex-android-review.git.corp.google.com/c/platform/frameworks/base/+/15054863 Bug: 180584913 Test: unit test Change-Id: Ifbdd96c73276546fb2a05213f71e1de088e1fe1e Merged-In: Ifbdd96c73276546fb2a05213f71e1de088e1fe1e --- .../android/internal/os/BinderCallsStats.java | 5 +-- .../internal/os/BinderLatencyObserver.java | 5 +++ .../internal/os/BinderCallsStatsTest.java | 34 +++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java index 0ab2a900aa613..2cdf4e008cb43 100644 --- a/core/java/com/android/internal/os/BinderCallsStats.java +++ b/core/java/com/android/internal/os/BinderCallsStats.java @@ -930,15 +930,12 @@ public class BinderCallsStats implements BinderInternal.Observer { private final Context mContext; private final KeyValueListParser mParser = new KeyValueListParser(','); private final BinderCallsStats mBinderCallsStats; - private final int mProcessSource; - public SettingsObserver(Context context, BinderCallsStats binderCallsStats, - int processSource) { + public SettingsObserver(Context context, BinderCallsStats binderCallsStats) { super(BackgroundThread.getHandler()); mContext = context; context.getContentResolver().registerContentObserver(mUri, false, this); mBinderCallsStats = binderCallsStats; - mProcessSource = processSource; // Always kick once to ensure that we match current state onChange(); } diff --git a/core/java/com/android/internal/os/BinderLatencyObserver.java b/core/java/com/android/internal/os/BinderLatencyObserver.java index 5fa96bd9a1529..af62fd78392ab 100644 --- a/core/java/com/android/internal/os/BinderLatencyObserver.java +++ b/core/java/com/android/internal/os/BinderLatencyObserver.java @@ -332,4 +332,9 @@ public class BinderLatencyObserver { public Runnable getStatsdPushRunnable() { return mLatencyObserverRunnable; } + + @VisibleForTesting + public int getProcessSource() { + return mProcessSource; + } } diff --git a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java index ecd0276715ad7..9b1afcb430061 100644 --- a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java @@ -835,6 +835,40 @@ public class BinderCallsStatsTest { assertEquals(0, bcs.getLatencyObserver().getLatencyHistograms().size()); } + @Test + public void testProcessSource() { + BinderCallsStats defaultCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector()); + + BinderCallsStats systemServerCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER); + + BinderCallsStats telephonyCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY); + + BinderCallsStats bluetoothCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER, + defaultCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER, + systemServerCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY, + telephonyCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH, + bluetoothCallsStats.getLatencyObserver().getProcessSource()); + } + private static class TestHandler extends Handler { ArrayList mRunnables = new ArrayList<>();