Monitoring: Fix cleaner tests
Some changes in elastic/x-pack@d13557c517 change the testIgnoreTimestampedIndicesInOtherVersions method and it now sometime fails. This commit revert the previous behavior of the test and ensures that at least 1 index is cleaned up/deleted in each test. Original commit: elastic/x-pack-elasticsearch@3c6acb4ff8
This commit is contained in:
parent
1bd3af9a55
commit
233c64e942
|
@ -133,7 +133,12 @@ public abstract class MonitoringIndexNameResolver<T extends MonitoringDoc> {
|
|||
private final String index;
|
||||
|
||||
public Data() {
|
||||
this.index = String.join(DELIMITER, PREFIX, DATA, String.valueOf(MarvelTemplateUtils.TEMPLATE_VERSION));
|
||||
this(MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
}
|
||||
|
||||
// Used in tests
|
||||
protected Data(Integer version) {
|
||||
this.index = String.join(DELIMITER, PREFIX, DATA, String.valueOf(version));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -171,8 +176,13 @@ public abstract class MonitoringIndexNameResolver<T extends MonitoringDoc> {
|
|||
private final String index;
|
||||
|
||||
public Timestamped(MonitoredSystem system, Settings settings) {
|
||||
this(system, settings, MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
}
|
||||
|
||||
// Used in tests
|
||||
protected Timestamped(MonitoredSystem system, Settings settings, Integer version) {
|
||||
this.system = system;
|
||||
this.index = String.join(DELIMITER, PREFIX, system.getSystem(), String.valueOf(MarvelTemplateUtils.TEMPLATE_VERSION));
|
||||
this.index = String.join(DELIMITER, PREFIX, system.getSystem(), String.valueOf(version));
|
||||
String format = INDEX_NAME_TIME_FORMAT_SETTING.get(settings);
|
||||
try {
|
||||
this.formatter = DateTimeFormat.forPattern(format).withZoneUTC();
|
||||
|
|
|
@ -126,17 +126,18 @@ public abstract class AbstractExporterTemplateTestCase extends MarvelIntegTestCa
|
|||
}
|
||||
|
||||
private String dataTemplateName() {
|
||||
MockDataIndexNameResolver resolver = new MockDataIndexNameResolver();
|
||||
MockDataIndexNameResolver resolver = new MockDataIndexNameResolver(MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
return resolver.templateName();
|
||||
}
|
||||
|
||||
private String indexTemplateName() {
|
||||
MockTimestampedIndexNameResolver resolver = new MockTimestampedIndexNameResolver(MonitoredSystem.ES, exporterSettings());
|
||||
MockTimestampedIndexNameResolver resolver =
|
||||
new MockTimestampedIndexNameResolver(MonitoredSystem.ES, exporterSettings(), MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
return resolver.templateName();
|
||||
}
|
||||
|
||||
private String currentDataIndexName() {
|
||||
MockDataIndexNameResolver resolver = new MockDataIndexNameResolver();
|
||||
MockDataIndexNameResolver resolver = new MockDataIndexNameResolver(MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
return resolver.index(null);
|
||||
}
|
||||
|
||||
|
@ -144,7 +145,8 @@ public abstract class AbstractExporterTemplateTestCase extends MarvelIntegTestCa
|
|||
MonitoringDoc doc = new MonitoringDoc(MonitoredSystem.ES.getSystem(), Version.CURRENT.toString());
|
||||
doc.setTimestamp(System.currentTimeMillis());
|
||||
|
||||
MockTimestampedIndexNameResolver resolver = new MockTimestampedIndexNameResolver(MonitoredSystem.ES, exporterSettings());
|
||||
MockTimestampedIndexNameResolver resolver =
|
||||
new MockTimestampedIndexNameResolver(MonitoredSystem.ES, exporterSettings(), MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
return resolver.index(doc);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.marvel.MonitoringSettings;
|
||||
import org.elasticsearch.marvel.agent.collector.cluster.ClusterStateCollector;
|
||||
import org.elasticsearch.marvel.agent.exporter.MarvelTemplateUtils;
|
||||
import org.elasticsearch.marvel.agent.resolver.MonitoringIndexNameResolver;
|
||||
import org.elasticsearch.marvel.test.MarvelIntegTestCase;
|
||||
import org.elasticsearch.search.SearchHit;
|
||||
|
@ -107,7 +108,8 @@ public class ClusterStateTests extends MarvelIntegTestCase {
|
|||
public void testClusterStateNodes() throws Exception {
|
||||
final long nbNodes = internalCluster().size();
|
||||
|
||||
MonitoringIndexNameResolver.Timestamped timestampedResolver = new MockTimestampedIndexNameResolver(ES);
|
||||
MonitoringIndexNameResolver.Timestamped timestampedResolver =
|
||||
new MockTimestampedIndexNameResolver(ES, Settings.EMPTY, MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
assertNotNull(timestampedResolver);
|
||||
|
||||
String timestampedIndex = timestampedResolver.indexPattern();
|
||||
|
@ -152,7 +154,7 @@ public class ClusterStateTests extends MarvelIntegTestCase {
|
|||
public void testDiscoveryNodes() throws Exception {
|
||||
final long nbNodes = internalCluster().size();
|
||||
|
||||
MonitoringIndexNameResolver.Data dataResolver = new MockDataIndexNameResolver();
|
||||
MonitoringIndexNameResolver.Data dataResolver = new MockDataIndexNameResolver(MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
assertNotNull(dataResolver);
|
||||
|
||||
String dataIndex = dataResolver.indexPattern();
|
||||
|
|
|
@ -19,8 +19,6 @@ import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
|||
import org.elasticsearch.test.VersionUtils;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
|
@ -59,8 +57,12 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
public void testIgnoreCurrentDataIndex() throws Exception {
|
||||
internalCluster().startNode();
|
||||
|
||||
// Will be deleted
|
||||
createTimestampedIndex(now().minusDays(10));
|
||||
|
||||
// Won't be deleted
|
||||
createDataIndex(now().minusDays(10));
|
||||
assertIndicesCount(1);
|
||||
assertIndicesCount(2);
|
||||
|
||||
CleanerService.Listener listener = getListener();
|
||||
listener.onCleanUpIndices(days(0));
|
||||
|
@ -70,13 +72,14 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
public void testIgnoreDataIndicesInOtherVersions() throws Exception {
|
||||
internalCluster().startNode();
|
||||
|
||||
createIndex(MonitoringSettings.LEGACY_DATA_INDEX_NAME, now().minusYears(1));
|
||||
createDataIndex(now().minusDays(10));
|
||||
String olderIndex = String.join(MonitoringIndexNameResolver.DELIMITER, MonitoringIndexNameResolver.PREFIX,
|
||||
MonitoringIndexNameResolver.Data.DATA, "1");
|
||||
createIndex(olderIndex, now().minusDays(20));
|
||||
// Will be deleted
|
||||
createTimestampedIndex(now().minusDays(10));
|
||||
|
||||
assertIndicesCount(3);
|
||||
// Won't be deleted
|
||||
createIndex(MonitoringSettings.LEGACY_DATA_INDEX_NAME, now().minusYears(1));
|
||||
createDataIndex(now().minusDays(10), 0);
|
||||
createDataIndex(now().minusDays(10), 1);
|
||||
assertIndicesCount(4);
|
||||
|
||||
CleanerService.Listener listener = getListener();
|
||||
listener.onCleanUpIndices(days(0));
|
||||
|
@ -86,7 +89,10 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
public void testIgnoreCurrentTimestampedIndex() throws Exception {
|
||||
internalCluster().startNode();
|
||||
|
||||
// Will be deleted
|
||||
createTimestampedIndex(now().minusDays(10));
|
||||
|
||||
// Won't be deleted
|
||||
createTimestampedIndex(now());
|
||||
assertIndicesCount(2);
|
||||
|
||||
|
@ -98,18 +104,18 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
public void testIgnoreTimestampedIndicesInOtherVersions() throws Exception {
|
||||
internalCluster().startNode();
|
||||
|
||||
// Will be deleted
|
||||
createTimestampedIndex(now().minusDays(10));
|
||||
// create an older index based on an older template
|
||||
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY.MM.dd").withZoneUTC();
|
||||
String index = String.join(MonitoringIndexNameResolver.DELIMITER, MonitoringIndexNameResolver.PREFIX,
|
||||
MonitoredSystem.ES.getSystem(), "1");
|
||||
String timestampedIndex = String.join("-", index, formatter.print(now().minusDays(10)));
|
||||
createIndex(timestampedIndex, now().minusDays(10));
|
||||
assertIndicesCount(2);
|
||||
|
||||
// Won't be deleted
|
||||
createTimestampedIndex(now().minusDays(10), 0);
|
||||
createTimestampedIndex(now().minusDays(10), 1);
|
||||
createTimestampedIndex(now().minusDays(10), Integer.MAX_VALUE);
|
||||
assertIndicesCount(4);
|
||||
|
||||
CleanerService.Listener listener = getListener();
|
||||
listener.onCleanUpIndices(days(0));
|
||||
assertIndicesCount(2);
|
||||
assertIndicesCount(3);
|
||||
}
|
||||
|
||||
public void testDeleteIndices() throws Exception {
|
||||
|
@ -169,7 +175,7 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
}
|
||||
|
||||
protected CleanerService.Listener getListener() {
|
||||
Exporters exporters = internalCluster().getInstance(Exporters.class);
|
||||
Exporters exporters = internalCluster().getInstance(Exporters.class, internalCluster().getMasterName());
|
||||
for (Exporter exporter : exporters) {
|
||||
if (exporter instanceof CleanerService.Listener) {
|
||||
return (CleanerService.Listener) exporter;
|
||||
|
@ -186,17 +192,32 @@ public abstract class AbstractIndicesCleanerTestCase extends MarvelIntegTestCase
|
|||
* Creates a monitoring data index in a given version.
|
||||
*/
|
||||
protected void createDataIndex(DateTime creationDate) {
|
||||
createIndex(new MockDataIndexNameResolver().index(randomMonitoringDoc()), creationDate);
|
||||
createDataIndex(creationDate, MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a monitoring timestamped index in a given version.
|
||||
* Creates a monitoring data index in a given version.
|
||||
*/
|
||||
protected void createDataIndex(DateTime creationDate, int version) {
|
||||
createIndex(new MockDataIndexNameResolver(version).index(randomMonitoringDoc()), creationDate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a monitoring timestamped index using the current template version.
|
||||
*/
|
||||
protected void createTimestampedIndex(DateTime creationDate) {
|
||||
createTimestampedIndex(creationDate, MarvelTemplateUtils.TEMPLATE_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a monitoring timestamped index using a given template version.
|
||||
*/
|
||||
protected void createTimestampedIndex(DateTime creationDate, int version) {
|
||||
MonitoringDoc monitoringDoc = randomMonitoringDoc();
|
||||
monitoringDoc.setTimestamp(creationDate.getMillis());
|
||||
|
||||
MonitoringIndexNameResolver.Timestamped resolver = new MockTimestampedIndexNameResolver(MonitoredSystem.ES);
|
||||
MonitoringIndexNameResolver.Timestamped resolver =
|
||||
new MockTimestampedIndexNameResolver(MonitoredSystem.ES, Settings.EMPTY, version);
|
||||
createIndex(resolver.index(monitoringDoc), creationDate);
|
||||
}
|
||||
|
||||
|
|
|
@ -440,6 +440,10 @@ public abstract class MarvelIntegTestCase extends ESIntegTestCase {
|
|||
|
||||
public class MockDataIndexNameResolver extends MonitoringIndexNameResolver.Data<MonitoringDoc> {
|
||||
|
||||
public MockDataIndexNameResolver(Integer version) {
|
||||
super(version);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String type(MonitoringDoc document) {
|
||||
throw new UnsupportedOperationException("MockDataIndexNameResolver does not support resolving type");
|
||||
|
@ -458,12 +462,8 @@ public abstract class MarvelIntegTestCase extends ESIntegTestCase {
|
|||
|
||||
protected class MockTimestampedIndexNameResolver extends MonitoringIndexNameResolver.Timestamped<MonitoringDoc> {
|
||||
|
||||
public MockTimestampedIndexNameResolver(MonitoredSystem id, Settings settings) {
|
||||
super(id, settings);
|
||||
}
|
||||
|
||||
public MockTimestampedIndexNameResolver(MonitoredSystem id) {
|
||||
this(id, Settings.EMPTY);
|
||||
public MockTimestampedIndexNameResolver(MonitoredSystem system, Settings settings, Integer version) {
|
||||
super(system, settings, version);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue