You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2018/01/09 16:56:06 UTC
[2/2] lucene-solr:branch_7x: SOLR-11631: fix Solrj tests
SOLR-11631: fix Solrj tests
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5aa60485
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5aa60485
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5aa60485
Branch: refs/heads/branch_7x
Commit: 5aa60485e654509418c99db09522a364dad2fed9
Parents: 0bf758b
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Jan 9 11:55:30 2018 -0500
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Jan 9 11:55:49 2018 -0500
----------------------------------------------------------------------
.../solr/client/solrj/request/SchemaTest.java | 76 +++++++++++---------
1 file changed, 44 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5aa60485/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
index 4f64009..bab4a41 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
@@ -28,7 +28,9 @@ import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.io.FileUtils;
+import org.apache.solr.api.ApiBag;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.schema.AnalyzerDefinition;
import org.apache.solr.client.solrj.request.schema.FieldTypeDefinition;
import org.apache.solr.client.solrj.request.schema.SchemaRequest;
@@ -37,6 +39,8 @@ import org.apache.solr.client.solrj.response.schema.FieldTypeRepresentation;
import org.apache.solr.client.solrj.response.schema.SchemaRepresentation;
import org.apache.solr.client.solrj.response.schema.SchemaResponse;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.util.RestTestBase;
import org.eclipse.jetty.servlet.ServletHolder;
import org.junit.After;
@@ -57,6 +61,15 @@ public class SchemaTest extends RestTestBase {
assertEquals("Response contained errors: " + schemaResponse.toString(), 0, schemaResponse.getStatus());
assertNull("Response contained errors: " + schemaResponse.toString(), schemaResponse.getResponse().get("errors"));
}
+
+ private static void assertFailedSchemaResponse(ThrowingRunnable runnable, String expectedErrorMessage) {
+ HttpSolrClient.RemoteExecutionException e = expectThrows(HttpSolrClient.RemoteExecutionException.class, runnable);
+ SimpleOrderedMap errorMap = (SimpleOrderedMap)e.getMetaData().get("error");
+ assertEquals("org.apache.solr.api.ApiBag$ExceptionWithErrObject",
+ ((NamedList)errorMap.get("metadata")).get("error-class"));
+ List details = (List)errorMap.get("details");
+ assertTrue(((List)((Map)details.get(0)).get("errorMessages")).get(0).toString().contains(expectedErrorMessage));
+ }
private static void createStoredStringField(String fieldName, SolrClient solrClient) throws Exception {
Map<String, Object> fieldAttributes = new LinkedHashMap<>();
@@ -283,16 +296,16 @@ public class SchemaTest extends RestTestBase {
@Test
public void addFieldShouldntBeCalledTwiceWithTheSameName() throws Exception {
Map<String, Object> fieldAttributes = new LinkedHashMap<>();
- fieldAttributes.put("name", "failureField");
+ String fieldName = "failureField";
+ fieldAttributes.put("name", fieldName);
fieldAttributes.put("type", "string");
SchemaRequest.AddField addFieldUpdateSchemaRequest =
new SchemaRequest.AddField(fieldAttributes);
SchemaResponse.UpdateResponse addFieldFirstResponse = addFieldUpdateSchemaRequest.process(getSolrClient());
assertValidSchemaResponse(addFieldFirstResponse);
- SchemaResponse.UpdateResponse addFieldSecondResponse = addFieldUpdateSchemaRequest.process(getSolrClient());
- assertEquals(0, addFieldSecondResponse.getStatus());
- assertNotNull(addFieldSecondResponse.getResponse().get("errors"));
+ assertFailedSchemaResponse(() -> addFieldUpdateSchemaRequest.process(getSolrClient()),
+ "Field '" + fieldName + "' already exists.");
}
@Test
@@ -326,11 +339,11 @@ public class SchemaTest extends RestTestBase {
}
@Test
- public void deletingAFieldThatDoesntExistInTheSchemaShouldFail() throws Exception {
- SchemaRequest.DeleteField deleteFieldRequest =
- new SchemaRequest.DeleteField("fieldToBeDeleted");
- SchemaResponse.UpdateResponse deleteFieldResponse = deleteFieldRequest.process(getSolrClient());
- assertNotNull(deleteFieldResponse.getResponse().get("errors"));
+ public void deletingAFieldThatDoesntExistInTheSchemaShouldFail() {
+ String fieldName = "fieldToBeDeleted";
+ SchemaRequest.DeleteField deleteFieldRequest = new SchemaRequest.DeleteField(fieldName);
+ assertFailedSchemaResponse(() -> deleteFieldRequest.process(getSolrClient()),
+ "The field '" + fieldName + "' is not present in this schema, and so cannot be deleted.");
}
@Test
@@ -406,7 +419,8 @@ public class SchemaTest extends RestTestBase {
@Test
public void addDynamicFieldShouldntBeCalledTwiceWithTheSameName() throws Exception {
Map<String, Object> fieldAttributes = new LinkedHashMap<>();
- fieldAttributes.put("name", "*_failure");
+ String dynamicFieldName = "*_failure";
+ fieldAttributes.put("name", dynamicFieldName);
fieldAttributes.put("type", "string");
SchemaRequest.AddDynamicField addDFieldUpdateSchemaRequest =
new SchemaRequest.AddDynamicField(fieldAttributes);
@@ -414,9 +428,8 @@ public class SchemaTest extends RestTestBase {
SchemaResponse.UpdateResponse addDFieldFirstResponse = addDFieldUpdateSchemaRequest.process(client);
assertValidSchemaResponse(addDFieldFirstResponse);
- SchemaResponse.UpdateResponse addDFieldSecondResponse = addDFieldUpdateSchemaRequest.process(getSolrClient());
- assertEquals(0, addDFieldSecondResponse.getStatus());
- assertNotNull(addDFieldSecondResponse.getResponse().get("errors"));
+ assertFailedSchemaResponse(() -> addDFieldUpdateSchemaRequest.process(getSolrClient()),
+ "[schema.xml] Duplicate DynamicField definition for '" + dynamicFieldName + "'");
}
@Test
@@ -453,10 +466,10 @@ public class SchemaTest extends RestTestBase {
@Test
public void deletingADynamicFieldThatDoesntExistInTheSchemaShouldFail() throws Exception {
- SchemaRequest.DeleteDynamicField deleteDynamicFieldRequest =
- new SchemaRequest.DeleteDynamicField("*_notexists");
- SchemaResponse.UpdateResponse deleteDynamicFieldResponse = deleteDynamicFieldRequest.process(getSolrClient());
- assertNotNull(deleteDynamicFieldResponse.getResponse().get("errors"));
+ String dynamicFieldName = "*_notexists";
+ SchemaRequest.DeleteDynamicField deleteDynamicFieldRequest = new SchemaRequest.DeleteDynamicField(dynamicFieldName);
+ assertFailedSchemaResponse(() -> deleteDynamicFieldRequest.process(getSolrClient()),
+ "The dynamic field '" + dynamicFieldName + "' is not present in this schema, and so cannot be deleted.");
}
@Test
@@ -635,7 +648,8 @@ public class SchemaTest extends RestTestBase {
@Test
public void addFieldTypeShouldntBeCalledTwiceWithTheSameName() throws Exception {
Map<String, Object> fieldTypeAttributes = new LinkedHashMap<>();
- fieldTypeAttributes.put("name", "failureInt");
+ String fieldName = "failureInt";
+ fieldTypeAttributes.put("name", fieldName);
fieldTypeAttributes.put("class", RANDOMIZED_NUMERIC_FIELDTYPES.get(Integer.class));
fieldTypeAttributes.put("omitNorms", true);
fieldTypeAttributes.put("positionIncrementGap", 0);
@@ -646,9 +660,8 @@ public class SchemaTest extends RestTestBase {
SchemaResponse.UpdateResponse addFieldTypeFirstResponse = addFieldTypeRequest.process(getSolrClient());
assertValidSchemaResponse(addFieldTypeFirstResponse);
- SchemaResponse.UpdateResponse addFieldTypeSecondResponse = addFieldTypeRequest.process(getSolrClient());
- assertEquals(0, addFieldTypeSecondResponse.getStatus());
- assertNotNull(addFieldTypeSecondResponse.getResponse().get("errors"));
+ assertFailedSchemaResponse(() -> addFieldTypeRequest.process(getSolrClient()),
+ "Field type '" + fieldName + "' already exists.");
}
@Test
@@ -689,10 +702,10 @@ public class SchemaTest extends RestTestBase {
@Test
public void deletingAFieldTypeThatDoesntExistInTheSchemaShouldFail() throws Exception {
- SchemaRequest.DeleteFieldType deleteFieldTypeRequest =
- new SchemaRequest.DeleteFieldType("fieldTypeToBeDeleted");
- SchemaResponse.UpdateResponse deleteFieldResponse = deleteFieldTypeRequest.process(getSolrClient());
- assertNotNull(deleteFieldResponse.getResponse().get("errors"));
+ String fieldType = "fieldTypeToBeDeleted";
+ SchemaRequest.DeleteFieldType deleteFieldTypeRequest = new SchemaRequest.DeleteFieldType(fieldType);
+ assertFailedSchemaResponse(() -> deleteFieldTypeRequest.process(getSolrClient()),
+ "The field type '" + fieldType + "' is not present in this schema, and so cannot be deleted.");
}
@Test
@@ -800,11 +813,10 @@ public class SchemaTest extends RestTestBase {
String srcFieldName = "srcnotexist";
String destFieldName1 = "destNotExist1", destFieldName2 = "destNotExist2";
- SchemaRequest.AddCopyField addCopyFieldRequest =
- new SchemaRequest.AddCopyField(srcFieldName,
- Arrays.asList(destFieldName1, destFieldName2));
- SchemaResponse.UpdateResponse addCopyFieldResponse = addCopyFieldRequest.process(getSolrClient());
- assertNotNull(addCopyFieldResponse.getResponse().get("errors"));
+ SchemaRequest.AddCopyField addCopyFieldRequest
+ = new SchemaRequest.AddCopyField(srcFieldName, Arrays.asList(destFieldName1, destFieldName2));
+ assertFailedSchemaResponse(() -> addCopyFieldRequest.process(getSolrClient()),
+ "copyField source :'" + srcFieldName + "' is not a glob and doesn't match any explicit field or dynamicField.");
}
@Test
@@ -838,8 +850,8 @@ public class SchemaTest extends RestTestBase {
SchemaRequest.DeleteCopyField deleteCopyFieldsRequest =
new SchemaRequest.DeleteCopyField(srcFieldName,
Arrays.asList(destFieldName1, destFieldName2));
- SchemaResponse.UpdateResponse deleteCopyFieldResponse = deleteCopyFieldsRequest.process(getSolrClient());
- assertNotNull(deleteCopyFieldResponse.getResponse().get("errors"));
+ assertFailedSchemaResponse(() -> deleteCopyFieldsRequest.process(getSolrClient()),
+ "Copy field directive not found: '" + srcFieldName + "' -> '" + destFieldName1 + "'");
}
@Test