@@ -919,31 +919,61 @@ public void ViewConflict_OneInstrument_DifferentDescription()
919919 Assert . Equal ( 10 , metricPoint2 . GetSumLong ( ) ) ;
920920 }
921921
922- [ Fact ]
923- public void CardinalityLimitofMatchingViewTakesPrecedenceOverMetricProviderWhenBothWereSet ( )
922+ [ Theory ]
923+ [ InlineData ( true ) ]
924+ [ InlineData ( false ) ]
925+ public void CardinalityLimitofMatchingViewTakesPrecedenceOverMeterProvider ( bool setDefault )
924926 {
925927 using var meter = new Meter ( Utils . GetCurrentMethodName ( ) ) ;
926928 var exportedItems = new List < Metric > ( ) ;
927929
928- #pragma warning disable CS0618 // Type or member is obsolete
929- using var container = this . BuildMeterProvider ( out var meterProvider , builder => builder
930- . AddMeter ( meter . Name )
931- . SetMaxMetricPointsPerMetricStream ( 3 )
932- . AddView ( ( instrument ) =>
930+ using var container = this . BuildMeterProvider ( out var meterProvider , builder =>
931+ {
932+ if ( setDefault )
933933 {
934- return new MetricStreamConfiguration ( ) { Name = "MetricStreamA" , CardinalityLimit = 10000 } ;
935- } )
936- . AddInMemoryExporter ( exportedItems ) ) ;
934+ #pragma warning disable CS0618 // Type or member is obsolete
935+ builder . SetMaxMetricPointsPerMetricStream ( 3 ) ;
937936#pragma warning restore CS0618 // Type or member is obsolete
937+ }
938+
939+ builder
940+ . AddMeter ( meter . Name )
941+ . AddView ( ( instrument ) =>
942+ {
943+ if ( instrument . Name == "counter2" )
944+ {
945+ return new MetricStreamConfiguration ( ) { Name = "MetricStreamA" , CardinalityLimit = 10000 } ;
946+ }
947+
948+ return null ;
949+ } )
950+ . AddInMemoryExporter ( exportedItems ) ;
951+ } ) ;
938952
939- var counter = meter . CreateCounter < long > ( "counter" ) ;
940- counter . Add ( 100 ) ;
953+ var counter1 = meter . CreateCounter < long > ( "counter1" ) ;
954+ counter1 . Add ( 100 ) ;
955+
956+ var counter2 = meter . CreateCounter < long > ( "counter2" ) ;
957+ counter2 . Add ( 100 ) ;
958+
959+ var counter3 = meter . CreateCounter < long > ( "counter3" ) ;
960+ counter3 . Add ( 100 ) ;
941961
942962 meterProvider . ForceFlush ( MaxTimeToAllowForFlush ) ;
943963
944- var metric = exportedItems [ 0 ] ;
964+ Assert . Equal ( 3 , exportedItems . Count ) ;
945965
946- Assert . Equal ( 10000 , metric . AggregatorStore . CardinalityLimit ) ;
966+ Assert . Equal ( 10000 , exportedItems [ 1 ] . AggregatorStore . CardinalityLimit ) ;
967+ if ( setDefault )
968+ {
969+ Assert . Equal ( 3 , exportedItems [ 0 ] . AggregatorStore . CardinalityLimit ) ;
970+ Assert . Equal ( 3 , exportedItems [ 2 ] . AggregatorStore . CardinalityLimit ) ;
971+ }
972+ else
973+ {
974+ Assert . Equal ( 2000 , exportedItems [ 0 ] . AggregatorStore . CardinalityLimit ) ;
975+ Assert . Equal ( 2000 , exportedItems [ 2 ] . AggregatorStore . CardinalityLimit ) ;
976+ }
947977 }
948978
949979 [ Fact ]
0 commit comments