signoz/pkg/cache/rediscache/provider_test.go

57 lines
1.4 KiB
Go

package rediscache
import (
"context"
"encoding/json"
"strings"
"testing"
"time"
"github.com/SigNoz/signoz/pkg/factory"
"github.com/SigNoz/signoz/pkg/instrumentation/instrumentationtest"
"github.com/SigNoz/signoz/pkg/types/cachetypes"
"github.com/SigNoz/signoz/pkg/valuer"
"github.com/go-redis/redismock/v8"
"github.com/stretchr/testify/assert"
)
type CacheableA struct {
Key string
Value int
Expiry time.Duration
}
func (cacheable *CacheableA) Clone() cachetypes.Cacheable {
return &CacheableA{
Key: cacheable.Key,
Value: cacheable.Value,
Expiry: cacheable.Expiry,
}
}
func (cacheable *CacheableA) MarshalBinary() ([]byte, error) {
return json.Marshal(cacheable)
}
func (cacheable *CacheableA) UnmarshalBinary(data []byte) error {
return json.Unmarshal(data, cacheable)
}
func TestSet(t *testing.T) {
db, mock := redismock.NewClientMock()
providerSettings := instrumentationtest.New().ToProviderSettings()
cache := &provider{client: db, settings: factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/cache/rediscache")}
cacheable := &CacheableA{
Key: "some-random-key",
Value: 1,
Expiry: time.Microsecond,
}
orgID := valuer.GenerateUUID()
mock.ExpectSet(strings.Join([]string{orgID.StringValue(), "key"}, "::"), cacheable, 10*time.Second).SetVal("ok")
assert.NoError(t, cache.Set(context.Background(), orgID, "key", cacheable, 10*time.Second))
assert.NoError(t, mock.ExpectationsWereMet())
}