|
@@ -25,6 +25,7 @@ import org.elasticsearch.cluster.ClusterState;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
|
|
import org.elasticsearch.cluster.metadata.MetaData;
|
|
|
+import org.elasticsearch.common.settings.ClusterSettings;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.index.mapper.MapperService;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
@@ -35,10 +36,12 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
|
|
|
public void testParseFailed() {
|
|
|
try {
|
|
|
- new AutoCreateIndex(Settings.builder().put("action.auto_create_index", ",,,").build(), new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
+ Settings settings = Settings.builder().put("action.auto_create_index", ",,,").build();
|
|
|
+ newAutoCreateIndex(settings);
|
|
|
fail("initialization should have failed");
|
|
|
} catch (IllegalArgumentException ex) {
|
|
|
- assertEquals("Can't parse [,,,] for setting [action.auto_create_index] must be either [true, false, or a comma separated list of index patterns]", ex.getMessage());
|
|
|
+ assertEquals("Can't parse [,,,] for setting [action.auto_create_index] must be either [true, false, or a " +
|
|
|
+ "comma separated list of index patterns]", ex.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -46,46 +49,51 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
String prefix = randomFrom("+", "-");
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), prefix).build();
|
|
|
try {
|
|
|
- new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ newAutoCreateIndex(settings);
|
|
|
fail("initialization should have failed");
|
|
|
} catch(IllegalArgumentException ex) {
|
|
|
- assertEquals("Can't parse [" + prefix + "] for setting [action.auto_create_index] must contain an index name after [" + prefix + "]", ex.getMessage());
|
|
|
+ assertEquals("Can't parse [" + prefix + "] for setting [action.auto_create_index] must contain an index name after ["
|
|
|
+ + prefix + "]", ex.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void testAutoCreationDisabled() {
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), false).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate(randomAsciiOfLengthBetween(1, 10), buildClusterState()), equalTo(false));
|
|
|
}
|
|
|
|
|
|
public void testAutoCreationEnabled() {
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), true).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate(randomAsciiOfLengthBetween(1, 10), buildClusterState()), equalTo(true));
|
|
|
}
|
|
|
|
|
|
public void testDefaultAutoCreation() {
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(Settings.EMPTY, new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(Settings.EMPTY);
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate(randomAsciiOfLengthBetween(1, 10), buildClusterState()), equalTo(true));
|
|
|
}
|
|
|
|
|
|
public void testExistingIndex() {
|
|
|
- Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom(true, false, randomAsciiOfLengthBetween(7, 10))).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
- assertThat(autoCreateIndex.shouldAutoCreate(randomFrom("index1", "index2", "index3"), buildClusterState("index1", "index2", "index3")), equalTo(false));
|
|
|
+ Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom(true, false,
|
|
|
+ randomAsciiOfLengthBetween(7, 10))).build();
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
+ assertThat(autoCreateIndex.shouldAutoCreate(randomFrom("index1", "index2", "index3"),
|
|
|
+ buildClusterState("index1", "index2", "index3")), equalTo(false));
|
|
|
}
|
|
|
|
|
|
public void testDynamicMappingDisabled() {
|
|
|
- Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom(true, randomAsciiOfLengthBetween(1, 10)))
|
|
|
+ Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom(true,
|
|
|
+ randomAsciiOfLengthBetween(1, 10)))
|
|
|
.put(MapperService.INDEX_MAPPER_DYNAMIC_SETTING.getKey(), false).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(Settings.EMPTY));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate(randomAsciiOfLengthBetween(1, 10), buildClusterState()), equalTo(false));
|
|
|
}
|
|
|
|
|
|
public void testAutoCreationPatternEnabled() {
|
|
|
- Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom("+index*", "index*")).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom("+index*", "index*"))
|
|
|
+ .build();
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("index" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(true));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("does_not_match" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(false));
|
|
@@ -93,7 +101,7 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
|
|
|
public void testAutoCreationPatternDisabled() {
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), "-index*").build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("index" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(false));
|
|
|
//default is false when patterns are specified
|
|
@@ -101,8 +109,9 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testAutoCreationMultiplePatternsWithWildcards() {
|
|
|
- Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), randomFrom("+test*,-index*", "test*,-index*")).build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(),
|
|
|
+ randomFrom("+test*,-index*", "test*,-index*")).build();
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("index" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(false));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(true));
|
|
@@ -111,7 +120,7 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
|
|
|
public void testAutoCreationMultiplePatternsNoWildcards() {
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), "+test1,-index1").build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test1", clusterState), equalTo(true));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("index" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(false));
|
|
@@ -121,7 +130,7 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
|
|
|
public void testAutoCreationMultipleIndexNames() {
|
|
|
Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), "test1,test2").build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test1", clusterState), equalTo(true));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test2", clusterState), equalTo(true));
|
|
@@ -129,19 +138,51 @@ public class AutoCreateIndexTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testAutoCreationConflictingPatternsFirstWins() {
|
|
|
- Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), "+test1,-test1,-test2,+test2").build();
|
|
|
- AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, new IndexNameExpressionResolver(settings));
|
|
|
+ Settings settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(),
|
|
|
+ "+test1,-test1,-test2,+test2").build();
|
|
|
+ AutoCreateIndex autoCreateIndex = newAutoCreateIndex(settings);
|
|
|
ClusterState clusterState = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder()).build();
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test1", clusterState), equalTo(true));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("test2", clusterState), equalTo(false));
|
|
|
assertThat(autoCreateIndex.shouldAutoCreate("does_not_match" + randomAsciiOfLengthBetween(1, 5), clusterState), equalTo(false));
|
|
|
}
|
|
|
|
|
|
+ public void testUpdate() {
|
|
|
+ boolean value = randomBoolean();
|
|
|
+ Settings settings;
|
|
|
+ if (value && randomBoolean()) {
|
|
|
+ settings = Settings.EMPTY;
|
|
|
+ } else {
|
|
|
+ settings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), value).build();
|
|
|
+ }
|
|
|
+
|
|
|
+ ClusterSettings clusterSettings = new ClusterSettings(settings,
|
|
|
+ ClusterSettings.BUILT_IN_CLUSTER_SETTINGS);
|
|
|
+ AutoCreateIndex autoCreateIndex = new AutoCreateIndex(settings, clusterSettings, new IndexNameExpressionResolver(settings));
|
|
|
+ assertThat(autoCreateIndex.getAutoCreate().isAutoCreateIndex(), equalTo(value));
|
|
|
+
|
|
|
+ Settings newSettings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), !value).build();
|
|
|
+ clusterSettings.applySettings(newSettings);
|
|
|
+ assertThat(autoCreateIndex.getAutoCreate().isAutoCreateIndex(), equalTo(!value));
|
|
|
+
|
|
|
+ newSettings = Settings.builder().put(AutoCreateIndex.AUTO_CREATE_INDEX_SETTING.getKey(), "logs-*").build();
|
|
|
+ clusterSettings.applySettings(newSettings);
|
|
|
+ assertThat(autoCreateIndex.getAutoCreate().isAutoCreateIndex(), equalTo(true));
|
|
|
+ assertThat(autoCreateIndex.getAutoCreate().getExpressions().size(), equalTo(1));
|
|
|
+ assertThat(autoCreateIndex.getAutoCreate().getExpressions().get(0).v1(), equalTo("logs-*"));
|
|
|
+ }
|
|
|
+
|
|
|
private static ClusterState buildClusterState(String... indices) {
|
|
|
MetaData.Builder metaData = MetaData.builder();
|
|
|
for (String index : indices) {
|
|
|
metaData.put(IndexMetaData.builder(index).settings(settings(Version.CURRENT)).numberOfShards(1).numberOfReplicas(1));
|
|
|
}
|
|
|
- return ClusterState.builder(org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).build();
|
|
|
+ return ClusterState.builder(org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).build();
|
|
|
+ }
|
|
|
+
|
|
|
+ private AutoCreateIndex newAutoCreateIndex(Settings settings) {
|
|
|
+ return new AutoCreateIndex(settings, new ClusterSettings(settings,
|
|
|
+ ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), new IndexNameExpressionResolver(settings));
|
|
|
}
|
|
|
}
|