summaryrefslogtreecommitdiffstats
path: root/jdisc_core/src/test
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-06-07 16:13:40 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-06-08 12:50:07 +0200
commiteab973deb3dddf18fd3b806e04313a469c30a77d (patch)
tree8eb389d52e598135583b4171b34f228d79f66946 /jdisc_core/src/test
parent025eae59e89a473dbff75b435df3dc4710b8a789 (diff)
Use a single thread to monitor all deactivated ActiveContainers
Add new watchdog class to combine monitoring and reporting of stale ActiveContainer instances. Introduce a grace period to allow deactivated containers some time to die.
Diffstat (limited to 'jdisc_core/src/test')
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerDeactivationWatchdogTest.java (renamed from jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java)48
1 files changed, 30 insertions, 18 deletions
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerDeactivationWatchdogTest.java
index 0a3482b705a..1a776f59e29 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/statistics/ActiveContainerStatisticsTest.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerDeactivationWatchdogTest.java
@@ -1,48 +1,60 @@
-package com.yahoo.jdisc.statistics;
+package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.ResourceReference;
-import com.yahoo.jdisc.core.ActiveContainer;
+import com.yahoo.jdisc.statistics.ActiveContainerMetrics;
import com.yahoo.jdisc.test.TestDriver;
+import com.yahoo.test.ManualClock;
import org.junit.Test;
+import java.time.Duration;
+import java.time.Instant;
import java.util.Map;
+import java.util.concurrent.Executors;
import static org.junit.Assert.assertEquals;
/**
* @author bjorncs
*/
-public class ActiveContainerStatisticsTest {
+public class ActiveContainerDeactivationWatchdogTest {
@Test
- public void counts_deactivated_activecontainers() {
+ public void watchdog_counts_deactivated_containers() {
TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
- ActiveContainerStatistics stats = new ActiveContainerStatistics();
+ ManualClock clock = new ManualClock(Instant.now());
+ ActiveContainerDeactivationWatchdog watchdog =
+ new ActiveContainerDeactivationWatchdog(clock, Executors.newScheduledThreadPool(1));
MockMetric metric = new MockMetric();
ActiveContainer containerWithoutRetainedResources = new ActiveContainer(driver.newContainerBuilder());
- stats.onActivated(containerWithoutRetainedResources);
- stats.emitMetrics(metric);
+ watchdog.onContainerActivation(containerWithoutRetainedResources);
+ watchdog.emitMetrics(metric);
assertEquals(0, metric.totalCount);
assertEquals(0, metric.withRetainedReferencesCount);
- stats.onDeactivated(containerWithoutRetainedResources);
+ watchdog.onContainerActivation(null);
containerWithoutRetainedResources.release();
- stats.emitMetrics(metric);
+ clock.advance(ActiveContainerDeactivationWatchdog.ACTIVE_CONTAINER_GRACE_PERIOD);
+ watchdog.emitMetrics(metric);
+ assertEquals(0, metric.totalCount);
+ assertEquals(0, metric.withRetainedReferencesCount);
+
+ clock.advance(Duration.ofSeconds(1));
+ watchdog.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);
+ watchdog.onContainerActivation(containerWithRetainedResources);
+ containerWithRetainedResources.release();
+ watchdog.onContainerActivation(null);
+ clock.advance(ActiveContainerDeactivationWatchdog.ACTIVE_CONTAINER_GRACE_PERIOD.plusSeconds(1));
+ watchdog.emitMetrics(metric);
+ assertEquals(2, metric.totalCount);
+ assertEquals(1, metric.withRetainedReferencesCount);
}
}
@@ -54,10 +66,10 @@ public class ActiveContainerStatisticsTest {
@Override
public void set(String key, Number val, Context ctx) {
switch (key) {
- case ActiveContainerStatistics.Metrics.TOTAL_DEACTIVATED_CONTAINERS:
+ case ActiveContainerMetrics.TOTAL_DEACTIVATED_CONTAINERS:
totalCount = val.intValue();
break;
- case ActiveContainerStatistics.Metrics.DEACTIVATED_CONTAINERS_WITH_RETAINED_REFERENCES:
+ case ActiveContainerMetrics.DEACTIVATED_CONTAINERS_WITH_RETAINED_REFERENCES:
withRetainedReferencesCount = val.intValue();
break;
default: