/* * Copyright 2014, The Sporting Exchange Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.betfair.cougar.util.monitors; import com.betfair.tornjak.monitor.Monitor; import com.betfair.tornjak.monitor.MonitorRegistry; import com.betfair.tornjak.monitor.Status; import org.junit.Test; import org.mockito.ArgumentCaptor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.*; public class SimpleHealthMonitorTest { @Test public void testLoad() { TestingComponent component = new TestingComponent(); final MonitorRegistry registry = mock(MonitorRegistry.class); SimpleHealthMonitor monitor = new SimpleHealthMonitor("blah", component, registry, Status.FAIL); ArgumentCaptor<Monitor> captor = ArgumentCaptor.forClass(Monitor.class); verify(registry, times(1)).addMonitor(captor.capture()); assertSame(monitor, captor.getValue()); assertEquals("blah",monitor.getName()); //-- and we should pass back health statii correctly component.healthy = false; assertEquals(Status.FAIL, monitor.getStatus()); component.healthy = true; assertEquals(Status.OK, monitor.getStatus()); component.healthy = false; // and back again assertEquals(Status.FAIL, monitor.getStatus()); } @Test public void testFailState() { TestingComponent component = new TestingComponent(); final MonitorRegistry registry = mock(MonitorRegistry.class); SimpleHealthMonitor monitor = new SimpleHealthMonitor("blah", component, registry, Status.WARN); ArgumentCaptor<Monitor> captor = ArgumentCaptor.forClass(Monitor.class); verify(registry, times(1)).addMonitor(captor.capture()); assertSame(monitor, captor.getValue()); assertEquals("blah",monitor.getName()); //-- and we should pass back health statii correctly component.healthy = false; assertEquals(Status.WARN, monitor.getStatus()); component.healthy = true; assertEquals(Status.OK, monitor.getStatus()); component.healthy = false; // and back again assertEquals(Status.WARN, monitor.getStatus()); } private class TestingComponent implements HealthAware { boolean healthy; @Override public boolean isHealthy() { return healthy; } } }