package hudson.node_monitors;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import hudson.slaves.DumbSlave;
import hudson.slaves.SlaveComputer;
import hudson.util.ClockDifference;
import hudson.util.TimeUnit2;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
/**
* @author Richard Mortimer
*/
public class ClockMonitorDescriptorTest {
@Rule
public JenkinsRule jenkins = new JenkinsRule();
/**
* Makes sure that it returns sensible values.
*/
@Test
public void testClockMonitor() throws Exception {
DumbSlave s = jenkins.createOnlineSlave();
SlaveComputer c = s.getComputer();
if(c.isOffline())
fail("Slave failed to go online: "+c.getLog());
ClockDifference cd = ClockMonitor.DESCRIPTOR.monitor(c);
long diff = cd.diff;
assertTrue(diff < TimeUnit2.SECONDS.toMillis(5));
assertTrue(diff > TimeUnit2.SECONDS.toMillis(-5));
assertTrue(cd.abs() >= 0);
assertTrue(cd.abs() < TimeUnit2.SECONDS.toMillis(5));
assertFalse(cd.isDangerous());
assertTrue("html output too short", cd.toHtml().length() > 0);
}
}