33
44package com .azure .messaging .eventhubs .checkpointstore .blob ;
55
6- import com .azure .core .test .utils .metrics .TestCounter ;
76import com .azure .core .test .utils .metrics .TestGauge ;
7+ import com .azure .core .test .utils .metrics .TestHistogram ;
88import com .azure .core .test .utils .metrics .TestMeasurement ;
99import com .azure .core .test .utils .metrics .TestMeter ;
1010import com .azure .core .util .MetricsOptions ;
1616import org .junit .jupiter .api .parallel .ExecutionMode ;
1717import org .junit .jupiter .api .parallel .Isolated ;
1818
19+ import java .time .Instant ;
20+ import java .time .temporal .ChronoUnit ;
1921import java .util .HashMap ;
2022import java .util .List ;
2123import java .util .Map ;
@@ -59,12 +61,12 @@ public void testUpdateDisabledMetrics() {
5961
6062
6163 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), testProvider );
62- helper .reportCheckpoint (checkpoint , "ns/eh/ch/0" , true );
64+ helper .reportCheckpoint (checkpoint , "ns/eh/ch/0" , true , null );
6365
6466 verify (meter , atLeastOnce ()).isEnabled ();
6567 verify (meter , never ()).createAttributes (anyMap ());
6668 verify (meter , never ()).createLongGauge (any (), any (), any ());
67- verify (meter , never ()).createLongCounter (any (), any (), any ());
69+ verify (meter , never ()).createDoubleHistogram (any (), any (), any ());
6870 }
6971
7072 @ Test
@@ -80,11 +82,11 @@ public void testUpdateDisabledMetricsViaOptions() {
8082 Meter meter = mock (Meter .class );
8183 TestMeterProvider testProvider = new TestMeterProvider ((lib , ver , opts ) -> meter );
8284 MetricsHelper helper = new MetricsHelper (new MetricsOptions ().setEnabled (false ), testProvider );
83- helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true );
85+ helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true , null );
8486
8587 verify (meter , never ()).createAttributes (anyMap ());
8688 verify (meter , never ()).createLongGauge (any (), any (), any ());
87- verify (meter , never ()).createLongCounter (any (), any (), any ());
89+ verify (meter , never ()).createDoubleHistogram (any (), any (), any ());
8890 }
8991
9092 @ Test
@@ -105,7 +107,8 @@ public void testUpdateEnabledMetrics() {
105107 });
106108
107109 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), testProvider );
108- helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true );
110+ Instant startTime = Instant .now ().minus (10 , ChronoUnit .SECONDS );
111+ helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true , startTime );
109112
110113 assertTrue (meter .getGauges ().containsKey ("messaging.eventhubs.checkpoint.sequence_number" ));
111114 TestGauge seqNo = meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" );
@@ -119,15 +122,14 @@ public void testUpdateEnabledMetrics() {
119122 assertEquals (2L , seqNoMeasurement .getValue ());
120123 assertCommonAttributes (checkpoint , seqNoMeasurement .getAttributes ());
121124
122- assertTrue (meter .getCounters ().containsKey ("messaging.eventhubs.checkpoints " ));
123- TestCounter checkpoints = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
124- assertEquals (1 , checkpoints .getMeasurements ().size ());
125- TestMeasurement <Long > checkpointMeasurements = checkpoints .getMeasurements ().get (0 );
126- assertEquals (1 , checkpointMeasurements .getValue ());
127- assertStatusAttributes (checkpoint , "ok" , checkpointMeasurements .getAttributes ());
125+ assertTrue (meter .getHistograms ().containsKey ("messaging.eventhubs.checkpoint.duration " ));
126+ TestHistogram checkpointDuration = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
127+ assertEquals (1 , checkpointDuration .getMeasurements ().size ());
128+ TestMeasurement <Double > durationMeasurements = checkpointDuration .getMeasurements ().get (0 );
129+ assertEquals (10000d , durationMeasurements .getValue (), 1000d );
130+ assertStatusAttributes (checkpoint , "ok" , durationMeasurements .getAttributes ());
128131 }
129132
130-
131133 @ Test
132134 public void testUpdateEnabledMetricsFailure () {
133135 Checkpoint checkpoint = new Checkpoint ()
@@ -139,16 +141,17 @@ public void testUpdateEnabledMetricsFailure() {
139141 .setOffset (100L );
140142
141143 TestMeter meter = new TestMeter ();
144+ Instant startTime = Instant .now ().minus (1 , ChronoUnit .SECONDS );
142145 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), new TestMeterProvider ((lib , ver , opts ) -> meter ));
143- helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , false );
146+ helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , false , startTime );
144147
145148 // sequence number is only reported for successful checkpoints
146149 assertEquals (0 , meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" ).getSubscriptions ().size ());
147150
148- TestCounter checkpoints = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
149- TestMeasurement <Long > checkpointMeasurements = checkpoints .getMeasurements ().get (0 );
150- assertEquals (1 , checkpointMeasurements .getValue ());
151- assertStatusAttributes (checkpoint , "error" , checkpointMeasurements .getAttributes ());
151+ TestHistogram checkpointDuration = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
152+ TestMeasurement <Double > durationMeasurements = checkpointDuration .getMeasurements ().get (0 );
153+ assertEquals (1000d , durationMeasurements .getValue (), 1000d );
154+ assertStatusAttributes (checkpoint , "error" , durationMeasurements .getAttributes ());
152155 }
153156
154157 @ Test
@@ -161,15 +164,16 @@ public void testUpdateEnabledMetricsNullSeqNo() {
161164 .setOffset (100L );
162165
163166 TestMeter meter = new TestMeter ();
167+ Instant startTime = Instant .now ();
164168 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), new TestMeterProvider ((lib , ver , opts ) -> meter ));
165- helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true );
169+ helper .reportCheckpoint (checkpoint , "ns/eh/cg/0" , true , startTime );
166170
167171 assertEquals (0 , meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" ).getSubscriptions ().size ());
168172
169- TestCounter checkpoints = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
170- TestMeasurement <Long > checkpointMeasurements = checkpoints .getMeasurements ().get (0 );
171- assertEquals (1 , checkpointMeasurements .getValue ());
172- assertStatusAttributes (checkpoint , "ok" , checkpointMeasurements .getAttributes ());
173+ TestHistogram checkpointDuration = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
174+ TestMeasurement <Double > durationMeasurements = checkpointDuration .getMeasurements ().get (0 );
175+ assertEquals (0d , durationMeasurements .getValue (), 1000d );
176+ assertStatusAttributes (checkpoint , "ok" , durationMeasurements .getAttributes ());
173177 }
174178
175179 @ Test
@@ -186,7 +190,7 @@ public void testUpdateEnabledMetricsTooManyAttributes() {
186190 .collect (Collectors .toList ());
187191
188192 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), new TestMeterProvider ((lib , ver , opts ) -> meter ));
189- checkpoints .forEach (ch -> helper .reportCheckpoint (ch , "ns/eh/cg/" + ch .getPartitionId (), true ));
193+ checkpoints .forEach (ch -> helper .reportCheckpoint (ch , "ns/eh/cg/" + ch .getPartitionId (), true , Instant . now () ));
190194
191195 List <TestGauge .Subscription > subscriptions = meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" ).getSubscriptions ();
192196 assertEquals (MAX_ATTRIBUTES_SETS , subscriptions .size ());
@@ -201,14 +205,14 @@ public void testUpdateEnabledMetricsTooManyAttributes() {
201205 i [0 ]++;
202206 });
203207
204- TestCounter checkpointCounter = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
205- assertEquals (MAX_ATTRIBUTES_SETS , checkpointCounter .getMeasurements ().size ());
208+ TestHistogram durationHistogram = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
209+ assertEquals (MAX_ATTRIBUTES_SETS , durationHistogram .getMeasurements ().size ());
206210
207- final int [] j = {0 };
208- checkpointCounter .getMeasurements ().forEach (m -> {
209- assertEquals (1 , m .getValue ());
210- assertStatusAttributes (checkpoints .get (j [0 ]), "ok" , m .getAttributes ());
211- j [0 ]++;
211+ final int [] k = {0 };
212+ durationHistogram .getMeasurements ().forEach (m -> {
213+ assertEquals (0d , m .getValue (), 1000d );
214+ assertStatusAttributes (checkpoints .get (k [0 ]), "ok" , m .getAttributes ());
215+ k [0 ]++;
212216 });
213217 }
214218
@@ -232,8 +236,8 @@ public void testUpdateEnabledMetricsMultipleMeasurements() {
232236
233237 TestMeter meter = new TestMeter ();
234238 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), new TestMeterProvider ((lib , ver , opts ) -> meter ));
235- helper .reportCheckpoint (checkpoint1 , "ns/eh/cg/0" , true );
236- helper .reportCheckpoint (checkpoint2 , "ns/eh/cg/0" , true );
239+ helper .reportCheckpoint (checkpoint1 , "ns/eh/cg/0" , true , Instant . now (). minus ( 10 , ChronoUnit . SECONDS ) );
240+ helper .reportCheckpoint (checkpoint2 , "ns/eh/cg/0" , true , Instant . now () );
237241
238242 TestGauge seqNo = meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" );
239243 TestGauge .Subscription subs = seqNo .getSubscriptions ().get (0 );
@@ -242,12 +246,12 @@ public void testUpdateEnabledMetricsMultipleMeasurements() {
242246 TestMeasurement <Long > seqNoMeasurement = subs .getMeasurements ().get (0 );
243247 assertEquals (42L , seqNoMeasurement .getValue ());
244248
245- TestCounter checkpoints = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
246- assertEquals (2 , checkpoints .getMeasurements ().size ());
249+ TestHistogram duration = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
250+ assertEquals (2 , duration .getMeasurements ().size ());
247251
248- assertEquals (1 , checkpoints .getMeasurements ().get (0 ).getValue ());
249- assertEquals (1 , checkpoints .getMeasurements ().get (1 ).getValue ());
250- assertStatusAttributes (checkpoint2 , "ok" , checkpoints .getMeasurements ().get (1 ).getAttributes ());
252+ assertEquals (10000d , duration .getMeasurements ().get (0 ).getValue (), 1000d );
253+ assertEquals (0d , duration .getMeasurements ().get (1 ).getValue (), 1000d );
254+ assertStatusAttributes (checkpoint2 , "ok" , duration .getMeasurements ().get (1 ).getAttributes ());
251255 }
252256
253257 @ Test
@@ -271,8 +275,8 @@ public void testUpdateEnabledMetricsMultipleHubs() {
271275 TestMeter meter = new TestMeter ();
272276 MetricsHelper helper = new MetricsHelper (new MetricsOptions (), new TestMeterProvider ((lib , ver , opts ) -> meter ));
273277
274- helper .reportCheckpoint (checkpoint1 , "ns/eh1/cg/0" , true );
275- helper .reportCheckpoint (checkpoint2 , "ns/eh2/cg/0" , true );
278+ helper .reportCheckpoint (checkpoint1 , "ns/eh1/cg/0" , true , Instant . now () );
279+ helper .reportCheckpoint (checkpoint2 , "ns/eh2/cg/0" , true , Instant . now () );
276280
277281 TestGauge seqNo = meter .getGauges ().get ("messaging.eventhubs.checkpoint.sequence_number" );
278282 assertEquals (2 , seqNo .getSubscriptions ().size ());
@@ -289,13 +293,13 @@ public void testUpdateEnabledMetricsMultipleHubs() {
289293 assertEquals (42L , seqNoMeasurement2 .getValue ());
290294 assertCommonAttributes (checkpoint2 , seqNoMeasurement2 .getAttributes ());
291295
292- TestCounter checkpoints = meter .getCounters ().get ("messaging.eventhubs.checkpoints " );
293- assertEquals (2 , checkpoints .getMeasurements ().size ());
296+ TestHistogram duration = meter .getHistograms ().get ("messaging.eventhubs.checkpoint.duration " );
297+ assertEquals (2 , duration .getMeasurements ().size ());
294298
295- assertEquals (1 , checkpoints .getMeasurements ().get (0 ).getValue ());
296- assertStatusAttributes (checkpoint1 , "ok" , checkpoints .getMeasurements ().get (0 ).getAttributes ());
297- assertEquals (1 , checkpoints .getMeasurements ().get (1 ).getValue ());
298- assertStatusAttributes (checkpoint2 , "ok" , checkpoints .getMeasurements ().get (1 ).getAttributes ());
299+ assertEquals (0d , duration .getMeasurements ().get (0 ).getValue (), 1000d );
300+ assertStatusAttributes (checkpoint1 , "ok" , duration .getMeasurements ().get (0 ).getAttributes ());
301+ assertEquals (0d , duration .getMeasurements ().get (1 ).getValue (), 1000d );
302+ assertStatusAttributes (checkpoint2 , "ok" , duration .getMeasurements ().get (1 ).getAttributes ());
299303 }
300304
301305
0 commit comments