use of com.yahoo.document.DocumentOperation in project vespa by vespa-engine.
the class IndexingProcessorTestCase method requireThatIndexerForwardsUpdatesOfUnknownType.
@Test
public void requireThatIndexerForwardsUpdatesOfUnknownType() {
DocumentUpdate input = new DocumentUpdate(new DocumentType("unknown"), "doc:scheme:");
DocumentOperation output = process(input);
assertSame(input, output);
}
use of com.yahoo.document.DocumentOperation in project vespa by vespa-engine.
the class IndexingProcessorTestCase method process.
private DocumentOperation process(DocumentOperation input) {
Processing proc = new Processing();
proc.getDocumentOperations().add(input);
indexer.process(proc);
List<DocumentOperation> lst = proc.getDocumentOperations();
assertEquals(1, lst.size());
return lst.get(0);
}
use of com.yahoo.document.DocumentOperation in project vespa by vespa-engine.
the class ProcessingUpdateTestCase method testProcessingUpdates.
public void testProcessingUpdates() {
DocumentType articleType = new DocumentType("article");
articleType.addField(new Field("body", DataType.STRING, true));
articleType.addField(new Field("title", DataType.STRING, true));
dtm = new DocumentTypeManager();
dtm.registerDocumentType(articleType);
put = new DocumentPut(articleType, "doc:banana:apple");
put.getDocument().setFieldValue("body", "this is the body of the article, blah blah blah");
FieldUpdate upd = FieldUpdate.createAssign(articleType.getField("body"), new StringFieldValue("this is the updated body of the article, blahdi blahdi blahdi"));
update = new DocumentUpdate(articleType, new DocumentId("doc:grape:orange"));
update.addFieldUpdate(upd);
DocprocService service = new DocprocService("update");
DocumentProcessor firstP = new TitleDocumentProcessor();
service.setCallStack(new CallStack().addLast(firstP));
service.setInService(true);
Processing p = new Processing();
p.addDocumentOperation(put);
p.addDocumentOperation(update);
service.process(p);
while (service.doWork()) {
}
List<DocumentOperation> operations = p.getDocumentOperations();
Document first = ((DocumentPut) operations.get(0)).getDocument();
assertEquals(new StringFieldValue("this is the body of the article, blah blah blah"), first.getFieldValue("body"));
assertEquals(new StringFieldValue("body blah blah blah "), first.getFieldValue("title"));
DocumentUpdate second = (DocumentUpdate) operations.get(1);
FieldUpdate firstUpd = second.getFieldUpdate(0);
assertEquals(ValueUpdate.ValueUpdateClassID.ASSIGN, firstUpd.getValueUpdate(0).getValueUpdateClassID());
assertEquals(new StringFieldValue("this is the updated body of the article, blahdi blahdi blahdi"), firstUpd.getValueUpdate(0).getValue());
FieldUpdate secondUpd = second.getFieldUpdate(1);
assertEquals(ValueUpdate.ValueUpdateClassID.ASSIGN, secondUpd.getValueUpdate(0).getValueUpdateClassID());
assertEquals(new StringFieldValue("body blahdi blahdi blahdi "), secondUpd.getValueUpdate(0).getValue());
}
use of com.yahoo.document.DocumentOperation in project vespa by vespa-engine.
the class MbusRequestContext method processingDone.
@Override
public void processingDone(List<Processing> processings) {
List<DocumentMessage> messages = new ArrayList<>();
if (messageFactory != null) {
for (Processing processing : processings) {
for (DocumentOperation documentOperation : processing.getDocumentOperations()) {
messages.add(messageFactory.fromDocumentOperation(processing, documentOperation));
}
}
}
if (log.isLoggable(LogLevel.DEBUG)) {
log.log(LogLevel.DEBUG, "Forwarding " + messages.size() + " messages from " + processings.size() + " processings.");
}
if (messages.isEmpty()) {
dispatchResponse(Response.Status.OK);
return;
}
long inputSequenceId = requestMsg.getSequenceId();
ResponseMerger responseHandler = new ResponseMerger(requestMsg, messages.size(), this);
for (Message message : messages) {
// See comment for internalNoThrottledSource.
dispatchRequest(message, (inputSequenceId == message.getSequenceId()) ? getUri().getPath() : "/" + internalNoThrottledSource, responseHandler);
}
}
use of com.yahoo.document.DocumentOperation in project vespa by vespa-engine.
the class DocprocExecutor method logProgress.
private void logProgress(Processing processing, DocumentProcessor.Progress progress, Call call) {
StringBuilder message = new StringBuilder();
boolean first = true;
message.append(call.getDocumentProcessorId()).append(" of class ").append(call.getDocumentProcessor().getClass().getSimpleName()).append(" returned ").append(progress).append(" for the documents: [");
for (DocumentOperation op : processing.getDocumentOperations()) {
if (first) {
first = false;
} else {
message.append(", ");
}
if (op instanceof DocumentPut) {
message.append(Utf8.toString(JsonWriter.toByteArray(((DocumentPut) op).getDocument())));
} else {
message.append(op.toString());
}
}
message.append("]");
log.log(LogLevel.SPAM, message.toString());
}
Aggregations