1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-28 08:47:42 +08:00

peer+mocknet: sorting for determinism.

This commit is contained in:
Juan Batiz-Benet
2015-01-05 04:30:22 -08:00
parent ce367ee76e
commit 9d0736bc3b
2 changed files with 26 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package mocknet
import ( import (
"fmt" "fmt"
"sort"
"sync" "sync"
"time" "time"
@ -90,6 +91,7 @@ func (mn *mocknet) Peers() []peer.ID {
for _, n := range mn.nets { for _, n := range mn.nets {
cp = append(cp, n.peer) cp = append(cp, n.peer)
} }
sort.Sort(peer.IDSlice(cp))
return cp return cp
} }
@ -115,6 +117,8 @@ func (mn *mocknet) Hosts() []host.Host {
for _, h := range mn.hosts { for _, h := range mn.hosts {
cp = append(cp, h) cp = append(cp, h)
} }
sort.Sort(hostSlice(cp))
return cp return cp
} }
@ -126,6 +130,7 @@ func (mn *mocknet) Nets() []inet.Network {
for _, n := range mn.nets { for _, n := range mn.nets {
cp = append(cp, n) cp = append(cp, n)
} }
sort.Sort(netSlice(cp))
return cp return cp
} }
@ -339,3 +344,17 @@ func (mn *mocknet) LinkDefaults() LinkOptions {
defer mn.RUnlock() defer mn.RUnlock()
return mn.linkDefaults return mn.linkDefaults
} }
// netSlice for sorting by peer
type netSlice []inet.Network
func (es netSlice) Len() int { return len(es) }
func (es netSlice) Swap(i, j int) { es[i], es[j] = es[j], es[i] }
func (es netSlice) Less(i, j int) bool { return string(es[i].LocalPeer()) < string(es[j].LocalPeer()) }
// hostSlice for sorting by peer
type hostSlice []host.Host
func (es hostSlice) Len() int { return len(es) }
func (es hostSlice) Swap(i, j int) { es[i], es[j] = es[j], es[i] }
func (es hostSlice) Less(i, j int) bool { return string(es[i].ID()) < string(es[j].ID()) }

View File

@ -130,3 +130,10 @@ type PeerInfo struct {
ID ID ID ID
Addrs []ma.Multiaddr Addrs []ma.Multiaddr
} }
// IDSlice for sorting peers
type IDSlice []ID
func (es IDSlice) Len() int { return len(es) }
func (es IDSlice) Swap(i, j int) { es[i], es[j] = es[j], es[i] }
func (es IDSlice) Less(i, j int) bool { return string(es[i]) < string(es[j]) }