mirror of
https://github.com/eosswedenorg/thalos
synced 2026-06-16 04:24:56 +02:00
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package redis
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/eosswedenorg/thalos/api"
|
|
|
|
"github.com/alicebob/miniredis/v2"
|
|
"github.com/go-redis/redis/v8"
|
|
"github.com/go-redis/redismock/v8"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSubscriber_Construct(t *testing.T) {
|
|
client, _ := redismock.NewClientMock()
|
|
ns := Namespace{Prefix: "prefix", ChainID: "8f2f6ec19400d372c9b3340b1438e9c805cf9e69be962fa81d055bc037ceed8d"}
|
|
|
|
s := NewSubscriber(client, ns)
|
|
|
|
assert.Equal(t, s.ctx, client.Context())
|
|
assert.NotNil(t, s.sub)
|
|
assert.Equal(t, s.ns, ns)
|
|
assert.Equal(t, s.timeout, 200*time.Millisecond)
|
|
|
|
s = NewSubscriber(client, ns, WithTimeout(4*time.Second))
|
|
assert.Equal(t, s.timeout, 4*time.Second)
|
|
}
|
|
|
|
func TestSubscriber_Read(t *testing.T) {
|
|
expectedMessages := []string{"payload", "payload2", "payload3"}
|
|
|
|
server := miniredis.RunT(t)
|
|
|
|
client := redis.NewClient(&redis.Options{
|
|
Addr: server.Addr(),
|
|
})
|
|
|
|
s := NewSubscriber(client, Namespace{Prefix: "prefix", ChainID: "d41dbd2921d5a377325661427090c6c508904d60920d6b7ea771c58da5299754"})
|
|
|
|
go func() {
|
|
time.Sleep(time.Millisecond * 10)
|
|
|
|
for _, msg := range expectedMessages {
|
|
server.Publish("prefix::d41dbd2921d5a377325661427090c6c508904d60920d6b7ea771c58da5299754::test", msg)
|
|
}
|
|
}()
|
|
|
|
// Redis pubsub does not guarentee that messages are sent in the correct order.
|
|
for range expectedMessages {
|
|
msg, err := s.Read(api.Channel{"test"})
|
|
assert.NoError(t, err)
|
|
|
|
assert.Contains(t, expectedMessages, string(msg))
|
|
}
|
|
}
|