summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/action/admin/indices/rollover
diff options
context:
space:
mode:
authorSergey Galkin <sergey@galkin.me>2017-06-13 15:30:46 +0300
committerBoaz Leskes <b.leskes@gmail.com>2017-06-13 14:30:46 +0200
commit1c95cbc4e8a50f4077aa4f4a7ab8c0b80aeb133c (patch)
treeedb46d9d4fff35a39deed4afa8aaf7ad9427d1bf /core/src/test/java/org/elasticsearch/action/admin/indices/rollover
parent01d7c217f64e27c3b46c843f19317b08a0c3cce3 (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.java53
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;
+ }
}