From f65b6ece5d6c10c547190337d8e3f73d11b165f9 Mon Sep 17 00:00:00 2001 From: Lai Jiang Date: Wed, 18 Jan 2023 12:04:47 -0500 Subject: [PATCH] Fix flaky tests with TaskQueueExtension (#1909) The temporary queue.xml file is not deleted in the afterEach() method, likely causing some flaky tests that we saw due to overwriting of the file by concurrent tests. --- .../registry/testing/TaskQueueExtension.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/core/src/test/java/google/registry/testing/TaskQueueExtension.java b/core/src/test/java/google/registry/testing/TaskQueueExtension.java index 5dd81dd76..5da9d67e3 100644 --- a/core/src/test/java/google/registry/testing/TaskQueueExtension.java +++ b/core/src/test/java/google/registry/testing/TaskQueueExtension.java @@ -22,7 +22,8 @@ import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.google.appengine.tools.development.testing.LocalTaskQueueTestConfig; import com.google.apphosting.api.ApiProxy; import google.registry.model.annotations.DeleteAfterMigration; -import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; @@ -39,26 +40,22 @@ public final class TaskQueueExtension implements BeforeEachCallback, AfterEachCa readResourceUtf8("google/registry/env/common/default/WEB-INF/queue.xml"); private LocalServiceTestHelper helper; - private String taskQueueXml; - private File tmpDir; - - public TaskQueueExtension() { - this.taskQueueXml = QUEUE_XML; - } + private Path queueFile; @Override public void beforeEach(ExtensionContext context) throws Exception { - File queueFile = new File(tmpDir, "queue.xml"); - asCharSink(queueFile, UTF_8).write(taskQueueXml); + queueFile = Files.createTempFile("queue", ".xml"); + asCharSink(queueFile.toFile(), UTF_8).write(QUEUE_XML); helper = new LocalServiceTestHelper( - new LocalTaskQueueTestConfig().setQueueXmlPath(queueFile.getAbsolutePath())); + new LocalTaskQueueTestConfig().setQueueXmlPath(queueFile.toAbsolutePath().toString())); helper.setUp(); } @Override public void afterEach(ExtensionContext context) throws Exception { helper.tearDown(); + Files.delete(queueFile); ApiProxy.setEnvironmentForCurrentThread(null); } }