Merge branch 'master' into Modify-Daily-job

This commit is contained in:
aya 2025-06-16 14:11:06 +03:00
commit 09345e003c
3 changed files with 141 additions and 0 deletions

View File

@ -33,4 +33,8 @@ type WakuConfig struct {
PeerExchangeNode string `json:"peerExchangeNode,omitempty"`
TcpPort int `json:"tcpPort,omitempty"`
RateLimits RateLimitsConfig `json:"rateLimits,omitempty"`
DnsDiscoveryNameServers []string `json:"dnsDiscoveryNameServers,omitempty"`
DnsAddrsNameServers []string `json:"dnsAddrsNameServers,omitempty"`
Discv5EnrAutoUpdate bool `json:"discv5EnrAutoUpdate,omitempty"`
MaxConnections int `json:"maxConnections,omitempty"`
}

View File

@ -207,6 +207,12 @@ package waku
resp);
}
static void cGoWakuDisconnectAllPeers(void* wakuCtx, void* resp) {
waku_disconnect_all_peers(wakuCtx,
(WakuCallBack) GoCallback,
resp);
}
static void cGoWakuListenAddresses(void* wakuCtx, void* resp) {
waku_listen_addresses(wakuCtx, (WakuCallBack) GoCallback, resp);
}
@ -636,6 +642,23 @@ func (n *WakuNode) DisconnectPeerByID(peerID peer.ID) error {
return errors.New(errMsg)
}
func (n *WakuNode) DisconnectAllPeers() error {
wg := sync.WaitGroup{}
var resp = C.allocResp(unsafe.Pointer(&wg))
defer C.freeResp(resp)
wg.Add(1)
C.cGoWakuDisconnectAllPeers(n.wakuCtx, resp)
wg.Wait()
if C.getRet(resp) == C.RET_OK {
return nil
}
errMsg := "error DisconnectAllPeers: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
return errors.New(errMsg)
}
func (n *WakuNode) GetConnectedPeers() (peer.IDSlice, error) {
if n == nil {
err := errors.New("waku node is nil")

View File

@ -1031,3 +1031,117 @@ func TestOnline(t *testing.T) {
require.NoError(t, node1.Stop())
require.NoError(t, node2.Stop())
}
func TestDisconnectAllPeers(t *testing.T) {
clusterId := uint16(16)
shardId := uint16(64)
tcpPort, udpPort, err := GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
// start node1
wakuConfig1 := common.WakuConfig{
Relay: true,
LogLevel: "DEBUG",
Discv5Discovery: false,
ClusterID: clusterId,
Shards: []uint16{shardId},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node1, err := NewWakuNode(&wakuConfig1, "node1")
require.NoError(t, err)
require.NoError(t, node1.Start())
defer node1.Stop()
tcpPort, udpPort, err = GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
// start node2
wakuConfig2 := common.WakuConfig{
Relay: true,
LogLevel: "DEBUG",
Discv5Discovery: false,
ClusterID: clusterId,
Shards: []uint16{shardId},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node2, err := NewWakuNode(&wakuConfig2, "node2")
require.NoError(t, err)
require.NoError(t, node2.Start())
defer node2.Stop()
multiaddr2, err := node2.ListenAddresses()
require.NoError(t, err)
require.NotNil(t, multiaddr2)
require.True(t, len(multiaddr2) > 0)
tcpPort, udpPort, err = GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
// start node3
wakuConfig3 := common.WakuConfig{
Relay: true,
LogLevel: "DEBUG",
Discv5Discovery: false,
ClusterID: clusterId,
Shards: []uint16{shardId},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node3, err := NewWakuNode(&wakuConfig3, "node3")
require.NoError(t, err)
require.NoError(t, node3.Start())
defer node3.Stop()
multiaddr3, err := node3.ListenAddresses()
require.NoError(t, err)
require.NotNil(t, multiaddr3)
require.True(t, len(multiaddr3) > 0)
tcpPort, udpPort, err = GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
// start node4
wakuConfig4 := common.WakuConfig{
Relay: true,
LogLevel: "DEBUG",
Discv5Discovery: false,
ClusterID: clusterId,
Shards: []uint16{shardId},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node4, err := NewWakuNode(&wakuConfig4, "node4")
require.NoError(t, err)
require.NoError(t, node4.Start())
defer node4.Stop()
multiaddr4, err := node4.ListenAddresses()
require.NoError(t, err)
require.NotNil(t, multiaddr4)
require.True(t, len(multiaddr4) > 0)
to_dial := []ma.Multiaddr{multiaddr2[0], multiaddr3[0], multiaddr4[0]}
for _, addr := range to_dial {
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
defer cancel()
err = node1.Connect(ctx, addr)
require.NoError(t, err)
}
time.Sleep(1 * time.Second)
peerCount1, err := node1.GetNumConnectedPeers()
require.NoError(t, err)
require.True(t, peerCount1 == 3, "node1 should have 3 peers")
err = node1.DisconnectAllPeers()
require.NoError(t, err)
time.Sleep(1 * time.Second)
peerCount1, err = node1.GetNumConnectedPeers()
require.NoError(t, err)
require.True(t, peerCount1 == 0, "node1 should have 0 peers")
}