@Test
public void testTripHard() throws Exception {

    expect(mockCallable.call()).andReturn("hi");
    replay(mockCallable);
    impl.tripHard();
    try {
        impl.invoke(mockCallable);
        fail("exception expected after CircuitBreaker.tripHard()");
    } catch (CircuitBreakerException e) {
    }
    assertEquals(CircuitBreaker.BreakerState.OPEN, impl.state);
    impl.reset();
    impl.invoke(mockCallable);
    assertEquals(CircuitBreaker.BreakerState.CLOSED, impl.state);
    verify(mockCallable);
}