Class XContentTestUtils
java.lang.Object
org.opensearch.test.XContentTestUtils
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionconvertToMap(org.opensearch.core.xcontent.ToXContent part) static org.opensearch.core.common.bytes.BytesReferenceconvertToXContent(Map<String, ?> map, org.opensearch.common.xcontent.XContentType xContentType) createJsonMapView(InputStream inputStream) static StringCompares two maps generated from XContentObjects.static org.opensearch.core.xcontent.XContentBuilderinsertIntoXContent(org.opensearch.core.xcontent.XContent xContent, org.opensearch.core.common.bytes.BytesReference original, List<String> paths, Supplier<String> key, Supplier<Object> value) Inserts key/value pairs into xContent passed in asBytesReferenceand returns a newXContentBuilderThe paths argument uses dot separated fieldnames and numbers for array indices, similar to what we do inObjectPath.static org.opensearch.core.common.bytes.BytesReferenceinsertRandomFields(org.opensearch.core.xcontent.MediaType contentType, org.opensearch.core.common.bytes.BytesReference xContent, Predicate<String> excludeFilter, Random random) This method takes the input xContent data and adds a random field value, inner object or array into each json object.
-
Method Details
-
convertToMap
public static Map<String,Object> convertToMap(org.opensearch.core.xcontent.ToXContent part) throws IOException - Throws:
IOException
-
convertToXContent
public static org.opensearch.core.common.bytes.BytesReference convertToXContent(Map<String, ?> map, org.opensearch.common.xcontent.XContentType xContentType) throws IOException- Throws:
IOException
-
differenceBetweenMapsIgnoringArrayOrder
-
insertRandomFields
public static org.opensearch.core.common.bytes.BytesReference insertRandomFields(org.opensearch.core.xcontent.MediaType contentType, org.opensearch.core.common.bytes.BytesReference xContent, Predicate<String> excludeFilter, Random random) throws IOException This method takes the input xContent data and adds a random field value, inner object or array into each json object. This can e.g. be used to test if parsers that handle the resulting xContent can handle the augmented xContent correctly, for example when testing lenient parsing.If the xContent output contains objects that should be skipped of such treatment, an optional filtering
Predicatecan be supplied that checks xContent paths that should be excluded from this treatment.This predicate should check the xContent path that we want to insert to and return
trueif the path should be excluded. Paths are string concatenating field names and array indices, so e.g. in:{ "foo1 : { "bar" : [ { ... }, { ... }, { "baz" : { // insert here } } ] } }"foo1.bar.2.baz" would point to the desired insert location.To exclude inserting into the "foo1" object we would user a
Predicatelike
or if we don't want any random insertions in the "foo1" tree we could use(path) -> path.endsWith("foo1")(path) -> path.contains("foo1")- Throws:
IOException
-
insertIntoXContent
public static org.opensearch.core.xcontent.XContentBuilder insertIntoXContent(org.opensearch.core.xcontent.XContent xContent, org.opensearch.core.common.bytes.BytesReference original, List<String> paths, Supplier<String> key, Supplier<Object> value) throws IOException Inserts key/value pairs into xContent passed in asBytesReferenceand returns a newXContentBuilderThe paths argument uses dot separated fieldnames and numbers for array indices, similar to what we do inObjectPath. The key/value arguments can suppliers that either return fixed or random values.- Throws:
IOException
-
createJsonMapView
-