@@ -30,7 +30,11 @@ public void CanCreateTheCollectorResource()
3030 public async Task CanCreateTheCollectorResourceWithCustomConfig ( )
3131 {
3232 var builder = DistributedApplication . CreateBuilder ( ) ;
33- builder . AddOpenTelemetryCollector ( "collector" )
33+ builder . AddOpenTelemetryCollector ( "collector" , settings =>
34+ {
35+
36+ settings . DisableHealthcheck = true ;
37+ } )
3438 . WithConfig ( "./config.yaml" )
3539 . WithAppForwarding ( ) ;
3640
@@ -137,6 +141,7 @@ public void CanDisableBothEndpoints()
137141 {
138142 settings . EnableHttpEndpoint = false ;
139143 settings . EnableGrpcEndpoint = false ;
144+ settings . DisableHealthcheck = true ;
140145 } )
141146 . WithAppForwarding ( ) ;
142147
@@ -157,7 +162,10 @@ public async Task ContainerHasAspireEnvironmentVariables()
157162 . WithTestAndResourceLogging ( testOutputHelper ) ;
158163 builder . Configuration [ "APPHOST:ContainerHostname" ] = "what.ever" ;
159164
160- var collector = builder . AddOpenTelemetryCollector ( "collector" )
165+ var collector = builder . AddOpenTelemetryCollector ( "collector" , settings =>
166+ {
167+ settings . DisableHealthcheck = true ;
168+ } )
161169 . WithAppForwarding ( ) ;
162170
163171 using var app = builder . Build ( ) ;
@@ -259,6 +267,7 @@ public void CanConfigureOnlyGrpcEndpoint()
259267 {
260268 settings . EnableGrpcEndpoint = true ;
261269 settings . EnableHttpEndpoint = false ;
270+ settings . DisableHealthcheck = true ;
262271 } )
263272 . WithAppForwarding ( ) ;
264273
@@ -285,6 +294,7 @@ public void CanConfigureOnlyHttpEndpoint()
285294 {
286295 settings . EnableGrpcEndpoint = false ;
287296 settings . EnableHttpEndpoint = true ;
297+ settings . DisableHealthcheck = true ;
288298 } )
289299 . WithAppForwarding ( ) ;
290300
@@ -618,4 +628,48 @@ public void DevCertificateExecutableResourceHasCorrectConfiguration()
618628 Assert . Contains ( "Pem" , argsContext . Args ) ;
619629 Assert . Contains ( "--no-password" , argsContext . Args ) ;
620630 }
631+
632+ [ Theory ]
633+ [ InlineData ( true ) ]
634+ [ InlineData ( false ) ]
635+ public void CanDisableHealthcheckOnCollectorResource ( bool disableHealthcheck )
636+ {
637+ var builder = DistributedApplication . CreateBuilder ( ) ;
638+
639+ builder . AddOpenTelemetryCollector ( "collector" , settings =>
640+ {
641+ settings . DisableHealthcheck = disableHealthcheck ;
642+ } )
643+ . WithAppForwarding ( ) ;
644+
645+ using var app = builder . Build ( ) ;
646+
647+ var appModel = app . Services . GetRequiredService < DistributedApplicationModel > ( ) ;
648+
649+ var collectorResource = appModel . Resources . OfType < OpenTelemetryCollectorResource > ( ) . SingleOrDefault ( ) ;
650+ Assert . NotNull ( collectorResource ) ;
651+
652+ var hasHealthCheck = collectorResource . Annotations . OfType < HealthCheckAnnotation > ( ) . Any ( ) ;
653+ if ( disableHealthcheck )
654+ {
655+ Assert . False ( hasHealthCheck ) ;
656+ }
657+ else
658+ {
659+ Assert . True ( hasHealthCheck ) ;
660+ var argsAnnotations = collectorResource . Annotations . OfType < CommandLineArgsCallbackAnnotation > ( ) . ToList ( ) ;
661+ Assert . NotEmpty ( argsAnnotations ) ;
662+
663+ var argsContext = new CommandLineArgsCallbackContext ( [ ] ) ;
664+ foreach ( var arg in argsAnnotations )
665+ {
666+ arg . Callback ( argsContext ) ;
667+ }
668+
669+ Assert . Contains ( "--feature-gates=confmap.enableMergeAppendOption" , argsContext . Args ) ;
670+ Assert . Contains ( "--config=yaml:extensions::health_check/aspire::endpoint: 0.0.0.0:13233" , argsContext . Args ) ;
671+ Assert . Contains ( "--config=yaml:service::extensions: [ health_check/aspire ]" , argsContext . Args ) ;
672+ }
673+
674+ }
621675}
0 commit comments