Merge "Add a separate internal task executor pool to fix flaky tests." into androidx-master-dev
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/foreground/WorkerWrapperForegroundTest.kt b/work/workmanager/src/androidTest/java/androidx/work/impl/foreground/WorkerWrapperForegroundTest.kt
index 845b0ad..8d660e5 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/foreground/WorkerWrapperForegroundTest.kt
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/foreground/WorkerWrapperForegroundTest.kt
@@ -60,6 +60,7 @@
     private lateinit var handler: Handler
     private lateinit var config: Configuration
     private lateinit var executor: ExecutorService
+    private lateinit var internalExecutor: ExecutorService
     private lateinit var taskExecutor: TaskExecutor
     private lateinit var workDatabase: WorkDatabase
     private lateinit var schedulers: List<Scheduler>
@@ -76,6 +77,7 @@
         doReturn(context).`when`(context).applicationContext
 
         executor = Executors.newSingleThreadExecutor()
+        internalExecutor = Executors.newSingleThreadExecutor()
         handler = Handler(Looper.getMainLooper())
         config = Configuration.Builder()
             .setExecutor(executor)
@@ -86,7 +88,7 @@
             val main = Executor { runnable ->
                 handler.post(runnable)
             }
-            val serialExecutor = SerialExecutor(executor)
+            val serialExecutor = SerialExecutor(internalExecutor)
             override fun postToMainThread(runnable: Runnable) {
                 handler.post(runnable)
             }
@@ -154,10 +156,6 @@
 
         wrapper.run()
         val future = wrapper.future as SettableFuture<Boolean>
-        while (taskExecutor.backgroundExecutor.hasPendingTasks()) {
-            // Wait until all pending operations in the internal task executor are complete
-        }
-
         val latch = CountDownLatch(1)
         future.addListener(Runnable {
             assertThat(future.isDone, `is`(true))
diff --git a/work/workmanager/src/androidTest/java/androidx/work/worker/TestForegroundWorker.kt b/work/workmanager/src/androidTest/java/androidx/work/worker/TestForegroundWorker.kt
index 27c98bb..db1a6d4 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/worker/TestForegroundWorker.kt
+++ b/work/workmanager/src/androidTest/java/androidx/work/worker/TestForegroundWorker.kt
@@ -26,7 +26,7 @@
     Worker(context, parameters) {
 
     override fun doWork(): Result {
-        setForegroundAsync(getNotification())
+        setForegroundAsync(getNotification()).get()
         return Result.success()
     }