diff --git a/aeron-driver/src/test/java/io/aeron/driver/DriverContextTest.java b/aeron-driver/src/test/java/io/aeron/driver/DriverContextTest.java new file mode 100644 index 0000000000..d8cf23929c --- /dev/null +++ b/aeron-driver/src/test/java/io/aeron/driver/DriverContextTest.java @@ -0,0 +1,27 @@ +package io.aeron.driver; + +import io.aeron.driver.exceptions.ActiveDriverException; +import io.aeron.exceptions.ConcurrentConcludeException; +import org.junit.Test; + +import static org.junit.Assert.fail; + +public class DriverContextTest +{ + @Test + public void shouldPreventCreatingMultipleDriversWithTheSameContext() + { + final MediaDriver.Context ctx = new MediaDriver.Context(); + + try ( + MediaDriver mediaDriver1 = MediaDriver.launchEmbedded(ctx); + MediaDriver mediaDriver2 = MediaDriver.launchEmbedded(ctx)) + { + fail("Exception should be thrown for reuse of the MediaDriver.Context instance"); + } + catch (final ActiveDriverException | ConcurrentConcludeException e) + { + // Expected + } + } +} diff --git a/aeron-system-tests/src/test/java/io/aeron/ClientContextTest.java b/aeron-system-tests/src/test/java/io/aeron/ClientContextTest.java new file mode 100644 index 0000000000..1a733d3e62 --- /dev/null +++ b/aeron-system-tests/src/test/java/io/aeron/ClientContextTest.java @@ -0,0 +1,25 @@ +package io.aeron; + +import io.aeron.driver.MediaDriver; +import io.aeron.exceptions.ConcurrentConcludeException; +import org.junit.Test; + +public class ClientContextTest +{ + @Test(expected = ConcurrentConcludeException.class) + public void shouldPreventCreatingMultipleClientsWithTheSameContext() + { + try (MediaDriver mediaDriver = MediaDriver.launchEmbedded()) + { + final Aeron.Context ctx = new Aeron.Context() + .aeronDirectoryName(mediaDriver.aeronDirectoryName()); + + //noinspection EmptyTryBlock + try ( + Aeron aeron1 = Aeron.connect(ctx); + Aeron aeron2 = Aeron.connect(ctx)) + { + } + } + } +}