github.com/xmidt-org/webpa-common@v1.11.9/service/accessor_benchmarks_test.go (about) 1 package service 2 3 import ( 4 "encoding/base64" 5 "fmt" 6 "io" 7 "math/rand" 8 "testing" 9 ) 10 11 const addressSeed int64 = 2387240836734099856 12 13 func generateAddresses(random io.Reader, count, length int) []string { 14 var ( 15 buffer = make([]byte, length) 16 addresses []string 17 ) 18 19 for i := 0; i < count; i++ { 20 random.Read(buffer) 21 addresses = append( 22 addresses, 23 base64.RawURLEncoding.EncodeToString(buffer), 24 ) 25 } 26 27 return addresses 28 } 29 30 func BenchmarkAccessor(b *testing.B) { 31 b.Log("-vnodeCounts set to", vnodeCounts) 32 b.Log("-addressCounts set to", addressCounts) 33 34 var ( 35 random = rand.New(rand.NewSource(addressSeed)) 36 addresses = generateAddresses(random, addressCounts[len(addressCounts)-1], 32) 37 ) 38 39 b.Run("Create", func(b *testing.B) { 40 for _, vnodeCount := range vnodeCounts { 41 for _, addressCount := range addressCounts { 42 var ( 43 name = fmt.Sprintf("(vnodeCount=%d,addressCount=%d)", vnodeCount, addressCount) 44 testAddresses = addresses[:addressCount] 45 ) 46 47 b.Run(name, func(b *testing.B) { 48 b.ResetTimer() 49 for i := 0; i < b.N; i++ { 50 NewConsistentAccessorFactory(vnodeCount)(testAddresses) 51 } 52 }) 53 } 54 } 55 }) 56 57 b.Run("Get", func(b *testing.B) { 58 for _, vnodeCount := range vnodeCounts { 59 for _, addressCount := range addressCounts { 60 var ( 61 name = fmt.Sprintf("(vnodeCount=%d,addressCount=%d)", vnodeCount, addressCount) 62 accessor = NewConsistentAccessorFactory(vnodeCount)(addresses[:addressCount]) 63 key = make([]byte, 32) 64 ) 65 66 random.Read(key) 67 b.Run(name, func(b *testing.B) { 68 b.ResetTimer() 69 for i := 0; i < b.N; i++ { 70 accessor.Get(key) 71 } 72 }) 73 } 74 } 75 }) 76 }