summaryrefslogtreecommitdiffstats
path: root/jdisc_core/src/test
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-29 15:41:57 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-31 14:06:54 +0200
commit8510958769ec1b569b49e3fcc65e3a45270fcfd9 (patch)
treeb9fab2bf695e7e2a78f4fe98824458ef931b1e99 /jdisc_core/src/test
parente49c9b55f074577ba6efe985a3940da98511201c (diff)
Track stale ActiveContainer instances
Diffstat (limited to 'jdisc_core/src/test')
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java b/jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java
new file mode 100644
index 00000000000..0a3482b705a
--- /dev/null
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java
@@ -0,0 +1,79 @@
+package com.yahoo.jdisc.statistics;
+
+import com.yahoo.jdisc.Metric;
+import com.yahoo.jdisc.ResourceReference;
+import com.yahoo.jdisc.core.ActiveContainer;
+import com.yahoo.jdisc.test.TestDriver;
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author bjorncs
+ */
+public class ActiveContainerStatisticsTest {
+
+ @Test
+ public void counts_deactivated_activecontainers() {
+ TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
+ ActiveContainerStatistics stats = new ActiveContainerStatistics();
+ MockMetric metric = new MockMetric();
+
+ ActiveContainer containerWithoutRetainedResources = new ActiveContainer(driver.newContainerBuilder());
+
+ stats.onActivated(containerWithoutRetainedResources);
+ stats.emitMetrics(metric);
+ assertEquals(0, metric.totalCount);
+ assertEquals(0, metric.withRetainedReferencesCount);
+
+ stats.onDeactivated(containerWithoutRetainedResources);
+ containerWithoutRetainedResources.release();
+ stats.emitMetrics(metric);
+ assertEquals(1, metric.totalCount);
+ assertEquals(0, metric.withRetainedReferencesCount);
+
+ ActiveContainer containerWithRetainedResources = new ActiveContainer(driver.newContainerBuilder());
+
+ try (ResourceReference ignoredRef = containerWithRetainedResources.refer()) {
+ stats.onActivated(containerWithRetainedResources);
+ stats.onDeactivated(containerWithRetainedResources);
+ containerWithRetainedResources.release();
+ stats.emitMetrics(metric);
+ assertEquals(2, metric.totalCount);
+ assertEquals(1, metric.withRetainedReferencesCount);
+ }
+
+ }
+
+ private static class MockMetric implements Metric {
+ public int totalCount;
+ public int withRetainedReferencesCount;
+
+ @Override
+ public void set(String key, Number val, Context ctx) {
+ switch (key) {
+ case ActiveContainerStatistics.Metrics.TOTAL_DEACTIVATED_CONTAINERS:
+ totalCount = val.intValue();
+ break;
+ case ActiveContainerStatistics.Metrics.DEACTIVATED_CONTAINERS_WITH_RETAINED_REFERENCES:
+ withRetainedReferencesCount = val.intValue();
+ break;
+ default:
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ @Override
+ public void add(String key, Number val, Context ctx) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Context createContext(Map<String, ?> properties) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+}