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