diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java |
Publish
Diffstat (limited to 'jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java')
-rw-r--r-- | jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java new file mode 100644 index 00000000000..da5f046ef1f --- /dev/null +++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java @@ -0,0 +1,98 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.jdisc.application; + +import com.google.inject.Inject; +import com.yahoo.jdisc.service.CurrentContainer; +import com.yahoo.jdisc.test.TestDriver; +import org.junit.Test; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + + +/** + * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a> + */ +public class AbstractApplicationTestCase { + + @Test + public void requireThatContainerApiIsAvailable() { + TestDriver driver = TestDriver.newInjectedApplicationInstance(MyApplication.class); + MyApplication app = (MyApplication)driver.application(); + app.activateContainer(app.newContainerBuilder()); + assertNotNull(app.container()); + assertTrue(driver.close()); + } + + @Test + public void requireThatDestroySignalsTermination() { + TestDriver driver = TestDriver.newInjectedApplicationInstance(MyApplication.class); + MyApplication app = (MyApplication)driver.application(); + assertFalse(app.isTerminated()); + assertTrue(driver.close()); + assertTrue(app.isTerminated()); + } + + @Test + public void requireThatTerminationCanBeWaitedForWithTimeout() throws InterruptedException { + TestDriver driver = TestDriver.newInjectedApplicationInstance(MyApplication.class); + final MyApplication app = (MyApplication)driver.application(); + final CountDownLatch latch = new CountDownLatch(1); + Executors.newSingleThreadExecutor().execute(new Runnable() { + + @Override + public void run() { + try { + app.awaitTermination(600, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + latch.countDown(); + } + }); + assertFalse(latch.await(100, TimeUnit.MILLISECONDS)); + assertTrue(driver.close()); + assertTrue(latch.await(600, TimeUnit.SECONDS)); + } + + @Test + public void requireThatTerminationCanBeWaitedForWithoutTimeout() throws InterruptedException { + TestDriver driver = TestDriver.newInjectedApplicationInstance(MyApplication.class); + final MyApplication app = (MyApplication)driver.application(); + final CountDownLatch latch = new CountDownLatch(1); + Executors.newSingleThreadExecutor().execute(new Runnable() { + + @Override + public void run() { + try { + app.awaitTermination(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + latch.countDown(); + } + }); + assertFalse(latch.await(100, TimeUnit.MILLISECONDS)); + assertTrue(driver.close()); + assertTrue(latch.await(600, TimeUnit.SECONDS)); + } + + private static class MyApplication extends AbstractApplication { + + @Inject + public MyApplication(BundleInstaller bundleInstaller, ContainerActivator activator, + CurrentContainer container) { + super(bundleInstaller, activator, container); + } + + @Override + public void start() { + + } + } +} |