@@ -13,6 +13,7 @@ import (
1313 "github.com/stretchr/testify/require"
1414 "github.com/waku-org/go-waku/tests"
1515 wps "github.com/waku-org/go-waku/waku/v2/peerstore"
16+ wakuproto "github.com/waku-org/go-waku/waku/v2/protocol"
1617 "github.com/waku-org/go-waku/waku/v2/protocol/relay"
1718 "github.com/waku-org/go-waku/waku/v2/utils"
1819)
@@ -65,7 +66,7 @@ func TestServiceSlots(t *testing.T) {
6566 ///////////////
6667
6768 // select peer from pm, currently only h2 is set in pm
68- peerID , err := pm .SelectPeer (protocol , nil )
69+ peerID , err := pm .SelectPeer (protocol , "" )
6970 require .NoError (t , err )
7071 require .Equal (t , peerID , h2 .ID ())
7172
@@ -74,7 +75,7 @@ func TestServiceSlots(t *testing.T) {
7475 require .NoError (t , err )
7576
7677 // check that returned peer is h2 or h3 peer
77- peerID , err = pm .SelectPeer (protocol , nil )
78+ peerID , err = pm .SelectPeer (protocol , "" )
7879 require .NoError (t , err )
7980 if peerID == h2 .ID () || peerID == h3 .ID () {
8081 //Test success
@@ -90,18 +91,55 @@ func TestServiceSlots(t *testing.T) {
9091 require .NoError (t , err )
9192 defer h4 .Close ()
9293
93- _ , err = pm .SelectPeer (protocol1 , nil )
94+ _ , err = pm .SelectPeer (protocol1 , "" )
9495 require .Error (t , err , utils .ErrNoPeersAvailable )
9596
9697 // add h4 peer for protocol1
9798 _ , err = pm .AddPeer (getAddr (h4 ), wps .Static , []string {"" }, libp2pProtocol .ID (protocol1 ))
9899 require .NoError (t , err )
99100
100101 //Test peer selection for protocol1
101- peerID , err = pm .SelectPeer (protocol1 , nil )
102+ peerID , err = pm .SelectPeer (protocol1 , "" )
102103 require .NoError (t , err )
103104 require .Equal (t , peerID , h4 .ID ())
104105
106+ _ , err = pm .SelectPeerByContentTopic (protocol1 , "" )
107+ require .Error (t , wakuproto .ErrInvalidFormat , err )
108+
109+ }
110+
111+ func TestPeerSelection (t * testing.T ) {
112+ ctx , pm , deferFn := initTest (t )
113+ defer deferFn ()
114+
115+ h2 , err := tests .MakeHost (ctx , 0 , rand .Reader )
116+ require .NoError (t , err )
117+ defer h2 .Close ()
118+
119+ h3 , err := tests .MakeHost (ctx , 0 , rand .Reader )
120+ require .NoError (t , err )
121+ defer h3 .Close ()
122+
123+ protocol := libp2pProtocol .ID ("test/protocol" )
124+ _ , err = pm .AddPeer (getAddr (h2 ), wps .Static , []string {"/waku/rs/2/1" , "/waku/rs/2/2" }, libp2pProtocol .ID (protocol ))
125+ require .NoError (t , err )
126+
127+ _ , err = pm .AddPeer (getAddr (h3 ), wps .Static , []string {"/waku/rs/2/1" }, libp2pProtocol .ID (protocol ))
128+ require .NoError (t , err )
129+
130+ _ , err = pm .SelectPeer (protocol , "" )
131+ require .NoError (t , err )
132+
133+ peerID , err := pm .SelectPeer (protocol , "/waku/rs/2/2" )
134+ require .NoError (t , err )
135+ require .Equal (t , h2 .ID (), peerID )
136+
137+ _ , err = pm .SelectPeer (protocol , "/waku/rs/2/3" )
138+ require .Error (t , utils .ErrNoPeersAvailable , err )
139+
140+ _ , err = pm .SelectPeer (protocol , "/waku/rs/2/1" )
141+ require .NoError (t , err )
142+
105143}
106144
107145func TestDefaultProtocol (t * testing.T ) {
@@ -111,7 +149,7 @@ func TestDefaultProtocol(t *testing.T) {
111149 // check peer for default protocol
112150 ///////////////
113151 //Test empty peer selection for relay protocol
114- _ , err := pm .SelectPeer (relay .WakuRelayID_v200 , nil )
152+ _ , err := pm .SelectPeer (relay .WakuRelayID_v200 , "" )
115153 require .Error (t , err , utils .ErrNoPeersAvailable )
116154
117155 ///////////////
@@ -126,7 +164,7 @@ func TestDefaultProtocol(t *testing.T) {
126164 require .NoError (t , err )
127165
128166 // since we are not passing peerList, selectPeer fn using filterByProto checks in PeerStore for peers with same protocol.
129- peerID , err := pm .SelectPeer (relay .WakuRelayID_v200 , nil )
167+ peerID , err := pm .SelectPeer (relay .WakuRelayID_v200 , "" )
130168 require .NoError (t , err )
131169 require .Equal (t , peerID , h5 .ID ())
132170}
@@ -146,12 +184,12 @@ func TestAdditionAndRemovalOfPeer(t *testing.T) {
146184 _ , err = pm .AddPeer (getAddr (h6 ), wps .Static , []string {"" }, protocol2 )
147185 require .NoError (t , err )
148186
149- peerID , err := pm .SelectPeer (protocol2 , nil )
187+ peerID , err := pm .SelectPeer (protocol2 , "" )
150188 require .NoError (t , err )
151189 require .Equal (t , peerID , h6 .ID ())
152190
153191 pm .RemovePeer (peerID )
154- _ , err = pm .SelectPeer (protocol2 , nil )
192+ _ , err = pm .SelectPeer (protocol2 , "" )
155193 require .Error (t , err , utils .ErrNoPeersAvailable )
156194}
157195
0 commit comments