summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ytai Ben-Tsvi <ytai@google.com> 2020-05-08 16:23:20 -0700
committer Ytai Ben-Tsvi <ytai@google.com> 2020-09-10 13:27:08 -0700
commit28ba5b97e8456d44bcc6f88f85fdcf9978ac3e8a (patch)
tree76f2be47432b5b3fc1476733982820fa33d196dc
parentc79176dc646bb00402ee467500cd978d2d9f5c34 (diff)
Fix bug in dumpsys
Previously, we would reset the active modules list every time listModules() is called. We've never seen that before, since there would only be one session until now. With this change, multiple sessions are dumped. Change-Id: Ic0d59ca341e659499a9d06dccd452453e02952ef Bug: 163865561
-rw-r--r--services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java
index 51519cb56a11..95a30c7f0278 100644
--- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java
+++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java
@@ -171,9 +171,22 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware
// From here on, every exception isn't client's fault.
try {
SoundTriggerModuleDescriptor[] result = mDelegate.listModules();
- mModules = new HashMap<>(result.length);
- for (SoundTriggerModuleDescriptor desc : result) {
- mModules.put(desc.handle, new ModuleState(desc.properties));
+ if (mModules == null) {
+ mModules = new HashMap<>(result.length);
+ for (SoundTriggerModuleDescriptor desc : result) {
+ mModules.put(desc.handle, new ModuleState(desc.properties));
+ }
+ } else {
+ if (result.length != mModules.size()) {
+ throw new RuntimeException(
+ "listModules must always return the same result.");
+ }
+ for (SoundTriggerModuleDescriptor desc : result) {
+ if (!mModules.containsKey(desc.handle)) {
+ throw new RuntimeException(
+ "listModules must always return the same result.");
+ }
+ }
}
return result;
} catch (Exception e) {
@@ -680,6 +693,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware
void dump(PrintWriter pw) {
if (mState == ModuleStatus.ALIVE) {
+ pw.println("-------------------------------");
pw.printf("Session %s, client: %s\n", toString(),
ObjectPrinter.print(mOriginatorIdentity, true, 16));
pw.printf("Loaded models (handle, active, description):", toString());
@@ -693,6 +707,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware
pw.print(entry.getValue().description);
pw.println();
}
+ pw.println();
} else {
pw.printf("Session %s is dead", toString());
pw.println();