@@ -532,6 +532,53 @@ func TestMetersProvideScope(t *testing.T) {
532
532
metricdatatest .AssertEqual (t , want , got , metricdatatest .IgnoreTimestamp ())
533
533
}
534
534
535
+ func TestUnregisterUnregisters (t * testing.T ) {
536
+ r := NewManualReader ()
537
+ mp := NewMeterProvider (WithReader (r ))
538
+ m := mp .Meter ("TestUnregisterUnregisters" )
539
+
540
+ int64Counter , err := m .AsyncInt64 ().Counter ("int64.counter" )
541
+ require .NoError (t , err )
542
+
543
+ int64UpDownCounter , err := m .AsyncInt64 ().UpDownCounter ("int64.up_down_counter" )
544
+ require .NoError (t , err )
545
+
546
+ int64Gauge , err := m .AsyncInt64 ().Gauge ("int64.gauge" )
547
+ require .NoError (t , err )
548
+
549
+ floag64Counter , err := m .AsyncFloat64 ().Counter ("floag64.counter" )
550
+ require .NoError (t , err )
551
+
552
+ floag64UpDownCounter , err := m .AsyncFloat64 ().UpDownCounter ("floag64.up_down_counter" )
553
+ require .NoError (t , err )
554
+
555
+ floag64Gauge , err := m .AsyncFloat64 ().Gauge ("floag64.gauge" )
556
+ require .NoError (t , err )
557
+
558
+ var called bool
559
+ reg , err := m .RegisterCallback ([]instrument.Asynchronous {
560
+ int64Counter ,
561
+ int64UpDownCounter ,
562
+ int64Gauge ,
563
+ floag64Counter ,
564
+ floag64UpDownCounter ,
565
+ floag64Gauge ,
566
+ }, func (context.Context ) { called = true })
567
+ require .NoError (t , err )
568
+
569
+ ctx := context .Background ()
570
+ _ , err = r .Collect (ctx )
571
+ require .NoError (t , err )
572
+ assert .True (t , called , "callback not called for registered callback" )
573
+
574
+ called = false
575
+ require .NoError (t , reg .Unregister (), "unregister" )
576
+
577
+ _ , err = r .Collect (ctx )
578
+ require .NoError (t , err )
579
+ assert .False (t , called , "callback called for unregistered callback" )
580
+ }
581
+
535
582
func TestRegisterCallbackDropAggregations (t * testing.T ) {
536
583
aggFn := func (InstrumentKind ) aggregation.Aggregation {
537
584
return aggregation.Drop {}
0 commit comments