88package org .elasticsearch .blobcache ;
99
1010import org .elasticsearch .common .unit .ByteSizeValue ;
11+ import org .elasticsearch .index .store .LuceneFilesExtensions ;
1112import org .elasticsearch .telemetry .InstrumentType ;
1213import org .elasticsearch .telemetry .Measurement ;
1314import org .elasticsearch .telemetry .RecordingMeterRegistry ;
1415import org .elasticsearch .test .ESTestCase ;
1516import org .junit .Before ;
1617
18+ import java .util .Arrays ;
1719import java .util .concurrent .TimeUnit ;
1820
21+ import static org .hamcrest .Matchers .is ;
22+
1923public class BlobCacheMetricsTests extends ESTestCase {
2024
2125 private RecordingMeterRegistry recordingMeterRegistry ;
@@ -32,7 +36,10 @@ public void testRecordCachePopulationMetricsRecordsThroughput() {
3236 int secondsTaken = randomIntBetween (1 , 5 );
3337 BlobCacheMetrics .CachePopulationReason cachePopulationReason = randomFrom (BlobCacheMetrics .CachePopulationReason .values ());
3438 CachePopulationSource cachePopulationSource = randomFrom (CachePopulationSource .values ());
39+ String fileExtension = randomFrom (Arrays .stream (LuceneFilesExtensions .values ()).map (LuceneFilesExtensions ::getExtension ).toList ());
40+ String luceneBlobFile = randomAlphanumericOfLength (15 ) + "." + fileExtension ;
3541 metrics .recordCachePopulationMetrics (
42+ luceneBlobFile ,
3643 Math .toIntExact (ByteSizeValue .ofMb (mebiBytesSent ).getBytes ()),
3744 TimeUnit .SECONDS .toNanos (secondsTaken ),
3845 cachePopulationReason ,
@@ -44,29 +51,31 @@ public void testRecordCachePopulationMetricsRecordsThroughput() {
4451 .getMeasurements (InstrumentType .DOUBLE_HISTOGRAM , "es.blob_cache.population.throughput.histogram" )
4552 .get (0 );
4653 assertEquals (throughputMeasurement .getDouble (), (double ) mebiBytesSent / secondsTaken , 0.0 );
47- assertExpectedAttributesPresent (throughputMeasurement , cachePopulationReason , cachePopulationSource );
54+ assertExpectedAttributesPresent (throughputMeasurement , cachePopulationReason , cachePopulationSource , fileExtension );
4855
4956 // bytes counter
5057 Measurement totalBytesMeasurement = recordingMeterRegistry .getRecorder ()
5158 .getMeasurements (InstrumentType .LONG_COUNTER , "es.blob_cache.population.bytes.total" )
5259 .get (0 );
5360 assertEquals (totalBytesMeasurement .getLong (), ByteSizeValue .ofMb (mebiBytesSent ).getBytes ());
54- assertExpectedAttributesPresent (totalBytesMeasurement , cachePopulationReason , cachePopulationSource );
61+ assertExpectedAttributesPresent (totalBytesMeasurement , cachePopulationReason , cachePopulationSource , fileExtension );
5562
5663 // time counter
5764 Measurement totalTimeMeasurement = recordingMeterRegistry .getRecorder ()
5865 .getMeasurements (InstrumentType .LONG_COUNTER , "es.blob_cache.population.time.total" )
5966 .get (0 );
6067 assertEquals (totalTimeMeasurement .getLong (), TimeUnit .SECONDS .toMillis (secondsTaken ));
61- assertExpectedAttributesPresent (totalTimeMeasurement , cachePopulationReason , cachePopulationSource );
68+ assertExpectedAttributesPresent (totalTimeMeasurement , cachePopulationReason , cachePopulationSource , fileExtension );
6269 }
6370
6471 private static void assertExpectedAttributesPresent (
6572 Measurement measurement ,
6673 BlobCacheMetrics .CachePopulationReason cachePopulationReason ,
67- CachePopulationSource cachePopulationSource
74+ CachePopulationSource cachePopulationSource ,
75+ String fileExtension
6876 ) {
69- assertEquals (measurement .attributes ().get (BlobCacheMetrics .CACHE_POPULATION_REASON_ATTRIBUTE_KEY ), cachePopulationReason .name ());
70- assertEquals (measurement .attributes ().get (BlobCacheMetrics .CACHE_POPULATION_SOURCE_ATTRIBUTE_KEY ), cachePopulationSource .name ());
77+ assertThat (measurement .attributes ().get (BlobCacheMetrics .CACHE_POPULATION_REASON_ATTRIBUTE_KEY ), is (cachePopulationReason .name ()));
78+ assertThat (measurement .attributes ().get (BlobCacheMetrics .CACHE_POPULATION_SOURCE_ATTRIBUTE_KEY ), is (cachePopulationSource .name ()));
79+ assertThat (measurement .attributes ().get (BlobCacheMetrics .LUCENE_FILE_EXTENSION_ATTRIBUTE_KEY ), is (fileExtension ));
7180 }
7281}
0 commit comments