fix: harden single-machine load handling
This commit is contained in:
@@ -3,6 +3,7 @@ package store
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -443,6 +444,34 @@ func TestInvalidateGroupSettingsUsesTopicCacheKey(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetGroupMuteUsesPositiveAndNegativeCache(t *testing.T) {
|
||||
oldRuntime := groupMsgRuntime
|
||||
runtime := newTestGroupMessageRuntime()
|
||||
groupMsgRuntime = runtime
|
||||
t.Cleanup(func() { groupMsgRuntime = oldRuntime })
|
||||
|
||||
tenantID := types.TenantID(7)
|
||||
topic := "grpAlpha"
|
||||
uid := types.Uid(42)
|
||||
cacheID := groupMemberCacheID(topic, uid)
|
||||
expires := time.Now().UTC().Add(time.Minute)
|
||||
want := &types.GroupMute{TenantID: tenantID, Topic: topic, UserID: uid, Status: types.GroupMuteStatusActive, ExpiresAt: &expires}
|
||||
if err := CacheObject(tenantID, cacheNamespaceGroupMute, cacheID, groupMuteCacheValue{Found: true, Mute: want}); err != nil {
|
||||
t.Fatalf("cache positive mute: %v", err)
|
||||
}
|
||||
got, err := (groupBusinessMapper{}).GetMute(tenantID, topic, uid)
|
||||
if err != nil || got == nil || got.UserID != uid || got.Status != types.GroupMuteStatusActive {
|
||||
t.Fatalf("positive cache result: mute=%#v err=%v", got, err)
|
||||
}
|
||||
|
||||
if err = CacheObject(tenantID, cacheNamespaceGroupMute, cacheID, groupMuteCacheValue{}); err != nil {
|
||||
t.Fatalf("cache negative mute: %v", err)
|
||||
}
|
||||
if got, err = (groupBusinessMapper{}).GetMute(tenantID, topic, uid); !errors.Is(err, types.ErrNotFound) || got != nil {
|
||||
t.Fatalf("negative cache result: mute=%#v err=%v", got, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTopicAndSubscriptionCacheTTLIsShort(t *testing.T) {
|
||||
runtime := &redisGroupMessageRuntime{cfg: redisConfig{CacheTTL: 300, ShortTTL: 600}}
|
||||
for _, namespace := range []string{cacheNamespaceTopic, cacheNamespaceSub} {
|
||||
|
||||
Reference in New Issue
Block a user