/** * Tests whether the current time is correctly determined. */ @Test public void testNow() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); final long now = breaker.now(); final long delta = Math.abs(System.nanoTime() - now); assertTrue(String.format("Delta %d ns to current time too large", delta), delta < 100000); }
/** * Tests that the closing interval is the same as the opening interval if it is not * specified. */ @Test public void testDefaultClosingInterval() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS, CLOSING_THRESHOLD); assertEquals("Wrong closing interval", NANO_FACTOR, breaker.getClosingInterval()); }
final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); final ChangeListener listener = new ChangeListener(breaker);
/** * Tests that the closing threshold is the same as the opening threshold if not * specified otherwise. */ @Test public void testDefaultClosingThreshold() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); assertEquals("Wrong closing interval", NANO_FACTOR, breaker.getClosingInterval()); assertEquals("Wrong closing threshold", OPENING_THRESHOLD, breaker.getClosingThreshold()); }
/** * Tests that a circuit breaker is closed after its creation. */ @Test public void testInitiallyClosed() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); assertFalse("Open", breaker.isOpen()); assertTrue("Not closed", breaker.isClosed()); }
/** * Tests that time units are correctly taken into account by constructors. */ @Test public void testIntervalCalculation() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS, CLOSING_THRESHOLD, 2, TimeUnit.MILLISECONDS); assertEquals("Wrong opening interval", NANO_FACTOR, breaker.getOpeningInterval()); assertEquals("Wrong closing interval", 2 * NANO_FACTOR / 1000, breaker.getClosingInterval()); }
/** * Tests whether events are generated when the state is changed. */ @Test public void testChangeEvents() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); final ChangeListener listener = new ChangeListener(breaker); breaker.addChangeListener(listener); breaker.open(); breaker.close(); listener.verify(Boolean.TRUE, Boolean.FALSE); }
/** * Tests whether a change listener can be removed. */ @Test public void testRemoveChangeListener() { final EventCountCircuitBreaker breaker = new EventCountCircuitBreaker(OPENING_THRESHOLD, 1, TimeUnit.SECONDS); final ChangeListener listener = new ChangeListener(breaker); breaker.addChangeListener(listener); breaker.open(); breaker.removeChangeListener(listener); breaker.close(); listener.verify(Boolean.TRUE); }