diff --git a/eth/backend.go b/eth/backend.go index 28b95b677..e035d78e6 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -25,6 +25,7 @@ import ( "os" "path" "reflect" + "sort" "strconv" "sync" "time" @@ -71,7 +72,6 @@ import ( "github.com/ledgerwatch/log/v3" "google.golang.org/grpc" "google.golang.org/grpc/credentials" - "modernc.org/sortutil" ) // Config contains the configuration options of the ETH protocol. @@ -650,7 +650,7 @@ func (s *Ethereum) NodesInfo(limit int) (*remote.NodesInfoReply, error) { } nodesInfo := &remote.NodesInfoReply{NodesInfo: nodes} - nodesInfo.NodesInfo = nodesInfo.NodesInfo[:sortutil.Dedupe(nodesInfo)] + sort.Sort(nodesInfo) return nodesInfo, nil } diff --git a/eth/backend_test.go b/eth/backend_test.go deleted file mode 100644 index 1506d0432..000000000 --- a/eth/backend_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package eth - -import ( - "context" - "testing" - - "github.com/ledgerwatch/erigon-lib/direct" - "github.com/ledgerwatch/erigon-lib/gointerfaces/sentry" - "github.com/ledgerwatch/erigon-lib/gointerfaces/types" - "github.com/stretchr/testify/assert" - "google.golang.org/grpc" - "google.golang.org/protobuf/types/known/emptypb" -) - -func TestNodesInfo_Deduplication(t *testing.T) { - tests := []struct { - name string - limit int - nodes []*types.NodeInfoReply - want []*types.NodeInfoReply - }{ - { - name: "one node", - nodes: []*types.NodeInfoReply{{Name: "name", Enode: "enode"}}, - want: []*types.NodeInfoReply{{Name: "name", Enode: "enode"}}, - }, - { - name: "two different nodes", - nodes: []*types.NodeInfoReply{ - {Name: "name1", Enode: "enode1"}, - {Name: "name", Enode: "enode"}, - }, - want: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name1", Enode: "enode1"}, - }, - }, - { - name: "two same nodes", - nodes: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name", Enode: "enode"}, - }, - want: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - }, - }, - { - name: "three nodes", - nodes: []*types.NodeInfoReply{ - {Name: "name2", Enode: "enode2"}, - {Name: "name", Enode: "enode"}, - {Name: "name1", Enode: "enode1"}, - }, - want: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name1", Enode: "enode1"}, - {Name: "name2", Enode: "enode2"}, - }, - }, - { - name: "three nodes with repeats", - nodes: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name1", Enode: "enode1"}, - {Name: "name", Enode: "enode"}, - }, - want: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name1", Enode: "enode1"}, - }, - }, - { - name: "three same nodes", - nodes: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - {Name: "name", Enode: "enode"}, - {Name: "name", Enode: "enode"}, - }, - want: []*types.NodeInfoReply{ - {Name: "name", Enode: "enode"}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - eth := Ethereum{} - - for _, n := range tt.nodes { - n := n - eth.sentries = append(eth.sentries, - direct.NewSentryClientRemote(&sentry.SentryClientMock{ - NodeInfoFunc: func(context.Context, *emptypb.Empty, ...grpc.CallOption) (*types.NodeInfoReply, error) { - return n, nil - }, - }), - ) - } - - got, err := eth.NodesInfo(tt.limit) - if err != nil { - t.Error(err) - } - - assert.Equal(t, tt.want, got.NodesInfo) - }) - } -} diff --git a/go.mod b/go.mod index 5faccbd7a..ad9b663f3 100644 --- a/go.mod +++ b/go.mod @@ -63,6 +63,5 @@ require ( google.golang.org/protobuf v1.27.1 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6 - modernc.org/sortutil v1.1.0 // indirect pgregory.net/rapid v0.4.7 ) diff --git a/go.sum b/go.sum index 84c4dc75c..79872288a 100644 --- a/go.sum +++ b/go.sum @@ -832,7 +832,6 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/quasilyte/go-ruleguard/dsl v0.3.6 h1:W2wnISJifyda0x/RXq15Qjrsu9iOhX2gy4+Ku+owylw= github.com/quasilyte/go-ruleguard/dsl v0.3.6/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -1507,9 +1506,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/sortutil v1.1.0 h1:oP3U4uM+NT/qBQcbg/K2iqAX0Nx7B1b6YZtq3Gk/PjM= -modernc.org/sortutil v1.1.0/go.mod h1:ZyL98OQHJgH9IEfN71VsamvJgrtRX9Dj2gX+vH86L1k= pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=