aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/discover/table_test.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-05-26 20:51:41 +0800
committerobscuren <geffobscura@gmail.com>2015-05-26 20:51:41 +0800
commit2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9 (patch)
tree4fb20244d3c10cdbeb85b993ac6d2e73f73016fa /p2p/discover/table_test.go
parente6b143b00dcdb3841d41af0e9a1942f5c24d669f (diff)
parentd74ee40c86fed3a48d88de1094efc0a2f464b659 (diff)
downloaddexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar.gz
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar.bz2
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar.lz
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar.xz
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.tar.zst
dexon-2f2dd80e480d90fa3bd2f5b2f2413a0eb51f3fa9.zip
Merge branch 'develop'
Diffstat (limited to 'p2p/discover/table_test.go')
-rw-r--r--p2p/discover/table_test.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/p2p/discover/table_test.go b/p2p/discover/table_test.go
index aa5267928..da398d137 100644
--- a/p2p/discover/table_test.go
+++ b/p2p/discover/table_test.go
@@ -210,6 +210,36 @@ func TestTable_closest(t *testing.T) {
}
}
+func TestTable_ReadRandomNodesGetAll(t *testing.T) {
+ cfg := &quick.Config{
+ MaxCount: 200,
+ Rand: quickrand,
+ Values: func(args []reflect.Value, rand *rand.Rand) {
+ args[0] = reflect.ValueOf(make([]*Node, rand.Intn(1000)))
+ },
+ }
+ test := func(buf []*Node) bool {
+ tab := newTable(nil, NodeID{}, &net.UDPAddr{}, "")
+ for i := 0; i < len(buf); i++ {
+ ld := quickrand.Intn(len(tab.buckets))
+ tab.add([]*Node{nodeAtDistance(tab.self.sha, ld)})
+ }
+ gotN := tab.ReadRandomNodes(buf)
+ if gotN != tab.len() {
+ t.Errorf("wrong number of nodes, got %d, want %d", gotN, tab.len())
+ return false
+ }
+ if hasDuplicates(buf[:gotN]) {
+ t.Errorf("result contains duplicates")
+ return false
+ }
+ return true
+ }
+ if err := quick.Check(test, cfg); err != nil {
+ t.Error(err)
+ }
+}
+
type closeTest struct {
Self NodeID
Target common.Hash
@@ -517,7 +547,10 @@ func (n *preminedTestnet) mine(target NodeID) {
func hasDuplicates(slice []*Node) bool {
seen := make(map[NodeID]bool)
- for _, e := range slice {
+ for i, e := range slice {
+ if e == nil {
+ panic(fmt.Sprintf("nil *Node at %d", i))
+ }
if seen[e.ID] {
return true
}