package org.apache.zeppelin.notebook.repo.zeppelinhub.websocket;
import static org.junit.Assert.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.ZeppelinhubClient;
import org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.mock.MockEchoWebsocketServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ZeppelinhubClientTest {
private Logger LOG = LoggerFactory.getLogger(ZeppelinClientTest.class);
private final int zeppelinPort = 8090;
private final String validWebsocketUrl = "ws://localhost:" + zeppelinPort + "/ws";
private ExecutorService executor;
private MockEchoWebsocketServer echoServer;
private final String runNotebookMsg =
"{\"op\":\"RUN_NOTEBOOK\"," +
"\"data\":[{\"id\":\"20150112-172845_1301897143\",\"title\":null,\"config\":{},\"params\":{},\"data\":null}," +
"{\"id\":\"20150112-172845_1301897143\",\"title\":null,\"config\":{},\"params\":{},\"data\":null}]," +
"\"meta\":{\"owner\":\"author\",\"instance\":\"my-zepp\",\"noteId\":\"2AB7SY361\"}}";
private final String invalidRunNotebookMsg = "some random string";
@Before
public void setUp() throws Exception {
startWebsocketServer();
}
@After
public void tearDown() throws Exception {
//tear down routine
echoServer.stop();
executor.shutdown();
}
private void startWebsocketServer() throws InterruptedException {
// mock zeppelin websocket server setup
executor = Executors.newFixedThreadPool(1);
echoServer = new MockEchoWebsocketServer(zeppelinPort);
executor.submit(echoServer);
}
@Test
public void zeppelinhubClientSingletonTest() {
ZeppelinhubClient client1 = ZeppelinhubClient.getInstance();
if (client1 == null) {
client1 = ZeppelinhubClient.initialize(validWebsocketUrl, "TOKEN");
}
assertNotNull(client1);
ZeppelinhubClient client2 = ZeppelinhubClient.getInstance();
assertNotNull(client2);
assertEquals(client1, client2);
}
@Test
public void runAllParagraphTest() throws Exception {
Client.initialize(validWebsocketUrl, validWebsocketUrl, "TOKEN", null);
Client.getInstance().start();
ZeppelinhubClient zeppelinhubClient = ZeppelinhubClient.getInstance();
boolean runStatus = zeppelinhubClient.runAllParagraph("2AB7SY361", runNotebookMsg);
assertTrue(runStatus);
runStatus = zeppelinhubClient.runAllParagraph("2AB7SY361", invalidRunNotebookMsg);
assertFalse(runStatus);
Client.getInstance().stop();
}
}