2828import org .elasticsearch .test .AbstractStreamableXContentTestCase ;
2929
3030import java .io .IOException ;
31+ import java .util .ArrayList ;
3132import java .util .Collections ;
3233import java .util .HashMap ;
34+ import java .util .List ;
3335import java .util .Map ;
3436import java .util .function .Predicate ;
3537
38+ import static com .carrotsearch .randomizedtesting .RandomizedTest .randomAsciiLettersOfLength ;
39+
3640
3741public class FieldCapabilitiesResponseTests extends AbstractStreamableXContentTestCase <FieldCapabilitiesResponse > {
3842
@@ -48,22 +52,46 @@ protected FieldCapabilitiesResponse createBlankInstance() {
4852
4953 @ Override
5054 protected FieldCapabilitiesResponse createTestInstance () {
51- Map <String , Map <String , FieldCapabilities >> responses = new HashMap <>();
55+ if (randomBoolean ()) {
56+ // merged responses
57+ Map <String , Map <String , FieldCapabilities >> responses = new HashMap <>();
58+
59+ String [] fields = generateRandomStringArray (5 , 10 , false , true );
60+ assertNotNull (fields );
61+
62+ for (String field : fields ) {
63+ Map <String , FieldCapabilities > typesToCapabilities = new HashMap <>();
64+ String [] types = generateRandomStringArray (5 , 10 , false , false );
65+ assertNotNull (types );
66+
67+ for (String type : types ) {
68+ typesToCapabilities .put (type , FieldCapabilitiesTests .randomFieldCaps (field ));
69+ }
70+ responses .put (field , typesToCapabilities );
71+ }
72+ return new FieldCapabilitiesResponse (responses );
73+ } else {
74+ // non-merged responses
75+ List <FieldCapabilitiesIndexResponse > responses = new ArrayList <>();
76+ int numResponse = randomIntBetween (0 , 10 );
77+ for (int i = 0 ; i < numResponse ; i ++) {
78+ responses .add (createRandomIndexResponse ());
79+ }
80+ return new FieldCapabilitiesResponse (responses );
81+ }
82+ }
83+
84+
85+ private FieldCapabilitiesIndexResponse createRandomIndexResponse () {
86+ Map <String , FieldCapabilities > responses = new HashMap <>();
5287
5388 String [] fields = generateRandomStringArray (5 , 10 , false , true );
5489 assertNotNull (fields );
5590
5691 for (String field : fields ) {
57- Map <String , FieldCapabilities > typesToCapabilities = new HashMap <>();
58- String [] types = generateRandomStringArray (5 , 10 , false , false );
59- assertNotNull (types );
60-
61- for (String type : types ) {
62- typesToCapabilities .put (type , FieldCapabilitiesTests .randomFieldCaps (field ));
63- }
64- responses .put (field , typesToCapabilities );
92+ responses .put (field , FieldCapabilitiesTests .randomFieldCaps (field ));
6593 }
66- return new FieldCapabilitiesResponse ( responses );
94+ return new FieldCapabilitiesIndexResponse ( randomAsciiLettersOfLength ( 10 ), responses );
6795 }
6896
6997 @ Override
@@ -138,6 +166,11 @@ public void testToXContent() throws IOException {
138166 "}" ).replaceAll ("\\ s+" , "" ), generatedResponse );
139167 }
140168
169+ public void testEmptyResponse () throws IOException {
170+ FieldCapabilitiesResponse testInstance = new FieldCapabilitiesResponse ();
171+ assertSerialization (testInstance );
172+ }
173+
141174 private static FieldCapabilitiesResponse createSimpleResponse () {
142175 Map <String , FieldCapabilities > titleCapabilities = new HashMap <>();
143176 titleCapabilities .put ("text" , new FieldCapabilities ("title" , "text" , true , false ));
0 commit comments