From 3619bad3d734b9af9074823309c32321992dc43d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Wed, 16 Jul 2014 18:03:59 +0200 Subject: [PATCH] Fix cleanup after tests Some tests left over cloned Git repositories in the file system. Now all temporary folders created are cleaned up in the AbstractDaemonTest. Change-Id: I13a376784066f767f6fd792f908f8a09d6c0307e --- .../gerrit/acceptance/AbstractDaemonTest.java | 1 + .../google/gerrit/acceptance/GerritServer.java | 9 ++------- .../google/gerrit/acceptance/TempFileUtil.java | 16 ++++++++++++++-- .../google/gerrit/acceptance/pgm/ReindexIT.java | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java index fc55411cb3..2b01a22a9b 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java @@ -146,6 +146,7 @@ public abstract class AbstractDaemonTest { db.close(); sshSession.close(); server.stop(); + TempFileUtil.cleanup(); } protected PushOneCommit.Result createChange() throws GitAPIException, diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java index 34c5dd41f6..85da2f5aac 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java @@ -98,7 +98,7 @@ public class GerritServer { } Injector i = createTestInjector(daemon); - return new GerritServer(site, i, daemon, daemonService); + return new GerritServer(i, daemon, daemonService); } private static File initSite(Config base) throws Exception { @@ -160,7 +160,6 @@ public class GerritServer { return InetAddress.getLoopbackAddress(); } - private File sitePath; private Daemon daemon; private ExecutorService daemonService; private Injector testInjector; @@ -168,9 +167,8 @@ public class GerritServer { private InetSocketAddress sshdAddress; private InetSocketAddress httpAddress; - private GerritServer(File sitePath, Injector testInjector, Daemon daemon, + private GerritServer(Injector testInjector, Daemon daemon, ExecutorService daemonService) throws IOException, ConfigInvalidException { - this.sitePath = sitePath; this.testInjector = testInjector; this.daemon = daemon; this.daemonService = daemonService; @@ -209,9 +207,6 @@ public class GerritServer { daemonService.shutdownNow(); daemonService.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS); } - if (sitePath != null) { - TempFileUtil.recursivelyDelete(sitePath); - } RepositoryCache.clear(); } } diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/TempFileUtil.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/TempFileUtil.java index ff0ca7b6a8..fb44d83db8 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/TempFileUtil.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/TempFileUtil.java @@ -16,17 +16,29 @@ package com.google.gerrit.acceptance; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; public class TempFileUtil { - public static File createTempDirectory() throws IOException { + private static List allDirsCreated = new ArrayList<>(); + + public synchronized static File createTempDirectory() throws IOException { File tmp = File.createTempFile("gerrit_test_", ""); if (!tmp.delete() || !tmp.mkdir()) { throw new IOException("Cannot create " + tmp.getPath()); } + allDirsCreated.add(tmp); return tmp; } - public static void recursivelyDelete(File dir) throws IOException { + public static synchronized void cleanup() throws IOException { + for (File dir : allDirsCreated) { + recursivelyDelete(dir); + } + allDirsCreated.clear(); + } + + private static void recursivelyDelete(File dir) throws IOException { if (!dir.getPath().equals(dir.getCanonicalPath())) { // Directory symlink reaching outside of temporary space. return; diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java index 5778b19929..4f9ef14ab2 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java @@ -36,7 +36,7 @@ public class ReindexIT { @After public void destroySite() throws Exception { if (sitePath != null) { - TempFileUtil.recursivelyDelete(sitePath); + TempFileUtil.cleanup(); } }