Author: fortino
Date: Fri Jun 26 15:50:04 2020
New Revision: 1879243
URL: http://svn.apache.org/viewvc?rev=1879243&view=rev
Log:
OAK-9123: fix immense term error + performance regression on multi term full
text queries
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexHelper.java
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriter.java
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticContentTest.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticPerfTest.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticTestUtils.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriterTest.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/resources/logback-test.xml
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexHelper.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexHelper.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexHelper.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexHelper.java
Fri Jun 26 15:50:04 2020
@@ -182,6 +182,7 @@ class ElasticIndexHelper {
{
mappingBuilder.startObject("keyword")
.field("type", "keyword")
+ .field("ignore_above", 256)
.endObject();
if (useInSpellCheck) {
mappingBuilder.startObject("trigram")
@@ -192,7 +193,9 @@ class ElasticIndexHelper {
mappingBuilder.endObject();
} else {
// always add keyword for sorting / faceting
- mappingBuilder.field("type", "keyword");
+ mappingBuilder
+ .field("type", "keyword")
+ .field("ignore_above", 256);
}
}
}
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriter.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriter.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriter.java
Fri Jun 26 15:50:04 2020
@@ -232,7 +232,7 @@ class ElasticIndexWriter implements Full
// init update status
updatesMap.put(executionId, Boolean.FALSE);
- LOG.info("Sending bulk with id {} -> {}", executionId,
bulkRequest.getDescription());
+ LOG.debug("Sending bulk with id {} -> {}", executionId,
bulkRequest.getDescription());
if (LOG.isTraceEnabled()) {
LOG.trace("Bulk Requests: \n{}", bulkRequest.requests()
.stream()
@@ -244,7 +244,7 @@ class ElasticIndexWriter implements Full
@Override
public void afterBulk(long executionId, BulkRequest bulkRequest,
BulkResponse bulkResponse) {
- LOG.info("Bulk with id {} processed with status {} in {}",
executionId, bulkResponse.status(), bulkResponse.getTook());
+ LOG.debug("Bulk with id {} processed with status {} in {}",
executionId, bulkResponse.status(), bulkResponse.getTook());
if (LOG.isTraceEnabled()) {
try {
LOG.trace(Strings.toString(bulkResponse.toXContent(jsonBuilder(),
EMPTY_PARAMS)));
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
Fri Jun 26 15:50:04 2020
@@ -275,7 +275,7 @@ public class ElasticRequestHandler {
}
private boolean visitTerm(String propertyName, String text, String
boost, boolean not) {
- String p = getLuceneFieldName(propertyName, pr);
+ String p = getElasticFieldName(propertyName, pr);
QueryBuilder q = tokenToQuery(text, p, pr);
if (boost != null) {
q.boost(Float.parseFloat(boost));
@@ -312,8 +312,8 @@ public class ElasticRequestHandler {
break;
case DIRECT_CHILDREN:
BoolQueryBuilder bq = boolQuery()
- .must(newAncestorQuery(path))
- .must(newDepthQuery(path, planResult));
+ .must(newAncestorQuery(path))
+ .must(newDepthQuery(path, planResult));
queries.add(bq);
break;
case EXACT:
@@ -464,22 +464,24 @@ public class ElasticRequestHandler {
}
private static QueryBuilder tokenToQuery(String text, String fieldName,
PlanResult pr) {
+ // default match query are executed in OR, we need to use AND instead
to avoid that
+ // every document having at least one term in the `text` will match.
If there are multiple
+ // contains clause they will go to different match queries and will be
executed in OR
QueryBuilder ret;
IndexDefinition.IndexingRule indexingRule = pr.indexingRule;
//Expand the query on fulltext field
- if (FieldNames.FULLTEXT.equals(fieldName) &&
- !indexingRule.getNodeScopeAnalyzedProps().isEmpty()) {
+ if (FieldNames.FULLTEXT.equals(fieldName) &&
!indexingRule.getNodeScopeAnalyzedProps().isEmpty()) {
BoolQueryBuilder in = boolQuery();
for (PropertyDefinition pd :
indexingRule.getNodeScopeAnalyzedProps()) {
- QueryBuilder q = matchQuery(pd.name, text).boost(pd.boost);
+ QueryBuilder q = matchQuery(pd.name,
text).boost(pd.boost).operator(Operator.AND);
in.should(q);
}
//Add the query for actual fulltext field also. That query would
not be boosted
// TODO: do we need this if all the analyzed fields are queried?
- ret = in.should(matchQuery(fieldName, text));
+ ret = in.should(matchQuery(fieldName,
text).operator(Operator.AND));
} else {
- ret = matchQuery(fieldName, text);
+ ret = matchQuery(fieldName, text).operator(Operator.AND);
}
return ret;
@@ -532,7 +534,7 @@ public class ElasticRequestHandler {
throw new IllegalStateException("PropertyRestriction not handled " +
pr + " for index " + defn);
}
- private static String getLuceneFieldName(@Nullable String p, PlanResult
pr) {
+ private static String getElasticFieldName(@Nullable String p, PlanResult
pr) {
if (p == null) {
return FieldNames.FULLTEXT;
}
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticContentTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticContentTest.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticContentTest.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticContentTest.java
Fri Jun 26 15:50:04 2020
@@ -24,6 +24,7 @@ import org.junit.Test;
import java.util.Random;
import java.util.UUID;
+import static
org.apache.jackrabbit.oak.plugins.index.elastic.ElasticTestUtils.randomString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
@@ -34,14 +35,13 @@ public class ElasticContentTest extends
public void indexWithAnalyzedProperty() throws Exception {
IndexDefinitionBuilder builder = createIndex("a").noAsync();
builder.indexRule("nt:base").property("a").analyzed();
- String testId = UUID.randomUUID().toString();
- Tree index = setIndex(testId, builder);
+ Tree index = setIndex(UUID.randomUUID().toString(), builder);
root.commit();
assertTrue(exists(index));
assertThat(0L, equalTo(countDocuments(index)));
- Tree content = root.getTree("/").addChild(testId);
+ Tree content = root.getTree("/").addChild("content");
content.addChild("indexed").setProperty("a", "foo");
content.addChild("not-indexed").setProperty("b", "foo");
root.commit();
@@ -65,13 +65,12 @@ public class ElasticContentTest extends
public void indexWithAnalyzedNodeScopeIndexProperty() throws Exception {
IndexDefinitionBuilder builder = createIndex("a").noAsync();
builder.indexRule("nt:base").property("a").analyzed().nodeScopeIndex();
- String testId = UUID.randomUUID().toString();
- Tree index = setIndex(testId, builder);
+ Tree index = setIndex(UUID.randomUUID().toString(), builder);
root.commit();
assertThat(0L, equalTo(countDocuments(index)));
- Tree content = root.getTree("/").addChild(testId);
+ Tree content = root.getTree("/").addChild("content");
content.addChild("indexed").setProperty("a", "foo");
content.addChild("not-indexed").setProperty("b", "foo");
root.commit();
@@ -83,8 +82,7 @@ public class ElasticContentTest extends
public void indexContentWithLongPath() throws Exception {
IndexDefinitionBuilder builder = createIndex("a").noAsync();
builder.indexRule("nt:base").property("a").analyzed();
- String testId = UUID.randomUUID().toString();
- Tree index = setIndex(testId, builder);
+ Tree index = setIndex(UUID.randomUUID().toString(), builder);
root.commit();
assertTrue(exists(index));
@@ -100,7 +98,7 @@ public class ElasticContentTest extends
.collect(StringBuilder::new, StringBuilder::appendCodePoint,
StringBuilder::append)
.toString();
- Tree content = root.getTree("/").addChild(testId);
+ Tree content = root.getTree("/").addChild("content");
content.addChild(generatedPath).setProperty("a", "foo");
root.commit();
@@ -120,4 +118,21 @@ public class ElasticContentTest extends
index = setIndex(testId, builder);
root.commit();
}
+
+ @Test
+ public void analyzedFieldWithLongValue() throws Exception {
+ IndexDefinitionBuilder builder = createIndex("a").noAsync();
+ builder.indexRule("nt:base").property("a").analyzed();
+ Tree index = setIndex(UUID.randomUUID().toString(), builder);
+ root.commit();
+
+ assertTrue(exists(index));
+ assertThat(0L, equalTo(countDocuments(index)));
+
+ Tree content = root.getTree("/").addChild("content");
+ content.addChild("indexed1").setProperty("a", randomString(33409)); //
max length is 32766
+ root.commit();
+
+ assertEventually(() -> assertThat(countDocuments(index), equalTo(1L)));
+ }
}
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
Fri Jun 26 15:50:04 2020
@@ -40,7 +40,8 @@ public class ElasticFullTextAsyncTest ex
builder.async("async");
builder.indexRule("nt:base").property("propa").analyzed();
- setIndex("test1", builder);
+ String indexId = UUID.randomUUID().toString();
+ setIndex(indexId, builder);
root.commit();
//add content
@@ -51,16 +52,62 @@ public class ElasticFullTextAsyncTest ex
test.addChild("c").setProperty("propa", "Hello everyone. This is an
elastic test");
test.addChild("d").setProperty("propa", "howdy! hello again");
root.commit();
-
+
String query = "//*[jcr:contains(@propa, 'Hello')] ";
assertEventually(() -> {
- assertThat(explain(query, XPATH),
containsString("elasticsearch:test1"));
+ assertThat(explain(query, XPATH), containsString("elasticsearch:"
+ indexId));
assertQuery(query, XPATH, Arrays.asList("/test/a", "/test/c",
"/test/d"));
});
}
@Test
+ public void testNodeScopeIndexedQuery() throws Exception {
+ IndexDefinitionBuilder builder = createIndex("a", "b").async("async");
+ builder.indexRule("nt:base").property("a").analyzed().nodeScopeIndex();
+ builder.indexRule("nt:base").property("b").analyzed().nodeScopeIndex();
+
+ setIndex(UUID.randomUUID().toString(), builder);
+ root.commit();
+
+ //add content
+ Tree test = root.getTree("/").addChild("test");
+
+ test.addChild("a").setProperty("a", "hello");
+ test.addChild("b").setProperty("a", "world");
+ test.addChild("c").setProperty("a", "hello world");
+ Tree d = test.addChild("d");
+ d.setProperty("a", "hello");
+ d.setProperty("b", "world");
+ root.commit();
+
+ assertEventually(() -> {
+ assertQuery("//*[jcr:contains(., 'Hello')] ", XPATH,
Arrays.asList("/test/a", "/test/c", "/test/d"));
+ assertQuery("//*[jcr:contains(., 'hello world')] ", XPATH,
Arrays.asList("/test/c", "/test/d"));
+ });
+ }
+
+ @Test
+ public void testFullTextMultiTermQuery() throws Exception {
+ IndexDefinitionBuilder builder = createIndex("analyzed_field");
+ builder.async("async");
+ builder.indexRule("nt:base").property("analyzed_field").analyzed();
+
+ setIndex(UUID.randomUUID().toString(), builder);
+ root.commit();
+
+ //add content
+ Tree test = root.getTree("/").addChild("test");
+ test.addChild("a").setProperty("analyzed_field", "test123");
+ test.addChild("b").setProperty("analyzed_field", "test456");
+ root.commit();
+
+ assertEventually(() ->
+ assertQuery("//*[jcr:contains(@analyzed_field, 'test123')] ",
XPATH, Collections.singletonList("/test/a"))
+ );
+ }
+
+ @Test
public void testDefaultAnalyzer() throws Exception {
IndexDefinitionBuilder builder = createIndex("analyzed_field");
builder.async("async");
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticPerfTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticPerfTest.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticPerfTest.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticPerfTest.java
Fri Jun 26 15:50:04 2020
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.index.elastic;
-
import org.apache.jackrabbit.oak.api.Result;
import org.apache.jackrabbit.oak.api.ResultRow;
import org.apache.jackrabbit.oak.api.Tree;
@@ -30,12 +29,15 @@ import org.slf4j.LoggerFactory;
import java.util.Iterator;
import java.util.Random;
+import java.util.UUID;
+import java.util.function.Supplier;
import static org.apache.jackrabbit.oak.api.QueryEngine.NO_BINDINGS;
-
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
/*
-This can be used as a quick means to get some numbers around elastic query
perf during dev cycles
+This can be used as a quick means to get some numbers around elastic query
perf during dev cycles
to compare between old code and new
Disabled by default as these tests don't assert anything and might be time
consuming.
To enable perf logs add <logger
name="org.apache.jackrabbit.oak.plugins.index.elastic.ElasticPerfTest"
level="TRACE"/>
@@ -48,13 +50,15 @@ public class ElasticPerfTest extends Ela
private static final PerfLogger LOG_PERF = new PerfLogger(LOG);
// Change these to modify the amount of test data created/indexed
// and the number of times the queries will be executed
- private int NUM_SUB_CONTENT = 500;
- private int NUM_NODES = 500;
- private int NUM_ITERATIONS = 500;
- private String PROP_1 = "foo";
- private String PROP_2 = "title";
- private String PROP_3 = "text";
- private String SAMPLE_TEXT = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit";
+ private static final int NUM_SUB_CONTENT = 500;
+ private static final int NUM_NODES = 500;
+ private static final int NUM_ITERATIONS = 500;
+ private static final String PROP_1 = "foo";
+ private static final String PROP_2 = "title";
+ private static final String PROP_3 = "text";
+ private static final String SAMPLE_TEXT = "Lorem ipsum dolor sit amet,
consectetur adipiscing elit";
+
+ private Tree index;
@Before
public void createIndexes() throws Exception {
@@ -64,19 +68,15 @@ public class ElasticPerfTest extends Ela
builder.indexRule("nt:base").property(PROP_3).analyzed();
builder.indexRule("nt:base").property(PROP_1).analyzed();
- setIndex("testIndex", builder);
+ this.index = setIndex(UUID.randomUUID().toString(), builder);
root.commit();
-
- createTestData();
- // Allow indexing to catch up .
- Thread.sleep(2500);
-
}
// Executes the same query multiple times for NUM_ITERATIONS
@Test
- public void testFullTextQuery() throws Exception {
- String query = "//*[jcr:contains(@text, 'Lorem')] ";
+ public void testFullTextSingleQuery() throws Exception {
+ createTestData();
+ String query = "//*[jcr:contains(@text, 'elit" + (NUM_NODES / 2) +
"')] ";
long startTest = LOG_PERF.start("Starting test executions");
for (int j = 0; j < NUM_ITERATIONS; j++) {
testQuery(query, XPATH);
@@ -86,7 +86,21 @@ public class ElasticPerfTest extends Ela
// Executes different queries each time
@Test
- public void testFullTextQuery2() throws Exception {
+ public void testFullTextMultiQuery() throws Exception {
+ createTestData();
+ long startTest = LOG_PERF.start("Starting test executions");
+ Random rndm = new Random(42);
+ for (int j = 0; j < NUM_ITERATIONS; j++) {
+ String query = "//*[jcr:contains(@text, 'elit" +
rndm.nextInt(NUM_NODES) + "')] ";
+ testQuery(query, XPATH);
+ }
+ LOG_PERF.end(startTest, -1, "{} iterations of tests completed",
NUM_ITERATIONS);
+ }
+
+ @Test
+ public void testFullTextMultiQueryWithExtraText() throws Exception {
+ Random randomText = new Random(42);
+ createTestData(() -> ElasticTestUtils.randomString(randomText, 1000));
long startTest = LOG_PERF.start("Starting test executions");
Random rndm = new Random(42);
for (int j = 0; j < NUM_ITERATIONS; j++) {
@@ -97,7 +111,8 @@ public class ElasticPerfTest extends Ela
}
@Test
- public void testPropertyQuery() throws Exception {
+ public void testPropertySingleQuery() throws Exception {
+ createTestData();
String query = "select [jcr:path] from [nt:base] where [title] =
'Title for node0'";
long startTest = LOG_PERF.start("Starting test executions");
for (int j = 0; j < NUM_ITERATIONS; j++) {
@@ -109,7 +124,8 @@ public class ElasticPerfTest extends Ela
// Executes different queries in the test iterations
@Test
- public void testPropertyQuery2() throws Exception {
+ public void testPropertyMultiQuery() throws Exception {
+ createTestData();
long startTest = LOG_PERF.start("Starting test executions");
Random rndm = new Random(42);
for (int j = 0; j < NUM_ITERATIONS; j++) {
@@ -119,8 +135,12 @@ public class ElasticPerfTest extends Ela
LOG_PERF.end(startTest, -1, "{} iterations of tests completed",
NUM_ITERATIONS);
}
-
private void createTestData() throws Exception {
+ createTestData(null);
+ }
+
+ private void createTestData(Supplier<String> extraContentSupplier) throws
Exception {
+ long start = LOG_PERF.start("Starting data indexing");
Tree content = root.getTree("/").addChild("content");
for (int i = 0; i < NUM_SUB_CONTENT; i++) {
@@ -130,11 +150,20 @@ public class ElasticPerfTest extends Ela
for (int j = 0; j < NUM_NODES; j++) {
Tree node = subContent.addChild("node" + j);
node.setProperty(PROP_2, "Title for node" + j);
- node.setProperty(PROP_3, SAMPLE_TEXT + j);
+ String text = SAMPLE_TEXT + j;
+ if (extraContentSupplier != null) {
+ text += "\n" + extraContentSupplier.get();
+ }
+ node.setProperty(PROP_3, text);
}
+ root.commit();
}
- root.commit();
+ // Allow indexing to catch up
+ assertEventually(() ->
+ assertThat(countDocuments(index), equalTo((long)
((NUM_SUB_CONTENT * NUM_NODES) + NUM_SUB_CONTENT)))
+ );
+ LOG_PERF.end(start, -1, "{} documents indexed", countDocuments(index));
}
private void testQuery(String query, String language) throws Exception {
@@ -144,8 +173,8 @@ public class ElasticPerfTest extends Ela
long start = LOG_PERF.start("Getting result rows");
int i = 0;
while (iterator.hasNext()) {
- i++;
ResultRow row = iterator.next();
+ i++;
}
LOG_PERF.end(start, -1, "{} Results fetched", i);
}
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticTestUtils.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticTestUtils.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticTestUtils.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticTestUtils.java
Fri Jun 26 15:50:04 2020
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.oak.plugin
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Random;
+
public final class ElasticTestUtils {
private static final Logger LOG =
LoggerFactory.getLogger(ElasticTestUtils.class);
@@ -51,4 +53,18 @@ public final class ElasticTestUtils {
}
}
}
+
+ public static String randomString(int size) {
+ return randomString(new Random(42), size);
+ }
+
+ public static String randomString(Random random, int size) {
+ int leftLimit = 48; // '0'
+ int rightLimit = 122; // char '~'
+
+ return random.ints(leftLimit, rightLimit + 1)
+ .limit(size)
+ .collect(StringBuilder::new, StringBuilder::appendCodePoint,
StringBuilder::append)
+ .toString();
+ }
}
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriterTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriterTest.java?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriterTest.java
(original)
+++
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexWriterTest.java
Fri Jun 26 15:50:04 2020
@@ -27,8 +27,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.util.Random;
-
+import static
org.apache.jackrabbit.oak.plugins.index.elastic.ElasticTestUtils.randomString;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.number.OrderingComparison.lessThan;
@@ -96,15 +95,7 @@ public class ElasticIndexWriterTest {
@Test
public void longDocumentPath() {
- int leftLimit = 48; // '0'
- int rightLimit = 122; // char '~'
- int targetStringLength = 1024;
- final Random random = new Random(42);
-
- String generatedPath = random.ints(leftLimit, rightLimit + 1)
- .limit(targetStringLength)
- .collect(StringBuilder::new, StringBuilder::appendCodePoint,
StringBuilder::append)
- .toString();
+ String generatedPath = randomString(1024);
indexWriter.updateDocument(generatedPath, new
ElasticDocument(generatedPath));
Modified:
jackrabbit/oak/trunk/oak-search-elastic/src/test/resources/logback-test.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/resources/logback-test.xml?rev=1879243&r1=1879242&r2=1879243&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/test/resources/logback-test.xml
(original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/test/resources/logback-test.xml
Fri Jun 26 15:50:04 2020
@@ -30,6 +30,9 @@
</appender>
<!--
+ <logger
name="org.apache.jackrabbit.oak.plugins.index.elastic.ElasticPerfTest"
level="TRACE"/>
+ -->
+ <!--
<logger name="org.apache.jackrabbit.oak.plugins.index.elastic"
level="TRACE" />
-->