package io.vertx.ext.unit; import io.vertx.core.Vertx; import io.vertx.ext.unit.impl.TestSuiteImpl; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import static org.junit.Assert.*; /** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ public class TestSuiteUseContextualEventLoopTest extends TestSuiteTestBase { private Vertx vertx; public TestSuiteUseContextualEventLoopTest() { super(); getRunner = TestSuiteImpl::runner; run = (runner) -> { assertNull(Vertx.currentContext()); vertx.runOnContext(v -> runner.setUseEventLoop(true).run()); }; operateOnAsync = (async, action) -> { CountDownLatch latch = new CountDownLatch(1); assertNull(Vertx.currentContext()); vertx.runOnContext(v -> { action.accept(async); latch.countDown(); }); try { latch.await(10, TimeUnit.SECONDS); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }; } @Override protected boolean checkTest(TestContext test) { return Vertx.currentContext() != null; } @Before public void setUp() { vertx = Vertx.vertx(); } @After public void tearDown() throws Exception { CountDownLatch latch = new CountDownLatch(1); if (vertx != null) { vertx.close(ar -> { latch.countDown(); }); vertx = null; latch.await(); } } }