| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- //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())
- }
|