Я звоню в сервис с Javanica. Я хотел бы проверить выключатель. О моих условиях: JBoss, SpringFramework (но не Springboot!). Я уже настроил Javanica, и она работает, проверено простым вызовом методов, где я вынужден отключить автоматический выключатель. Я получаю правильное исключение:
короткое замыкание и отказ при сбое
Я пытаюсь создать тест автоматического выключателя, который даст мне «короткое замыкание и аварийный отказ» точно при вызове 10 методов. Где мне нужно исправить мой тест на мокито?
Я установил circuitBreaker.forceOpen = "true" и высмеиваю мой сервис.
import static org.mockito.Mockito.when;
public class HystrixCircleBreakerTest extends AbstractMockitoTest {
@Bean
private ServiceAdapter serviceAdapter;
@Mock
private Service service;
@Test
public void circuitBreakerTest() {
String errorMsg = "Timeout error";
final RuntimeException timeOutException = new RuntimeException(errorMsg);
when(service.getMediatorForContract(99177661)).then(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
Thread.sleep(1000L);
throw timeOutException;
}
});
Exception circleBreaker = new Exception();
final String errorMsgCircuit = "Hystrix circuit short-circuited and is OPEN";
RuntimeException runtimeException = new RuntimeException(errorMsgCircuit);
for (int t = 0; t <= 10; t++) {
System.out.println("Servicecall: " + t);
try {
serviceAdapter.getMediatorForContract("99177661");
} catch (RuntimeException e) {
System.out.println("Exception: " + e.getMessage());
circleBreaker = e;
}
}
}
}
Текущие результаты:
Servicecall: 0
Exception: Timeout error
Servicecall: 1
Exception: Timeout error
Servicecall: 2
Exception: Timeout error
Servicecall: 3
Exception: Timeout error
Servicecall: 4
Exception: Timeout error
Servicecall: 5
Exception: Timeout error
Servicecall: 6
Exception: Timeout error
Servicecall: 7
Exception: Timeout error
Servicecall: 8
Exception: Timeout error
Servicecall: 9
Exception: Timeout error
Servicecall: 10
Exception: Timeout error
Обычно я должен получать при каждом вызове "короткое замыкание и отказ при сбое"