Skip to content

Commit 1787d7f

Browse files
authored
Make GeoIp tests more robust (#70305)
This change modifies GeoIpDownloaderIT to wait in assertBusy despite of error (by wrapping whole body in try-catch) and adds additional assertion to debug failures tracked in #69594
1 parent c3a8674 commit 1787d7f

File tree

1 file changed

+32
-28
lines changed

1 file changed

+32
-28
lines changed

modules/ingest-geoip/src/internalClusterTest/java/org/elasticsearch/ingest/geoip/GeoIpDownloaderIT.java

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected Settings nodeSettings(int nodeOrdinal) {
8585
}
8686

8787
@After
88-
public void disableDownloader(){
88+
public void disableDownloader() {
8989
ClusterUpdateSettingsResponse settingsResponse = client().admin().cluster()
9090
.prepareUpdateSettings()
9191
.setPersistentSettings(Settings.builder().put(GeoIpDownloaderTaskExecutor.ENABLED_SETTING.getKey(), false))
@@ -107,39 +107,43 @@ public void testGeoIpDatabasesDownload() throws Exception {
107107
assertEquals(Set.of("GeoLite2-ASN.mmdb", "GeoLite2-City.mmdb", "GeoLite2-Country.mmdb"), state.getDatabases().keySet());
108108
}, 2, TimeUnit.MINUTES);
109109

110-
GeoIpTaskState state = (GeoIpTaskState) getTask().getState();
111110
for (String id : List.of("GeoLite2-ASN.mmdb", "GeoLite2-City.mmdb", "GeoLite2-Country.mmdb")) {
112111
assertBusy(() -> {
113-
GeoIpTaskState.Metadata metadata = state.get(id);
114-
BoolQueryBuilder queryBuilder = new BoolQueryBuilder()
115-
.filter(new MatchQueryBuilder("name", id))
116-
.filter(new RangeQueryBuilder("chunk")
117-
.from(metadata.getFirstChunk())
118-
.to(metadata.getLastChunk(), true));
119-
int size = metadata.getLastChunk() - metadata.getFirstChunk() + 1;
120-
SearchResponse res = client().prepareSearch(GeoIpDownloader.DATABASES_INDEX)
121-
.setSize(size)
122-
.setQuery(queryBuilder)
123-
.addSort("chunk", SortOrder.ASC)
124-
.get();
125-
TotalHits totalHits = res.getHits().getTotalHits();
126-
assertEquals(TotalHits.Relation.EQUAL_TO, totalHits.relation);
127-
assertEquals(size, totalHits.value);
128-
assertEquals(size, res.getHits().getHits().length);
112+
try {
113+
GeoIpTaskState state = (GeoIpTaskState) getTask().getState();
114+
assertEquals(Set.of("GeoLite2-ASN.mmdb", "GeoLite2-City.mmdb", "GeoLite2-Country.mmdb"), state.getDatabases().keySet());
115+
GeoIpTaskState.Metadata metadata = state.get(id);
116+
BoolQueryBuilder queryBuilder = new BoolQueryBuilder()
117+
.filter(new MatchQueryBuilder("name", id))
118+
.filter(new RangeQueryBuilder("chunk")
119+
.from(metadata.getFirstChunk())
120+
.to(metadata.getLastChunk(), true));
121+
int size = metadata.getLastChunk() - metadata.getFirstChunk() + 1;
122+
SearchResponse res = client().prepareSearch(GeoIpDownloader.DATABASES_INDEX)
123+
.setSize(size)
124+
.setQuery(queryBuilder)
125+
.addSort("chunk", SortOrder.ASC)
126+
.get();
127+
TotalHits totalHits = res.getHits().getTotalHits();
128+
assertEquals(TotalHits.Relation.EQUAL_TO, totalHits.relation);
129+
assertEquals(size, totalHits.value);
130+
assertEquals(size, res.getHits().getHits().length);
129131

130-
List<byte[]> data = new ArrayList<>();
132+
List<byte[]> data = new ArrayList<>();
131133

132-
for (SearchHit hit : res.getHits().getHits()) {
133-
data.add((byte[]) hit.getSourceAsMap().get("data"));
134-
}
134+
for (SearchHit hit : res.getHits().getHits()) {
135+
data.add((byte[]) hit.getSourceAsMap().get("data"));
136+
}
135137

136-
GZIPInputStream stream = new GZIPInputStream(new MultiByteArrayInputStream(data));
137-
Path tempFile = createTempFile();
138-
try (OutputStream os = new BufferedOutputStream(Files.newOutputStream(tempFile, TRUNCATE_EXISTING, WRITE, CREATE))) {
139-
stream.transferTo(os);
138+
GZIPInputStream stream = new GZIPInputStream(new MultiByteArrayInputStream(data));
139+
Path tempFile = createTempFile();
140+
try (OutputStream os = new BufferedOutputStream(Files.newOutputStream(tempFile, TRUNCATE_EXISTING, WRITE, CREATE))) {
141+
stream.transferTo(os);
142+
}
143+
parseDatabase(tempFile);
144+
} catch (Exception e) {
145+
throw new AssertionError(e);
140146
}
141-
142-
parseDatabase(tempFile);
143147
});
144148
}
145149
}

0 commit comments

Comments
 (0)