From 9a0f18e516b31469003f932c0dd8e8832aab0829 Mon Sep 17 00:00:00 2001 From: Winston Li Date: Mon, 19 Sep 2016 09:34:45 +0100 Subject: [PATCH 1/3] Increase postback timeout to 60s --- .../uk/ac/ic/wlgitbridge/snapshot/push/PostbackPromise.java | 2 +- .../snapshot/push/exception/PostbackTimeoutException.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackPromise.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackPromise.java index 185f627004..1b4475dc51 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackPromise.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackPromise.java @@ -35,7 +35,7 @@ public class PostbackPromise { try { while (!received) { try { - if (!cond.await(30, TimeUnit.SECONDS)) { + if (!cond.await(60, TimeUnit.SECONDS)) { throw new PostbackTimeoutException(); } } catch (InterruptedException e) { diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/exception/PostbackTimeoutException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/exception/PostbackTimeoutException.java index b230971b8f..19329d7bb4 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/exception/PostbackTimeoutException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/push/exception/PostbackTimeoutException.java @@ -13,7 +13,7 @@ public class PostbackTimeoutException extends SevereSnapshotPostException { @Override public String getMessage() { - return "timeout"; + return "timeout (60s)"; } @Override From fe058e8695948f2e8bc24aab23b52b9cfb87435a Mon Sep 17 00:00:00 2001 From: Winston Li Date: Mon, 19 Sep 2016 10:01:07 +0100 Subject: [PATCH 2/3] Use df equivalent as default for calculating used space --- .../bridge/repo/FSGitRepoStore.java | 9 ++++- .../bridge/repo/FSGitRepoStoreTest.java | 38 ++++++++++++------- .../bridge/swap/job/SwapJobImplTest.java | 4 +- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStore.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStore.java index 3635fa1836..d5dc14094e 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStore.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStore.java @@ -12,6 +12,7 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.function.Function; import static uk.ac.ic.wlgitbridge.util.Util.deleteInDirectoryApartFrom; @@ -22,10 +23,16 @@ public class FSGitRepoStore implements RepoStore { private final String repoStorePath; private final File rootDirectory; + private final Function fsSizer; public FSGitRepoStore(String repoStorePath) { + this(repoStorePath, d -> d.getTotalSpace() - d.getFreeSpace()); + } + + public FSGitRepoStore(String repoStorePath, Function fsSizer) { this.repoStorePath = repoStorePath; rootDirectory = initRootGitDirectory(repoStorePath); + this.fsSizer = fsSizer; } @Override @@ -54,7 +61,7 @@ public class FSGitRepoStore implements RepoStore { @Override public long totalSize() { - return FileUtils.sizeOfDirectory(rootDirectory); + return fsSizer.apply(rootDirectory); } @Override diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java index 4924ce6da5..8c13f8c199 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java @@ -1,20 +1,17 @@ package uk.ac.ic.wlgitbridge.bridge.repo; import org.apache.commons.io.FileUtils; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.rules.TemporaryFolder; import uk.ac.ic.wlgitbridge.util.Files; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; /** * Created by winston on 23/08/2016. @@ -52,16 +49,29 @@ public class FSGitRepoStoreTest { public void testPurgeNonexistentProjects() { File toDelete = new File(repoStore.getRootDirectory(), "idontexist"); File wlgb = new File(repoStore.getRootDirectory(), ".wlgb"); - Assert.assertTrue(toDelete.exists()); - Assert.assertTrue(wlgb.exists()); + assertTrue(toDelete.exists()); + assertTrue(wlgb.exists()); repoStore.purgeNonexistentProjects(Arrays.asList("proj1", "proj2")); - Assert.assertFalse(toDelete.exists()); - Assert.assertTrue(wlgb.exists()); + assertFalse(toDelete.exists()); + assertTrue(wlgb.exists()); } @Test - public void testTotalSize() { - assertEquals(31860, repoStore.totalSize()); + public void totalSizeShouldChangeWhenFilesAreCreatedAndDeleted() + throws IOException { + long old = repoStore.totalSize(); + repoStore.remove("proj1"); + long new_ = repoStore.totalSize(); + assertTrue(new_ < old); + try ( + OutputStream out = new FileOutputStream( + new File(repoStore.getRootDirectory(), "__temp.txt") + ) + ) { + out.write(new byte[1 * 1024 * 1024]); + } + long new__ = repoStore.totalSize(); + assertTrue(new__ > new_); } @Test @@ -69,10 +79,10 @@ public class FSGitRepoStoreTest { long beforeSize = repoStore.totalSize(); InputStream zipped = repoStore.bzip2Project("proj1"); repoStore.remove("proj1"); - Assert.assertTrue(beforeSize > repoStore.totalSize()); + assertTrue(beforeSize > repoStore.totalSize()); repoStore.unbzip2Project("proj1", zipped); - Assert.assertEquals(beforeSize, repoStore.totalSize()); - Assert.assertTrue( + assertEquals(beforeSize, repoStore.totalSize()); + assertTrue( Files.contentsAreEqual( original, repoStore.getRootDirectory() diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobImplTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobImplTest.java index c2359766bb..7f4fc3f284 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobImplTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobImplTest.java @@ -1,5 +1,6 @@ package uk.ac.ic.wlgitbridge.bridge.swap.job; +import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -43,7 +44,8 @@ public class SwapJobImplTest { FSGitRepoStoreTest.makeTempRepoDir( tmpFolder, "repostore" - ).getAbsolutePath() + ).getAbsolutePath(), + FileUtils::sizeOfDirectory ); dbStore = new SqliteDBStore(tmpFolder.newFile()); dbStore.setLatestVersionForProject("proj1", 0); From a8bad0539ccc6f7c6799785510e77c058fe444ef Mon Sep 17 00:00:00 2001 From: Winston Li Date: Mon, 19 Sep 2016 10:07:46 +0100 Subject: [PATCH 3/3] Create/delete larger files in df test --- .../wlgitbridge/bridge/repo/FSGitRepoStoreTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java index 8c13f8c199..8d03201516 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/repo/FSGitRepoStoreTest.java @@ -60,18 +60,19 @@ public class FSGitRepoStoreTest { public void totalSizeShouldChangeWhenFilesAreCreatedAndDeleted() throws IOException { long old = repoStore.totalSize(); - repoStore.remove("proj1"); - long new_ = repoStore.totalSize(); - assertTrue(new_ < old); + File temp = new File(repoStore.getRootDirectory(), "__temp.txt"); try ( OutputStream out = new FileOutputStream( - new File(repoStore.getRootDirectory(), "__temp.txt") + temp ) ) { - out.write(new byte[1 * 1024 * 1024]); + out.write(new byte[16 * 1024 * 1024]); } + long new_ = repoStore.totalSize(); + assertTrue(new_ > old); + assertTrue(temp.delete()); long new__ = repoStore.totalSize(); - assertTrue(new__ > new_); + assertTrue(new__ < new_); } @Test