mirror of
https://github.com/hanzoai/traces.git
synced 2026-10-30 18:20:41 +00:00
* Switch memcached dependency to fork at grafana/gomemcache Signed-off-by: Zach Leslie <[email protected]> * Update vendor Signed-off-by: Zach Leslie <[email protected]> * Update client interface implementations Signed-off-by: Zach Leslie <[email protected]> * Update serverless vendor Signed-off-by: Zach Leslie <[email protected]> --------- Signed-off-by: Zach Leslie <[email protected]>
67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package cache_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/facette/natsort"
|
|
"github.com/grafana/gomemcache/memcache"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/grafana/tempo/pkg/cache"
|
|
)
|
|
|
|
func TestNatSort(t *testing.T) {
|
|
// Validate that the order of SRV records returned by a DNS
|
|
// lookup for a k8s StatefulSet are ordered as expected when
|
|
// a natsort is done.
|
|
input := []string{
|
|
"memcached-10.memcached.cortex.svc.cluster.local.",
|
|
"memcached-1.memcached.cortex.svc.cluster.local.",
|
|
"memcached-6.memcached.cortex.svc.cluster.local.",
|
|
"memcached-3.memcached.cortex.svc.cluster.local.",
|
|
"memcached-25.memcached.cortex.svc.cluster.local.",
|
|
}
|
|
|
|
expected := []string{
|
|
"memcached-1.memcached.cortex.svc.cluster.local.",
|
|
"memcached-3.memcached.cortex.svc.cluster.local.",
|
|
"memcached-6.memcached.cortex.svc.cluster.local.",
|
|
"memcached-10.memcached.cortex.svc.cluster.local.",
|
|
"memcached-25.memcached.cortex.svc.cluster.local.",
|
|
}
|
|
|
|
natsort.Sort(input)
|
|
require.Equal(t, expected, input)
|
|
}
|
|
|
|
func TestMemcachedJumpHashSelector_PickSever(t *testing.T) {
|
|
s := cache.MemcachedJumpHashSelector{}
|
|
err := s.SetServers("google.com:80", "microsoft.com:80", "duckduckgo.com:80")
|
|
require.NoError(t, err)
|
|
|
|
// We store the string representation instead of the net.Addr
|
|
// to make sure different IPs were discovered during SetServers
|
|
distribution := make(map[string]int)
|
|
|
|
for i := 0; i < 100; i++ {
|
|
key := fmt.Sprintf("key-%d", i)
|
|
addr, err := s.PickServer(key)
|
|
require.NoError(t, err)
|
|
distribution[addr.String()]++
|
|
}
|
|
|
|
// All of the servers should have been returned at least
|
|
// once
|
|
require.Len(t, distribution, 3)
|
|
for _, v := range distribution {
|
|
require.NotZero(t, v)
|
|
}
|
|
}
|
|
|
|
func TestMemcachedJumpHashSelector_PickSever_ErrNoServers(t *testing.T) {
|
|
s := cache.MemcachedJumpHashSelector{}
|
|
_, err := s.PickServer("foo")
|
|
require.Error(t, memcache.ErrNoServers, err)
|
|
}
|