2222import org .elasticsearch .ElasticsearchParseException ;
2323import org .elasticsearch .action .admin .indices .alias .Alias ;
2424import org .elasticsearch .common .Strings ;
25- import org .elasticsearch .common .bytes .BytesReference ;
2625import org .elasticsearch .common .io .stream .BytesStreamOutput ;
2726import org .elasticsearch .common .io .stream .StreamInput ;
28- import org .elasticsearch .common .settings .Settings ;
2927import org .elasticsearch .common .xcontent .LoggingDeprecationHandler ;
3028import org .elasticsearch .common .xcontent .NamedXContentRegistry ;
3129import org .elasticsearch .common .xcontent .XContentParser ;
3230import org .elasticsearch .common .xcontent .XContentType ;
3331import org .elasticsearch .common .xcontent .json .JsonXContent ;
3432import org .elasticsearch .index .RandomCreateIndexGenerator ;
35- import org .elasticsearch .test .ESTestCase ;
36- import org .elasticsearch .test .hamcrest .ElasticsearchAssertions ;
33+ import org .elasticsearch .test .AbstractXContentTestCase ;
3734
3835import java .io .IOException ;
3936import java .util .Map ;
4037import java .util .Set ;
4138
42- import static org .elasticsearch .cluster .metadata .IndexMetaData .SETTING_NUMBER_OF_SHARDS ;
43- import static org .elasticsearch .common .xcontent .ToXContent .EMPTY_PARAMS ;
39+ public class CreateIndexRequestTests extends AbstractXContentTestCase <CreateIndexRequest > {
4440
45- public class CreateIndexRequestTests extends ESTestCase {
41+ @ Override
42+ protected CreateIndexRequest createTestInstance () {
43+ try {
44+ return RandomCreateIndexGenerator .randomCreateIndexRequest ();
45+ } catch (IOException e ) {
46+ throw new RuntimeException (e );
47+ }
48+ }
49+
50+ @ Override
51+ protected CreateIndexRequest doParseInstance (XContentParser parser ) throws IOException {
52+ CreateIndexRequest request = new CreateIndexRequest ();
53+ request .source (parser .map (), LoggingDeprecationHandler .INSTANCE );
54+ return request ;
55+ }
56+
57+ @ Override
58+ protected void assertEqualInstances (CreateIndexRequest expectedInstance , CreateIndexRequest newInstance ) {
59+ assertEquals (expectedInstance .settings (), newInstance .settings ());
60+ assertAliasesEqual (expectedInstance .aliases (), newInstance .aliases ());
61+ assertMappingsEqual (expectedInstance .mappings (), newInstance .mappings ());
62+ }
63+
64+ @ Override
65+ protected boolean supportsUnknownFields () {
66+ return false ;
67+ }
68+
69+ public static void assertMappingsEqual (Map <String , String > expected , Map <String , String > actual ) {
70+ assertEquals (expected .keySet (), actual .keySet ());
71+
72+ for (Map .Entry <String , String > expectedEntry : expected .entrySet ()) {
73+ String expectedValue = expectedEntry .getValue ();
74+ String actualValue = actual .get (expectedEntry .getKey ());
75+ try (XContentParser expectedJson = JsonXContent .jsonXContent .createParser (NamedXContentRegistry .EMPTY ,
76+ LoggingDeprecationHandler .INSTANCE , expectedValue );
77+ XContentParser actualJson = JsonXContent .jsonXContent .createParser (NamedXContentRegistry .EMPTY ,
78+ LoggingDeprecationHandler .INSTANCE , actualValue )) {
79+ assertEquals (expectedJson .map (), actualJson .map ());
80+ } catch (IOException e ) {
81+ throw new RuntimeException (e );
82+ }
83+ }
84+ }
85+
86+ public static void assertAliasesEqual (Set <Alias > expected , Set <Alias > actual ) {
87+ assertEquals (expected , actual );
88+
89+ for (Alias expectedAlias : expected ) {
90+ for (Alias actualAlias : actual ) {
91+ if (expectedAlias .equals (actualAlias )) {
92+ // As Alias#equals only looks at name, we check the equality of the other Alias parameters here.
93+ assertEquals (expectedAlias .filter (), actualAlias .filter ());
94+ assertEquals (expectedAlias .indexRouting (), actualAlias .indexRouting ());
95+ assertEquals (expectedAlias .searchRouting (), actualAlias .searchRouting ());
96+ }
97+ }
98+ }
99+ }
46100
47101 public void testSerialization () throws IOException {
48102 CreateIndexRequest request = new CreateIndexRequest ("foo" );
49- String mapping = Strings .toString (JsonXContent .contentBuilder ().startObject ().startObject ("type" ).endObject ().endObject ());
103+ String mapping = Strings .toString (JsonXContent .contentBuilder ().startObject ()
104+ .startObject ("type" ).endObject ().endObject ());
50105 request .mapping ("my_type" , mapping , XContentType .JSON );
51106
52107 try (BytesStreamOutput output = new BytesStreamOutput ()) {
@@ -63,7 +118,7 @@ public void testSerialization() throws IOException {
63118
64119 public void testTopLevelKeys () {
65120 String createIndex =
66- "{\n "
121+ "{\n "
67122 + " \" FOO_SHOULD_BE_ILLEGAL_HERE\" : {\n "
68123 + " \" BAR_IS_THE_SAME\" : 42\n "
69124 + " },\n "
@@ -80,81 +135,7 @@ public void testTopLevelKeys() {
80135
81136 CreateIndexRequest request = new CreateIndexRequest ();
82137 ElasticsearchParseException e = expectThrows (ElasticsearchParseException .class ,
83- () -> {request .source (createIndex , XContentType .JSON );});
138+ () -> {request .source (createIndex , XContentType .JSON );});
84139 assertEquals ("unknown key [FOO_SHOULD_BE_ILLEGAL_HERE] for create index" , e .getMessage ());
85140 }
86-
87- public void testToXContent () throws IOException {
88- CreateIndexRequest request = new CreateIndexRequest ("foo" );
89-
90- String mapping = Strings .toString (JsonXContent .contentBuilder ().startObject ().startObject ("type" ).endObject ().endObject ());
91- request .mapping ("my_type" , mapping , XContentType .JSON );
92-
93- Alias alias = new Alias ("test_alias" );
94- alias .routing ("1" );
95- alias .filter ("{\" term\" :{\" year\" :2016}}" );
96- alias .writeIndex (true );
97- request .alias (alias );
98-
99- Settings .Builder settings = Settings .builder ();
100- settings .put (SETTING_NUMBER_OF_SHARDS , 10 );
101- request .settings (settings );
102-
103- String actualRequestBody = Strings .toString (request );
104-
105- String expectedRequestBody = "{\" settings\" :{\" index\" :{\" number_of_shards\" :\" 10\" }}," +
106- "\" mappings\" :{\" my_type\" :{\" type\" :{}}}," +
107- "\" aliases\" :{\" test_alias\" :{\" filter\" :{\" term\" :{\" year\" :2016}},\" routing\" :\" 1\" ,\" is_write_index\" :true}}}" ;
108-
109- assertEquals (expectedRequestBody , actualRequestBody );
110- }
111-
112- public void testToAndFromXContent () throws IOException {
113-
114- final CreateIndexRequest createIndexRequest = RandomCreateIndexGenerator .randomCreateIndexRequest ();
115-
116- boolean humanReadable = randomBoolean ();
117- final XContentType xContentType = randomFrom (XContentType .values ());
118- BytesReference originalBytes = toShuffledXContent (createIndexRequest , xContentType , EMPTY_PARAMS , humanReadable );
119-
120- CreateIndexRequest parsedCreateIndexRequest = new CreateIndexRequest ();
121- parsedCreateIndexRequest .source (originalBytes , xContentType );
122-
123- assertMappingsEqual (createIndexRequest .mappings (), parsedCreateIndexRequest .mappings ());
124- assertAliasesEqual (createIndexRequest .aliases (), parsedCreateIndexRequest .aliases ());
125- assertEquals (createIndexRequest .settings (), parsedCreateIndexRequest .settings ());
126-
127- BytesReference finalBytes = toShuffledXContent (parsedCreateIndexRequest , xContentType , EMPTY_PARAMS , humanReadable );
128- ElasticsearchAssertions .assertToXContentEquivalent (originalBytes , finalBytes , xContentType );
129- }
130-
131- public static void assertMappingsEqual (Map <String , String > expected , Map <String , String > actual ) throws IOException {
132- assertEquals (expected .keySet (), actual .keySet ());
133-
134- for (Map .Entry <String , String > expectedEntry : expected .entrySet ()) {
135- String expectedValue = expectedEntry .getValue ();
136- String actualValue = actual .get (expectedEntry .getKey ());
137- try (XContentParser expectedJson = JsonXContent .jsonXContent .createParser (NamedXContentRegistry .EMPTY ,
138- LoggingDeprecationHandler .INSTANCE , expectedValue );
139- XContentParser actualJson = JsonXContent .jsonXContent .createParser (NamedXContentRegistry .EMPTY ,
140- LoggingDeprecationHandler .INSTANCE , actualValue )){
141- assertEquals (expectedJson .map (), actualJson .map ());
142- }
143- }
144- }
145-
146- public static void assertAliasesEqual (Set <Alias > expected , Set <Alias > actual ) throws IOException {
147- assertEquals (expected , actual );
148-
149- for (Alias expectedAlias : expected ) {
150- for (Alias actualAlias : actual ) {
151- if (expectedAlias .equals (actualAlias )) {
152- // As Alias#equals only looks at name, we check the equality of the other Alias parameters here.
153- assertEquals (expectedAlias .filter (), actualAlias .filter ());
154- assertEquals (expectedAlias .indexRouting (), actualAlias .indexRouting ());
155- assertEquals (expectedAlias .searchRouting (), actualAlias .searchRouting ());
156- }
157- }
158- }
159- }
160141}
0 commit comments