Skip to content
Merged
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
8 changes: 8 additions & 0 deletions changelog/unreleased/SOLR-18067.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
title: Remove deprecated EmbeddedSolrServerTestBase from test-framework, tests updated to use EmbeddedSolrServerTestRule.
type: removed # added, changed, fixed, deprecated, removed, dependency_update, security, other
authors:
- name: Eric Pugh
links:
- name: SOLR-18067
url: https://issues.apache.org/jira/browse/SOLR-18067
12 changes: 8 additions & 4 deletions solr/core/src/test/org/apache/solr/update/RootFieldTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import static org.hamcrest.CoreMatchers.is;

import org.apache.solr.EmbeddedSolrServerTestBase;
import org.apache.solr.SolrTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.request.SolrQuery;
Expand All @@ -28,13 +28,14 @@
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.util.EmbeddedSolrServerTestRule;
import org.apache.solr.util.RandomNoReverseMergePolicyFactory;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TestRule;

public class RootFieldTest extends EmbeddedSolrServerTestBase {
public class RootFieldTest extends SolrTestCase {
private static boolean useRootSchema;
private static final String MESSAGE =
"Update handler should create and process _root_ field "
Expand All @@ -44,6 +45,9 @@ private static boolean expectRoot() {
return useRootSchema;
}

@ClassRule
public static final EmbeddedSolrServerTestRule solrTestRule = new EmbeddedSolrServerTestRule();

// not necessary right now but will be once block logic is asserted
@ClassRule
public static final TestRule noReverseMerge = RandomNoReverseMergePolicyFactory.createRule();
Expand All @@ -62,7 +66,7 @@ public static void beforeTest() throws Exception {

@Test
public void testLegacyBlockProcessing() throws Exception {
SolrClient client = getSolrClient();
SolrClient client = solrTestRule.getSolrClient();
client.deleteByQuery("*:*"); // delete everything!

// Add child free doc
Expand Down Expand Up @@ -105,7 +109,7 @@ public void testLegacyBlockProcessing() throws Exception {

@Test
public void testUpdateWithChildDocs() throws Exception {
SolrClient client = getSolrClient();
SolrClient client = solrTestRule.getSolrClient();
client.deleteByQuery("*:*"); // delete everything!

// Add child free doc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,22 @@
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.solr.EmbeddedSolrServerTestBase;
import org.apache.solr.SolrTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.RequestWriterSupplier;
import org.apache.solr.client.solrj.request.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.util.ByteArrayUtf8CharSequence;
import org.apache.solr.util.EmbeddedSolrServerTestRule;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;

public abstract class AbstractAtomicUpdatesMultivalueTestBase extends EmbeddedSolrServerTestBase {
public abstract class AbstractAtomicUpdatesMultivalueTestBase extends SolrTestCase {

@ClassRule
public static final EmbeddedSolrServerTestRule solrTestRule = new EmbeddedSolrServerTestRule();

protected static void initWithRequestWriter(RequestWriterSupplier requestWriterSupplier)
throws Exception {
Expand All @@ -55,14 +60,14 @@ protected static void initWithRequestWriter(RequestWriterSupplier requestWriterS

@Before
public void before() throws SolrServerException, IOException {
getSolrClient().deleteByQuery("*:*");
solrTestRule.getSolrClient().deleteByQuery("*:*");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I kinda wonder if STR.client() should exist to shorten our calls a bit more since everyone will want a client from STR; that's it's primary purpose in life.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question!!!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's think about it another PR though! I think this PR is ready to go in...

}

private void assertQR(final String fieldName, final String queryValue, final int numFound)
throws SolrServerException, IOException {

SolrQuery query = new SolrQuery("q", fieldName + ":" + queryValue);
QueryResponse rsp = getSolrClient().query(query);
QueryResponse rsp = solrTestRule.getSolrClient().query(query);
assertEquals(numFound, rsp.getResults().getNumFound());
}

Expand All @@ -75,12 +80,13 @@ private void runTestForField(

final Function<Object, Object> vc = valueConverter.orElse(o -> o);

getSolrClient()
solrTestRule
.getSolrClient()
.add(
Arrays.asList(
sdoc("id", "20000", fieldName, Arrays.asList(values[0], values[1], values[2])),
sdoc("id", "20001", fieldName, Arrays.asList(values[1], values[2], values[3]))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

if (queries != null) {
assertQR(fieldName, queries[0], 1);
Expand All @@ -89,19 +95,22 @@ private void runTestForField(
assertQR(fieldName, queries[3], 1);
}

Collection<Object> fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
Collection<Object> fieldValues =
solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(3, fieldValues.size());
assertThat(
fieldValues, hasItems(vc.apply(values[0]), vc.apply(values[1]), vc.apply(values[2])));
assertThat(fieldValues, not(hasItems(vc.apply(values[3]))));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(3, fieldValues.size());
assertThat(
fieldValues, hasItems(vc.apply(values[1]), vc.apply(values[2]), vc.apply(values[3])));
assertThat(fieldValues, not(hasItems(vc.apply(values[0]))));

getSolrClient().add(sdoc("id", "20000", fieldName, Map.of("remove", List.of(values[0]))));
getSolrClient().commit(true, true);
solrTestRule
.getSolrClient()
.add(sdoc("id", "20000", fieldName, Map.of("remove", List.of(values[0]))));
solrTestRule.getSolrClient().commit(true, true);

if (queries != null) {
assertQR(fieldName, queries[0], 0);
Expand All @@ -110,24 +119,25 @@ private void runTestForField(
assertQR(fieldName, queries[3], 1);
}

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(vc.apply(values[1]), vc.apply(values[2])));
assertThat(fieldValues, not(hasItems(vc.apply(values[0]), vc.apply(values[3]))));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(3, fieldValues.size());
assertThat(
fieldValues, hasItems(vc.apply(values[1]), vc.apply(values[2]), vc.apply(values[3])));
assertThat(fieldValues, not(hasItems(vc.apply(values[0]))));

getSolrClient()
solrTestRule
.getSolrClient()
.add(
sdoc(
"id",
"20001",
fieldName,
Map.of("remove", List.of(values[0], values[1], values[2]))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

if (queries != null) {
assertQR(fieldName, queries[0], 0);
Expand All @@ -136,17 +146,18 @@ private void runTestForField(
assertQR(fieldName, queries[3], 1);
}

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(vc.apply(values[1]), vc.apply(values[2])));
assertThat(fieldValues, not(hasItems(vc.apply(values[0]), vc.apply(values[3]))));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(1, fieldValues.size());
assertThat(fieldValues, hasItems(vc.apply(values[3])));
assertThat(
fieldValues, not(hasItems(vc.apply(values[0]), vc.apply(values[1]), vc.apply(values[2]))));

getSolrClient()
solrTestRule
.getSolrClient()
.add(
Arrays.asList(
sdoc(
Expand All @@ -159,7 +170,7 @@ private void runTestForField(
"20001",
fieldName,
Map.of("add", List.of(values[0]), "remove", List.of(values[3])))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

if (queries != null) {
assertQR(fieldName, queries[0], 2);
Expand All @@ -168,18 +179,19 @@ private void runTestForField(
assertQR(fieldName, queries[3], 0);
}

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(1, fieldValues.size());
assertThat(fieldValues, hasItems(vc.apply(values[0])));
assertThat(
fieldValues, not(hasItems(vc.apply(values[1]), vc.apply(values[2]), vc.apply(values[3]))));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(1, fieldValues.size());
assertThat(fieldValues, hasItems(vc.apply(values[0])));
assertThat(
fieldValues, not(hasItems(vc.apply(values[1]), vc.apply(values[2]), vc.apply(values[3]))));

getSolrClient()
solrTestRule
.getSolrClient()
.add(
Arrays.asList(
sdoc(
Expand All @@ -192,7 +204,7 @@ private void runTestForField(
"20001",
fieldName,
Map.of("set", List.of(values[0], values[1], values[2], values[3])))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

if (queries != null) {
assertQR(fieldName, queries[0], 2);
Expand All @@ -201,13 +213,13 @@ private void runTestForField(
assertQR(fieldName, queries[3], 2);
}

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(4, fieldValues.size());
assertThat(
fieldValues,
hasItems(
vc.apply(values[0]), vc.apply(values[1]), vc.apply(values[2]), vc.apply(values[3])));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(4, fieldValues.size());
assertThat(
fieldValues,
Expand Down Expand Up @@ -259,76 +271,84 @@ public void testMultivalueBooleanField() throws SolrServerException, IOException

final String fieldName = "booleanRemove";

getSolrClient()
solrTestRule
.getSolrClient()
.add(
Arrays.asList(
sdoc("id", "20000", fieldName, List.of(true, false)),
sdoc("id", "20001", fieldName, List.of(false, true))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

assertQR(fieldName, "true", 2);
assertQR(fieldName, "false", 2);

Collection<Object> fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
Collection<Object> fieldValues =
solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));

getSolrClient().add(sdoc("id", "20000", fieldName, Map.of("remove", List.of(false))));
getSolrClient().commit(true, true);
solrTestRule
.getSolrClient()
.add(sdoc("id", "20000", fieldName, Map.of("remove", List.of(false))));
solrTestRule.getSolrClient().commit(true, true);

assertQR(fieldName, "true", 2);
assertQR(fieldName, "false", 1);

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(1, fieldValues.size());
assertThat(fieldValues, hasItems(true));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));

getSolrClient().add(sdoc("id", "20001", fieldName, Map.of("remove", List.of(true, false))));
getSolrClient().commit(true, true);
solrTestRule
.getSolrClient()
.add(sdoc("id", "20001", fieldName, Map.of("remove", List.of(true, false))));
solrTestRule.getSolrClient().commit(true, true);

assertQR(fieldName, "true", 1);
assertQR(fieldName, "false", 0);

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(1, fieldValues.size());
assertThat(fieldValues, hasItems(true));
assertThat(fieldValues, not(hasItems(false)));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertNull(fieldValues);

getSolrClient()
solrTestRule
.getSolrClient()
.add(Arrays.asList(sdoc("id", "20000", fieldName, Map.of("add", List.of(false, false)))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

assertQR(fieldName, "true", 1);
assertQR(fieldName, "false", 1);

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(3, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertNull(fieldValues);

getSolrClient()
solrTestRule
.getSolrClient()
.add(
Arrays.asList(
sdoc("id", "20000", fieldName, Map.of("set", List.of(true, false))),
sdoc("id", "20001", fieldName, Map.of("set", List.of(false, true)))));
getSolrClient().commit(true, true);
solrTestRule.getSolrClient().commit(true, true);

assertQR(fieldName, "true", 2);
assertQR(fieldName, "false", 2);

fieldValues = getSolrClient().getById("20000").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20000").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));
fieldValues = getSolrClient().getById("20001").getFieldValues(fieldName);
fieldValues = solrTestRule.getSolrClient().getById("20001").getFieldValues(fieldName);
assertEquals(2, fieldValues.size());
assertThat(fieldValues, hasItems(true, false));
}
Expand Down
Loading
Loading