|
|
|
@ -8,6 +8,7 @@ import ( |
|
|
|
|
"github.com/google/uuid" |
|
|
|
|
lokiv1 "github.com/grafana/loki/operator/apis/loki/v1" |
|
|
|
|
"github.com/grafana/loki/operator/internal/manifests" |
|
|
|
|
"github.com/grafana/loki/operator/internal/manifests/internal/config" |
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
corev1 "k8s.io/api/core/v1" |
|
|
|
@ -180,3 +181,109 @@ func randomConfigOptions() manifests.Options { |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestConfigOptions_RetentionConfig(t *testing.T) { |
|
|
|
|
tt := []struct { |
|
|
|
|
desc string |
|
|
|
|
spec lokiv1.LokiStackSpec |
|
|
|
|
wantOptions config.RetentionOptions |
|
|
|
|
}{ |
|
|
|
|
{ |
|
|
|
|
desc: "no retention", |
|
|
|
|
spec: lokiv1.LokiStackSpec{}, |
|
|
|
|
wantOptions: config.RetentionOptions{ |
|
|
|
|
Enabled: false, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
desc: "global retention, extra small", |
|
|
|
|
spec: lokiv1.LokiStackSpec{ |
|
|
|
|
Size: lokiv1.SizeOneXExtraSmall, |
|
|
|
|
Limits: &lokiv1.LimitsSpec{ |
|
|
|
|
Global: &lokiv1.LimitsTemplateSpec{ |
|
|
|
|
Retention: &lokiv1.RetentionLimitSpec{ |
|
|
|
|
Days: 14, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantOptions: config.RetentionOptions{ |
|
|
|
|
Enabled: true, |
|
|
|
|
DeleteWorkerCount: 10, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
desc: "global and tenant retention, extra small", |
|
|
|
|
spec: lokiv1.LokiStackSpec{ |
|
|
|
|
Size: lokiv1.SizeOneXExtraSmall, |
|
|
|
|
Limits: &lokiv1.LimitsSpec{ |
|
|
|
|
Global: &lokiv1.LimitsTemplateSpec{ |
|
|
|
|
Retention: &lokiv1.RetentionLimitSpec{ |
|
|
|
|
Days: 14, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
Tenants: map[string]lokiv1.LimitsTemplateSpec{ |
|
|
|
|
"development": { |
|
|
|
|
Retention: &lokiv1.RetentionLimitSpec{ |
|
|
|
|
Days: 3, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantOptions: config.RetentionOptions{ |
|
|
|
|
Enabled: true, |
|
|
|
|
DeleteWorkerCount: 10, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
desc: "tenant retention, extra small", |
|
|
|
|
spec: lokiv1.LokiStackSpec{ |
|
|
|
|
Size: lokiv1.SizeOneXExtraSmall, |
|
|
|
|
Limits: &lokiv1.LimitsSpec{ |
|
|
|
|
Tenants: map[string]lokiv1.LimitsTemplateSpec{ |
|
|
|
|
"development": { |
|
|
|
|
Retention: &lokiv1.RetentionLimitSpec{ |
|
|
|
|
Days: 3, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantOptions: config.RetentionOptions{ |
|
|
|
|
Enabled: true, |
|
|
|
|
DeleteWorkerCount: 10, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
desc: "global retention, medium", |
|
|
|
|
spec: lokiv1.LokiStackSpec{ |
|
|
|
|
Size: lokiv1.SizeOneXMedium, |
|
|
|
|
Limits: &lokiv1.LimitsSpec{ |
|
|
|
|
Global: &lokiv1.LimitsTemplateSpec{ |
|
|
|
|
Retention: &lokiv1.RetentionLimitSpec{ |
|
|
|
|
Days: 14, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantOptions: config.RetentionOptions{ |
|
|
|
|
Enabled: true, |
|
|
|
|
DeleteWorkerCount: 150, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, tc := range tt { |
|
|
|
|
tc := tc |
|
|
|
|
t.Run(tc.desc, func(t *testing.T) { |
|
|
|
|
t.Parallel() |
|
|
|
|
|
|
|
|
|
inOpt := manifests.Options{ |
|
|
|
|
Stack: tc.spec, |
|
|
|
|
} |
|
|
|
|
options := manifests.ConfigOptions(inOpt) |
|
|
|
|
require.Equal(t, tc.wantOptions, options.Retention) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|