package io.pcp.parfait;
import static org.junit.Assert.assertEquals;
import static tec.uom.se.AbstractUnit.ONE;
import org.junit.Test;
import com.google.common.base.Supplier;
public class PollingMonitoredValueTest {
@Test
public void shouldScheduleTaskAtDesiredRate() {
TestPoller poller = new TestPoller();
ManualScheduler scheduler = new ManualScheduler();
new PollingMonitoredValue<Integer>("polling.test", "",
new MonitorableRegistry(), 275, poller,
ValueSemantics.FREE_RUNNING, ONE, scheduler);
assertEquals(1, scheduler.scheduledRates.size());
assertEquals(275, scheduler.scheduledRates.values().iterator().next()
.intValue());
}
@Test
public void scheduledTaskExecutionShouldUpdateValue()
throws InterruptedException {
TestPoller poller = new TestPoller();
MonitorableRegistry registry = new MonitorableRegistry();
ManualScheduler scheduler = new ManualScheduler();
PollingMonitoredValue<Integer> p = new PollingMonitoredValue<Integer>(
"polling.test", "", registry, 275,
poller, ValueSemantics.FREE_RUNNING, ONE, scheduler);
poller.value = 17;
assertEquals(0, p.get().intValue());
scheduler.runAllScheduledTasks();
assertEquals(17, p.get().intValue());
}
private final class TestPoller implements Supplier<Integer> {
private int value = 0;
public Integer get() {
return value;
}
}
}