You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2019/02/15 19:27:01 UTC
svn commit: r1853659 -
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java
Author: reschke
Date: Fri Feb 15 19:27:01 2019
New Revision: 1853659
URL: http://svn.apache.org/viewvc?rev=1853659&view=rev
Log:
OAK-8035: a message is logged when similar costs come from the same index type
fix test memory leak due to log appending, fix by Nitin Gupta
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java?rev=1853659&r1=1853658&r2=1853659&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/stats/QuerySimilarCostTest.java Fri Feb 15 19:27:01 2019
@@ -15,7 +15,10 @@
* limitations under the License.
*/
package org.apache.jackrabbit.oak.query.stats;
-import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.InitialContent;
import org.apache.jackrabbit.oak.Oak;
@@ -23,7 +26,11 @@ import org.apache.jackrabbit.oak.api.Con
import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexPlan;
import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
-import org.apache.jackrabbit.oak.query.*;
+import org.apache.jackrabbit.oak.query.AbstractQueryTest;
+import org.apache.jackrabbit.oak.query.QueryEngineSettings;
+import org.apache.jackrabbit.oak.query.QueryImpl;
+import org.apache.jackrabbit.oak.query.SQL2Parser;
+import org.apache.jackrabbit.oak.query.SQL2ParserTest;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.spi.query.Cursor;
import org.apache.jackrabbit.oak.spi.query.Filter;
@@ -32,20 +39,19 @@ import org.apache.jackrabbit.oak.spi.que
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.util.NodeUtil;
+import org.assertj.core.api.Assertions;
import org.assertj.core.groups.Tuple;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.ImmutableList;
+
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import org.assertj.core.api.Assertions;
-
/**
* Tests for cases where two or more indices return a similar cost estimation for the same query
*/
@@ -66,8 +72,8 @@ public class QuerySimilarCostTest extend
/*
- Given 2 index plan with similar cost
- we expect a log at debug level to intimate user to either modify either of the indices or the query
+ * Given 2 index plan with similar cost we expect a log at debug level to
+ * intimate user to either modify either of the indices or the query
*/
@Test
public void testSimilarCostIndices() throws Exception{
@@ -76,24 +82,28 @@ public class QuerySimilarCostTest extend
ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
listAppender.start();
- queryImplLogger.addAppender(listAppender);
- NodeUtil node = new NodeUtil(root.getTree("/"));
- String uuid = UUID.randomUUID().toString();
- node.setString(JcrConstants.JCR_UUID, uuid);
- root.commit();
-
- executeQuery("SELECT * FROM [nt:base] WHERE [jcr:uuid] is not null", SQL2, true, false);
-
-
- String expectedLogMessage = String.format("selected index %s " +
- "with plan testIndexPlan1 and %s with plan testIndexPlan2 have similar costs 11.0 and 11.0 " +
- "for query Filter(query=SELECT * FROM [nt:base] WHERE [jcr:uuid] is not null, path=*, property=[jcr:uuid=[is not null]]) - check query explanation / index definitions",testIndexProvider.index,testIndexProvider.index);
-
- Assertions.assertThat(listAppender.list)
- .extracting(ILoggingEvent::getMessage, ILoggingEvent::getLevel)
- .contains(Tuple.tuple(expectedLogMessage, Level.DEBUG));
- queryImplLogger.addAppender(listAppender);
+ try {
+ queryImplLogger.addAppender(listAppender);
+ NodeUtil node = new NodeUtil(root.getTree("/"));
+ String uuid = UUID.randomUUID().toString();
+ node.setString(JcrConstants.JCR_UUID, uuid);
+ root.commit();
+
+ executeQuery("SELECT * FROM [nt:base] WHERE [jcr:uuid] is not null", SQL2, true, false);
+
+ String expectedLogMessage = String.format("selected index %s " +
+ "with plan testIndexPlan1 and %s with plan testIndexPlan2 have similar costs 11.0 and 11.0 " +
+ "for query Filter(query=SELECT * FROM [nt:base] WHERE [jcr:uuid] is not null, path=*, property=[jcr:uuid=[is not null]]) - check query explanation / index definitions",testIndexProvider.index,testIndexProvider.index);
+
+ listAppender.stop();
+ Assertions.assertThat(listAppender.list)
+ .extracting(ILoggingEvent::getMessage, ILoggingEvent::getLevel)
+ .contains(Tuple.tuple(expectedLogMessage, Level.DEBUG));
+ }
+ finally {
+ listAppender.stop();
+ }
}
private static class TestIndexProvider implements QueryIndexProvider {