use of com.netflix.discovery.EurekaClient in project ribbon by Netflix.
the class EurekaNotificationServerListUpdaterTest method testSubmitExceptionClearQueued.
@Test
public void testSubmitExceptionClearQueued() {
ThreadPoolExecutor executorMock = EasyMock.createMock(ThreadPoolExecutor.class);
EasyMock.expect(executorMock.submit(EasyMock.isA(Runnable.class))).andThrow(new RejectedExecutionException("test exception"));
EasyMock.expect(executorMock.isShutdown()).andReturn(Boolean.FALSE);
EurekaNotificationServerListUpdater serverListUpdater = new EurekaNotificationServerListUpdater(new Provider<EurekaClient>() {
@Override
public EurekaClient get() {
return eurekaClientMock;
}
}, executorMock);
try {
Capture<EurekaEventListener> eventListenerCapture = new Capture<EurekaEventListener>();
eurekaClientMock.registerEventListener(EasyMock.capture(eventListenerCapture));
EasyMock.replay(eurekaClientMock);
EasyMock.replay(executorMock);
serverListUpdater.start(new ServerListUpdater.UpdateAction() {
@Override
public void doUpdate() {
Assert.fail("should not reach here");
}
});
eventListenerCapture.getValue().onEvent(new CacheRefreshedEvent());
Assert.assertFalse(serverListUpdater.updateQueued.get());
} finally {
serverListUpdater.stop();
EasyMock.verify(executorMock);
EasyMock.verify(eurekaClientMock);
}
}
use of com.netflix.discovery.EurekaClient in project ribbon by Netflix.
the class EurekaNotificationServerListUpdaterTest method testEurekaClientUnregister.
@Test
public void testEurekaClientUnregister() {
ThreadPoolExecutor executorMock = EasyMock.createMock(ThreadPoolExecutor.class);
EasyMock.expect(executorMock.isShutdown()).andReturn(Boolean.TRUE);
EurekaNotificationServerListUpdater serverListUpdater = new EurekaNotificationServerListUpdater(new Provider<EurekaClient>() {
@Override
public EurekaClient get() {
return eurekaClientMock;
}
}, executorMock);
try {
Capture<EurekaEventListener> registeredListener = new Capture<EurekaEventListener>();
eurekaClientMock.registerEventListener(EasyMock.capture(registeredListener));
EasyMock.replay(eurekaClientMock);
EasyMock.replay(executorMock);
serverListUpdater.start(new ServerListUpdater.UpdateAction() {
@Override
public void doUpdate() {
Assert.fail("should not reach here");
}
});
registeredListener.getValue().onEvent(new CacheRefreshedEvent());
} finally {
EasyMock.verify(executorMock);
EasyMock.verify(eurekaClientMock);
}
}
use of com.netflix.discovery.EurekaClient in project ribbon by Netflix.
the class EurekaNotificationServerListUpdaterTest method testUpdating.
@Test
public void testUpdating() throws Exception {
EurekaNotificationServerListUpdater serverListUpdater = new EurekaNotificationServerListUpdater(new Provider<EurekaClient>() {
@Override
public EurekaClient get() {
return eurekaClientMock;
}
}, testExecutor);
try {
Capture<EurekaEventListener> eventListenerCapture = new Capture<EurekaEventListener>();
eurekaClientMock.registerEventListener(EasyMock.capture(eventListenerCapture));
EasyMock.replay(eurekaClientMock);
final AtomicBoolean firstTime = new AtomicBoolean(false);
final CountDownLatch firstLatch = new CountDownLatch(1);
final CountDownLatch secondLatch = new CountDownLatch(1);
serverListUpdater.start(new ServerListUpdater.UpdateAction() {
@Override
public void doUpdate() {
if (firstTime.compareAndSet(false, true)) {
firstLatch.countDown();
} else {
secondLatch.countDown();
}
}
});
eventListenerCapture.getValue().onEvent(new CacheRefreshedEvent());
Assert.assertTrue(firstLatch.await(2, TimeUnit.SECONDS));
// wait a bit for the updateQueued flag to be reset
for (int i = 1; i < 10; i++) {
if (serverListUpdater.updateQueued.get()) {
Thread.sleep(i * 100);
} else {
break;
}
}
eventListenerCapture.getValue().onEvent(new CacheRefreshedEvent());
Assert.assertTrue(secondLatch.await(2, TimeUnit.SECONDS));
} finally {
serverListUpdater.stop();
EasyMock.verify(eurekaClientMock);
}
}
use of com.netflix.discovery.EurekaClient in project ribbon by Netflix.
the class EurekaNotificationServerListUpdaterTest method testStopWithCommonExecutor.
@Test
public void testStopWithCommonExecutor() throws Exception {
EurekaNotificationServerListUpdater serverListUpdater1 = new EurekaNotificationServerListUpdater(new Provider<EurekaClient>() {
@Override
public EurekaClient get() {
return eurekaClientMock;
}
}, testExecutor);
EurekaNotificationServerListUpdater serverListUpdater2 = new EurekaNotificationServerListUpdater(new Provider<EurekaClient>() {
@Override
public EurekaClient get() {
return eurekaClientMock2;
}
}, testExecutor);
Capture<EurekaEventListener> eventListenerCapture = new Capture<EurekaEventListener>();
eurekaClientMock.registerEventListener(EasyMock.capture(eventListenerCapture));
Capture<EurekaEventListener> eventListenerCapture2 = new Capture<EurekaEventListener>();
eurekaClientMock2.registerEventListener(EasyMock.capture(eventListenerCapture2));
EasyMock.replay(eurekaClientMock);
EasyMock.replay(eurekaClientMock2);
final CountDownLatch updateCountLatch = new CountDownLatch(2);
serverListUpdater1.start(new ServerListUpdater.UpdateAction() {
@Override
public void doUpdate() {
updateCountLatch.countDown();
}
});
serverListUpdater2.start(new ServerListUpdater.UpdateAction() {
@Override
public void doUpdate() {
updateCountLatch.countDown();
}
});
eventListenerCapture.getValue().onEvent(new CacheRefreshedEvent());
eventListenerCapture2.getValue().onEvent(new CacheRefreshedEvent());
// latch is for both
Assert.assertTrue(updateCountLatch.await(2, TimeUnit.SECONDS));
serverListUpdater1.stop();
serverListUpdater2.stop();
EasyMock.verify(eurekaClientMock);
EasyMock.verify(eurekaClientMock2);
}
use of com.netflix.discovery.EurekaClient in project ribbon by Netflix.
the class EurekaNotificationServerListUpdaterTest method setUpEurekaClientMock.
private EurekaClient setUpEurekaClientMock() {
final EurekaClient eurekaClientMock = EasyMock.createMock(EurekaClient.class);
EasyMock.expect(eurekaClientMock.unregisterEventListener(EasyMock.isA(EurekaEventListener.class))).andReturn(true).times(1);
return eurekaClientMock;
}
Aggregations