Remove instances of WorkerPoolImplLegacy in tests in favor of a test instance. In these cases, we only need a test worker pool instance to return a specific worker.

We also want to decouple specific WorkerPool implementations from tests where it doesn't actually matter.

PiperOrigin-RevId: 613525131
Change-Id: Ic71d31d1127c86d6535e35b7c0b0c4bbc8bb99e1
diff --git a/src/test/java/com/google/devtools/build/lib/actions/BUILD b/src/test/java/com/google/devtools/build/lib/actions/BUILD
index 18b2b41..09776db 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/actions/BUILD
@@ -69,11 +69,7 @@
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
         "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
         "//src/main/java/com/google/devtools/build/lib/worker",
-        "//src/main/java/com/google/devtools/build/lib/worker:worker_factory",
         "//src/main/java/com/google/devtools/build/lib/worker:worker_key",
-        "//src/main/java/com/google/devtools/build/lib/worker:worker_options",
-        "//src/main/java/com/google/devtools/build/lib/worker:worker_pool_config",
-        "//src/main/java/com/google/devtools/build/lib/worker:worker_pool_impl",
         "//src/main/java/com/google/devtools/build/lib/worker:worker_process_status",
         "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
         "//src/main/java/com/google/devtools/common/options",
@@ -86,7 +82,7 @@
         "//src/test/java/com/google/devtools/build/lib/testutil:TestThread",
         "//src/test/java/com/google/devtools/build/lib/testutil:TestUtils",
         "//src/test/java/com/google/devtools/build/lib/vfs/util",
-        "//third_party:apache_commons_pool2",
+        "//src/test/java/com/google/devtools/build/lib/worker:testutil",
         "//third_party:auto_value",
         "//third_party:caffeine",
         "//third_party:guava",
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
index e05fad5..11202e7 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
@@ -43,13 +43,10 @@
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
 import com.google.devtools.build.lib.worker.Worker;
-import com.google.devtools.build.lib.worker.WorkerFactory;
 import com.google.devtools.build.lib.worker.WorkerKey;
-import com.google.devtools.build.lib.worker.WorkerOptions;
-import com.google.devtools.build.lib.worker.WorkerPoolConfig;
-import com.google.devtools.build.lib.worker.WorkerPoolImplLegacy;
 import com.google.devtools.build.lib.worker.WorkerProcessStatus;
 import com.google.devtools.build.lib.worker.WorkerProcessStatus.Status;
+import com.google.devtools.build.lib.worker.WorkerTestUtils;
 import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.util.Collection;
@@ -58,7 +55,6 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.Nullable;
-import org.apache.commons.pool2.PooledObject;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -91,25 +87,7 @@
     worker = mock(Worker.class);
     workerStatus = spy(new WorkerProcessStatus());
     when(worker.getStatus()).thenReturn(workerStatus);
-    rm.setWorkerPool(createWorkerPool());
-  }
-
-  private WorkerPoolImplLegacy createWorkerPool() {
-    return new WorkerPoolImplLegacy(
-        new WorkerPoolConfig(
-            new WorkerFactory(fs.getPath("/workerBase"), new WorkerOptions()) {
-              @Override
-              public Worker create(WorkerKey key) {
-                return worker;
-              }
-
-              @Override
-              public boolean validateObject(WorkerKey key, PooledObject<Worker> p) {
-                return true;
-              }
-            },
-            ImmutableList.of(),
-            ImmutableList.of()));
+    rm.setWorkerPool(WorkerTestUtils.createTestWorkerPool(worker));
   }
 
   private ResourceHandle acquire(double ram, double cpu, int tests, ResourcePriority priority)
diff --git a/src/test/java/com/google/devtools/build/lib/worker/BUILD b/src/test/java/com/google/devtools/build/lib/worker/BUILD
index a9a8b2e..2f0a1fd 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/worker/BUILD
@@ -37,7 +37,7 @@
     testonly = 1,
     srcs = [
         "SandboxHelper.java",
-        "TestUtils.java",
+        "WorkerTestUtils.java",
     ],
     deps = [
         "//src/main/java/com/google/devtools/build/lib/actions",
@@ -48,9 +48,11 @@
         "//src/main/java/com/google/devtools/build/lib/shell",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//src/main/java/com/google/devtools/build/lib/worker",
         "//src/main/java/com/google/devtools/build/lib/worker:singleplex_worker",
         "//src/main/java/com/google/devtools/build/lib/worker:worker_key",
         "//src/main/java/com/google/devtools/build/lib/worker:worker_options",
+        "//src/main/java/com/google/devtools/build/lib/worker:worker_pool",
         "//src/main/java/com/google/devtools/build/lib/worker:worker_spawn_runner",
         "//src/test/java/com/google/devtools/build/lib/actions/util",
         "//third_party:guava",
diff --git a/src/test/java/com/google/devtools/build/lib/worker/SandboxedWorkerProxyTest.java b/src/test/java/com/google/devtools/build/lib/worker/SandboxedWorkerProxyTest.java
index 692b0b8..e5883b8 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/SandboxedWorkerProxyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/SandboxedWorkerProxyTest.java
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
-import com.google.devtools.build.lib.worker.TestUtils.FakeSubprocess;
 import com.google.devtools.build.lib.worker.WorkerProtocol.WorkRequest;
+import com.google.devtools.build.lib.worker.WorkerTestUtils.FakeSubprocess;
 import java.io.IOException;
 import java.io.PipedInputStream;
 import org.junit.Before;
@@ -151,32 +151,32 @@
   }
 
   private SandboxedWorkerProxy createSandboxedWorkerProxy() throws IOException {
-    ImmutableMap.Builder<String, String> req = TestUtils.execRequirementsBuilder("Mnem");
+    ImmutableMap.Builder<String, String> req = WorkerTestUtils.execRequirementsBuilder("Mnem");
     req.put(SUPPORTS_MULTIPLEX_SANDBOXING, "1");
-    Spawn spawn = TestUtils.createSpawn(req.buildOrThrow());
+    Spawn spawn = WorkerTestUtils.createSpawn(req.buildOrThrow());
 
     WorkerOptions options = new WorkerOptions();
     options.workerMultiplex = true;
     options.multiplexSandboxing = true;
 
     WorkerKey key =
-        TestUtils.createWorkerKeyFromOptions(
+        WorkerTestUtils.createWorkerKeyFromOptions(
             PROTO, globalOutputBase, options, true, spawn, "worker.sh");
     WorkerFactory factory = new WorkerFactory(workerBaseDir, options);
     return (SandboxedWorkerProxy) factory.create(key);
   }
 
   private SandboxedWorkerProxy createFakedSandboxedWorkerProxy() throws IOException {
-    ImmutableMap.Builder<String, String> req = TestUtils.execRequirementsBuilder("Mnem");
+    ImmutableMap.Builder<String, String> req = WorkerTestUtils.execRequirementsBuilder("Mnem");
     req.put(SUPPORTS_MULTIPLEX_SANDBOXING, "1");
-    Spawn spawn = TestUtils.createSpawn(req.buildOrThrow());
+    Spawn spawn = WorkerTestUtils.createSpawn(req.buildOrThrow());
 
     WorkerOptions options = new WorkerOptions();
     options.workerMultiplex = true;
     options.multiplexSandboxing = true;
 
     WorkerKey key =
-        TestUtils.createWorkerKeyFromOptions(
+        WorkerTestUtils.createWorkerKeyFromOptions(
             PROTO, globalOutputBase, options, true, spawn, "worker.sh");
     WorkerMultiplexerManager.injectForTesting(
         key,
diff --git a/src/test/java/com/google/devtools/build/lib/worker/SimpleWorkerPoolTest.java b/src/test/java/com/google/devtools/build/lib/worker/SimpleWorkerPoolTest.java
index e2b49289..b5f3e5a 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/SimpleWorkerPoolTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/SimpleWorkerPoolTest.java
@@ -14,7 +14,7 @@
 package com.google.devtools.build.lib.worker;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.google.devtools.build.lib.worker.TestUtils.createWorkerKey;
+import static com.google.devtools.build.lib.worker.WorkerTestUtils.createWorkerKey;
 
 import com.google.devtools.build.lib.clock.BlazeClock;
 import com.google.devtools.build.lib.vfs.DigestHashFunction;
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerLifecycleManagerTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerLifecycleManagerTest.java
index d3868c3..befed83 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerLifecycleManagerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerLifecycleManagerTest.java
@@ -15,7 +15,7 @@
 
 import static com.google.common.collect.ImmutableList.toImmutableList;
 import static com.google.common.truth.Truth.assertThat;
-import static com.google.devtools.build.lib.worker.TestUtils.createWorkerKey;
+import static com.google.devtools.build.lib.worker.WorkerTestUtils.createWorkerKey;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doAnswer;
 
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerModuleTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerModuleTest.java
index f6c3405..8bfe6ac 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerModuleTest.java
@@ -81,7 +81,7 @@
     assertThat(fs.getPath("/outputRoot/outputBase/bazel-workers").exists()).isFalse();
     assertThat(module.workerPool).isNotNull();
 
-    WorkerKey workerKey = TestUtils.createWorkerKey(JSON, fs);
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(JSON, fs);
     Worker worker = module.workerPool.borrowObject(workerKey);
 
     assertThat(worker.workerKey).isEqualTo(workerKey);
@@ -137,7 +137,7 @@
     assertThat(storedEventHandler.getEvents().get(0).getMessage())
         .contains("Worker factory configuration has changed");
     assertThat(module.workerPool).isNotSameInstanceAs(oldPool);
-    WorkerKey workerKey = TestUtils.createWorkerKey(fs, "mnemonic", false);
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(fs, "mnemonic", false);
     module.getWorkerPoolConfig().getWorkerFactory().create(workerKey);
     assertThat(fs.getPath("/otherRootDir/outputBase/bazel-workers").exists()).isTrue();
     assertThat(oldLog.exists()).isTrue();
@@ -259,7 +259,7 @@
     workerDir.getParentDirectory().setWritable(false);
 
     // But an actual worker cannot be created.
-    WorkerKey key = TestUtils.createWorkerKey(fs, "Work", /* proxied= */ false);
+    WorkerKey key = WorkerTestUtils.createWorkerKey(fs, "Work", /* proxied= */ false);
     assertThrows(IOException.class, () -> module.workerPool.borrowObject(key));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerMultiplexerTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerMultiplexerTest.java
index 15824b6..8d16e32 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerMultiplexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerMultiplexerTest.java
@@ -22,9 +22,9 @@
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
-import com.google.devtools.build.lib.worker.TestUtils.FakeSubprocess;
 import com.google.devtools.build.lib.worker.WorkerProtocol.WorkRequest;
 import com.google.devtools.build.lib.worker.WorkerProtocol.WorkResponse;
+import com.google.devtools.build.lib.worker.WorkerTestUtils.FakeSubprocess;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PipedInputStream;
@@ -60,7 +60,7 @@
 
   @Test
   public void testGetResponse_noOutstandingRequests() throws IOException, InterruptedException {
-    WorkerKey workerKey = TestUtils.createWorkerKey(fileSystem, "test1", true, "fakeBinary");
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(fileSystem, "test1", true, "fakeBinary");
     WorkerMultiplexer multiplexer = WorkerMultiplexerManager.getInstance(workerKey, logPath);
 
     PipedInputStream serverInputStream = new PipedInputStream();
@@ -85,7 +85,7 @@
   @Test
   public void testGetResponse_basicConcurrency()
       throws IOException, InterruptedException, ExecutionException {
-    WorkerKey workerKey = TestUtils.createWorkerKey(fileSystem, "test2", true, "fakeBinary");
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(fileSystem, "test2", true, "fakeBinary");
     WorkerMultiplexer multiplexer = WorkerMultiplexerManager.getInstance(workerKey, logPath);
 
     PipedInputStream serverInputStream = new PipedInputStream();
@@ -123,7 +123,7 @@
   @Test
   public void testGetResponse_slowMultiplexer()
       throws IOException, InterruptedException, ExecutionException {
-    WorkerKey workerKey = TestUtils.createWorkerKey(fileSystem, "test3", true, "fakeBinary");
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(fileSystem, "test3", true, "fakeBinary");
     WorkerMultiplexer multiplexer = WorkerMultiplexerManager.getInstance(workerKey, logPath);
 
     PipedInputStream serverInputStream = new PipedInputStream();
@@ -193,7 +193,7 @@
   @Test
   public void testGetResponse_slowProxy()
       throws IOException, InterruptedException, ExecutionException {
-    WorkerKey workerKey = TestUtils.createWorkerKey(fileSystem, "test4", true, "fakeBinary");
+    WorkerKey workerKey = WorkerTestUtils.createWorkerKey(fileSystem, "test4", true, "fakeBinary");
     WorkerMultiplexer multiplexer = WorkerMultiplexerManager.getInstance(workerKey, logPath);
 
     PipedInputStream serverInputStream = new PipedInputStream();
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerParserTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerParserTest.java
index df8c245..9ac9c9c 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerParserTest.java
@@ -40,42 +40,46 @@
 
   @Test
   public void workerKeyComputationCheck() {
-    WorkerKey keyNomultiNoSandboxedNoDynamic = TestUtils.createWorkerKey(fs, false, false, false);
+    WorkerKey keyNomultiNoSandboxedNoDynamic =
+        WorkerTestUtils.createWorkerKey(fs, false, false, false);
     assertThat(keyNomultiNoSandboxedNoDynamic.isMultiplex()).isFalse();
     assertThat(keyNomultiNoSandboxedNoDynamic.isSandboxed()).isFalse();
     assertThat(keyNomultiNoSandboxedNoDynamic.getWorkerTypeName()).isEqualTo("worker");
 
-    WorkerKey keyMultiNoSandboxedNoDynamic = TestUtils.createWorkerKey(fs, true, false, false);
+    WorkerKey keyMultiNoSandboxedNoDynamic =
+        WorkerTestUtils.createWorkerKey(fs, true, false, false);
     assertThat(keyMultiNoSandboxedNoDynamic.isMultiplex()).isTrue();
     assertThat(keyMultiNoSandboxedNoDynamic.isSandboxed()).isFalse();
     assertThat(keyMultiNoSandboxedNoDynamic.getWorkerTypeName()).isEqualTo("multiplex-worker");
 
-    WorkerKey keyNomultiSandboxedNoDynamic = TestUtils.createWorkerKey(fs, false, true, false);
+    WorkerKey keyNomultiSandboxedNoDynamic =
+        WorkerTestUtils.createWorkerKey(fs, false, true, false);
     assertThat(keyNomultiSandboxedNoDynamic.isMultiplex()).isFalse();
     assertThat(keyNomultiSandboxedNoDynamic.isSandboxed()).isTrue();
     assertThat(keyNomultiSandboxedNoDynamic.getWorkerTypeName()).isEqualTo("worker");
 
-    WorkerKey keyMultiSandboxedNoDynamic = TestUtils.createWorkerKey(fs, true, true, false);
+    WorkerKey keyMultiSandboxedNoDynamic = WorkerTestUtils.createWorkerKey(fs, true, true, false);
     assertThat(keyMultiSandboxedNoDynamic.isMultiplex()).isTrue();
     assertThat(keyMultiSandboxedNoDynamic.isSandboxed()).isFalse();
     assertThat(keyMultiSandboxedNoDynamic.getWorkerTypeName()).isEqualTo("multiplex-worker");
 
-    WorkerKey keyNomultiNoSandboxedDynamic = TestUtils.createWorkerKey(fs, false, false, true);
+    WorkerKey keyNomultiNoSandboxedDynamic =
+        WorkerTestUtils.createWorkerKey(fs, false, false, true);
     assertThat(keyNomultiNoSandboxedDynamic.isMultiplex()).isFalse();
     assertThat(keyNomultiNoSandboxedDynamic.isSandboxed()).isTrue();
     assertThat(keyNomultiNoSandboxedDynamic.getWorkerTypeName()).isEqualTo("worker");
 
-    WorkerKey keyMultiNoSandboxedDynamic = TestUtils.createWorkerKey(fs, true, false, true);
+    WorkerKey keyMultiNoSandboxedDynamic = WorkerTestUtils.createWorkerKey(fs, true, false, true);
     assertThat(keyMultiNoSandboxedDynamic.isMultiplex()).isFalse();
     assertThat(keyMultiNoSandboxedDynamic.isSandboxed()).isTrue();
     assertThat(keyMultiNoSandboxedDynamic.getWorkerTypeName()).isEqualTo("worker");
 
-    WorkerKey keyNomultiSandboxedDynamic = TestUtils.createWorkerKey(fs, false, true, true);
+    WorkerKey keyNomultiSandboxedDynamic = WorkerTestUtils.createWorkerKey(fs, false, true, true);
     assertThat(keyNomultiSandboxedDynamic.isMultiplex()).isFalse();
     assertThat(keyNomultiSandboxedDynamic.isSandboxed()).isTrue();
     assertThat(keyNomultiSandboxedDynamic.getWorkerTypeName()).isEqualTo("worker");
 
-    WorkerKey keyMultiSandboxedDynamic = TestUtils.createWorkerKey(fs, true, true, true);
+    WorkerKey keyMultiSandboxedDynamic = WorkerTestUtils.createWorkerKey(fs, true, true, true);
     assertThat(keyMultiSandboxedDynamic.isMultiplex()).isFalse();
     assertThat(keyMultiSandboxedDynamic.isSandboxed()).isTrue();
     assertThat(keyMultiSandboxedDynamic.getWorkerTypeName()).isEqualTo("worker");
@@ -88,19 +92,21 @@
     options.workerMultiplex = true;
 
     WorkerKey keyNoMultiplexSandboxing =
-        TestUtils.createWorkerKeyWithRequirements(fs.getPath("/outputbase"), options, "Nom", false);
+        WorkerTestUtils.createWorkerKeyWithRequirements(
+            fs.getPath("/outputbase"), options, "Nom", false);
     assertThat(keyNoMultiplexSandboxing.isMultiplex()).isTrue();
     assertThat(keyNoMultiplexSandboxing.isSandboxed()).isFalse();
     assertThat(keyNoMultiplexSandboxing.getWorkerTypeName()).isEqualTo("multiplex-worker");
 
     WorkerKey keyForcedSandboxedDynamic =
-        TestUtils.createWorkerKeyWithRequirements(fs.getPath("/outputbase"), options, "Nom", true);
+        WorkerTestUtils.createWorkerKeyWithRequirements(
+            fs.getPath("/outputbase"), options, "Nom", true);
     assertThat(keyForcedSandboxedDynamic.isMultiplex()).isFalse();
     assertThat(keyForcedSandboxedDynamic.isSandboxed()).isTrue();
     assertThat(keyForcedSandboxedDynamic.getWorkerTypeName()).isEqualTo("worker");
 
     WorkerKey keyForcedeMultiplexSandboxing =
-        TestUtils.createWorkerKeyWithRequirements(
+        WorkerTestUtils.createWorkerKeyWithRequirements(
             fs.getPath("/outputbase"), options, "Nom", true, SUPPORTS_MULTIPLEX_SANDBOXING);
     assertThat(keyForcedeMultiplexSandboxing.isMultiplex()).isFalse();
     assertThat(keyForcedeMultiplexSandboxing.isSandboxed()).isTrue();
@@ -109,20 +115,21 @@
     options.multiplexSandboxing = true;
 
     WorkerKey keyBaseMultiplexNoSandbox =
-        TestUtils.createWorkerKeyWithRequirements(fs.getPath("/outputbase"), options, "Nom", false);
+        WorkerTestUtils.createWorkerKeyWithRequirements(
+            fs.getPath("/outputbase"), options, "Nom", false);
     assertThat(keyBaseMultiplexNoSandbox.isMultiplex()).isTrue();
     assertThat(keyBaseMultiplexNoSandbox.isSandboxed()).isFalse();
     assertThat(keyBaseMultiplexNoSandbox.getWorkerTypeName()).isEqualTo("multiplex-worker");
 
     WorkerKey keyBaseMultiplexSandboxing =
-        TestUtils.createWorkerKeyWithRequirements(
+        WorkerTestUtils.createWorkerKeyWithRequirements(
             fs.getPath("/outputbase"), options, "Nom", false, SUPPORTS_MULTIPLEX_SANDBOXING);
     assertThat(keyBaseMultiplexSandboxing.isMultiplex()).isTrue();
     assertThat(keyBaseMultiplexSandboxing.isSandboxed()).isTrue();
     assertThat(keyBaseMultiplexSandboxing.getWorkerTypeName()).isEqualTo("multiplex-worker");
 
     WorkerKey keyDynamicMultiplexSandboxing =
-        TestUtils.createWorkerKeyWithRequirements(
+        WorkerTestUtils.createWorkerKeyWithRequirements(
             fs.getPath("/outputbase"), options, "Nom", true, SUPPORTS_MULTIPLEX_SANDBOXING);
     assertThat(keyDynamicMultiplexSandboxing.isMultiplex()).isTrue();
     assertThat(keyDynamicMultiplexSandboxing.isSandboxed()).isTrue();
@@ -136,7 +143,7 @@
     options.workerExtraFlags = ImmutableList.of();
     WorkerParser parser = new WorkerParser(null, options, null, null);
 
-    Spawn spawn = TestUtils.createSpawn(ImmutableList.of("--foo", "@bar"), ImmutableMap.of());
+    Spawn spawn = WorkerTestUtils.createSpawn(ImmutableList.of("--foo", "@bar"), ImmutableMap.of());
     List<String> flagFiles = new ArrayList<>();
     ImmutableList<String> args = parser.splitSpawnArgsIntoWorkerArgsAndFlagFiles(spawn, flagFiles);
     assertThat(args).containsExactly("--foo", "--persistent_worker").inOrder();
@@ -152,7 +159,7 @@
             Maps.immutableEntry("Other action", "--should_not_appear"),
             Maps.immutableEntry("Null", "--quxify"));
     WorkerParser parser = new WorkerParser(null, options, null, null);
-    Spawn spawn = TestUtils.createSpawn(ImmutableList.of("--foo", "@bar"), ImmutableMap.of());
+    Spawn spawn = WorkerTestUtils.createSpawn(ImmutableList.of("--foo", "@bar"), ImmutableMap.of());
 
     List<String> flagFiles = new ArrayList<>();
     ImmutableList<String> args = parser.splitSpawnArgsIntoWorkerArgsAndFlagFiles(spawn, flagFiles);
@@ -168,7 +175,7 @@
     options.strictFlagfiles = false;
     WorkerParser parser = new WorkerParser(null, options, null, null);
     Spawn spawn =
-        TestUtils.createSpawn(
+        WorkerTestUtils.createSpawn(
             ImmutableList.of("--foo", "--flagfile=bar", "@@escaped", "@bar", "@bartoo", "--final"),
             ImmutableMap.of());
 
@@ -190,7 +197,7 @@
     options.strictFlagfiles = true;
     WorkerParser parser = new WorkerParser(null, options, null, null);
     Spawn spawn =
-        TestUtils.createSpawn(
+        WorkerTestUtils.createSpawn(
             ImmutableList.of("--foo", "@@escaped", "--final", "@bar"), ImmutableMap.of());
 
     List<String> flagFiles = new ArrayList<>();
@@ -220,7 +227,7 @@
     options.workerExtraFlags = ImmutableList.of();
     options.strictFlagfiles = true;
     WorkerParser parser = new WorkerParser(null, options, null, null);
-    Spawn spawn = TestUtils.createSpawn(ImmutableList.copyOf(args), ImmutableMap.of());
+    Spawn spawn = WorkerTestUtils.createSpawn(ImmutableList.copyOf(args), ImmutableMap.of());
 
     assertThrows(
         message,
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerPoolTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerPoolTest.java
index a4fb4d7..3794a3e 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerPoolTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerPoolTest.java
@@ -14,7 +14,7 @@
 package com.google.devtools.build.lib.worker;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.google.devtools.build.lib.worker.TestUtils.createWorkerKey;
+import static com.google.devtools.build.lib.worker.WorkerTestUtils.createWorkerKey;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.times;
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerSpawnRunnerTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerSpawnRunnerTest.java
index 5ad8343..ccc57c0 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerSpawnRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerSpawnRunnerTest.java
@@ -15,7 +15,7 @@
 package com.google.devtools.build.lib.worker;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.google.devtools.build.lib.worker.TestUtils.createWorkerKey;
+import static com.google.devtools.build.lib.worker.WorkerTestUtils.createWorkerKey;
 import static org.junit.Assert.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -70,7 +70,6 @@
 import java.io.IOException;
 import java.util.Optional;
 import java.util.concurrent.Semaphore;
-import org.apache.commons.pool2.PooledObject;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -113,24 +112,6 @@
     when(resourceHandle.getWorker()).thenReturn(worker);
   }
 
-  private WorkerPoolImplLegacy createWorkerPool() {
-    return new WorkerPoolImplLegacy(
-        new WorkerPoolConfig(
-            new WorkerFactory(fs.getPath("/workerBase"), options) {
-              @Override
-              public Worker create(WorkerKey key) {
-                return worker;
-              }
-
-              @Override
-              public boolean validateObject(WorkerKey key, PooledObject<Worker> p) {
-                return true;
-              }
-            },
-            ImmutableList.of(),
-            ImmutableList.of()));
-  }
-
   @Test
   public void testExecInWorker_happyPath() throws ExecException, InterruptedException, IOException {
     WorkerSpawnRunner runner = createWorkerSpawnRunner(new WorkerOptions());
@@ -172,7 +153,7 @@
             new SandboxHelpers(),
             execRoot,
             ImmutableList.of(),
-            createWorkerPool(),
+            WorkerTestUtils.createTestWorkerPool(worker),
             reporter,
             localEnvProvider,
             /* binTools= */ null,
@@ -575,7 +556,7 @@
         new SandboxHelpers(),
         fs.getPath("/execRoot"),
         ImmutableList.of(),
-        createWorkerPool(),
+        WorkerTestUtils.createTestWorkerPool(worker),
         reporter,
         localEnvProvider,
         /* binTools= */ null,
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerTest.java
index 05b9336..d58edbd 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerTest.java
@@ -29,11 +29,11 @@
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
-import com.google.devtools.build.lib.worker.TestUtils.FakeSubprocess;
-import com.google.devtools.build.lib.worker.TestUtils.TestWorker;
 import com.google.devtools.build.lib.worker.WorkerProtocol.Input;
 import com.google.devtools.build.lib.worker.WorkerProtocol.WorkRequest;
 import com.google.devtools.build.lib.worker.WorkerProtocol.WorkResponse;
+import com.google.devtools.build.lib.worker.WorkerTestUtils.FakeSubprocess;
+import com.google.devtools.build.lib.worker.WorkerTestUtils.TestWorker;
 import com.google.protobuf.ByteString;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -71,7 +71,7 @@
     Preconditions.checkState(
         workerForCleanup == null, "createTestWorker can only be called once per test");
 
-    WorkerKey key = TestUtils.createWorkerKey(protocolFormat, fs);
+    WorkerKey key = WorkerTestUtils.createWorkerKey(protocolFormat, fs);
 
     FakeSubprocess fakeSubprocess = new FakeSubprocess(outputStreamBytes);
 
diff --git a/src/test/java/com/google/devtools/build/lib/worker/TestUtils.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerTestUtils.java
similarity index 90%
rename from src/test/java/com/google/devtools/build/lib/worker/TestUtils.java
rename to src/test/java/com/google/devtools/build/lib/worker/WorkerTestUtils.java
index c7c4355..a31802a 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/TestUtils.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerTestUtils.java
@@ -38,9 +38,9 @@
 import java.io.OutputStream;
 
 /** Utilities that come in handy when unit-testing the worker code. */
-class TestUtils {
+public class WorkerTestUtils {
 
-  private TestUtils() {}
+  private WorkerTestUtils() {}
 
   /** A helper method to create a fake Spawn with the given execution info. */
   static Spawn createSpawn(ImmutableMap<String, String> executionInfo) {
@@ -320,4 +320,46 @@
       return 0;
     }
   }
+
+  public static WorkerPool createTestWorkerPool(Worker worker) {
+    return new WorkerPool() {
+      @Override
+      public int getMaxTotalPerKey(WorkerKey key) {
+        return 1;
+      }
+
+      @Override
+      public int getNumActive(WorkerKey key) {
+        return 0;
+      }
+
+      @Override
+      public ImmutableSet<Integer> evictWorkers(ImmutableSet<Integer> workerIdsToEvict)
+          throws InterruptedException {
+        return ImmutableSet.of();
+      }
+
+      @Override
+      public ImmutableSet<Integer> getIdleWorkers() throws InterruptedException {
+        return ImmutableSet.of();
+      }
+
+      @Override
+      public Worker borrowObject(WorkerKey key) throws IOException, InterruptedException {
+        return worker;
+      }
+
+      @Override
+      public void returnObject(WorkerKey key, Worker obj) {}
+
+      @Override
+      public void invalidateObject(WorkerKey key, Worker obj) throws InterruptedException {}
+
+      @Override
+      public void reset() {}
+
+      @Override
+      public void close() {}
+    };
+  }
 }