From aa56a6cde39b80fa1edd61052dc8ad595d4562cc Mon Sep 17 00:00:00 2001 From: Bernardo Rufino Date: Tue, 16 Jan 2018 14:10:19 +0000 Subject: Move event logging to TransportClient and add connection event Move event logging from registration to TransportClient and add new event for connection. Change-Id: I32022590a36b6f28f960e91f8880a0430e862852 Ref: http://go/br-binding-on-demand Bug: 17140907 Test: m -j RunFrameworksServicesRoboTest Test: adb logcat -b events, check relevant events --- .../android/server/backup/TransportManager.java | 5 -- .../server/backup/transport/TransportClient.java | 45 ++++++++++++ .../java/com/android/server/EventLogTags.logtags | 1 + .../backup/transport/TransportClientTest.java | 84 +++++++++++++++++++++- .../com/android/server/testing/ShadowEventLog.java | 71 ++++++++++++++++++ 5 files changed, 199 insertions(+), 7 deletions(-) create mode 100644 services/robotests/src/com/android/server/testing/ShadowEventLog.java diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java index 09456b68e1c0..30fd25a92484 100644 --- a/services/backup/java/com/android/server/backup/TransportManager.java +++ b/services/backup/java/com/android/server/backup/TransportManager.java @@ -29,14 +29,12 @@ import android.content.pm.ResolveInfo; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; -import android.util.EventLog; import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.backup.IBackupTransport; import com.android.internal.util.Preconditions; -import com.android.server.EventLogTags; import com.android.server.backup.transport.OnTransportRegisteredListener; import com.android.server.backup.transport.TransportClient; import com.android.server.backup.transport.TransportClientManager; @@ -574,8 +572,6 @@ public class TransportManager { return BackupManager.ERROR_TRANSPORT_UNAVAILABLE; } - EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, transportString, 1); - int result; try { String transportName = transport.name(); @@ -587,7 +583,6 @@ public class TransportManager { result = BackupManager.SUCCESS; } catch (RemoteException e) { Slog.e(TAG, "Transport " + transportString + " died while registering"); - EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, transportString, 0); result = BackupManager.ERROR_TRANSPORT_UNAVAILABLE; } diff --git a/services/backup/java/com/android/server/backup/transport/TransportClient.java b/services/backup/java/com/android/server/backup/transport/TransportClient.java index bd4a0bb57072..399f338d26b2 100644 --- a/services/backup/java/com/android/server/backup/transport/TransportClient.java +++ b/services/backup/java/com/android/server/backup/transport/TransportClient.java @@ -29,12 +29,14 @@ import android.os.IBinder; import android.os.Looper; import android.os.UserHandle; import android.util.ArrayMap; +import android.util.EventLog; import android.util.Log; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.backup.IBackupTransport; import com.android.internal.util.Preconditions; +import com.android.server.EventLogTags; import com.android.server.backup.TransportManager; import java.lang.annotation.Retention; @@ -419,10 +421,45 @@ public class TransportClient { @GuardedBy("mStateLock") private void setStateLocked(@State int state, @Nullable IBackupTransport transport) { log(Log.VERBOSE, "State: " + stateToString(mState) + " => " + stateToString(state)); + onStateTransition(mState, state); mState = state; mTransport = transport; } + private void onStateTransition(int oldState, int newState) { + String transport = mTransportComponent.flattenToShortString(); + int bound = transitionThroughState(oldState, newState, State.BOUND_AND_CONNECTING); + int connected = transitionThroughState(oldState, newState, State.CONNECTED); + if (bound != Transition.NO_TRANSITION) { + int value = (bound == Transition.UP) ? 1 : 0; // 1 is bound, 0 is not bound + EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, transport, value); + } + if (connected != Transition.NO_TRANSITION) { + int value = (connected == Transition.UP) ? 1 : 0; // 1 is connected, 0 is not connected + EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_CONNECTION, transport, value); + } + } + + /** + * Returns: + * + *