Files
sub2api/backend/internal/service/user_msg_queue_service_test.go
T
李建琦 6d655c9903
Release / update-version (push) Has been cancelled
Release / build-frontend (push) Has been cancelled
Release / release (push) Has been cancelled
Release / sync-version-file (push) Has been cancelled
CI / shell (push) Canceled after 0s
CI / test (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / golangci-lint (push) Canceled after 0s
Security Scan / backend-security (push) Canceled after 0s
Security Scan / frontend-security (push) Canceled after 0s
Sub2API v1.0 - AI API 网关(二开初始版本,基于上游 Wei-Shaw/sub2api)
2026-08-21 18:30:13 +08:00

55 lines
1.4 KiB
Go

//go:build unit
package service
import (
"context"
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/require"
)
type cleanupWorkerUserMsgQueueCache struct {
reconcileCalls atomic.Int64
maxCount atomic.Int64
}
var _ UserMsgQueueCache = (*cleanupWorkerUserMsgQueueCache)(nil)
func (c *cleanupWorkerUserMsgQueueCache) AcquireLock(context.Context, int64, string, int) (bool, error) {
return true, nil
}
func (c *cleanupWorkerUserMsgQueueCache) ReleaseLock(context.Context, int64, string) (bool, error) {
return true, nil
}
func (c *cleanupWorkerUserMsgQueueCache) GetLastCompletedMs(context.Context, int64) (int64, error) {
return 0, nil
}
func (c *cleanupWorkerUserMsgQueueCache) GetCurrentTimeMs(context.Context) (int64, error) {
return time.Now().UnixMilli(), nil
}
func (c *cleanupWorkerUserMsgQueueCache) ReconcileExpiredLockCandidates(_ context.Context, maxCount int) (int, error) {
c.reconcileCalls.Add(1)
c.maxCount.Store(int64(maxCount))
return 1, nil
}
func TestStartCleanupWorker_ReconcilesExpiredLockCandidates(t *testing.T) {
cache := &cleanupWorkerUserMsgQueueCache{}
svc := NewUserMessageQueueService(cache, nil, nil)
defer svc.Stop()
svc.StartCleanupWorker(time.Millisecond)
require.Eventually(t, func() bool {
return cache.reconcileCalls.Load() > 0
}, time.Second, 10*time.Millisecond)
require.EqualValues(t, 1000, cache.maxCount.Load())
}