@@ -212,6 +212,13 @@ void testObservableLongCounter() {
212212 assertEquals (1L , points .get ("test:observable-long-counter" ));
213213 assertEquals (2L , points .get ("test:observable-long-counter" + WITH_ATTRS ));
214214
215+ // second collect: absolute values are reported, not accumulated
216+ points .clear ();
217+ OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
218+
219+ assertEquals (1L , points .get ("test:observable-long-counter" ));
220+ assertEquals (2L , points .get ("test:observable-long-counter" + WITH_ATTRS ));
221+
215222 closeQuietly (observable );
216223 }
217224
@@ -231,6 +238,13 @@ void testObservableDoubleCounter() {
231238 assertEquals (1.2 , points .get ("test:observable-double-counter" ));
232239 assertEquals (3.4 , points .get ("test:observable-double-counter" + WITH_ATTRS ));
233240
241+ // second collect: absolute values are reported, not accumulated
242+ points .clear ();
243+ OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
244+
245+ assertEquals (1.2 , points .get ("test:observable-double-counter" ));
246+ assertEquals (3.4 , points .get ("test:observable-double-counter" + WITH_ATTRS ));
247+
234248 closeQuietly (observable );
235249 }
236250
@@ -249,6 +263,13 @@ void testObservableLongUpDownCounter() {
249263 assertEquals (1L , points .get ("test:observable-long-up-down-counter" ));
250264 assertEquals (2L , points .get ("test:observable-long-up-down-counter" + WITH_ATTRS ));
251265
266+ // second collect: absolute values are reported, not accumulated
267+ points .clear ();
268+ OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
269+
270+ assertEquals (1L , points .get ("test:observable-long-up-down-counter" ));
271+ assertEquals (2L , points .get ("test:observable-long-up-down-counter" + WITH_ATTRS ));
272+
252273 closeQuietly (observable );
253274 }
254275
@@ -268,6 +289,13 @@ void testObservableDoubleUpDownCounter() {
268289 assertEquals (1.2 , points .get ("test:observable-double-up-down-counter" ));
269290 assertEquals (3.4 , points .get ("test:observable-double-up-down-counter" + WITH_ATTRS ));
270291
292+ // second collect: absolute values are reported, not accumulated
293+ points .clear ();
294+ OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
295+
296+ assertEquals (1.2 , points .get ("test:observable-double-up-down-counter" ));
297+ assertEquals (3.4 , points .get ("test:observable-double-up-down-counter" + WITH_ATTRS ));
298+
271299 closeQuietly (observable );
272300 }
273301
@@ -385,18 +413,18 @@ void testBatchCallback() {
385413 points .clear ();
386414 OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
387415
388- // delta mode: counters show values added during last collect
416+ // async counters show the count _set_ during last collect
389417 assertEquals (1L , points .get ("test:long-counter-observer" ));
390418 assertEquals (10L , points .get ("test:long-counter-observer" + WITH_ATTRS ));
391419 assertEquals (2.3 , points .get ("test:double-counter-observer" ));
392420 assertEquals (20.3 , points .get ("test:double-counter-observer" + WITH_ATTRS ));
393- // up-down counters stay cumulative: they show the running total
394- assertEquals (8L , points .get ("test:long-up-down-counter-observer" ));
395- assertEquals (80L , points .get ("test:long-up-down-counter-observer" + WITH_ATTRS ));
396- assertEquals (11.2 , (double ) points .get ("test:double-up-down-counter-observer" ), 0.001 );
421+ // async up-down counters also show the count _set_ during last collect
422+ assertEquals (4L , points .get ("test:long-up-down-counter-observer" ));
423+ assertEquals (40L , points .get ("test:long-up-down-counter-observer" + WITH_ATTRS ));
424+ assertEquals (5.6 , (double ) points .get ("test:double-up-down-counter-observer" ), 0.001 );
397425 assertEquals (
398- 101.2 , (double ) points .get ("test:double-up-down-counter-observer" + WITH_ATTRS ), 0.001 );
399- // gauges also stay cumulative: they only show latest value
426+ 50.6 , (double ) points .get ("test:double-up-down-counter-observer" + WITH_ATTRS ), 0.001 );
427+ // gauges continue to only show the latest value
400428 assertEquals (7L , points .get ("test:long-gauge-observer" ));
401429 assertEquals (70L , points .get ("test:long-gauge-observer" + WITH_ATTRS ));
402430 assertEquals (8.9 , points .get ("test:double-gauge-observer" ));
@@ -407,18 +435,18 @@ void testBatchCallback() {
407435 points .clear ();
408436 OtelMetricRegistry .INSTANCE .collectMetrics (meterReader );
409437
410- // delta mode: no values were added as batchCallback is closed
438+ // delta mode: no counts were set as batchCallback is closed, so no data point
411439 assertNull (points .get ("test:long-counter-observer" ));
412440 assertNull (points .get ("test:long-counter-observer" + WITH_ATTRS ));
413441 assertNull (points .get ("test:double-counter-observer" ));
414442 assertNull (points .get ("test:double-counter-observer" + WITH_ATTRS ));
415- // up-down counters stay cumulative: they show the running total
416- assertEquals (8L , points .get ("test:long-up-down-counter-observer" ));
417- assertEquals (80L , points .get ("test:long-up-down-counter-observer" + WITH_ATTRS ));
418- assertEquals (11.2 , (double ) points .get ("test:double-up-down-counter-observer" ), 0.001 );
443+ // up-down counters stay cumulative: they continue to show the last count set
444+ assertEquals (4L , points .get ("test:long-up-down-counter-observer" ));
445+ assertEquals (40L , points .get ("test:long-up-down-counter-observer" + WITH_ATTRS ));
446+ assertEquals (5.6 , (double ) points .get ("test:double-up-down-counter-observer" ), 0.001 );
419447 assertEquals (
420- 101.2 , (double ) points .get ("test:double-up-down-counter-observer" + WITH_ATTRS ), 0.001 );
421- // gauges also stay cumulative: they only show latest value
448+ 50.6 , (double ) points .get ("test:double-up-down-counter-observer" + WITH_ATTRS ), 0.001 );
449+ // gauges also stay cumulative: they continue to show the latest value set
422450 assertEquals (7L , points .get ("test:long-gauge-observer" ));
423451 assertEquals (70L , points .get ("test:long-gauge-observer" + WITH_ATTRS ));
424452 assertEquals (8.9 , points .get ("test:double-gauge-observer" ));
0 commit comments