|  | @@ -10,28 +10,34 @@ package org.elasticsearch.action.admin.indices.shrink;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import org.elasticsearch.action.admin.indices.alias.Alias;
 | 
	
		
			
				|  |  |  import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
 | 
	
		
			
				|  |  | -import org.elasticsearch.action.admin.indices.create.CreateIndexRequestTests;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.Strings;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.bytes.BytesReference;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.io.stream.BytesStreamOutput;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.io.stream.StreamInput;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.io.stream.Writeable;
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.network.NetworkModule;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.settings.Settings;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.unit.ByteSizeUnit;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.unit.ByteSizeValue;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.xcontent.XContentParser;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.xcontent.XContentType;
 | 
	
		
			
				|  |  |  import org.elasticsearch.index.RandomCreateIndexGenerator;
 | 
	
		
			
				|  |  | -import org.elasticsearch.test.ESTestCase;
 | 
	
		
			
				|  |  | +import org.elasticsearch.test.AbstractWireSerializingTestCase;
 | 
	
		
			
				|  |  |  import org.elasticsearch.test.hamcrest.ElasticsearchAssertions;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  |  import java.util.function.Consumer;
 | 
	
		
			
				|  |  |  import java.util.function.Supplier;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import static org.elasticsearch.action.admin.indices.create.CreateIndexRequestTests.assertAliasesEqual;
 | 
	
		
			
				|  |  |  import static org.elasticsearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_SHARDS;
 | 
	
		
			
				|  |  |  import static org.elasticsearch.common.xcontent.ToXContent.EMPTY_PARAMS;
 | 
	
		
			
				|  |  |  import static org.hamcrest.Matchers.containsString;
 | 
	
		
			
				|  |  |  import static org.hamcrest.Matchers.hasToString;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -public class ResizeRequestTests extends ESTestCase {
 | 
	
		
			
				|  |  | +public class ResizeRequestTests extends AbstractWireSerializingTestCase<ResizeRequest> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testCopySettingsValidation() {
 | 
	
		
			
				|  |  |          runTestCopySettingsValidation(false, r -> {
 | 
	
	
		
			
				|  | @@ -83,39 +89,63 @@ public class ResizeRequestTests extends ESTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testToAndFromXContent() throws IOException {
 | 
	
		
			
				|  |  | -        final ResizeRequest resizeRequest = createTestItem();
 | 
	
		
			
				|  |  | +        final ResizeRequest resizeRequest = createTestInstance();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          boolean humanReadable = randomBoolean();
 | 
	
		
			
				|  |  |          final XContentType xContentType = randomFrom(XContentType.values());
 | 
	
		
			
				|  |  |          BytesReference originalBytes = toShuffledXContent(resizeRequest, xContentType, EMPTY_PARAMS, humanReadable);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        ResizeRequest parsedResizeRequest = new ResizeRequest(resizeRequest.getTargetIndexRequest().index(),
 | 
	
		
			
				|  |  | -                resizeRequest.getSourceIndex());
 | 
	
		
			
				|  |  | +        ResizeRequest parsedResizeRequest = new ResizeRequest(
 | 
	
		
			
				|  |  | +            randomValueOtherThan(resizeRequest.getTargetIndexRequest().index(), () -> randomAlphaOfLength(5)),
 | 
	
		
			
				|  |  | +            randomValueOtherThan(resizeRequest.getSourceIndex(), () -> randomAlphaOfLength(5))
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  |          try (XContentParser xParser = createParser(xContentType.xContent(), originalBytes)) {
 | 
	
		
			
				|  |  |              parsedResizeRequest.fromXContent(xParser);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        assertEquals(resizeRequest.getSourceIndex(), parsedResizeRequest.getSourceIndex());
 | 
	
		
			
				|  |  | -        assertEquals(resizeRequest.getTargetIndexRequest().index(), parsedResizeRequest.getTargetIndexRequest().index());
 | 
	
		
			
				|  |  | -        CreateIndexRequestTests.assertAliasesEqual(resizeRequest.getTargetIndexRequest().aliases(),
 | 
	
		
			
				|  |  | -                parsedResizeRequest.getTargetIndexRequest().aliases());
 | 
	
		
			
				|  |  | +        // these are not expected to be equal in the general case because ResizeRequest.toXContent doesn't include everything
 | 
	
		
			
				|  |  | +        assertNotEquals(resizeRequest, parsedResizeRequest);
 | 
	
		
			
				|  |  | +        assertNotEquals(resizeRequest.getSourceIndex(), parsedResizeRequest.getSourceIndex());
 | 
	
		
			
				|  |  | +        assertNotEquals(resizeRequest.getTargetIndexRequest(), parsedResizeRequest.getTargetIndexRequest());
 | 
	
		
			
				|  |  | +        assertNotEquals(resizeRequest.getTargetIndexRequest().index(), parsedResizeRequest.getTargetIndexRequest().index());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // but these are expected to be equal
 | 
	
		
			
				|  |  | +        assertAliasesEqual(resizeRequest.getTargetIndexRequest().aliases(), parsedResizeRequest.getTargetIndexRequest().aliases());
 | 
	
		
			
				|  |  |          assertEquals(resizeRequest.getTargetIndexRequest().settings(), parsedResizeRequest.getTargetIndexRequest().settings());
 | 
	
		
			
				|  |  | +        assertEquals(resizeRequest.getMaxPrimaryShardSize(), parsedResizeRequest.getMaxPrimaryShardSize());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BytesReference finalBytes = toShuffledXContent(parsedResizeRequest, xContentType, EMPTY_PARAMS, humanReadable);
 | 
	
		
			
				|  |  |          ElasticsearchAssertions.assertToXContentEquivalent(originalBytes, finalBytes, xContentType);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private static ResizeRequest createTestItem() {
 | 
	
		
			
				|  |  | +    public void testSerializeRequest() throws IOException {
 | 
	
		
			
				|  |  | +        ResizeRequest request = createTestInstance();
 | 
	
		
			
				|  |  | +        BytesStreamOutput out = new BytesStreamOutput();
 | 
	
		
			
				|  |  | +        request.writeTo(out);
 | 
	
		
			
				|  |  | +        BytesReference bytes = out.bytes();
 | 
	
		
			
				|  |  | +        NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry(NetworkModule.getNamedWriteables());
 | 
	
		
			
				|  |  | +        StreamInput wrap = new NamedWriteableAwareStreamInput(bytes.streamInput(), namedWriteableRegistry);
 | 
	
		
			
				|  |  | +        ResizeRequest deserializedReq = new ResizeRequest(wrap);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        assertEquals(request.getSourceIndex(), deserializedReq.getSourceIndex());
 | 
	
		
			
				|  |  | +        assertEquals(request.getTargetIndexRequest().settings(), deserializedReq.getTargetIndexRequest().settings());
 | 
	
		
			
				|  |  | +        assertEquals(request.getTargetIndexRequest().aliases(), deserializedReq.getTargetIndexRequest().aliases());
 | 
	
		
			
				|  |  | +        assertEquals(request.getCopySettings(), deserializedReq.getCopySettings());
 | 
	
		
			
				|  |  | +        assertEquals(request.getResizeType(), deserializedReq.getResizeType());
 | 
	
		
			
				|  |  | +        assertEquals(request.getMaxPrimaryShardSize(), deserializedReq.getMaxPrimaryShardSize());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    protected Writeable.Reader<ResizeRequest> instanceReader() { return ResizeRequest::new; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    protected ResizeRequest createTestInstance() {
 | 
	
		
			
				|  |  |          ResizeRequest resizeRequest = new ResizeRequest(randomAlphaOfLengthBetween(3, 10), randomAlphaOfLengthBetween(3, 10));
 | 
	
		
			
				|  |  |          if (randomBoolean()) {
 | 
	
		
			
				|  |  | -            CreateIndexRequest createIndexRequest = new CreateIndexRequest(randomAlphaOfLengthBetween(3, 10));
 | 
	
		
			
				|  |  | -            if (randomBoolean()) {
 | 
	
		
			
				|  |  | -                RandomCreateIndexGenerator.randomAliases(createIndexRequest);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (randomBoolean()) {
 | 
	
		
			
				|  |  | -                createIndexRequest.settings(RandomCreateIndexGenerator.randomIndexSettings());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            resizeRequest.setTargetIndex(createIndexRequest);
 | 
	
		
			
				|  |  | +            resizeRequest.setTargetIndex(RandomCreateIndexGenerator.randomCreateIndexRequest());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (randomBoolean()) {
 | 
	
		
			
				|  |  | +            resizeRequest.setMaxPrimaryShardSize(new ByteSizeValue(randomIntBetween(1, 100)));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return resizeRequest;
 | 
	
		
			
				|  |  |      }
 |