diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackManagerTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackManagerTest.java new file mode 100644 index 0000000000..f552a4a82a --- /dev/null +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/snapshot/push/PostbackManagerTest.java @@ -0,0 +1,41 @@ +package uk.ac.ic.wlgitbridge.snapshot.push; + +import org.junit.Assert; +import org.junit.Test; +import uk.ac.ic.wlgitbridge.snapshot.push.exception.InternalErrorException; +import uk.ac.ic.wlgitbridge.snapshot.push.exception.SnapshotPostException; +import uk.ac.ic.wlgitbridge.snapshot.push.exception.UnexpectedPostbackException; + +/** + * Created by winston on 05/04/2016. + */ +public class PostbackManagerTest { + + private final PostbackManager postbackManager = new PostbackManager(); + + @Test + public void testRaceWithVersionId() + throws UnexpectedPostbackException, + SnapshotPostException { + String key = postbackManager.makeKeyForProject("proj"); + postbackManager.postVersionIDForProject("proj", 1, key); + int versionId = postbackManager.waitForVersionIdOrThrow("proj"); + Assert.assertEquals("Version id didn't match posted", 1, versionId); + } + + @Test + public void testRaceWithException() throws UnexpectedPostbackException, + SnapshotPostException { + String key = postbackManager.makeKeyForProject("proj"); + InternalErrorException ex = new InternalErrorException(); + postbackManager.postExceptionForProject("proj", ex, key); + try { + postbackManager.waitForVersionIdOrThrow("proj"); + } catch (InternalErrorException e) { + Assert.assertSame("Wrong exception was thrown", ex, e); + return; + } + Assert.fail("Exception wasn't thrown as required"); + } + +}