mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-04 06:53:11 +00:00
feat: integrating waku_is_online function (#76)
This commit is contained in:
parent
d0fcd537de
commit
7240a5e3ef
@ -311,6 +311,10 @@ package waku
|
|||||||
resp);
|
resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cGoWakuIsOnline(void* wakuCtx, void* resp) {
|
||||||
|
waku_is_online(wakuCtx, (WakuCallBack) GoCallback, resp);
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
@ -1590,3 +1594,37 @@ func (n *WakuNode) DisconnectPeer(target *WakuNode) error {
|
|||||||
Debug("Successfully disconnected %s from %s", n.nodeName, target.nodeName)
|
Debug("Successfully disconnected %s from %s", n.nodeName, target.nodeName)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *WakuNode) IsOnline() (bool, error) {
|
||||||
|
if n == nil {
|
||||||
|
err := errors.New("waku node is nil")
|
||||||
|
Error("Failed to get online state %v", err)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug("Querying online state for %v", n.nodeName)
|
||||||
|
|
||||||
|
wg := sync.WaitGroup{}
|
||||||
|
var resp = C.allocResp(unsafe.Pointer(&wg))
|
||||||
|
defer C.freeResp(resp)
|
||||||
|
|
||||||
|
wg.Add(1)
|
||||||
|
C.cGoWakuIsOnline(n.wakuCtx, resp)
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
if C.getRet(resp) == C.RET_OK {
|
||||||
|
onlineStr := C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||||
|
|
||||||
|
if onlineStr == "true" {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
errMsg := "error IsOnline: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||||
|
Error("Failed to query online state for %v: %v", n.nodeName, errMsg)
|
||||||
|
|
||||||
|
return false, errors.New(errMsg)
|
||||||
|
}
|
||||||
|
|||||||
@ -964,3 +964,70 @@ func TestParallelPings(t *testing.T) {
|
|||||||
// Stop nodes
|
// Stop nodes
|
||||||
require.NoError(t, dialerNode.Stop())
|
require.NoError(t, dialerNode.Stop())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestOnline(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())
|
||||||
|
|
||||||
|
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())
|
||||||
|
multiaddr2, err := node2.ListenAddresses()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, multiaddr2)
|
||||||
|
require.True(t, len(multiaddr2) > 0)
|
||||||
|
|
||||||
|
// node1 dials node2 so they become peers
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
|
||||||
|
defer cancel()
|
||||||
|
err = node1.Connect(ctx, multiaddr2[0])
|
||||||
|
require.NoError(t, err)
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
// Check that both nodes now have one connected peer
|
||||||
|
peerCount1, err := node1.GetNumConnectedPeers()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, peerCount1 == 1, "node1 should have 1 peer")
|
||||||
|
peerCount2, err := node2.GetNumConnectedPeers()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, peerCount2 == 1, "node2 should have 1 peer")
|
||||||
|
|
||||||
|
isOnline, err := node1.IsOnline()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, isOnline, "node1 should be online")
|
||||||
|
|
||||||
|
// Stop nodes
|
||||||
|
require.NoError(t, node1.Stop())
|
||||||
|
require.NoError(t, node2.Stop())
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user