use of org.apache.zeppelin.common.Message in project zeppelin by apache.
the class NotebookServerTest method testLoadAngularObjectFromNote.
@Test
public void testLoadAngularObjectFromNote() throws IOException, InterruptedException {
// create a notebook
String note1Id = null;
try {
note1Id = notebook.createNote("note1", anonymous);
// get reference to interpreterGroup
InterpreterGroup interpreterGroup = null;
List<InterpreterSetting> settings = notebook.getInterpreterSettingManager().get();
for (InterpreterSetting setting : settings) {
if (setting.getName().equals("angular")) {
interpreterGroup = setting.getOrCreateInterpreterGroup("anonymous", note1Id);
break;
}
}
String p1Id = notebook.processNote(note1Id, note1 -> {
// start interpreter process
Paragraph p1 = note1.addNewParagraph(AuthenticationInfo.ANONYMOUS);
p1.setText("%angular <h2>Bind here : {{COMMAND_TYPE}}</h2>");
p1.setAuthenticationInfo(anonymous);
note1.run(p1.getId());
return p1.getId();
});
// wait for paragraph finished
Status status = notebook.processNote(note1Id, note1 -> note1.getParagraph(p1Id).getStatus());
while (true) {
System.out.println("loop");
if (status == Job.Status.FINISHED) {
break;
}
Thread.sleep(100);
status = notebook.processNote(note1Id, note1 -> note1.getParagraph(p1Id).getStatus());
}
// sleep for 1 second to make sure job running thread finish to fire event. See ZEPPELIN-3277
Thread.sleep(1000);
// set note AngularObject
AngularObject ao = new AngularObject("COMMAND_TYPE", "COMMAND_TYPE_VALUE", note1Id, p1Id, null);
notebook.processNote(note1Id, note1 -> {
note1.addOrUpdateAngularObject("angular-shared_process", ao);
return null;
});
// create sockets and open it
NotebookSocket sock1 = createWebSocket();
notebookServer.onOpen(sock1);
// Check the AngularObjectRegistry of the interpreterGroup before executing GET_NOTE
Map<String, Map<String, AngularObject>> mapRegistry1 = interpreterGroup.getAngularObjectRegistry().getRegistry();
assertEquals(0, mapRegistry1.size());
// open the notebook from sockets, AngularObjectRegistry that triggers the update of the interpreterGroup
notebookServer.onMessage(sock1, new Message(OP.GET_NOTE).put("id", note1Id).toJson());
Thread.sleep(1000);
// After executing GET_NOTE, check the AngularObjectRegistry of the interpreterGroup
Map<String, Map<String, AngularObject>> mapRegistry2 = interpreterGroup.getAngularObjectRegistry().getRegistry();
assertEquals(2, mapRegistry1.size());
AngularObject ao1 = mapRegistry2.get(note1Id + "_" + p1Id).get("COMMAND_TYPE");
assertEquals("COMMAND_TYPE", ao1.getName());
assertEquals("COMMAND_TYPE_VALUE", ao1.get());
} finally {
if (note1Id != null) {
notebook.removeNote(note1Id, anonymous);
}
}
}
use of org.apache.zeppelin.common.Message in project zeppelin by apache.
the class NotebookServerTest method testCreateNoteWithDefaultInterpreterId.
@Test
public void testCreateNoteWithDefaultInterpreterId() throws IOException {
// create two sockets and open it
NotebookSocket sock1 = createWebSocket();
NotebookSocket sock2 = createWebSocket();
assertEquals(sock1, sock1);
assertNotEquals(sock1, sock2);
notebookServer.onOpen(sock1);
notebookServer.onOpen(sock2);
String noteName = "Note with millis " + System.currentTimeMillis();
String defaultInterpreterId = "";
List<InterpreterSetting> settings = notebook.getInterpreterSettingManager().get();
if (settings.size() > 1) {
defaultInterpreterId = settings.get(0).getId();
}
// create note from sock1
notebookServer.onMessage(sock1, new Message(OP.NEW_NOTE).put("name", noteName).put("defaultInterpreterId", defaultInterpreterId).toJson());
int sendCount = 2;
if (ZeppelinConfiguration.create().isZeppelinNotebookCollaborativeModeEnable()) {
sendCount++;
}
// expect the events are broadcasted properly
verify(sock1, times(sendCount)).send(anyString());
String createdNoteId = null;
for (NoteInfo noteInfo : notebook.getNotesInfo()) {
;
if (notebook.processNote(noteInfo.getId(), Note::getName).equals(noteName)) {
createdNoteId = noteInfo.getId();
break;
}
}
if (settings.size() > 1) {
assertEquals(notebook.getInterpreterSettingManager().getDefaultInterpreterSetting(createdNoteId).getId(), defaultInterpreterId);
}
notebook.removeNote(createdNoteId, anonymous);
}
use of org.apache.zeppelin.common.Message in project zeppelin by apache.
the class NotebookServerTest method testImportJupyterNote.
@Test
public void testImportJupyterNote() throws IOException {
String jupyterNoteJson = IOUtils.toString(getClass().getResourceAsStream("/Lecture-4.ipynb"), StandardCharsets.UTF_8);
String msg = "{\"op\":\"IMPORT_NOTE\",\"data\":" + "{\"note\": " + jupyterNoteJson + "}}";
Message messageReceived = notebookServer.deserializeMessage(msg);
String noteId = null;
ServiceContext context = new ServiceContext(AuthenticationInfo.ANONYMOUS, new HashSet<>());
try {
try {
noteId = notebookServer.importNote(null, context, messageReceived);
} catch (NullPointerException e) {
// broadcastNoteList(); failed nothing to worry.
LOG.error("Exception in NotebookServerTest while testImportJupyterNote, failed nothing to " + "worry ", e);
}
notebook.processNote(noteId, note -> {
assertNotNull(note);
assertTrue(note.getName(), note.getName().startsWith("Note converted from Jupyter_"));
assertEquals("md", note.getParagraphs().get(0).getIntpText());
assertEquals("\n# matplotlib - 2D and 3D plotting in Python", note.getParagraphs().get(0).getScriptText());
return null;
});
} finally {
if (noteId != null) {
notebook.removeNote(noteId, anonymous);
}
}
}
use of org.apache.zeppelin.common.Message in project zeppelin by apache.
the class ConnectionManager method checkCollaborativeStatus.
private void checkCollaborativeStatus(String noteId, List<NotebookSocket> socketList) {
if (!collaborativeModeEnable.booleanValue()) {
return;
}
boolean collaborativeStatusNew = socketList.size() > 1;
if (collaborativeStatusNew) {
collaborativeModeList.add(noteId);
} else {
collaborativeModeList.remove(noteId);
}
Message message = new Message(Message.OP.COLLABORATIVE_MODE_STATUS);
message.put("status", collaborativeStatusNew);
if (collaborativeStatusNew) {
HashSet<String> userList = new HashSet<>();
for (NotebookSocket noteSocket : socketList) {
userList.add(noteSocket.getUser());
}
message.put("users", userList);
}
broadcast(noteId, message);
}
use of org.apache.zeppelin.common.Message in project zeppelin by apache.
the class NotebookServer method patchParagraph.
private void patchParagraph(NotebookSocket conn, ServiceContext context, Message fromMessage) throws IOException {
if (!collaborativeModeEnable) {
return;
}
String paragraphId = fromMessage.getType("id", LOG);
if (paragraphId == null) {
return;
}
String noteId = connectionManager.getAssociatedNoteId(conn);
if (noteId == null) {
noteId = fromMessage.getType("noteId", LOG);
if (noteId == null) {
return;
}
}
final String noteId2 = noteId;
String patchText = fromMessage.getType("patch", LOG);
if (patchText == null) {
return;
}
getNotebookService().patchParagraph(noteId, paragraphId, patchText, context, new WebSocketServiceCallback<String>(conn) {
@Override
public void onSuccess(String result, ServiceContext context) throws IOException {
super.onSuccess(result, context);
Message message = new Message(OP.PATCH_PARAGRAPH).put("patch", result).put("paragraphId", paragraphId);
connectionManager.broadcastExcept(noteId2, message, conn);
}
});
}
Aggregations