Files
xinmi/internal/application/service/knowledge_task_options_test.go
T
yawan f7fc992f57
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
2026-09-22 16:19:06 +08:00

91 lines
2.6 KiB
Go

package service
import (
"testing"
"time"
"github.com/Tencent/WeKnora/internal/config"
"github.com/Tencent/WeKnora/internal/types"
"github.com/hibiken/asynq"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func parseDocumentProcessOpts(t *testing.T, opts []asynq.Option) (queue string, timeout time.Duration, maxRetry *int) {
t.Helper()
for _, opt := range opts {
switch opt.Type() {
case asynq.QueueOpt:
queue, _ = opt.Value().(string)
case asynq.TimeoutOpt:
timeout, _ = opt.Value().(time.Duration)
case asynq.MaxRetryOpt:
n, _ := opt.Value().(int)
maxRetry = &n
default:
t.Fatalf("unexpected asynq option type %v", opt.Type())
}
}
return queue, timeout, maxRetry
}
func TestDocumentProcessTaskOptions_defaults(t *testing.T) {
t.Parallel()
cases := []struct {
name string
cfg *config.Config
}{
{"nil config", nil},
{"nil knowledge base", &config.Config{}},
{"zero timeout", &config.Config{KnowledgeBase: &config.KnowledgeBaseConfig{}}},
{"negative timeout", &config.Config{
KnowledgeBase: &config.KnowledgeBaseConfig{DocumentProcessTimeout: -time.Minute},
}},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
opts := documentProcessTaskOptions(tc.cfg)
queue, timeout, maxRetry := parseDocumentProcessOpts(t, opts)
assert.Equal(t, types.QueueDefault, queue)
assert.Equal(t, config.DefaultDocumentProcessTimeout, timeout)
require.NotNil(t, maxRetry)
assert.Equal(t, 3, *maxRetry)
})
}
}
func TestDocumentProcessTaskOptions_configuredTimeout(t *testing.T) {
t.Parallel()
cfg := &config.Config{
KnowledgeBase: &config.KnowledgeBaseConfig{
DocumentProcessTimeout: 90 * time.Minute,
},
}
opts := documentProcessTaskOptions(cfg)
queue, timeout, maxRetry := parseDocumentProcessOpts(t, opts)
assert.Equal(t, types.QueueDefault, queue)
assert.Equal(t, 90*time.Minute, timeout)
require.NotNil(t, maxRetry)
assert.Equal(t, 3, *maxRetry)
}
func TestDocumentProcessTaskOptions_extraMaxRetry(t *testing.T) {
t.Parallel()
opts := documentProcessTaskOptions(nil, asynq.MaxRetry(3))
queue, timeout, maxRetry := parseDocumentProcessOpts(t, opts)
assert.Equal(t, types.QueueDefault, queue)
assert.Equal(t, config.DefaultDocumentProcessTimeout, timeout)
require.NotNil(t, maxRetry)
assert.Equal(t, 3, *maxRetry)
}
func TestKnowledgePostProcessTaskOptionsUseDedicatedQueue(t *testing.T) {
t.Parallel()
queue, timeout, maxRetry := parseDocumentProcessOpts(t, knowledgePostProcessTaskOptions())
assert.Equal(t, types.QueuePostProcess, queue)
assert.Equal(t, 30*time.Minute, timeout)
require.NotNil(t, maxRetry)
assert.Equal(t, 3, *maxRetry)
}