feat: add OpenAI image generation controls
This commit is contained in:
@@ -1282,6 +1282,46 @@ func TestValidateConfigErrors(t *testing.T) {
|
||||
mutate: func(c *Config) { c.Gateway.StreamDataIntervalTimeout = -1 },
|
||||
wantErr: "gateway.stream_data_interval_timeout must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway image stream keepalive range",
|
||||
mutate: func(c *Config) { c.Gateway.ImageStreamKeepaliveInterval = 4 },
|
||||
wantErr: "gateway.image_stream_keepalive_interval",
|
||||
},
|
||||
{
|
||||
name: "gateway image stream keepalive negative",
|
||||
mutate: func(c *Config) { c.Gateway.ImageStreamKeepaliveInterval = -1 },
|
||||
wantErr: "gateway.image_stream_keepalive_interval must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway image stream data interval range",
|
||||
mutate: func(c *Config) { c.Gateway.ImageStreamDataIntervalTimeout = 30 },
|
||||
wantErr: "gateway.image_stream_data_interval_timeout",
|
||||
},
|
||||
{
|
||||
name: "gateway image stream data interval negative",
|
||||
mutate: func(c *Config) { c.Gateway.ImageStreamDataIntervalTimeout = -1 },
|
||||
wantErr: "gateway.image_stream_data_interval_timeout must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway image concurrency max negative",
|
||||
mutate: func(c *Config) { c.Gateway.ImageConcurrency.MaxConcurrentRequests = -1 },
|
||||
wantErr: "gateway.image_concurrency.max_concurrent_requests must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway image concurrency overflow mode invalid",
|
||||
mutate: func(c *Config) { c.Gateway.ImageConcurrency.OverflowMode = "queue" },
|
||||
wantErr: "gateway.image_concurrency.overflow_mode",
|
||||
},
|
||||
{
|
||||
name: "gateway image concurrency wait timeout negative",
|
||||
mutate: func(c *Config) { c.Gateway.ImageConcurrency.WaitTimeoutSeconds = -1 },
|
||||
wantErr: "gateway.image_concurrency.wait_timeout_seconds must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway image concurrency max waiting negative",
|
||||
mutate: func(c *Config) { c.Gateway.ImageConcurrency.MaxWaitingRequests = -1 },
|
||||
wantErr: "gateway.image_concurrency.max_waiting_requests must be non-negative",
|
||||
},
|
||||
{
|
||||
name: "gateway max line size",
|
||||
mutate: func(c *Config) { c.Gateway.MaxLineSize = 1024 },
|
||||
@@ -1754,3 +1794,41 @@ func TestLoad_DefaultGatewayUsageRecordConfig(t *testing.T) {
|
||||
t.Fatalf("auto_scale_cooldown_seconds = %d, want 10", cfg.Gateway.UsageRecord.AutoScaleCooldownSeconds)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoad_DefaultGatewayImageStreamConfig(t *testing.T) {
|
||||
resetViperWithJWTSecret(t)
|
||||
cfg, err := Load()
|
||||
if err != nil {
|
||||
t.Fatalf("Load() error: %v", err)
|
||||
}
|
||||
if cfg.Gateway.StreamDataIntervalTimeout != 180 {
|
||||
t.Fatalf("stream_data_interval_timeout = %d, want 180", cfg.Gateway.StreamDataIntervalTimeout)
|
||||
}
|
||||
if cfg.Gateway.StreamKeepaliveInterval != 10 {
|
||||
t.Fatalf("stream_keepalive_interval = %d, want 10", cfg.Gateway.StreamKeepaliveInterval)
|
||||
}
|
||||
if cfg.Gateway.ImageStreamDataIntervalTimeout != 900 {
|
||||
t.Fatalf("image_stream_data_interval_timeout = %d, want 900", cfg.Gateway.ImageStreamDataIntervalTimeout)
|
||||
}
|
||||
if cfg.Gateway.ImageStreamKeepaliveInterval != 10 {
|
||||
t.Fatalf("image_stream_keepalive_interval = %d, want 10", cfg.Gateway.ImageStreamKeepaliveInterval)
|
||||
}
|
||||
if cfg.Gateway.ImageConcurrency.Enabled {
|
||||
t.Fatalf("image_concurrency.enabled = true, want false")
|
||||
}
|
||||
if cfg.Gateway.ImageConcurrency.MaxConcurrentRequests != 0 {
|
||||
t.Fatalf("image_concurrency.max_concurrent_requests = %d, want 0", cfg.Gateway.ImageConcurrency.MaxConcurrentRequests)
|
||||
}
|
||||
if cfg.Gateway.ImageConcurrency.OverflowMode != ImageConcurrencyOverflowModeReject {
|
||||
t.Fatalf("image_concurrency.overflow_mode = %q, want %q", cfg.Gateway.ImageConcurrency.OverflowMode, ImageConcurrencyOverflowModeReject)
|
||||
}
|
||||
if cfg.Gateway.ImageConcurrency.WaitTimeoutSeconds != 30 {
|
||||
t.Fatalf("image_concurrency.wait_timeout_seconds = %d, want 30", cfg.Gateway.ImageConcurrency.WaitTimeoutSeconds)
|
||||
}
|
||||
if cfg.Gateway.ImageConcurrency.MaxWaitingRequests != 100 {
|
||||
t.Fatalf("image_concurrency.max_waiting_requests = %d, want 100", cfg.Gateway.ImageConcurrency.MaxWaitingRequests)
|
||||
}
|
||||
if cfg.Gateway.ImageStreamDataIntervalTimeout <= cfg.Gateway.StreamDataIntervalTimeout {
|
||||
t.Fatalf("image stream timeout = %d, want greater than ordinary stream timeout %d", cfg.Gateway.ImageStreamDataIntervalTimeout, cfg.Gateway.StreamDataIntervalTimeout)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user