|
7 | 7 | gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
|
8 | 8 |
|
9 | 9 | ngfAPIv1alpha2 "github.com/nginx/nginx-gateway-fabric/v2/apis/v1alpha2"
|
| 10 | + "github.com/nginx/nginx-gateway-fabric/v2/internal/framework/helpers" |
10 | 11 | )
|
11 | 12 |
|
12 | 13 | func TestObservabilityPoliciesTargetRefKind(t *testing.T) {
|
@@ -227,3 +228,66 @@ func TestObservabilityPoliciesTargetRefKindAndNameCombo(t *testing.T) {
|
227 | 228 | })
|
228 | 229 | }
|
229 | 230 | }
|
| 231 | + |
| 232 | +func TestObservabilityPoliciesTracing(t *testing.T) { |
| 233 | + t.Parallel() |
| 234 | + k8sClient := getKubernetesClient(t) |
| 235 | + |
| 236 | + tests := []struct { |
| 237 | + spec ngfAPIv1alpha2.ObservabilityPolicySpec |
| 238 | + name string |
| 239 | + wantErrors []string |
| 240 | + }{ |
| 241 | + { |
| 242 | + name: "Validate ObservabilityPolicy is applied when ratio is set and strategy is TraceStrategyRatio", |
| 243 | + spec: ngfAPIv1alpha2.ObservabilityPolicySpec{ |
| 244 | + TargetRefs: []gatewayv1alpha2.LocalPolicyTargetReference{ |
| 245 | + { |
| 246 | + Kind: httpRouteKind, |
| 247 | + Group: gatewayGroup, |
| 248 | + }, |
| 249 | + }, |
| 250 | + Tracing: &ngfAPIv1alpha2.Tracing{ |
| 251 | + Strategy: ngfAPIv1alpha2.TraceStrategyRatio, |
| 252 | + Ratio: helpers.GetPointer[int32](50), |
| 253 | + }, |
| 254 | + }, |
| 255 | + }, |
| 256 | + { |
| 257 | + name: "Validate ObservabilityPolicy is invalid when ratio is set and strategy is not TraceStrategyRatio", |
| 258 | + wantErrors: []string{expectedStrategyMustBeOfTypeRatio}, |
| 259 | + spec: ngfAPIv1alpha2.ObservabilityPolicySpec{ |
| 260 | + TargetRefs: []gatewayv1alpha2.LocalPolicyTargetReference{ |
| 261 | + { |
| 262 | + Kind: httpRouteKind, |
| 263 | + Group: gatewayGroup, |
| 264 | + }, |
| 265 | + }, |
| 266 | + Tracing: &ngfAPIv1alpha2.Tracing{ |
| 267 | + Strategy: ngfAPIv1alpha2.TraceStrategyParent, |
| 268 | + Ratio: helpers.GetPointer[int32](50), |
| 269 | + }, |
| 270 | + }, |
| 271 | + }, |
| 272 | + } |
| 273 | + |
| 274 | + for _, tt := range tests { |
| 275 | + t.Run(tt.name, func(t *testing.T) { |
| 276 | + t.Parallel() |
| 277 | + spec := tt.spec |
| 278 | + |
| 279 | + for i := range spec.TargetRefs { |
| 280 | + spec.TargetRefs[i].Name = gatewayv1alpha2.ObjectName(uniqueResourceName(testTargetRefName)) |
| 281 | + } |
| 282 | + |
| 283 | + observabilityPolicy := &ngfAPIv1alpha2.ObservabilityPolicy{ |
| 284 | + ObjectMeta: controllerruntime.ObjectMeta{ |
| 285 | + Name: uniqueResourceName(testResourceName), |
| 286 | + Namespace: defaultNamespace, |
| 287 | + }, |
| 288 | + Spec: spec, |
| 289 | + } |
| 290 | + validateCrd(t, tt.wantErrors, observabilityPolicy, k8sClient) |
| 291 | + }) |
| 292 | + } |
| 293 | +} |
0 commit comments