package logstore_test import ( "time" "github.com/zitadel/zitadel/internal/logstore" "github.com/zitadel/zitadel/internal/query" ) type emitterOption func(config *logstore.EmitterConfig) func emitterConfig(options ...emitterOption) *logstore.EmitterConfig { cfg := &logstore.EmitterConfig{ Enabled: true, Debounce: &logstore.DebouncerConfig{ MinFrequency: 0, MaxBulkSize: 0, }, } for _, opt := range options { opt(cfg) } return cfg } func withDebouncerConfig(config *logstore.DebouncerConfig) emitterOption { return func(c *logstore.EmitterConfig) { c.Debounce = config } } func withDisabled() emitterOption { return func(c *logstore.EmitterConfig) { c.Enabled = false } } type quotaOption func(config *query.Quota) func quotaConfig(quotaOptions ...quotaOption) *query.Quota { q := &query.Quota{ Amount: 90, Limit: false, ResetInterval: 90 * time.Second, From: time.Unix(0, 0), } for _, opt := range quotaOptions { opt(q) } return q } func withAmountAndInterval(n uint64) quotaOption { return func(c *query.Quota) { c.Amount = n c.ResetInterval = time.Duration(n) * time.Second } } func withLimiting() quotaOption { return func(c *query.Quota) { c.Limit = true } } func repeat(value, times int) []int { ints := make([]int, times) for i := 0; i < times; i++ { ints[i] = value } return ints } func uint64Ptr(n uint64) *uint64 { return &n }