summaryrefslogtreecommitdiffstats
path: root/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
Publish
Diffstat (limited to 'jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java')
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
new file mode 100644
index 00000000000..bc2591d94b0
--- /dev/null
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
@@ -0,0 +1,76 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.core;
+
+import com.yahoo.jdisc.application.ContainerBuilder;
+import com.yahoo.jdisc.application.DeactivatedContainer;
+import com.yahoo.jdisc.test.TestDriver;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ */
+public class ContainerTerminationTestCase {
+
+ @Test
+ public void requireThatAccessorsWork() {
+ Object obj = new Object();
+ ContainerTermination termination = new ContainerTermination(obj);
+ assertSame(obj, termination.appContext());
+ }
+
+ @Test
+ public void requireThatAppContextIsFromBuilder() {
+ TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
+ ContainerBuilder builder = driver.newContainerBuilder();
+ Object obj = new Object();
+ builder.setAppContext(obj);
+ driver.activateContainer(builder);
+ DeactivatedContainer container = driver.activateContainer(null);
+ assertSame(obj, container.appContext());
+ assertTrue(driver.close());
+ }
+
+ @Test
+ public void requireThatEarlyTerminationIsNotified() {
+ ContainerTermination termination = new ContainerTermination(null);
+ termination.run();
+ MyTask task = new MyTask();
+ termination.notifyTermination(task);
+ assertTrue(task.done);
+ }
+
+ @Test
+ public void requireThatLaterTerminationIsNotified() {
+ ContainerTermination termination = new ContainerTermination(null);
+ MyTask task = new MyTask();
+ termination.notifyTermination(task);
+ assertFalse(task.done);
+ termination.run();
+ assertTrue(task.done);
+ }
+
+ @Test
+ public void requireThatNotifyCanOnlyBeCalledOnce() {
+ ContainerTermination termination = new ContainerTermination(null);
+ termination.notifyTermination(new MyTask());
+ try {
+ termination.notifyTermination(new MyTask());
+ } catch (IllegalStateException e) {
+
+ }
+ }
+
+ private static class MyTask implements Runnable {
+
+ boolean done = false;
+
+ @Override
+ public void run() {
+ done = true;
+ }
+ }
+}