Add fingerprint method to KrillIndex (closes #62)
Change-Id: Ic9ded4e07587edfe5edde931b928c40673af0e83
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestIndexRevision.java b/src/test/java/de/ids_mannheim/korap/index/TestIndexRevision.java
new file mode 100644
index 0000000..2128d4f
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/index/TestIndexRevision.java
@@ -0,0 +1,103 @@
+package de.ids_mannheim.korap.index;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotEquals;
+
+import java.io.IOException;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanTermQuery;
+import org.junit.Test;
+import org.junit.Ignore;
+
+import de.ids_mannheim.korap.Krill;
+import de.ids_mannheim.korap.KrillIndex;
+import de.ids_mannheim.korap.KrillMeta;
+import de.ids_mannheim.korap.response.Result;
+import de.ids_mannheim.korap.util.StatusCodes;
+
+import java.nio.file.Paths;
+import org.apache.lucene.store.MMapDirectory;
+
+public class TestIndexRevision {
+
+ @Test
+ public void testIndexRevisionAdd () throws IOException {
+ KrillIndex ki = new KrillIndex();
+
+ assertEquals(ki.getFingerprint(),"null");
+
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00001.json.gz"), true);
+ ki.commit();
+
+ String x1 = ki.getFingerprint();
+ assertEquals(x1,"ibtSULzKIMrfGAtES3GXRA==");
+
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00002.json.gz"), true);
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00003.json.gz"), true);
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00004.json.gz"), true);
+ ki.commit();
+
+ String x2 = ki.getFingerprint();
+ assertEquals(x2,"0UIQZpZVfiGDD2leAq6YQA==");
+
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00006.json.gz"), true);
+ ki.commit();
+
+ String x3 = ki.getFingerprint();
+ assertEquals(x3,"fS3GqnKynhPQ5wFyC9/XWw==");
+
+
+ // Check if the same changes will have the same effect
+ KrillIndex ki2 = new KrillIndex();
+
+ assertEquals(ki2.getFingerprint(),"null");
+
+ ki2.addDoc(getClass().getResourceAsStream("/wiki/00001.json.gz"), true);
+ ki2.commit();
+
+ assertEquals(ki2.getFingerprint(), x1);
+
+ ki2.addDoc(getClass().getResourceAsStream("/wiki/00002.json.gz"), true);
+ ki2.addDoc(getClass().getResourceAsStream("/wiki/00003.json.gz"), true);
+ ki2.addDoc(getClass().getResourceAsStream("/wiki/00004.json.gz"), true);
+ ki2.commit();
+
+ assertEquals(ki2.getFingerprint(), x2);
+
+ ki2.addDoc(getClass().getResourceAsStream("/wiki/00006.json.gz"), true);
+ ki2.commit();
+
+ assertEquals(ki2.getFingerprint(), x3);
+ };
+
+ @Test
+ public void testIndexRevisionDel () throws IOException {
+ KrillIndex ki = new KrillIndex();
+
+ assertEquals(ki.getFingerprint(),"null");
+
+ ki.addDoc(getClass().getResourceAsStream("/wiki/00001.json.gz"), true);
+ ki.commit();
+
+ String x1 = ki.getFingerprint();
+ assertEquals(x1,"ibtSULzKIMrfGAtES3GXRA==");
+
+ assertTrue(ki.delDocs("title", "A"));
+ ki.commit();
+
+ String x2 = ki.getFingerprint();
+ assertNotEquals(x1, x2);
+
+ };
+
+ @Ignore
+ public void testIndexRevisionSample () throws IOException {
+ KrillIndex ki = new KrillIndex(new MMapDirectory(
+ Paths.get(getClass().getResource("/sample-index").getFile())));
+
+ assertEquals(ki.getFingerprint(),"Wes8Bd4h1OypPqbWF5njeQ==");
+ };
+};