Add VC rewrite for statistics web-service #796
Change-Id: I6d76cabeec833f685aaceade0724738681ed85c3
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
index 51e7fc5..15c3d7a 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
@@ -38,7 +38,7 @@
public KustvaktConfiguration config;
@Autowired
- public RewriteHandler handler;
+ public RewriteHandler rewriteHandler;
@Autowired
private LayerMapper m;
@@ -79,7 +79,7 @@
String username = "bubbles";
QuerySerializer s = new QuerySerializer();
s.setQuery("[pos=ADJA]", "poliqarp");
- String result = handler.processQuery(s.toJSON(),
+ String result = rewriteHandler.processQuery(s.toJSON(),
new KorAPUser(username));
JsonNode node = JsonUtils.readTree(result);
assertEquals(node.at("/query/wrap/foundry").asText(), "corenlp");
@@ -93,7 +93,7 @@
String username = "bubbles";
QuerySerializer s = new QuerySerializer();
s.setQuery("[base=Haus]", "poliqarp");
- String result = handler.processQuery(s.toJSON(),
+ String result = rewriteHandler.processQuery(s.toJSON(),
new KorAPUser(username));
JsonNode node = JsonUtils.readTree(result);
// EM: only for testing, in fact, opennlp lemma does not
@@ -117,7 +117,7 @@
throws KustvaktException {
QuerySerializer s = new QuerySerializer();
s.setQuery("[base=Haus]", "poliqarp");
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
assertNotNull(node);
assertFalse(node.at("/query/wrap/foundry").isMissingNode());
@@ -134,7 +134,7 @@
throws KustvaktException {
QuerySerializer s = new QuerySerializer();
s.setQuery("[pos=ADJA]", "poliqarp");
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
assertNotNull(node);
assertFalse(node.at("/query/wrap/foundry").isMissingNode());
@@ -151,7 +151,7 @@
throws KustvaktException {
QuerySerializer s = new QuerySerializer();
s.setQuery("[orth=laufe/i & base!=Lauf]", "poliqarp");
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
assertNotNull(node);
assertEquals(node.at("/query/wrap/@type").asText(), "koral:termGroup");
@@ -166,7 +166,7 @@
throws KustvaktException {
QuerySerializer s = new QuerySerializer();
s.setQuery("[(base=laufen | tt/pos=VVFIN)]", "poliqarp");
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
assertNotNull(node);
assertEquals(node.at("/query/wrap/@type").asText(), "koral:termGroup");
@@ -180,7 +180,7 @@
public void testFoundryBaseRewrite () throws KustvaktException {
QuerySerializer s = new QuerySerializer();
s.setQuery("[orth=laufen]", "poliqarp");
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
assertEquals(node.at("/query/wrap/@type").asText(), "koral:term");
assertFalse(node.at("/query/wrap/foundry").isMissingNode());
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
index 699fba2..04bcf43 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
@@ -19,7 +19,7 @@
public class QueryContextRewriteTest extends SpringJerseyTest {
@Autowired
- public RewriteHandler handler;
+ public RewriteHandler rewriteHandler;
@Autowired
private KustvaktConfiguration config;
@@ -61,7 +61,7 @@
assertEquals(60, context.at("/left/1").asInt());
assertEquals(60, context.at("/right/1").asInt());
- String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
+ String result = rewriteHandler.processQuery(s.toJSON(), new KorAPUser("test"));
JsonNode node = JsonUtils.readTree(result);
context = node.at("/meta/context");
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
index ba2cbfd..a7507fd 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
@@ -18,13 +18,13 @@
public class ResultRewriteTest extends SpringJerseyTest {
@Autowired
- public RewriteHandler ha;
+ public RewriteHandler rewriteHandler;
@Test
public void testPostRewriteNothingToDo () throws KustvaktException {
- assertEquals(true, ha.add(AvailabilityRewrite.class),
+ assertEquals(true, rewriteHandler.add(AvailabilityRewrite.class),
"Handler could not be added to rewrite handler instance!");
- String v = ha.processResult(TestVariables.RESULT, null);
+ String v = rewriteHandler.processResult(TestVariables.RESULT, null);
assertEquals(JsonUtils.readTree(TestVariables.RESULT),
JsonUtils.readTree(v), "results do not match");
}
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
index 6ddc583..6c68ce6 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
@@ -193,17 +193,4 @@
assertEquals(772, node.at("/paragraphs").asInt());
}
- @Test
- public void testStatisticsWithNamedVC () throws KustvaktException {
- Response response = target().path(API_VERSION).path("statistics")
- .queryParam("cq", "referTo unknownVC")
- .request().method("GET");
- String ent = response.readEntity(String.class);
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- JsonNode node = JsonUtils.readTree(ent);
- assertEquals(0, node.at("/documents").asInt());
- assertEquals(0, node.at("/tokens").asInt());
- assertEquals(0, node.at("/sentences").asInt());
- assertEquals(0, node.at("/paragraphs").asInt());
- }
}
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
index c7a3eec..9946649 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
@@ -120,11 +120,41 @@
Response response = target().path(API_VERSION).path("statistics")
.queryParam("cq", corpusQuery).request().get();
String ent = response.readEntity(String.class);
+ assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ JsonNode node = JsonUtils.readTree(ent);
+ assertEquals(StatusCodes.NO_RESOURCE_FOUND,
+ node.at("/errors/0/0").asInt());
+ assertEquals("Virtual corpus system/unknown-vc is not found.",
+ node.at("/errors/0/1").asText());
+ assertEquals("system/unknown-vc", node.at("/errors/0/2").asText());
+ }
+
+ @Test
+ public void testStatisticsWithUserUnknownVC () throws KustvaktException {
+ String corpusQuery = "referTo \"nemo/unknown-vc\"";
+ Response response = target().path(API_VERSION).path("statistics")
+ .queryParam("cq", corpusQuery).request().get();
+ String ent = response.readEntity(String.class);
+ assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ JsonNode node = JsonUtils.readTree(ent);
+ assertEquals(StatusCodes.NO_RESOURCE_FOUND,
+ node.at("/errors/0/0").asInt());
+ assertEquals("Virtual corpus nemo/unknown-vc is not found.",
+ node.at("/errors/0/1").asText());
+ assertEquals("nemo/unknown-vc", node.at("/errors/0/2").asText());
+ }
+
+ private void testStatisticsWithUserVC (String vcName) throws KustvaktException {
+ String corpusQuery = "referTo \"marlin/"+vcName+"\"";
+ Response response = target().path(API_VERSION).path("statistics")
+ .queryParam("cq", corpusQuery).request().get();
+ String ent = response.readEntity(String.class);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
JsonNode node = JsonUtils.readTree(ent);
- assertEquals(0, node.at("/documents").asInt());
- assertEquals(0, node.at("/tokens").asInt());
- assertEquals(0, node.at("/sentences").asInt());
+ assertEquals(11, node.at("/documents").asInt());
+ assertEquals(665842, node.at("/tokens").asInt());
+ assertEquals(25074, node.at("/sentences").asInt());
+ assertEquals(772, node.at("/paragraphs").asInt());
}
@Test
@@ -155,10 +185,11 @@
@Test
public void testSearchWithRefPublishedVcGuest () throws KustvaktException {
+ String vcName = "published-vc";
createMarlinPublishedVC();
Response response = target().path(API_VERSION).path("search")
.queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
- .queryParam("cq", "referTo \"marlin/published-vc\"").request()
+ .queryParam("cq", "referTo \"marlin/"+vcName+"\"").request()
.get();
String ent = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(ent);
@@ -178,14 +209,14 @@
node.at("/rewrites/0/original/@type").asText());
assertEquals("marlin/published-vc",
node.at("/rewrites/0/original/ref").asText());
+
+ testStatisticsWithUserVC(vcName);
+ testSearchWithRefPublishedVc(vcName);
+
deleteVC("published-vc", "marlin", "marlin");
}
- @Test
- public void testSearchWithRefPublishedVc () throws KustvaktException {
- String vcName = "marlin-published-vc";
- createPublishedVC("marlin", vcName);
-
+ private void testSearchWithRefPublishedVc (String vcName) throws KustvaktException {
Response response = target().path(API_VERSION).path("search")
.queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
.queryParam("cq", "referTo \"marlin/" + vcName + "\"").request()
@@ -196,12 +227,17 @@
JsonNode node = JsonUtils.readTree(ent);
assertTrue(node.at("/matches").size() > 0);
+ node = node.at("/collection/rewrites/0");
+ assertEquals("operation:override", node.at("/operation").asText());
+ assertEquals("marlin/published-vc",
+ node.at("/original/ref").asText());
+ assertEquals("koral:docGroupRef", node.at("/original/@type").asText());
+
node = getHiddenGroup(vcName);
assertEquals("system", node.at("/owner").asText());
assertEquals(UserGroupStatus.HIDDEN.name(),
node.at("/status").asText());
node = node.at("/members");
assertEquals("squirt", node.at("/0/userId").asText());
- deleteVC(vcName, "marlin", "marlin");
}
}
diff --git a/src/test/resources/log4j2-test.properties b/src/test/resources/log4j2-test.properties
index 186ab06..54fbc8b 100644
--- a/src/test/resources/log4j2-test.properties
+++ b/src/test/resources/log4j2-test.properties
@@ -20,7 +20,7 @@
rootLogger.appenderRefs = console
rootLogger.appenderRef.stdout.ref = STDOUT
-loggers=hibernate,auth,ldap
+loggers=hibernate,auth,ldap,krill
#loggers=console
#logger.console.name=com.sun.jersey.test.framework.spi.container
#logger.console.level = info
@@ -52,4 +52,10 @@
logger.ldap.level = info
logger.ldap.appenderRefs = file
logger.ldap.appenderRef.file.ref = LDAP_LOG
-logger.ldap.additivity=false
\ No newline at end of file
+logger.ldap.additivity=false
+
+logger.krill.name=de.ids_mannheim.korap.KrillCollection
+logger.krill.level = info
+logger.krill.appenderRefs = file
+logger.krill.appenderRef.file.ref = MAIN_LOG
+logger.krill.additivity=false
\ No newline at end of file
diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml
index 343ca96..7a95588 100644
--- a/src/test/resources/test-config.xml
+++ b/src/test/resources/test-config.xml
@@ -81,6 +81,30 @@
<property name="testConnectionOnCheckout" value="true" />
</bean>
+<!-- <bean id="sqliteDataSource"
+ class="org.springframework.jdbc.datasource.SingleConnectionDataSource"
+ lazy-init="true">
+ <property name="driverClassName" value="${jdbc.driverClassName}" />
+ <property name="url" value="${jdbc.url}" />
+ <property name="username" value="${jdbc.username}" />
+ <property name="password" value="${jdbc.password}" />
+ <property name="connectionProperties">
+ <props>
+ <prop key="date_string_format">yyyy-MM-dd HH:mm:ss</prop>
+ </props>
+ </property>
+
+ Sqlite can only have a single connection
+ <property name="suppressClose">
+ <value>true</value>
+ </property>
+ </bean>
+ -->
+
+ <!-- <bean id='cacheManager' class='org.springframework.cache.ehcache.EhCacheCacheManager'
+ p:cacheManager-ref='ehcache' /> <bean id='ehcache' class='org.springframework.cache.ehcache.EhCacheManagerFactoryBean'
+ p:configLocation='classpath:ehcache.xml' p:shared='true' /> -->
+
<!-- to configure database for sqlite, mysql, etc. migrations -->
<bean id="flywayConfig"
class="org.flywaydb.core.api.configuration.ClassicConfiguration">
@@ -213,6 +237,18 @@
class="de.ids_mannheim.korap.rewrite.RewriteHandler">
<constructor-arg ref="rewriteTasks" />
</bean>
+
+ <util:list id="statisticsRewriteTasks"
+ value-type="de.ids_mannheim.korap.rewrite.RewriteTask">
+ <ref bean="foundryRewrite" />
+ <ref bean="virtualCorpusRewrite" />
+ <ref bean="queryReferenceRewrite" />
+ </util:list>
+
+ <bean id="statisticsRewriteHandler"
+ class="de.ids_mannheim.korap.rewrite.RewriteHandler">
+ <constructor-arg ref="statisticsRewriteTasks" />
+ </bean>
<bean id="kustvaktResponseHandler"
class="de.ids_mannheim.korap.web.KustvaktResponseHandler">