diff options
author | Sergey Galkin <sergey@galkin.me> | 2017-06-13 15:30:46 +0300 |
---|---|---|
committer | Boaz Leskes <b.leskes@gmail.com> | 2017-06-13 14:30:46 +0200 |
commit | 1c95cbc4e8a50f4077aa4f4a7ab8c0b80aeb133c (patch) | |
tree | edb46d9d4fff35a39deed4afa8aaf7ad9427d1bf /core/src/test/java/org/elasticsearch/action/admin/indices/rollover | |
parent | 01d7c217f64e27c3b46c843f19317b08a0c3cce3 (diff) |
Rollover max docs should only count primaries (#24977)
max_doc condition for index rollover should use document count only from primary shards
Fixes #24217
Diffstat (limited to 'core/src/test/java/org/elasticsearch/action/admin/indices/rollover')
-rw-r--r-- | core/src/test/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverActionTests.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverActionTests.java b/core/src/test/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverActionTests.java index 9d62bd825f..d33987c92a 100644 --- a/core/src/test/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverActionTests.java +++ b/core/src/test/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverActionTests.java @@ -22,6 +22,8 @@ package org.elasticsearch.action.admin.indices.rollover; import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesClusterStateUpdateRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexClusterStateUpdateRequest; +import org.elasticsearch.action.admin.indices.stats.CommonStats; +import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.cluster.metadata.AliasAction; import org.elasticsearch.cluster.metadata.AliasMetaData; @@ -40,12 +42,30 @@ import java.util.List; import java.util.Locale; import java.util.Set; +import org.mockito.ArgumentCaptor; import static org.elasticsearch.action.admin.indices.rollover.TransportRolloverAction.evaluateConditions; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class TransportRolloverActionTests extends ESTestCase { + public void testDocStatsSelectionFromPrimariesOnly() throws Exception { + long docsInPrimaryShards = 100; + long docsInShards = 200; + + final Condition condition = createTestCondition(); + evaluateConditions(Sets.newHashSet(condition), createMetaData(), createIndecesStatResponse(docsInShards, docsInPrimaryShards)); + final ArgumentCaptor<Condition.Stats> argument = ArgumentCaptor.forClass(Condition.Stats.class); + verify(condition).evaluate(argument.capture()); + + assertEquals(docsInPrimaryShards, argument.getValue().numDocs); + } + public void testEvaluateConditions() throws Exception { MaxDocsCondition maxDocsCondition = new MaxDocsCondition(100L); MaxAgeCondition maxAgeCondition = new MaxAgeCondition(TimeValue.timeValueHours(2)); @@ -190,4 +210,37 @@ public class TransportRolloverActionTests extends ESTestCase { assertThat(createIndexRequest.index(), equalTo(rolloverIndex)); assertThat(createIndexRequest.cause(), equalTo("rollover_index")); } + + private IndicesStatsResponse createIndecesStatResponse(long totalDocs, long primaryDocs) { + final CommonStats primaryStats = mock(CommonStats.class); + when(primaryStats.getDocs()).thenReturn(new DocsStats(primaryDocs, 0)); + + final CommonStats totalStats = mock(CommonStats.class); + when(totalStats.getDocs()).thenReturn(new DocsStats(totalDocs, 0)); + + final IndicesStatsResponse response = mock(IndicesStatsResponse.class); + when(response.getPrimaries()).thenReturn(primaryStats); + when(response.getTotal()).thenReturn(totalStats); + + return response; + } + + private IndexMetaData createMetaData() { + final Settings settings = Settings.builder() + .put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetaData.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) + .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) + .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0) + .build(); + return IndexMetaData.builder(randomAlphaOfLength(10)) + .creationDate(System.currentTimeMillis() - TimeValue.timeValueHours(3).getMillis()) + .settings(settings) + .build(); + } + + private Condition createTestCondition() { + final Condition condition = mock(Condition.class); + when(condition.evaluate(any())).thenReturn(new Condition.Result(condition, true)); + return condition; + } } |