123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package hashtag
- import (
- "math/rand"
- "testing"
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
- )
- func TestGinkgoSuite(t *testing.T) {
- RegisterFailHandler(Fail)
- RunSpecs(t, "hashtag")
- }
- var _ = Describe("CRC16", func() {
- // http://redis.io/topics/cluster-spec#keys-distribution-model
- It("should calculate CRC16", func() {
- tests := []struct {
- s string
- n uint16
- }{
- {"123456789", 0x31C3},
- {string([]byte{83, 153, 134, 118, 229, 214, 244, 75, 140, 37, 215, 215}), 21847},
- }
- for _, test := range tests {
- Expect(crc16sum(test.s)).To(Equal(test.n), "for %s", test.s)
- }
- })
- })
- var _ = Describe("HashSlot", func() {
- It("should calculate hash slots", func() {
- tests := []struct {
- key string
- slot int
- }{
- {"123456789", 12739},
- {"{}foo", 9500},
- {"foo{}", 5542},
- {"foo{}{bar}", 8363},
- {"", 10503},
- {"", 5176},
- {string([]byte{83, 153, 134, 118, 229, 214, 244, 75, 140, 37, 215, 215}), 5463},
- }
- // Empty keys receive random slot.
- rand.Seed(100)
- for _, test := range tests {
- Expect(Slot(test.key)).To(Equal(test.slot), "for %s", test.key)
- }
- })
- It("should extract keys from tags", func() {
- tests := []struct {
- one, two string
- }{
- {"foo{bar}", "bar"},
- {"{foo}bar", "foo"},
- {"{user1000}.following", "{user1000}.followers"},
- {"foo{{bar}}zap", "{bar"},
- {"foo{bar}{zap}", "bar"},
- }
- for _, test := range tests {
- Expect(Slot(test.one)).To(Equal(Slot(test.two)), "for %s <-> %s", test.one, test.two)
- }
- })
- })
|