package net.pterodactylus.tbgof.core;
-import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.Service.Listener;
*/
public class CoreTest {
- private final Core core = new Core();
- private final AtomicBoolean started = new AtomicBoolean();
- private final AtomicBoolean stopped = new AtomicBoolean();
-
- @Before
- public void setupCoreListener() {
- core.addListener(new Listener() {
- @Override
- public void running() {
- started.set(true);
- }
-
- @Override
- public void terminated(State from) {
- stopped.set(true);
- }
- }, MoreExecutors.directExecutor());
- }
-
- @Test
- public void coreCanStartUp() {
- core.startAsync().awaitRunning();
- MatcherAssert.assertThat(started.get(), Matchers.is(true));
- }
-
- @Test
- public void coreCanShutDown() {
- core.startAsync().awaitRunning();
- core.stopAsync().awaitTerminated();
- MatcherAssert.assertThat(stopped.get(), Matchers.is(true));
- }
+ private final Core core = new Core();
+ private final CountDownLatch started = new CountDownLatch(1);
+ private final CountDownLatch stopped = new CountDownLatch(1);
+
+ @Before
+ public void setupCoreListener() {
+ core.addListener(new Listener() {
+ @Override
+ public void running() {
+ started.countDown();
+ }
+
+ @Override
+ public void terminated(State from) {
+ stopped.countDown();
+ }
+ }, MoreExecutors.directExecutor());
+ }
+
+ @Test
+ public void coreCanStartUp() throws InterruptedException {
+ core.startAsync().awaitRunning();
+ MatcherAssert.assertThat(started.await(1, TimeUnit.SECONDS), Matchers.is(true));
+ }
+
+ @Test
+ public void coreCanShutDown() throws InterruptedException {
+ core.startAsync().awaitRunning();
+ core.stopAsync().awaitTerminated();
+ MatcherAssert.assertThat(stopped.await(1, TimeUnit.SECONDS), Matchers.is(true));
+ }
}