summaryrefslogtreecommitdiffstats
path: root/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java')
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java b/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
new file mode 100644
index 00000000000..cce3460d3c4
--- /dev/null
+++ b/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
@@ -0,0 +1,86 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.docproc;
+
+import com.yahoo.document.DataType;
+import com.yahoo.document.Document;
+import com.yahoo.document.DocumentId;
+import com.yahoo.document.DocumentOperation;
+import com.yahoo.document.DocumentPut;
+import com.yahoo.document.DocumentType;
+import com.yahoo.document.datatypes.StringFieldValue;
+
+/**
+ * Convenience superclass of document processor test cases
+ *
+ * @author bratseth
+ */
+public abstract class DocumentProcessingAbstractTestCase extends junit.framework.TestCase {
+
+ public DocumentProcessingAbstractTestCase(String name) {
+ super(name);
+ }
+
+ /**
+ * Asserts that a document processing service works
+ */
+ protected void assertProcessingWorks(DocprocService service) {
+ // Create documents
+ DocumentType type = new DocumentType("test");
+ type.addField("test", DataType.STRING);
+ DocumentPut put1 = new DocumentPut(type, new DocumentId("doc:test:test:1"));
+ DocumentPut put2 = new DocumentPut(type, new DocumentId("doc:test:test:2"));
+ DocumentPut put3 = new DocumentPut(type, new DocumentId("doc:test:test:3"));
+
+ // Process them
+ service.process(put1);
+ service.process(put2);
+ service.process(put3);
+ while (service.doWork()) {}
+
+ // Verify
+ assertEquals(new StringFieldValue("done"), put1.getDocument().getFieldValue("test"));
+ assertEquals(new StringFieldValue("done"), put2.getDocument().getFieldValue("test"));
+ assertEquals(new StringFieldValue("done"), put3.getDocument().getFieldValue("test"));
+ }
+
+ public static class TestDocumentProcessor1 extends DocumentProcessor {
+ @Override
+ public Progress process(Processing processing) {
+ for (DocumentOperation op : processing.getDocumentOperations()) {
+ if (processing.getVariable("processor1") == null) {
+ processing.setVariable("processor1", "called");
+ return Progress.LATER;
+ }
+ processing.setVariable("processor1", "calledTwice");
+ }
+ return Progress.DONE;
+ }
+ }
+
+ public static class TestDocumentProcessor2 extends DocumentProcessor {
+ @Override
+ public Progress process(Processing processing) {
+ for (DocumentOperation op : processing.getDocumentOperations()) {
+ assertEquals("calledTwice", processing.getVariable("processor1"));
+ processing.setVariable("processor2", "called");
+ }
+ return Progress.DONE;
+ }
+ }
+
+ public static class TestDocumentProcessor3 extends DocumentProcessor {
+ @Override
+ public Progress process(Processing processing) {
+ for (DocumentOperation op : processing.getDocumentOperations()) {
+ assertEquals("called", processing.getVariable("processor2"));
+ if (processing.getVariable("processor3") == null) {
+ processing.setVariable("processor3", "called");
+ return Progress.LATER;
+ }
+ ((DocumentPut)op).getDocument().setFieldValue("test", new StringFieldValue("done"));
+ }
+ return Progress.DONE;
+ }
+ }
+
+}