Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
587 changes: 0 additions & 587 deletions solr/benchmark/src/java/org/apache/solr/bench/MiniClusterState.java

This file was deleted.

580 changes: 580 additions & 0 deletions solr/benchmark/src/java/org/apache/solr/bench/SolrBenchState.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.util.Iterator;
import java.util.concurrent.TimeUnit;
import org.apache.solr.bench.Docs;
import org.apache.solr.bench.MiniClusterState;
import org.apache.solr.bench.SolrBenchState;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.common.SolrInputDocument;
import org.openjdk.jmh.annotations.Benchmark;
Expand Down Expand Up @@ -114,22 +114,20 @@ private void preGenerate() {
}

@Setup(Level.Trial)
public void doSetup(MiniClusterState.MiniClusterBenchState miniClusterState) throws Exception {
public void doSetup(SolrBenchState solrBenchState) throws Exception {
preGenerate();

System.setProperty("mergePolicyFactory", "org.apache.solr.index.NoMergePolicyFactory");
miniClusterState.startMiniCluster(nodeCount);
miniClusterState.createCollection(COLLECTION, numShards, numReplicas);
solrBenchState.startSolr(nodeCount);
solrBenchState.createCollection(COLLECTION, numShards, numReplicas);
}
}

@Benchmark
public Object indexDoc(MiniClusterState.MiniClusterBenchState miniClusterState, BenchState state)
throws Exception {
public Object indexDoc(SolrBenchState solrBenchState, BenchState state) throws Exception {
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.add(state.getNextDoc());
final var url =
miniClusterState.nodes.get(miniClusterState.getRandom().nextInt(state.nodeCount));
return miniClusterState.client.requestWithBaseUrl(url, updateRequest, BenchState.COLLECTION);
final var url = solrBenchState.nodes.get(solrBenchState.getRandom().nextInt(state.nodeCount));
return solrBenchState.client.requestWithBaseUrl(url, updateRequest, BenchState.COLLECTION);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.solr.bench.Docs;
import org.apache.solr.bench.MiniClusterState;
import org.apache.solr.bench.SolrBenchState;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
Expand Down Expand Up @@ -67,9 +67,8 @@ public static class BenchState {
int WORDS = NUM_DOCS / 100;

@Setup(Level.Trial)
public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
throws Exception {
miniClusterState.setUseHttp1(true);
public void setupTrial(SolrBenchState solrBenchState) throws Exception {
solrBenchState.setUseHttp1(true);
System.setProperty("documentCache.enabled", "false");
System.setProperty("queryResultCache.enabled", "false");
System.setProperty("filterCache.enabled", "false");
Expand All @@ -78,9 +77,9 @@ public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
System.setProperty("segmentsPerTier", "200");
System.setProperty("maxBufferedDocs", "100");

miniClusterState.startMiniCluster(1);
solrBenchState.startSolr(1);
log("######### Creating index ...");
miniClusterState.createCollection(COLLECTION, 1, 1);
solrBenchState.createCollection(COLLECTION, 1, 1);
// create a lot of large-ish fields to scan positions
Docs docs =
Docs.docs(1234567890L)
Expand All @@ -103,9 +102,9 @@ public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
.field(
"f9_ts",
strings().alpha().maxCardinality(WORDS).multi(50).ofLengthBetween(3, 10));
miniClusterState.index(COLLECTION, docs, NUM_DOCS, true);
miniClusterState.forceMerge(COLLECTION, 200);
miniClusterState.dumpCoreInfo();
solrBenchState.index(COLLECTION, docs, NUM_DOCS, true);
solrBenchState.forceMerge(COLLECTION, 200);
solrBenchState.dumpCoreInfo();
}

// this adds significant processing time to the checking of query limits
Expand All @@ -116,13 +115,13 @@ public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
private static final String matchExpression = "ExitableTermsEnum:-1";

@Setup(Level.Iteration)
public void setupQueries(MiniClusterState.MiniClusterBenchState state) throws Exception {
public void setupQueries(SolrBenchState solrBenchState) throws Exception {
if (verifyEDRInUse) {
TestInjection.queryTimeout = new CallerSpecificQueryLimit(Set.of(matchExpression));
}
// reload collection to force searcher / reader refresh
CollectionAdminRequest.Reload reload = CollectionAdminRequest.reloadCollection(COLLECTION);
state.client.request(reload);
solrBenchState.client.request(reload);

queryFields =
Docs.docs(1234567890L)
Expand Down Expand Up @@ -154,25 +153,23 @@ public void tearDownTrial() throws Exception {

private static ModifiableSolrParams createInitialParams() {
ModifiableSolrParams params =
MiniClusterState.params("rows", "100", "timeAllowed", "1000", "fl", "*");
SolrBenchState.params("rows", "100", "timeAllowed", "1000", "fl", "*");
return params;
}

@Benchmark
public void testShortQuery(
MiniClusterState.MiniClusterBenchState miniClusterState, Blackhole bh, BenchState state)
public void testShortQuery(SolrBenchState solrBenchState, Blackhole bh, BenchState state)
throws Exception {
SolrInputDocument queryDoc = state.queryFields.inputDocument();
ModifiableSolrParams params = createInitialParams();
params.set("q", "f1_ts:" + queryDoc.getFieldValue("f1_ts").toString());
QueryRequest queryRequest = new QueryRequest(params);
QueryResponse rsp = queryRequest.process(miniClusterState.client, COLLECTION);
QueryResponse rsp = queryRequest.process(solrBenchState.client, COLLECTION);
bh.consume(rsp);
}

@Benchmark
public void testLongQuery(
MiniClusterState.MiniClusterBenchState miniClusterState, Blackhole bh, BenchState state)
public void testLongQuery(SolrBenchState solrBenchState, Blackhole bh, BenchState state)
throws Exception {
SolrInputDocument queryDoc = state.queryFields.inputDocument();
ModifiableSolrParams params = createInitialParams();
Expand All @@ -186,7 +183,7 @@ public void testLongQuery(
}
params.set("q", query.toString());
QueryRequest queryRequest = new QueryRequest(params);
QueryResponse rsp = queryRequest.process(miniClusterState.client, COLLECTION);
QueryResponse rsp = queryRequest.process(solrBenchState.client, COLLECTION);
bh.consume(rsp);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.nio.charset.StandardCharsets;
import org.apache.solr.bench.BaseBenchState;
import org.apache.solr.bench.Docs;
import org.apache.solr.bench.MiniClusterState;
import org.apache.solr.bench.SolrBenchState;
import org.apache.solr.bench.SolrRandomnessSource;
import org.apache.solr.bench.generators.SolrGen;
import org.apache.solr.client.solrj.SolrServerException;
Expand Down Expand Up @@ -71,8 +71,7 @@ public static class BenchState {
String baseUrl;

@Setup(Level.Trial)
public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
throws Exception {
public void setupTrial(SolrBenchState solrBenchState) throws Exception {
String cacheEnabled = cacheEnabledAsyncSize.split(":")[0];
String asyncCache = cacheEnabledAsyncSize.split(":")[1];
String cacheSize = cacheEnabledAsyncSize.split(":")[2];
Expand All @@ -81,8 +80,8 @@ public void setupTrial(MiniClusterState.MiniClusterBenchState miniClusterState)
System.setProperty("filterCache.initialSize", cacheSize);
System.setProperty("filterCache.async", asyncCache);

miniClusterState.startMiniCluster(1);
miniClusterState.createCollection(COLLECTION, 1, 1);
solrBenchState.startSolr(1);
solrBenchState.createCollection(COLLECTION, 1, 1);

Docs docs = Docs.docs().field("id", integers().incrementing());

Expand All @@ -100,24 +99,24 @@ public Boolean generate(SolrRandomnessSource in) {
docs.field("Ea_b", booleans);
docs.field("FB_b", booleans);

miniClusterState.index(COLLECTION, docs, 30 * 1000);
baseUrl = miniClusterState.nodes.get(0);
solrBenchState.index(COLLECTION, docs, 30 * 1000);
baseUrl = solrBenchState.nodes.get(0);
}

@Setup(Level.Iteration)
public void setupIteration(MiniClusterState.MiniClusterBenchState miniClusterState)
public void setupIteration(SolrBenchState solrBenchState)
throws SolrServerException, IOException {
// Reload the collection/core to drop existing caches
CollectionAdminRequest.Reload reload = CollectionAdminRequest.reloadCollection(COLLECTION);
miniClusterState.client.requestWithBaseUrl(miniClusterState.nodes.get(0), reload, null);
solrBenchState.client.requestWithBaseUrl(solrBenchState.nodes.get(0), reload, null);
}

@TearDown(Level.Iteration)
public void dumpMetrics(MiniClusterState.MiniClusterBenchState miniClusterState) {
public void dumpMetrics(SolrBenchState solrBenchState) {
// TODO add a verbose flag

String url =
miniClusterState.nodes.get(0)
solrBenchState.nodes.get(0)
+ "/admin/metrics?prefix=CACHE.searcher.filterCache&omitHeader=true";
HttpURLConnection conn = null;
try {
Expand All @@ -134,20 +133,17 @@ public void dumpMetrics(MiniClusterState.MiniClusterBenchState miniClusterState)
}

@Benchmark
public Object filterCacheMultipleQueries(
BenchState benchState, MiniClusterState.MiniClusterBenchState miniClusterState)
public Object filterCacheMultipleQueries(BenchState benchState, SolrBenchState solrBenchState)
throws SolrServerException, IOException {
return miniClusterState.client.requestWithBaseUrl(
return solrBenchState.client.requestWithBaseUrl(
benchState.baseUrl,
miniClusterState.getRandom().nextBoolean() ? benchState.q1 : benchState.q2,
solrBenchState.getRandom().nextBoolean() ? benchState.q1 : benchState.q2,
COLLECTION);
}

@Benchmark
public Object filterCacheSingleQuery(
BenchState benchState, MiniClusterState.MiniClusterBenchState miniClusterState)
public Object filterCacheSingleQuery(BenchState benchState, SolrBenchState solrBenchState)
throws SolrServerException, IOException {
return miniClusterState.client.requestWithBaseUrl(
benchState.baseUrl, benchState.q1, COLLECTION);
return solrBenchState.client.requestWithBaseUrl(benchState.baseUrl, benchState.q1, COLLECTION);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.util.concurrent.TimeUnit;
import org.apache.solr.bench.BaseBenchState;
import org.apache.solr.bench.Docs;
import org.apache.solr.bench.MiniClusterState;
import org.apache.solr.bench.SolrBenchState;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
Expand Down Expand Up @@ -99,16 +99,15 @@ public static class BenchState {
private ModifiableSolrParams params;

@Setup(Level.Trial)
public void setup(
BenchmarkParams benchmarkParams, MiniClusterState.MiniClusterBenchState miniClusterState)
public void setup(BenchmarkParams benchmarkParams, SolrBenchState solrBenchState)
throws Exception {

System.setProperty("maxMergeAtOnce", "50");
System.setProperty("segmentsPerTier", "50");

miniClusterState.startMiniCluster(nodeCount);
solrBenchState.startSolr(nodeCount);

miniClusterState.createCollection(collection, numShards, numReplicas);
solrBenchState.createCollection(collection, numShards, numReplicas);

// Define random documents
Docs docs =
Expand All @@ -132,12 +131,12 @@ public void setup(
.field(integers().allWithMaxCardinality(facetCard2))
.field(integers().allWithMaxCardinality(facetCard2));

miniClusterState.index(collection, docs, docCount);
miniClusterState.forceMerge(collection, 25);
solrBenchState.index(collection, docs, docCount);
solrBenchState.forceMerge(collection, 25);

params = new ModifiableSolrParams();

MiniClusterState.params(
SolrBenchState.params(
params,
"q",
"*:*",
Expand Down Expand Up @@ -167,7 +166,7 @@ public void setup(
params.set("timeAllowed", "5000");
}

// MiniClusterState.log("params: " + params + "\n");
// SolrBenchState.log("params: " + params + "\n");
}

@State(Scope.Thread)
Expand All @@ -185,17 +184,17 @@ public void setup() {
@Benchmark
@Timeout(time = 500, timeUnit = TimeUnit.SECONDS)
public void jsonFacet(
MiniClusterState.MiniClusterBenchState miniClusterState,
SolrBenchState solrBenchState,
BenchState state,
BenchState.ThreadState threadState,
Blackhole bh)
throws Exception {
final var url = miniClusterState.nodes.get(threadState.random.nextInt(state.nodeCount));
final var url = solrBenchState.nodes.get(threadState.random.nextInt(state.nodeCount));
QueryRequest queryRequest = new QueryRequest(state.params);
NamedList<Object> result =
miniClusterState.client.requestWithBaseUrl(url, queryRequest, state.collection);
solrBenchState.client.requestWithBaseUrl(url, queryRequest, state.collection);

// MiniClusterState.log("result: " + result);
// SolrBenchState.log("result: " + result);

bh.consume(result);
}
Expand Down
Loading