11// Copyright The OpenTelemetry Authors
22// SPDX-License-Identifier: Apache-2.0
33
4+ #nullable enable
5+
6+ using System . Diagnostics ;
47using System . Diagnostics . Metrics ;
58using Xunit ;
69
@@ -193,11 +196,7 @@ public void MultiThreadedHistogramUpdateAndSnapShotTest()
193196 {
194197 var boundaries = Array . Empty < double > ( ) ;
195198 var histogramPoint = new MetricPoint ( this . aggregatorStore , AggregationType . Histogram , null , boundaries , Metric . DefaultExponentialHistogramMaxBuckets , Metric . DefaultExponentialHistogramMaxScale ) ;
196- var argsToThread = new ThreadArguments
197- {
198- HistogramPoint = histogramPoint ,
199- MreToEnsureAllThreadsStart = new ManualResetEvent ( false ) ,
200- } ;
199+ var argsToThread = new ThreadArguments ( histogramPoint , new ManualResetEvent ( false ) ) ;
201200
202201 var numberOfThreads = 2 ;
203202 var snapshotThread = new Thread ( HistogramSnapshotThread ) ;
@@ -243,7 +242,7 @@ public void MultiThreadedHistogramUpdateAndSnapShotTest()
243242 [ InlineData ( "System.Net.Http" , "http.client.request.time_in_queue" , "s" , KnownHistogramBuckets . DefaultShortSeconds ) ]
244243 [ InlineData ( "System.Net.NameResolution" , "dns.lookup.duration" , "s" , KnownHistogramBuckets . DefaultShortSeconds ) ]
245244 [ InlineData ( "General.App" , "simple.alternative.counter" , "s" , KnownHistogramBuckets . Default ) ]
246- public void HistogramBucketsDefaultUpdatesForSecondsTest ( string meterName , string instrumentName , string unit , KnownHistogramBuckets expectedHistogramBuckets )
245+ public void HistogramBucketsDefaultUpdatesForSecondsTest ( string meterName , string instrumentName , string ? unit , KnownHistogramBuckets expectedHistogramBuckets )
247246 {
248247 using var meter = new Meter ( meterName ) ;
249248
@@ -341,7 +340,7 @@ internal void ExponentialHistogramTests(AggregationType aggregationType, Aggrega
341340
342341 foreach ( var value in valuesToRecord )
343342 {
344- aggregatorStore . Update ( value , Array . Empty < KeyValuePair < string , object > > ( ) ) ;
343+ aggregatorStore . Update ( value , Array . Empty < KeyValuePair < string , object ? > > ( ) ) ;
345344
346345 if ( value >= 0 )
347346 {
@@ -446,7 +445,7 @@ internal void ExponentialMaxScaleConfigWorks(int? maxScale)
446445 this . emitOverflowAttribute ,
447446 this . shouldReclaimUnusedMetricPoints ) ;
448447
449- aggregatorStore . Update ( 10 , Array . Empty < KeyValuePair < string , object > > ( ) ) ;
448+ aggregatorStore . Update ( 10 , Array . Empty < KeyValuePair < string , object ? > > ( ) ) ;
450449
451450 aggregatorStore . Snapshot ( ) ;
452451
@@ -466,10 +465,11 @@ internal void ExponentialMaxScaleConfigWorks(int? maxScale)
466465 Assert . Equal ( expectedScale , metricPoint . GetExponentialHistogramData ( ) . Scale ) ;
467466 }
468467
469- private static void HistogramSnapshotThread ( object obj )
468+ private static void HistogramSnapshotThread ( object ? obj )
470469 {
471470 var args = obj as ThreadArguments ;
472- var mreToEnsureAllThreadsStart = args . MreToEnsureAllThreadsStart ;
471+ Debug . Assert ( args != null , "args was null" ) ;
472+ var mreToEnsureAllThreadsStart = args ! . MreToEnsureAllThreadsStart ;
473473
474474 if ( Interlocked . Increment ( ref args . ThreadStartedCount ) == 3 )
475475 {
@@ -487,10 +487,11 @@ private static void HistogramSnapshotThread(object obj)
487487 }
488488 }
489489
490- private static void HistogramUpdateThread ( object obj )
490+ private static void HistogramUpdateThread ( object ? obj )
491491 {
492492 var args = obj as ThreadArguments ;
493- var mreToEnsureAllThreadsStart = args . MreToEnsureAllThreadsStart ;
493+ Debug . Assert ( args != null , "args was null" ) ;
494+ var mreToEnsureAllThreadsStart = args ! . MreToEnsureAllThreadsStart ;
494495
495496 if ( Interlocked . Increment ( ref args . ThreadStartedCount ) == 3 )
496497 {
@@ -509,11 +510,17 @@ private static void HistogramUpdateThread(object obj)
509510
510511 private class ThreadArguments
511512 {
513+ public readonly ManualResetEvent MreToEnsureAllThreadsStart ;
512514 public MetricPoint HistogramPoint ;
513- public ManualResetEvent MreToEnsureAllThreadsStart ;
514515 public int ThreadStartedCount ;
515516 public long ThreadsFinishedAllUpdatesCount ;
516517 public double SumOfDelta ;
518+
519+ public ThreadArguments ( MetricPoint histogramPoint , ManualResetEvent mreToEnsureAllThreadsStart )
520+ {
521+ this . HistogramPoint = histogramPoint ;
522+ this . MreToEnsureAllThreadsStart = mreToEnsureAllThreadsStart ;
523+ }
517524 }
518525}
519526
0 commit comments