//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.core.web.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.verify;
import java.io.IOException;
import java.util.Optional;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import uk.gov.dstl.baleen.core.manager.BaleenManager;
import uk.gov.dstl.baleen.core.manager.BaleenManager.BaleenManagerListener;
import uk.gov.dstl.baleen.testing.servlets.ServletCaller;
import uk.gov.dstl.baleen.testing.servlets.WebApiTestServer;
/**
* Tests for {@link BaleenManagerServlet}.
*
*
*
*/
@RunWith(MockitoJUnitRunner.Silent.class)
public class BaleenManagerServletTest {
@Mock
BaleenManager manager;
@Test
public void testPost() throws Exception {
ServletCaller caller = new ServletCaller();
caller.setRequestUri("/stop");
caller.doPost(new BaleenManagerServlet(manager));
verify(manager).stop();
}
@Test
public void testUnsupported() throws Exception {
ServletCaller caller = new ServletCaller();
caller.setRequestUri("/error");
caller.doPost(new BaleenManagerServlet(manager));
assertEquals(400, (int) caller.getSentError());
}
/**
* WARNING: This might pause forever it it (totally) fails!
*
*/
@Test
public void testIntegration() {
new BaleenManager(Optional.empty()).run(new BaleenManagerListener() {
@Override
public void onStarted(BaleenManager manager) {
try {
WebApiTestServer.getBodyForPost(null, null, "/manager/stop");
} catch (IOException e) {
fail("Couldn't request stop");
}
int count = 0;
while (!manager.isStopping()) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// Do nothing
}
if (count++ == 5) {
manager.stop();
fail("Was not stopped after 5 seconds");
}
}
}
});
}
}