Skip to content

Commit

Permalink
Add unit tests to default
Browse files Browse the repository at this point in the history
Signed-off-by: Ruben Vargas <ruben.vp8510@gmail.com>
  • Loading branch information
rubenvp8510 committed May 13, 2024
1 parent 2123d79 commit 5efc3f2
Show file tree
Hide file tree
Showing 15 changed files with 368 additions and 56 deletions.
4 changes: 2 additions & 2 deletions apis/tempo/v1alpha1/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ type JaegerQueryAuthenticationSpec struct {
//
// +optional
// +kubebuilder:validation:Optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Type"
Enabled *bool `json:"enabled,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Enabled",order=1,xDescriptors="urn:alm:descriptor:com.tectonic.ui:booleanSwitch"
Enabled bool `json:"enabled"`

// SAR defines the SAR to be used in the oauth-proxy
// default is "{"namespace": "<tempo_stack_namespace>", "resource": "pods", "verb": "get"}
Expand Down
9 changes: 3 additions & 6 deletions apis/tempo/v1alpha1/tempomonolithic_defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ func (r *TempoMonolithic) Default(ctrlConfig configv1alpha1.ProjectConfig) {
}
if r.Spec.JaegerUI != nil && r.Spec.JaegerUI.Enabled &&
r.Spec.JaegerUI.Route != nil && r.Spec.JaegerUI.Route.Enabled {

if r.Spec.JaegerUI.Route.Termination == "" {
if r.Spec.Multitenancy.IsGatewayEnabled() && ctrlConfig.Gates.OpenShift.ServingCertsService {
// gateway uses TLS
Expand All @@ -67,13 +68,9 @@ func (r *TempoMonolithic) Default(ctrlConfig configv1alpha1.ProjectConfig) {
}
}

if r.Spec.JaegerUI.Authentication != nil {
if r.Spec.JaegerUI.Authentication.Enabled == nil {
r.Spec.JaegerUI.Authentication.Enabled = ptr.To(ctrlConfig.Gates.OpenShift.OauthProxy.DefaultEnabled)
}
} else {
if r.Spec.JaegerUI.Authentication == nil {
r.Spec.JaegerUI.Authentication = &JaegerQueryAuthenticationSpec{
Enabled: ptr.To(ctrlConfig.Gates.OpenShift.OauthProxy.DefaultEnabled),
Enabled: ctrlConfig.Gates.OpenShift.OauthProxy.DefaultEnabled,
}
}

Expand Down
265 changes: 265 additions & 0 deletions apis/tempo/v1alpha1/tempomonolithic_defaults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/api/resource"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

configv1alpha1 "github.com/grafana/tempo-operator/apis/config/v1alpha1"
)
Expand Down Expand Up @@ -126,6 +127,270 @@ func TestMonolithicDefault(t *testing.T) {
},
},
},
{
name: "enable jaeger ui oauth when feature gate is enabled",
ctrlConfig: configv1alpha1.ProjectConfig{
Gates: configv1alpha1.FeatureGates{
OpenShift: configv1alpha1.OpenShiftFeatureGates{
OauthProxy: configv1alpha1.OauthProxyFeatureGates{
DefaultEnabled: true,
},
},
},
},
input: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
},
},
},
},
expected: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
Ingestion: &MonolithicIngestionSpec{
OTLP: &MonolithicIngestionOTLPSpec{
GRPC: &MonolithicIngestionOTLPProtocolsGRPCSpec{
Enabled: true,
},
HTTP: &MonolithicIngestionOTLPProtocolsHTTPSpec{
Enabled: true,
},
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
Termination: TLSRouteTerminationTypeEdge,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: true,
SAR: "{\"namespace\": \"testns\", \"resource\": \"pods\", \"verb\": \"get\"}",
},
},
Management: "Managed",
},
},
},
{
name: "no touch jaeger ui oauth when feature gate is enabled and user specified false value explicit",
ctrlConfig: configv1alpha1.ProjectConfig{
Gates: configv1alpha1.FeatureGates{
OpenShift: configv1alpha1.OpenShiftFeatureGates{
OauthProxy: configv1alpha1.OauthProxyFeatureGates{
DefaultEnabled: true,
},
},
},
},
input: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: false,
},
},
},
},
expected: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
Ingestion: &MonolithicIngestionSpec{
OTLP: &MonolithicIngestionOTLPSpec{
GRPC: &MonolithicIngestionOTLPProtocolsGRPCSpec{
Enabled: true,
},
HTTP: &MonolithicIngestionOTLPProtocolsHTTPSpec{
Enabled: true,
},
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
Termination: TLSRouteTerminationTypeEdge,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: false,
SAR: "{\"namespace\": \"testns\", \"resource\": \"pods\", \"verb\": \"get\"}",
},
},
Management: "Managed",
},
},
},
{
name: "no touch jaeger ui oauth when feature gate is disabled (true case)",
input: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: true,
SAR: "{\"namespace\": \"testns\", \"resource\": \"pods\", \"verb\": \"get\"}",
},
},
},
},
expected: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
Ingestion: &MonolithicIngestionSpec{
OTLP: &MonolithicIngestionOTLPSpec{
GRPC: &MonolithicIngestionOTLPProtocolsGRPCSpec{
Enabled: true,
},
HTTP: &MonolithicIngestionOTLPProtocolsHTTPSpec{
Enabled: true,
},
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
Termination: TLSRouteTerminationTypeEdge,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: true,
SAR: "{\"namespace\": \"testns\", \"resource\": \"pods\", \"verb\": \"get\"}",
},
},
Management: "Managed",
},
},
},
{
name: "no touch jaeger ui oauth when feature gate is disabled (false case)",
input: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: false,
},
},
},
},
expected: &TempoMonolithic{
ObjectMeta: v1.ObjectMeta{
Name: "test",
Namespace: "testns",
},
Spec: TempoMonolithicSpec{
Storage: &MonolithicStorageSpec{
Traces: MonolithicTracesStorageSpec{
Backend: "s3",
Size: &twentyGBQuantity,
},
},
Ingestion: &MonolithicIngestionSpec{
OTLP: &MonolithicIngestionOTLPSpec{
GRPC: &MonolithicIngestionOTLPProtocolsGRPCSpec{
Enabled: true,
},
HTTP: &MonolithicIngestionOTLPProtocolsHTTPSpec{
Enabled: true,
},
},
},
JaegerUI: &MonolithicJaegerUISpec{
Enabled: true,
Route: &MonolithicJaegerUIRouteSpec{
Enabled: true,
Termination: TLSRouteTerminationTypeEdge,
},
Authentication: &JaegerQueryAuthenticationSpec{
Enabled: false,
SAR: "{\"namespace\": \"testns\", \"resource\": \"pods\", \"verb\": \"get\"}",
},
},
Management: "Managed",
},
},
},
}

for _, test := range tests {
Expand Down
2 changes: 1 addition & 1 deletion apis/tempo/v1alpha1/tempostack_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ type JaegerQuerySpec struct {
// +optional
// +kubebuilder:validation:Optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger UI authentication configuration"
Authentication JaegerQueryAuthenticationSpec `json:"authentication,omitempty"`
Authentication *JaegerQueryAuthenticationSpec `json:"authentication,omitempty"`
}

// JaegerQueryMonitor defines configuration for the service monitoring tab in the Jaeger console.
Expand Down
11 changes: 5 additions & 6 deletions apis/tempo/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 5efc3f2

Please sign in to comment.