Skip to content

Commit 58540ae

Browse files
committed
More tests and fixes
1 parent cc157c8 commit 58540ae

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/utils/MlIndexAndAlias.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import java.io.IOException;
4848
import java.util.Arrays;
4949
import java.util.Comparator;
50+
import java.util.Objects;
5051
import java.util.Optional;
5152
import java.util.function.Predicate;
5253
import java.util.regex.Pattern;
@@ -79,7 +80,7 @@ public final class MlIndexAndAlias {
7980
private static final Predicate<String> IS_ANOMALIES_SHARED_INDEX = Pattern.compile(
8081
AnomalyDetectorsIndexFields.RESULTS_INDEX_PREFIX + AnomalyDetectorsIndexFields.RESULTS_INDEX_DEFAULT + "-\\d{6}"
8182
).asMatchPredicate();
82-
private static final String ROLLOVER_ALIAS_SUFFIX = ".rollover_alias";
83+
public static final String ROLLOVER_ALIAS_SUFFIX = ".rollover_alias";
8384

8485
static final Comparator<String> INDEX_NAME_COMPARATOR = (index1, index2) -> {
8586
String[] index1Parts = index1.split("-");
@@ -577,18 +578,20 @@ public static void rollover(Client client, RolloverRequest rolloverRequest, Acti
577578
}
578579

579580
public static Tuple<String, String> createRolloverAliasAndNewIndexName(String index) {
581+
String indexName = Objects.requireNonNull(index);
582+
580583
// Create an alias specifically for rolling over.
581584
// The ml-anomalies index has aliases for each job, any
582585
// of which could be used but that means one alias is
583586
// treated differently.
584-
// Using a `.` in the alias name avoids any conflicts
587+
// ROLLOVER_ALIAS_SUFFIX puts a `.` in the alias name to avoid any conflicts
585588
// as AD job Ids cannot start with `.`
586-
String rolloverAlias = index + ROLLOVER_ALIAS_SUFFIX;
589+
String rolloverAlias = indexName + ROLLOVER_ALIAS_SUFFIX;
587590

588591
// If the index does not end in a digit then rollover does not know
589592
// what to name the new index so it must be specified in the request.
590593
// Otherwise leave null and rollover will calculate the new name
591-
String newIndexName = MlIndexAndAlias.has6DigitSuffix(index) ? null : index + MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX;
594+
String newIndexName = MlIndexAndAlias.has6DigitSuffix(index) ? null : indexName + MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX;
592595

593596
return new Tuple<>(rolloverAlias, newIndexName);
594597
}

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/utils/MlIndexAndAliasTests.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,37 @@ public void testHas6DigitSuffix() {
404404
assertFalse(MlIndexAndAlias.has6DigitSuffix("index000001"));
405405
}
406406

407+
public void testIsAnomaliesSharedIndex() {
408+
assertTrue(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-000001"));
409+
assertTrue(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-000007"));
410+
assertTrue(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-100000"));
411+
assertTrue(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-999999"));
412+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-1000000"));
413+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared-00001"));
414+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-custom-fred-000007"));
415+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex("shared-000007"));
416+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared"));
417+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-shared000007"));
418+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-state-000007"));
419+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-annotations-000007"));
420+
assertFalse(MlIndexAndAlias.isAnomaliesSharedIndex(".ml-anomalies-stats-000007"));
421+
}
422+
423+
public void testCreateRolloverAliasAndNewIndexName() {
424+
var alias_index1 = MlIndexAndAlias.createRolloverAliasAndNewIndexName("fred");
425+
assertThat(alias_index1.v1(), equalTo("fred" + MlIndexAndAlias.ROLLOVER_ALIAS_SUFFIX));
426+
assertThat(alias_index1.v2(), equalTo("fred" + MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX));
427+
428+
var alias_index2 = MlIndexAndAlias.createRolloverAliasAndNewIndexName("derf" + MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX);
429+
assertThat(
430+
alias_index2.v1(),
431+
equalTo("derf" + MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX + MlIndexAndAlias.ROLLOVER_ALIAS_SUFFIX)
432+
);
433+
assertThat(alias_index2.v2(), equalTo(null));
434+
435+
assertThrows(NullPointerException.class, () -> MlIndexAndAlias.createRolloverAliasAndNewIndexName(null));
436+
}
437+
407438
public void testLatestIndexMatchingBaseName_isLatest() {
408439
Metadata.Builder metadata = Metadata.builder();
409440
metadata.put(createSharedResultsIndex(".ml-anomalies-custom-foo", IndexVersion.current(), List.of("job1")));

x-pack/plugin/ml/src/internalClusterTest/java/org/elasticsearch/xpack/ml/integration/JobResultsProviderIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ public void testPutJob_CreatesResultsIndex() {
155155
// Put fist job. This should create the results index as it's the first job.
156156
client().execute(PutJobAction.INSTANCE, new PutJobAction.Request(job1)).actionGet();
157157

158-
String sharedResultsIndex = AnomalyDetectorsIndexFields.RESULTS_INDEX_PREFIX + AnomalyDetectorsIndexFields.RESULTS_INDEX_DEFAULT;
158+
String sharedResultsIndex = AnomalyDetectorsIndexFields.RESULTS_INDEX_PREFIX + AnomalyDetectorsIndexFields.RESULTS_INDEX_DEFAULT
159+
+ MlIndexAndAlias.FIRST_INDEX_SIX_DIGIT_SUFFIX;
159160
Map<String, Object> mappingProperties = getIndexMappingProperties(sharedResultsIndex);
160161

161162
// Assert mappings have a few fields from the template

0 commit comments

Comments
 (0)