aboutsummaryrefslogtreecommitdiff
path: root/src/gnunet/service/dht/routingtable_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet/service/dht/routingtable_test.go')
-rw-r--r--src/gnunet/service/dht/routingtable_test.go42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/gnunet/service/dht/routingtable_test.go b/src/gnunet/service/dht/routingtable_test.go
index 33c4b7f..16f39de 100644
--- a/src/gnunet/service/dht/routingtable_test.go
+++ b/src/gnunet/service/dht/routingtable_test.go
@@ -19,8 +19,11 @@
19package dht 19package dht
20 20
21import ( 21import (
22 "crypto/sha512"
23 "encoding/hex"
22 "gnunet/config" 24 "gnunet/config"
23 "gnunet/core" 25 "gnunet/core"
26 "gnunet/service/dht/blocks"
24 "gnunet/util" 27 "gnunet/util"
25 "math/rand" 28 "math/rand"
26 "testing" 29 "testing"
@@ -43,7 +46,7 @@ type Entry struct {
43 46
44// test data 47// test data
45var ( 48var (
46 cfg = &config.NodeConfig{ 49 nodeCfg = &config.NodeConfig{
47 PrivateSeed: "YGoe6XFH3XdvFRl+agx9gIzPTvxA229WFdkazEMdcOs=", 50 PrivateSeed: "YGoe6XFH3XdvFRl+agx9gIzPTvxA229WFdkazEMdcOs=",
48 Endpoints: []*config.EndpointConfig{ 51 Endpoints: []*config.EndpointConfig{
49 { 52 {
@@ -53,6 +56,9 @@ var (
53 }, 56 },
54 }, 57 },
55 } 58 }
59 rtCfg = &config.RoutingConfig{
60 PeerTTL: 10800,
61 }
56) 62)
57 63
58// TestRT connects and disconnects random peers to test the base 64// TestRT connects and disconnects random peers to test the base
@@ -64,18 +70,16 @@ func TestRT(t *testing.T) {
64 // helper functions 70 // helper functions
65 genRemotePeer := func() *PeerAddress { 71 genRemotePeer := func() *PeerAddress {
66 d := make([]byte, 32) 72 d := make([]byte, 32)
67 if _, err := rand.Read(d); err != nil { 73 _, _ = rand.Read(d)
68 panic(err)
69 }
70 return NewPeerAddress(util.NewPeerID(d)) 74 return NewPeerAddress(util.NewPeerID(d))
71 } 75 }
72 76
73 // create routing table and start command handler 77 // create routing table and start command handler
74 local, err := core.NewLocalPeer(cfg) 78 local, err := core.NewLocalPeer(nodeCfg)
75 if err != nil { 79 if err != nil {
76 t.Fatal(err) 80 t.Fatal(err)
77 } 81 }
78 rt := NewRoutingTable(NewPeerAddress(local.GetID())) 82 rt := NewRoutingTable(NewPeerAddress(local.GetID()), rtCfg)
79 83
80 // create a task list 84 // create a task list
81 tasks := make([]*Entry, NUMP) 85 tasks := make([]*Entry, NUMP)
@@ -91,7 +95,6 @@ func TestRT(t *testing.T) {
91 95
92 // actions: 96 // actions:
93 connected := func(task *Entry, e int64, msg string) { 97 connected := func(task *Entry, e int64, msg string) {
94 task.addr.connected = true
95 rt.Add(task.addr) 98 rt.Add(task.addr)
96 task.online = true 99 task.online = true
97 task.last = e 100 task.last = e
@@ -136,10 +139,29 @@ func TestRT(t *testing.T) {
136 139
137 // execute some routing functions on remaining table 140 // execute some routing functions on remaining table
138 k := genRemotePeer() 141 k := genRemotePeer()
139 bf := NewPeerBloomFilter() 142 pf := blocks.NewPeerFilter()
140 n := rt.SelectClosestPeer(k, bf) 143 n := rt.SelectClosestPeer(k, pf)
141 t.Logf("Closest: %s -> %s\n", k, n) 144 t.Logf("Closest: %s -> %s\n", k, n)
142 145
143 n = rt.SelectRandomPeer(bf) 146 n = rt.SelectRandomPeer(pf)
144 t.Logf("Random: %s\n", n) 147 t.Logf("Random: %s\n", n)
145} 148}
149
150func TestDistance(t *testing.T) {
151 pid1 := "4ER9C0GV4QC25GGQMXBBGXYFEB3ZVAYMXZVSRKDVEGCDTAS34E30"
152 pid2 := "V61ESQ96AFXZWDSA509HP11K5HJXXJ9ECM4NAMCQRX5YW4KN8XPG"
153
154 p1, _ := util.DecodeStringToBinary(pid1, 32)
155 p2, _ := util.DecodeStringToBinary(pid2, 32)
156
157 h1 := sha512.Sum512(p1)
158 h2 := sha512.Sum512(p2)
159 t.Logf("h1=%s\n", hex.EncodeToString(h1[:]))
160 t.Logf("h2=%s\n", hex.EncodeToString(h2[:]))
161
162 pa1 := NewPeerAddress(util.NewPeerID(p1))
163 pa2 := NewPeerAddress(util.NewPeerID(p2))
164
165 dist, idx := pa1.Distance(pa2)
166 t.Logf("dist=%v, idx=%d\n", dist, idx)
167}