From 65e3cecad94234b826f1c89522910ffecda7f7eb Mon Sep 17 00:00:00 2001 From: kpango Date: Sun, 26 Mar 2023 13:32:37 +0900 Subject: [PATCH] use gache v2 and enable it for continuous benchmarking Signed-off-by: kpango --- .github/workflows/gocache.yml | 6 +- gache/{gache_test.obsoleted => gache_test.go} | 69 ++++++++++++------- go.mod | 22 ++++-- go.sum | 64 +++++------------ 4 files changed, 82 insertions(+), 79 deletions(-) rename gache/{gache_test.obsoleted => gache_test.go} (54%) diff --git a/.github/workflows/gocache.yml b/.github/workflows/gocache.yml index 798128f..64c096b 100644 --- a/.github/workflows/gocache.yml +++ b/.github/workflows/gocache.yml @@ -13,8 +13,8 @@ jobs: name: Run gocache runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 - name: Run benchmark run: go test -bench=. ./... | tee output.txt - name: Store benchmark result @@ -30,4 +30,4 @@ jobs: comment-on-alert: true fail-on-alert: true alert-comment-cc-users: '@orca-zhang' - max-items-in-chart: 5 \ No newline at end of file + max-items-in-chart: 5 diff --git a/gache/gache_test.obsoleted b/gache/gache_test.go similarity index 54% rename from gache/gache_test.obsoleted rename to gache/gache_test.go index 662866e..33029c1 100644 --- a/gache/gache_test.obsoleted +++ b/gache/gache_test.go @@ -8,8 +8,7 @@ import ( "time" "github.com/benchplus/gocache" - "github.com/golang/protobuf/proto" - "github.com/kpango/gache" + "github.com/kpango/gache/v2" ) func TestMain(m *testing.M) { @@ -21,79 +20,101 @@ func TestMain(m *testing.M) { func setup() { debug.SetGCPercent(10) - gache.New().SetDefaultExpire(10 * time.Second) } func shutdown() { - gache.Clear() gocache.PrintGCPause() gocache.PrintMem() gocache.PrintRate() } +func BenchmarkHeavyMixedInt_gache(b *testing.B) { + gc := gache.New[int]().SetDefaultExpire(10 * time.Second) + var wg sync.WaitGroup + for index := 0; index < 10000; index++ { + wg.Add(1) + go func() { + for i := 0; i < 8192; i++ { + gc.Set(gocache.Int64Key(int64(i)), i+1) + } + wg.Done() + }() + wg.Add(1) + go func() { + for i := 0; i < 8192; i++ { + gc.Get(gocache.Int64Key(int64(i))) + } + wg.Done() + }() + } + wg.Wait() + + gocache.AddMem() +} + func BenchmarkPutInt_gache(b *testing.B) { + gc := gache.New[int]().SetDefaultExpire(10 * time.Second) // slen = 512 for i := 0; i < b.N; i++ { - gache.Set(gocache.Int64Key(int64(i)), i+1) + gc.Set(gocache.Int64Key(int64(i)), i+1) } } func BenchmarkGetInt_gache(b *testing.B) { + gc := gache.New[string]().SetDefaultExpire(10 * time.Second) // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) - gache.Set("0", "0") + gc.Set("0", "0") for i := 0; i < b.N; i++ { - gache.Get("0") + gc.Get("0") } } func BenchmarkPut1K_gache(b *testing.B) { + gc := gache.New[[]byte]().SetDefaultExpire(10 * time.Second) // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) for i := 0; i < b.N; i++ { - gache.Set(gocache.Int64Key(int64(i)), gocache.Data1K) + gc.Set(gocache.Int64Key(int64(i)), gocache.Data1K) } } func BenchmarkPut1M_gache(b *testing.B) { + gc := gache.New[[]byte]().SetDefaultExpire(10 * time.Second) // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) for i := 0; i < b.N; i++ { - gache.Set(gocache.Int64Key(int64(i)), gocache.Data1M) + gc.Set(gocache.Int64Key(int64(i)), gocache.Data1M) } } func BenchmarkPutTinyObject_gache(b *testing.B) { + gc := gache.New[gocache.UserInfo]().SetDefaultExpire(10 * time.Second) // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) for i := 0; i < b.N; i++ { - data, _ := proto.Marshal(&gocache.UserInfo{}) - gache.Set(gocache.Int64Key(int64(i)), data) + gc.Set(gocache.Int64Key(int64(i)), gocache.UserInfo{}) } } func BenchmarkChangeOutAllInt_gache(b *testing.B) { + gc := gache.New[int]().SetDefaultExpire(10 * time.Second) // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) for i := 0; i < b.N*1024; i++ { - gache.Set(gocache.Int64Key(int64(i)), i+1) + gc.Set(gocache.Int64Key(int64(i)), i+1) } } func BenchmarkHeavyReadInt_gache(b *testing.B) { + gc := gache.New[int]().SetDefaultExpire(10 * time.Second) gocache.GCPause() // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) for i := 0; i < 1024; i++ { - gache.Set(gocache.Int64Key(int64(i)), i+1) + gc.Set(gocache.Int64Key(int64(i)), i+1) } var wg sync.WaitGroup for index := 0; index < 10000; index++ { wg.Add(1) go func() { for i := 0; i < 1024; i++ { - gache.Get(gocache.Int64Key(int64(i))) + gc.Get(gocache.Int64Key(int64(i))) } wg.Done() }() @@ -104,17 +125,17 @@ func BenchmarkHeavyReadInt_gache(b *testing.B) { } func BenchmarkHeavyWriteInt_gache(b *testing.B) { + gc := gache.New[int]().SetDefaultExpire(10 * time.Second) gocache.GCPause() // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) var wg sync.WaitGroup for index := 0; index < 10000; index++ { start := index wg.Add(1) go func() { for i := 0; i < 8192; i++ { - gache.Set(gocache.Int64Key(int64(i+start)), i+1) + gc.Set(gocache.Int64Key(int64(i+start)), i+1) } wg.Done() }() @@ -125,17 +146,17 @@ func BenchmarkHeavyWriteInt_gache(b *testing.B) { } func BenchmarkHeavyWrite1K_gache(b *testing.B) { + gc := gache.New[[]byte]().SetDefaultExpire(10 * time.Second) gocache.GCPause() // slen = 512 - gache.New().SetDefaultExpire(10 * time.Second) var wg sync.WaitGroup for index := 0; index < 10000; index++ { start := index wg.Add(1) go func() { for i := 0; i < 8192; i++ { - gache.Set(gocache.Int64Key(int64(i+start)), gocache.Data1K) + gc.Set(gocache.Int64Key(int64(i+start)), gocache.Data1K) } wg.Done() }() diff --git a/go.mod b/go.mod index c5367fc..20bab4b 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,22 @@ module github.com/benchplus/gocache -go 1.14 +go 1.20 require ( - github.com/FishGoddess/cachego v0.3.1-alpha - github.com/allegro/bigcache/v3 v3.0.1 + github.com/FishGoddess/cachego v0.4.8 + github.com/allegro/bigcache/v3 v3.1.0 github.com/bluele/gcache v0.0.2 - github.com/coocood/freecache v1.2.0 - github.com/dgraph-io/ristretto v0.1.0 - github.com/golang/protobuf v1.5.2 - github.com/orca-zhang/ecache v1.0.6-0.20220110121223-22406c8ebce7 + github.com/coocood/freecache v1.2.3 + github.com/golang/protobuf v1.5.3 + github.com/kpango/gache/v2 v2.0.6 + github.com/orca-zhang/ecache v1.1.1 github.com/patrickmn/go-cache v2.1.0+incompatible ) + +require ( + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // indirect + github.com/kpango/fastime v1.1.9 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + google.golang.org/protobuf v1.26.0 // indirect +) diff --git a/go.sum b/go.sum index e897641..de34160 100644 --- a/go.sum +++ b/go.sum @@ -1,35 +1,21 @@ -github.com/FishGoddess/cachego v0.3.1-alpha h1:T7WfB60j7lHW6Hb+L32S+W80Eq2eoXloMj5QaEEPrZ8= -github.com/FishGoddess/cachego v0.3.1-alpha/go.mod h1:HNPPUzZJIiyox8NUJYc67LDZCQLSkwyUqDTA6AqBiME= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/allegro/bigcache/v3 v3.0.1 h1:Q4Xl3chywXuJNOw7NV+MeySd3zGQDj4KCpkCg0te8mc= -github.com/allegro/bigcache/v3 v3.0.1/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= +github.com/FishGoddess/cachego v0.4.8 h1:i44Cly/J0IPKLUNY+75zAqpgRmIk/JlpE+BxgAKtVBI= +github.com/FishGoddess/cachego v0.4.8/go.mod h1:o8VpbtYu4w+y8tww1YQ0jetr4gdl3KrBB4dDXT8zIFk= +github.com/allegro/bigcache/v3 v3.1.0 h1:H2Vp8VOvxcrB91o86fUSVJFqeuz8kpyyB02eH3bSzwk= +github.com/allegro/bigcache/v3 v3.1.0/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw= github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/coocood/freecache v1.2.0 h1:p8RhjN6Y4DRBIMzdRlm1y+M7h7YJxye3lGW8/VvzCz0= -github.com/coocood/freecache v1.2.0/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/coocood/freecache v1.2.3 h1:lcBwpZrwBZRZyLk/8EMyQVXRiFl663cCuMOrjCALeto= +github.com/coocood/freecache v1.2.3/go.mod h1:RBUWa/Cy+OHdfTGFEhEuE1pMCMX51Ncizj7rthiQ3vk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -39,21 +25,25 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomodule/redigo v1.8.6/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/kpango/fastime v1.1.9 h1:xVQHcqyPt5M69DyFH7g1EPRns1YQNap9d5eLhl/Jy84= +github.com/kpango/fastime v1.1.9/go.mod h1:vyD7FnUn08zxY4b/QFBZVG+9EWMYsNl+QF0uE46urD4= +github.com/kpango/gache/v2 v2.0.6 h1:Deka0klFnWixy/AkEZXVMUhzXA+hPvRjTXMGpN9P/mM= +github.com/kpango/gache/v2 v2.0.6/go.mod h1:5AWVWlHau1dwI9Hzf+NZc4rPTwxM3SVwJQgob/OyAjQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -65,27 +55,17 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/orca-zhang/ecache v1.0.6-0.20220108020102-1402266e653a h1:Jgcj/8+9xqsNg4JKZ08Jzr/8cVs5bGLFfhiNLkHeutY= -github.com/orca-zhang/ecache v1.0.6-0.20220108020102-1402266e653a/go.mod h1:+rafQ9Iye+aFqWoQHDLrfCtAH5TJYfvUUZ7dm72bFgw= -github.com/orca-zhang/ecache v1.0.6-0.20220110084336-e4596f84e9ff h1:lBw3USXKZu44+2Wsb2a0KfUNR7RHHsfaXAcJsLXj854= -github.com/orca-zhang/ecache v1.0.6-0.20220110084336-e4596f84e9ff/go.mod h1:1/6HCddx1iAbafDyRdddq5v/0rZf5sCU/fkLZ3BhciQ= -github.com/orca-zhang/ecache v1.0.6-0.20220110092236-8967e9b149d7 h1:B2onUDyPejS+YYiLhHxJsc921rEJjOvwexjTucSBJG4= -github.com/orca-zhang/ecache v1.0.6-0.20220110092236-8967e9b149d7/go.mod h1:1/6HCddx1iAbafDyRdddq5v/0rZf5sCU/fkLZ3BhciQ= -github.com/orca-zhang/ecache v1.0.6-0.20220110121223-22406c8ebce7 h1:nx6Odx9BWY6i8ZI0OEL5kfml1xtO+GHezq/53tqQ+ww= -github.com/orca-zhang/ecache v1.0.6-0.20220110121223-22406c8ebce7/go.mod h1:1/6HCddx1iAbafDyRdddq5v/0rZf5sCU/fkLZ3BhciQ= +github.com/orca-zhang/ecache v1.1.1 h1:krk4+/ihsLPg9/k2zYeRa7dNespTQsFnRcLWaJGFNds= +github.com/orca-zhang/ecache v1.1.1/go.mod h1:1/6HCddx1iAbafDyRdddq5v/0rZf5sCU/fkLZ3BhciQ= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -99,7 +79,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -112,7 +91,6 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -124,7 +102,6 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -137,9 +114,7 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -147,5 +122,4 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=