aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2019-01-31 12:40:25 -0800
committerBrad Ebinger <breadley@google.com>2019-01-31 13:03:05 -0800
commit757882f2c2ed7535b81bf4e4950ce278a808a6b7 (patch)
tree095a3765626c60ee6c0fd777356ff2c47300cf0c
parent72d7bcb80b65a98a3bf5cad5804a19a5eff83516 (diff)
downloadims-757882f2c2ed7535b81bf4e4950ce278a808a6b7.tar.gz
Move to Excutor interface to spawn threads for testing
When creating a new thread in ImsManager to perform ImsConfig updates, wrap creating the new thread in an executor so it can be overriden to be single threaded when testing. Bug: 123641963 Test: atest FrameworksTelephonyTests:ImsManagerTest Change-Id: Ic3d5d2f18a91903771f8397f78a8eafdf53889de
-rw-r--r--src/java/com/android/ims/ImsManager.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 1bc95f0e..b42f3b71 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -371,6 +371,16 @@ public class ImsManager {
}
}
+
+ @VisibleForTesting
+ public interface ExecutorFactory {
+ void executeRunnable(Runnable runnable);
+ }
+
+ // Replaced with single-threaded executor for testing.
+ @VisibleForTesting
+ public ExecutorFactory mExecutorFactory = runnable -> new Thread(runnable).start();
+
private static HashMap<Integer, ImsManager> sImsManagerInstances =
new HashMap<Integer, ImsManager>();
@@ -1143,7 +1153,7 @@ public class ImsManager {
private void setWfcModeInternal(int wfcMode) {
final int value = wfcMode;
- Thread thread = new Thread(() -> {
+ mExecutorFactory.executeRunnable(() -> {
try {
getConfigInterface().setConfig(
ProvisioningManager.KEY_VOICE_OVER_WIFI_MODE_OVERRIDE, value);
@@ -1151,7 +1161,6 @@ public class ImsManager {
// do nothing
}
});
- thread.start();
}
/**
@@ -1213,7 +1222,7 @@ public class ImsManager {
final int value = enabled
? ProvisioningManager.PROVISIONING_VALUE_ENABLED
: ProvisioningManager.PROVISIONING_VALUE_DISABLED;
- Thread thread = new Thread(() -> {
+ mExecutorFactory.executeRunnable(() -> {
try {
getConfigInterface().setConfig(
ProvisioningManager.KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE, value);
@@ -1221,7 +1230,6 @@ public class ImsManager {
// do nothing
}
});
- thread.start();
}
/**
@@ -2107,7 +2115,7 @@ public class ImsManager {
private void setRttConfig(boolean enabled) {
final int value = enabled ? ProvisioningManager.PROVISIONING_VALUE_ENABLED :
ProvisioningManager.PROVISIONING_VALUE_DISABLED;
- Thread thread = new Thread(() -> {
+ mExecutorFactory.executeRunnable(() -> {
try {
Log.i(ImsManager.class.getSimpleName(), "Setting RTT enabled to " + enabled);
getConfigInterface().setProvisionedValue(
@@ -2117,7 +2125,6 @@ public class ImsManager {
+ enabled + ": " + e);
}
});
- thread.start();
}
public boolean queryMmTelCapability(