diff --git a/plugins/ingest-geoip/src/test/java/org/elasticsearch/ingest/geoip/GeoIpProcessorFactoryTests.java b/plugins/ingest-geoip/src/test/java/org/elasticsearch/ingest/geoip/GeoIpProcessorFactoryTests.java index 0cc9e8a4847..0aa2eb9fdfa 100644 --- a/plugins/ingest-geoip/src/test/java/org/elasticsearch/ingest/geoip/GeoIpProcessorFactoryTests.java +++ b/plugins/ingest-geoip/src/test/java/org/elasticsearch/ingest/geoip/GeoIpProcessorFactoryTests.java @@ -22,6 +22,7 @@ package org.elasticsearch.ingest.geoip; import com.carrotsearch.randomizedtesting.generators.RandomPicks; import com.maxmind.db.NoCache; import com.maxmind.db.NodeCache; +import org.apache.lucene.util.Constants; import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.common.Randomness; import org.elasticsearch.test.ESTestCase; @@ -51,6 +52,13 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { @BeforeClass public static void loadDatabaseReaders() throws IOException { + // Skip setup because Windows cannot cleanup these files properly. The reason is that they are using + // a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. As a consequence, + // the corresponding file appears to be still in use and Windows cannot delete it. + if (Constants.WINDOWS) { + return; + } + Path configDir = createTempDir(); Path geoIpConfigDir = configDir.resolve("ingest-geoip"); Files.createDirectories(geoIpConfigDir); @@ -67,6 +75,13 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { @AfterClass public static void closeDatabaseReaders() throws IOException { + // Skip setup because Windows cannot cleanup these files properly. The reason is that they are using + // a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. As a consequence, + // the corresponding file appears to be still in use and Windows cannot delete it. + if (Constants.WINDOWS) { + return; + } + for (DatabaseReaderLazyLoader reader : databaseReaders.values()) { reader.close(); } @@ -74,6 +89,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildDefaults() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); @@ -90,6 +108,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testSetIgnoreMissing() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); @@ -107,6 +128,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testCountryBuildDefaults() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); @@ -125,6 +149,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testAsnBuildDefaults() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); @@ -143,6 +170,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildTargetField() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); config.put("field", "_field"); @@ -154,6 +184,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildDbFile() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); config.put("field", "_field"); @@ -167,6 +200,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildWithCountryDbAndAsnFields() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); config.put("field", "_field"); @@ -181,6 +217,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildWithAsnDbAndCityFields() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); config.put("field", "_field"); @@ -195,6 +234,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildNonExistingDbFile() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config = new HashMap<>(); @@ -205,6 +247,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildFields() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Set properties = EnumSet.noneOf(GeoIpProcessor.Property.class); @@ -229,6 +274,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testBuildIllegalFieldOption() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); GeoIpProcessor.Factory factory = new GeoIpProcessor.Factory(databaseReaders); Map config1 = new HashMap<>(); @@ -246,6 +294,9 @@ public class GeoIpProcessorFactoryTests extends ESTestCase { } public void testLazyLoading() throws Exception { + // This test uses a MappedByteBuffer which will keep the file mappings active until it is garbage-collected. + // As a consequence, the corresponding file appears to be still in use and Windows cannot delete it. + assumeFalse("windows deletion behavior is asinine", Constants.WINDOWS); Path configDir = createTempDir(); Path geoIpConfigDir = configDir.resolve("ingest-geoip"); Files.createDirectories(geoIpConfigDir);