diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-05-29 15:41:57 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-05-31 14:06:54 +0200 |
commit | 8510958769ec1b569b49e3fcc65e3a45270fcfd9 (patch) | |
tree | b9fab2bf695e7e2a78f4fe98824458ef931b1e99 /jdisc_core/src/test | |
parent | e49c9b55f074577ba6efe985a3940da98511201c (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.java | 79 |
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(); + } + } + +} |