@@ -155,6 +155,42 @@ func TestAddTelemetryConfigOptions(t *testing.T) {
155155 assert .Equal (t , "" , config .TelemetryConfig .Endpoint )
156156 },
157157 },
158+ {
159+ name : "with invalid sampling rate - uses default" ,
160+ mcpServer : & mcpv1alpha1.MCPServer {
161+ ObjectMeta : metav1.ObjectMeta {
162+ Name : "invalid-sampling-rate-server" ,
163+ Namespace : "test-ns" ,
164+ },
165+ Spec : mcpv1alpha1.MCPServerSpec {
166+ Image : testImage ,
167+ Transport : stdioTransport ,
168+ ProxyPort : 8080 ,
169+ Telemetry : & mcpv1alpha1.TelemetryConfig {
170+ OpenTelemetry : & mcpv1alpha1.OpenTelemetryConfig {
171+ Enabled : true ,
172+ Endpoint : "otel-collector:4317" ,
173+ Tracing : & mcpv1alpha1.OpenTelemetryTracingConfig {
174+ Enabled : true ,
175+ SamplingRate : "invalid-rate" , // Invalid value
176+ },
177+ },
178+ },
179+ },
180+ },
181+ //nolint:thelper // We want to see the error at the specific line
182+ expected : func (t * testing.T , config * runner.RunConfig ) {
183+ assert .Equal (t , "invalid-sampling-rate-server" , config .Name )
184+
185+ // Verify telemetry config is set
186+ assert .NotNil (t , config .TelemetryConfig )
187+
188+ // Check that invalid sampling rate defaults to 0.05
189+ assert .Equal (t , 0.05 , config .TelemetryConfig .SamplingRate )
190+ assert .True (t , config .TelemetryConfig .TracingEnabled )
191+ assert .Equal (t , "otel-collector:4317" , config .TelemetryConfig .Endpoint )
192+ },
193+ },
158194 }
159195
160196 for _ , tt := range tests {
@@ -165,7 +201,8 @@ func TestAddTelemetryConfigOptions(t *testing.T) {
165201 runner .WithName (tt .mcpServer .Name ),
166202 runner .WithImage (tt .mcpServer .Spec .Image ),
167203 }
168- AddTelemetryConfigOptions (& options , tt .mcpServer .Spec .Telemetry , tt .mcpServer .Name )
204+ ctx := context .Background ()
205+ AddTelemetryConfigOptions (ctx , & options , tt .mcpServer .Spec .Telemetry , tt .mcpServer .Name )
169206
170207 rc , err := runner .NewOperatorRunConfigBuilder (context .Background (), nil , nil , nil , options ... )
171208 assert .NoError (t , err )
@@ -174,3 +211,32 @@ func TestAddTelemetryConfigOptions(t *testing.T) {
174211 })
175212 }
176213}
214+
215+ // TestAddTelemetryConfigOptions_NilOptions tests that the function handles nil options gracefully
216+ func TestAddTelemetryConfigOptions_NilOptions (t * testing.T ) {
217+ t .Parallel ()
218+
219+ ctx := context .Background ()
220+ telemetryConfig := & mcpv1alpha1.TelemetryConfig {
221+ OpenTelemetry : & mcpv1alpha1.OpenTelemetryConfig {
222+ Enabled : true ,
223+ Endpoint : "otel-collector:4317" ,
224+ ServiceName : "test-service" ,
225+ Tracing : & mcpv1alpha1.OpenTelemetryTracingConfig {
226+ Enabled : true ,
227+ SamplingRate : "0.1" ,
228+ },
229+ Metrics : & mcpv1alpha1.OpenTelemetryMetricsConfig {
230+ Enabled : true ,
231+ },
232+ },
233+ Prometheus : & mcpv1alpha1.PrometheusConfig {
234+ Enabled : true ,
235+ },
236+ }
237+
238+ // Test with nil options pointer - should not panic
239+ assert .NotPanics (t , func () {
240+ AddTelemetryConfigOptions (ctx , nil , telemetryConfig , "test-server" )
241+ }, "AddTelemetryConfigOptions should not panic with nil options" )
242+ }
0 commit comments