17
17
import static org .opensearch .plugin .insights .core .service .TopQueriesService .isTopQueriesIndex ;
18
18
19
19
import java .time .Instant ;
20
+ import java .time .LocalDate ;
21
+ import java .time .format .DateTimeFormatter ;
20
22
import java .util .List ;
23
+ import java .util .Locale ;
21
24
import java .util .Map ;
22
25
import java .util .concurrent .TimeUnit ;
23
26
import java .util .stream .Collectors ;
32
35
import org .opensearch .plugin .insights .core .exporter .QueryInsightsExporterFactory ;
33
36
import org .opensearch .plugin .insights .core .metrics .OperationalMetricsCounter ;
34
37
import org .opensearch .plugin .insights .core .reader .QueryInsightsReaderFactory ;
38
+ import org .opensearch .plugin .insights .core .utils .ExporterReaderUtils ;
35
39
import org .opensearch .plugin .insights .rules .model .GroupingType ;
36
40
import org .opensearch .plugin .insights .rules .model .MetricType ;
37
41
import org .opensearch .plugin .insights .rules .model .SearchQueryRecord ;
@@ -222,18 +226,33 @@ private IndexMetadata createValidIndexMetadata(String indexName) {
222
226
}
223
227
224
228
public void testIsTopQueriesIndexWithValidMetaData () {
225
- assertTrue (isTopQueriesIndex ("top_queries-2024.01.01-01234" , createValidIndexMetadata ("top_queries-2024.01.01-01234" )));
226
- assertTrue (isTopQueriesIndex ("top_queries-2025.12.12-99999" , createValidIndexMetadata ("top_queries-2025.12.12-99999" )));
229
+ // Generate correct hash values for test dates
230
+ LocalDate date1 = LocalDate .parse ("2024.01.01" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
231
+ LocalDate date2 = LocalDate .parse ("2025.12.12" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
232
+ String hash1 = ExporterReaderUtils .generateLocalIndexDateHash (date1 );
233
+ String hash2 = ExporterReaderUtils .generateLocalIndexDateHash (date2 );
234
+
235
+ // Test with valid index names and correct hash values
236
+ assertTrue (isTopQueriesIndex ("top_queries-2024.01.01-" + hash1 , createValidIndexMetadata ("top_queries-2024.01.01-" + hash1 )));
237
+ assertTrue (isTopQueriesIndex ("top_queries-2025.12.12-" + hash2 , createValidIndexMetadata ("top_queries-2025.12.12-" + hash2 )));
238
+
239
+ // Test with invalid index names (wrong hash, format issues, etc.)
227
240
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-012345" , createValidIndexMetadata ("top_queries-2024.01.01-012345" )));
228
241
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-0123w" , createValidIndexMetadata ("top_queries-2024.01.01-0123w" )));
229
242
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01" , createValidIndexMetadata ("top_queries-2024.01.01" )));
230
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-01234" , createValidIndexMetadata ("top_queries-2024.01.32-01234" )));
243
+ assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-" + hash1 , createValidIndexMetadata ("top_queries-2024.01.32-" + hash1 )));
231
244
assertFalse (isTopQueriesIndex ("top_queries-01234" , createValidIndexMetadata ("top_queries-01234" )));
232
- assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-01234" , createValidIndexMetadata ("top_querie-2024.01.01-01234" )));
233
- assertFalse (isTopQueriesIndex ("2024.01.01-01234" , createValidIndexMetadata ("2024.01.01-01234" )));
245
+ assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-" + hash1 , createValidIndexMetadata ("top_querie-2024.01.01-" + hash1 )));
246
+ assertFalse (isTopQueriesIndex ("2024.01.01-" + hash1 , createValidIndexMetadata ("2024.01.01-" + hash1 )));
234
247
assertFalse (isTopQueriesIndex ("any_index" , createValidIndexMetadata ("any_index" )));
235
248
assertFalse (isTopQueriesIndex ("" , createValidIndexMetadata ("" )));
236
249
assertFalse (isTopQueriesIndex ("_customer_index" , createValidIndexMetadata ("_customer_index" )));
250
+
251
+ // Test with a valid date but incorrect hash
252
+ String wrongHash = hash1 .equals ("00000" ) ? "11111" : "00000" ;
253
+ assertFalse (
254
+ isTopQueriesIndex ("top_queries-2024.01.01-" + wrongHash , createValidIndexMetadata ("top_queries-2024.01.01-" + wrongHash ))
255
+ );
237
256
}
238
257
239
258
private IndexMetadata createIndexMetadataWithEmptyMapping (String indexName ) {
@@ -250,17 +269,31 @@ private IndexMetadata createIndexMetadataWithEmptyMapping(String indexName) {
250
269
}
251
270
252
271
public void testIsTopQueriesIndexWithEmptyMetaData () {
253
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-01234" , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.01-01234" )));
254
- assertFalse (isTopQueriesIndex ("top_queries-2025.12.12-99999" , createIndexMetadataWithEmptyMapping ("top_queries-2025.12.12-99999" )));
272
+ // Generate correct hash values for test dates
273
+ LocalDate date1 = LocalDate .parse ("2024.01.01" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
274
+ LocalDate date2 = LocalDate .parse ("2025.12.12" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
275
+ String hash1 = ExporterReaderUtils .generateLocalIndexDateHash (date1 );
276
+ String hash2 = ExporterReaderUtils .generateLocalIndexDateHash (date2 );
277
+
278
+ assertFalse (
279
+ isTopQueriesIndex ("top_queries-2024.01.01-" + hash1 , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.01-" + hash1 ))
280
+ );
281
+ assertFalse (
282
+ isTopQueriesIndex ("top_queries-2025.12.12-" + hash2 , createIndexMetadataWithEmptyMapping ("top_queries-2025.12.12-" + hash2 ))
283
+ );
255
284
assertFalse (
256
285
isTopQueriesIndex ("top_queries-2024.01.01-012345" , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.01-012345" ))
257
286
);
258
287
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-0123w" , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.01-0123w" )));
259
288
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01" , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.01" )));
260
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-01234" , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.32-01234" )));
289
+ assertFalse (
290
+ isTopQueriesIndex ("top_queries-2024.01.32-" + hash1 , createIndexMetadataWithEmptyMapping ("top_queries-2024.01.32-" + hash1 ))
291
+ );
261
292
assertFalse (isTopQueriesIndex ("top_queries-01234" , createIndexMetadataWithEmptyMapping ("top_queries-01234" )));
262
- assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-01234" , createIndexMetadataWithEmptyMapping ("top_querie-2024.01.01-01234" )));
263
- assertFalse (isTopQueriesIndex ("2024.01.01-01234" , createIndexMetadataWithEmptyMapping ("2024.01.01-01234" )));
293
+ assertFalse (
294
+ isTopQueriesIndex ("top_querie-2024.01.01-" + hash1 , createIndexMetadataWithEmptyMapping ("top_querie-2024.01.01-" + hash1 ))
295
+ );
296
+ assertFalse (isTopQueriesIndex ("2024.01.01-" + hash1 , createIndexMetadataWithEmptyMapping ("2024.01.01-" + hash1 )));
264
297
assertFalse (isTopQueriesIndex ("any_index" , createIndexMetadataWithEmptyMapping ("any_index" )));
265
298
assertFalse (isTopQueriesIndex ("" , createIndexMetadataWithEmptyMapping ("" )));
266
299
assertFalse (isTopQueriesIndex ("_customer_index" , createIndexMetadataWithEmptyMapping ("_customer_index" )));
@@ -281,11 +314,17 @@ private IndexMetadata createIndexMetadataWithDifferentValue(String indexName) {
281
314
}
282
315
283
316
public void testIsTopQueriesIndexWithDifferentMetaData () {
317
+ // Generate correct hash values for test dates
318
+ LocalDate date1 = LocalDate .parse ("2024.01.01" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
319
+ LocalDate date2 = LocalDate .parse ("2025.12.12" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
320
+ String hash1 = ExporterReaderUtils .generateLocalIndexDateHash (date1 );
321
+ String hash2 = ExporterReaderUtils .generateLocalIndexDateHash (date2 );
322
+
284
323
assertFalse (
285
- isTopQueriesIndex ("top_queries-2024.01.01-01234" , createIndexMetadataWithDifferentValue ("top_queries-2024.01.01-01234" ))
324
+ isTopQueriesIndex ("top_queries-2024.01.01-" + hash1 , createIndexMetadataWithDifferentValue ("top_queries-2024.01.01-" + hash1 ))
286
325
);
287
326
assertFalse (
288
- isTopQueriesIndex ("top_queries-2025.12.12-99999" , createIndexMetadataWithDifferentValue ("top_queries-2025.12.12-99999" ))
327
+ isTopQueriesIndex ("top_queries-2025.12.12-" + hash2 , createIndexMetadataWithDifferentValue ("top_queries-2025.12.12-" + hash2 ))
289
328
);
290
329
assertFalse (
291
330
isTopQueriesIndex ("top_queries-2024.01.01-012345" , createIndexMetadataWithDifferentValue ("top_queries-2024.01.01-012345" ))
@@ -295,11 +334,13 @@ public void testIsTopQueriesIndexWithDifferentMetaData() {
295
334
);
296
335
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01" , createIndexMetadataWithDifferentValue ("top_queries-2024.01.01" )));
297
336
assertFalse (
298
- isTopQueriesIndex ("top_queries-2024.01.32-01234" , createIndexMetadataWithDifferentValue ("top_queries-2024.01.32-01234" ))
337
+ isTopQueriesIndex ("top_queries-2024.01.32-" + hash1 , createIndexMetadataWithDifferentValue ("top_queries-2024.01.32-" + hash1 ))
299
338
);
300
339
assertFalse (isTopQueriesIndex ("top_queries-01234" , createIndexMetadataWithDifferentValue ("top_queries-01234" )));
301
- assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-01234" , createIndexMetadataWithDifferentValue ("top_querie-2024.01.01-01234" )));
302
- assertFalse (isTopQueriesIndex ("2024.01.01-01234" , createIndexMetadataWithDifferentValue ("2024.01.01-01234" )));
340
+ assertFalse (
341
+ isTopQueriesIndex ("top_querie-2024.01.01-" + hash1 , createIndexMetadataWithDifferentValue ("top_querie-2024.01.01-" + hash1 ))
342
+ );
343
+ assertFalse (isTopQueriesIndex ("2024.01.01-" + hash1 , createIndexMetadataWithDifferentValue ("2024.01.01-" + hash1 )));
303
344
assertFalse (isTopQueriesIndex ("any_index" , createIndexMetadataWithDifferentValue ("any_index" )));
304
345
assertFalse (isTopQueriesIndex ("" , createIndexMetadataWithDifferentValue ("" )));
305
346
assertFalse (isTopQueriesIndex ("_customer_index" , createIndexMetadataWithDifferentValue ("_customer_index" )));
@@ -320,30 +361,50 @@ private IndexMetadata createIndexMetadataWithExtraValue(String indexName) {
320
361
}
321
362
322
363
public void testIsTopQueriesIndexWithExtraMetaData () {
323
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-01234" , createIndexMetadataWithExtraValue ("top_queries-2024.01.01-01234" )));
324
- assertFalse (isTopQueriesIndex ("top_queries-2025.12.12-99999" , createIndexMetadataWithExtraValue ("top_queries-2025.12.12-99999" )));
364
+ // Generate correct hash values for test dates
365
+ LocalDate date1 = LocalDate .parse ("2024.01.01" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
366
+ LocalDate date2 = LocalDate .parse ("2025.12.12" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
367
+ String hash1 = ExporterReaderUtils .generateLocalIndexDateHash (date1 );
368
+ String hash2 = ExporterReaderUtils .generateLocalIndexDateHash (date2 );
369
+
370
+ assertFalse (
371
+ isTopQueriesIndex ("top_queries-2024.01.01-" + hash1 , createIndexMetadataWithExtraValue ("top_queries-2024.01.01-" + hash1 ))
372
+ );
373
+ assertFalse (
374
+ isTopQueriesIndex ("top_queries-2025.12.12-" + hash2 , createIndexMetadataWithExtraValue ("top_queries-2025.12.12-" + hash2 ))
375
+ );
325
376
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-012345" , createIndexMetadataWithExtraValue ("top_queries-2024.01.01-012345" )));
326
377
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-0123w" , createIndexMetadataWithExtraValue ("top_queries-2024.01.01-0123w" )));
327
378
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01" , createIndexMetadataWithExtraValue ("top_queries-2024.01.01" )));
328
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-01234" , createIndexMetadataWithExtraValue ("top_queries-2024.01.32-01234" )));
379
+ assertFalse (
380
+ isTopQueriesIndex ("top_queries-2024.01.32-" + hash1 , createIndexMetadataWithExtraValue ("top_queries-2024.01.32-" + hash1 ))
381
+ );
329
382
assertFalse (isTopQueriesIndex ("top_queries-01234" , createIndexMetadataWithExtraValue ("top_queries-01234" )));
330
- assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-01234" , createIndexMetadataWithExtraValue ("top_querie-2024.01.01-01234" )));
331
- assertFalse (isTopQueriesIndex ("2024.01.01-01234" , createIndexMetadataWithExtraValue ("2024.01.01-01234" )));
383
+ assertFalse (
384
+ isTopQueriesIndex ("top_querie-2024.01.01-" + hash1 , createIndexMetadataWithExtraValue ("top_querie-2024.01.01-" + hash1 ))
385
+ );
386
+ assertFalse (isTopQueriesIndex ("2024.01.01-" + hash1 , createIndexMetadataWithExtraValue ("2024.01.01-" + hash1 )));
332
387
assertFalse (isTopQueriesIndex ("any_index" , createIndexMetadataWithExtraValue ("any_index" )));
333
388
assertFalse (isTopQueriesIndex ("" , createIndexMetadataWithExtraValue ("" )));
334
389
assertFalse (isTopQueriesIndex ("_customer_index" , createIndexMetadataWithExtraValue ("_customer_index" )));
335
390
}
336
391
337
392
public void testIsTopQueriesIndexWithNullMetaData () {
338
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-01234" , null ));
339
- assertFalse (isTopQueriesIndex ("top_queries-2025.12.12-99999" , null ));
393
+ // Generate correct hash values for test dates
394
+ LocalDate date1 = LocalDate .parse ("2024.01.01" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
395
+ LocalDate date2 = LocalDate .parse ("2025.12.12" , DateTimeFormatter .ofPattern ("yyyy.MM.dd" , Locale .ROOT ));
396
+ String hash1 = ExporterReaderUtils .generateLocalIndexDateHash (date1 );
397
+ String hash2 = ExporterReaderUtils .generateLocalIndexDateHash (date2 );
398
+
399
+ assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-" + hash1 , null ));
400
+ assertFalse (isTopQueriesIndex ("top_queries-2025.12.12-" + hash2 , null ));
340
401
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-012345" , null ));
341
402
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01-0123w" , null ));
342
403
assertFalse (isTopQueriesIndex ("top_queries-2024.01.01" , null ));
343
- assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-01234" , null ));
404
+ assertFalse (isTopQueriesIndex ("top_queries-2024.01.32-" + hash1 , null ));
344
405
assertFalse (isTopQueriesIndex ("top_queries-01234" , null ));
345
- assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-01234" , null ));
346
- assertFalse (isTopQueriesIndex ("2024.01.01-01234" , null ));
406
+ assertFalse (isTopQueriesIndex ("top_querie-2024.01.01-" + hash1 , null ));
407
+ assertFalse (isTopQueriesIndex ("2024.01.01-" + hash1 , null ));
347
408
assertFalse (isTopQueriesIndex ("any_index" , null ));
348
409
assertFalse (isTopQueriesIndex ("" , null ));
349
410
assertFalse (isTopQueriesIndex ("_customer_index" , null ));
0 commit comments