mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-08-26 02:11:11 +00:00
Move the Messaging API back out of pkg/kernel: ffi.Handle becomes a defined type in the internal package, so kernel can hand the context to pkg/messaging through kernel.Handle without the kernel layer knowing the tier exists, and without the type being nameable outside this module. Split Discovery into DiscV5, PeerExchange and DNSDiscovery, group the node's identity and health under Debug(), and give every facade a pointer receiver. Drop the node name, the per-operation logging that duplicates what the library already writes, and GetFreePortIfNeeded — port 0 already means "let the OS pick". Heavy kernel tests now mark themselves with requiresNode and skip under -short, so the gate runs `go test -short ./...` instead of naming tests in a regexp.
126 lines
3.2 KiB
Go
126 lines
3.2 KiB
Go
package kernel
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/logos-messaging/logos-delivery-go-bindings/pkg/kernel/common"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBasicWakuNodes(t *testing.T) {
|
|
requiresNode(t)
|
|
logDebug("Starting TestBasicWakuNodes")
|
|
|
|
nodeCfg := DefaultWakuConfig
|
|
nodeCfg.Relay = true
|
|
|
|
logDebug("Starting the WakuNode")
|
|
node, err := StartWakuNode(&nodeCfg)
|
|
require.NoError(t, err, "Failed to create the WakuNode")
|
|
|
|
// Use defer to ensure proper cleanup
|
|
defer func() {
|
|
_ = node.Close()
|
|
}()
|
|
|
|
logDebug("Successfully created the WakuNode")
|
|
time.Sleep(2 * time.Second)
|
|
|
|
logDebug("TestBasicWakuNodes completed successfully")
|
|
}
|
|
|
|
/* artifact https://github.com/logos-messaging/logos-delivery-go-bindings/issues/40 */
|
|
func TestNodeRestart(t *testing.T) {
|
|
requiresNode(t)
|
|
t.Skip("Skipping test for open artifact ")
|
|
logDebug("Starting TestNodeRestart")
|
|
|
|
logDebug("Creating Node")
|
|
nodeConfig := DefaultWakuConfig
|
|
node, err := StartWakuNode(&nodeConfig)
|
|
require.NoError(t, err, "Failed to start Waku node")
|
|
defer func() { _ = node.Close() }()
|
|
|
|
logDebug("Node started successfully")
|
|
|
|
logDebug("Fetching ENR before stopping the node")
|
|
enrBefore, err := node.Debug().ENR()
|
|
require.NoError(t, err, "Failed to get ENR before stopping")
|
|
require.NotEmpty(t, enrBefore, "ENR should not be empty before stopping")
|
|
logDebug("ENR before stopping: %s", enrBefore)
|
|
|
|
logDebug("Stopping the Node")
|
|
err = node.Stop()
|
|
require.NoError(t, err, "Failed to stop Waku node")
|
|
logDebug("Node stopped successfully")
|
|
|
|
logDebug("Restarting the Node")
|
|
err = node.Start()
|
|
require.NoError(t, err, "Failed to restart Waku node")
|
|
logDebug("Node restarted successfully")
|
|
|
|
logDebug("Fetching ENR after restarting the node")
|
|
enrAfter, err := node.Debug().ENR()
|
|
require.NoError(t, err, "Failed to get ENR after restarting")
|
|
require.NotEmpty(t, enrAfter, "ENR should not be empty after restart")
|
|
logDebug("ENR after restarting: %s", enrAfter)
|
|
|
|
logDebug("Comparing ENRs before and after restart")
|
|
require.Equal(t, enrBefore, enrAfter, "ENR should remain the same after node restart")
|
|
|
|
logDebug("TestNodeRestart completed successfully")
|
|
}
|
|
func TestDoubleStart(t *testing.T) {
|
|
requiresNode(t)
|
|
|
|
config := common.WakuConfig{
|
|
Relay: true,
|
|
Store: true,
|
|
LogLevel: "DEBUG",
|
|
Discv5Discovery: true,
|
|
ClusterID: 16,
|
|
Shards: []uint16{64},
|
|
Discv5UdpPort: 0,
|
|
TcpPort: 0,
|
|
}
|
|
|
|
node, err := NewFromWakuConfig(&config)
|
|
require.NoError(t, err)
|
|
defer func() { _ = node.Close() }()
|
|
|
|
// start node
|
|
require.NoError(t, node.Start())
|
|
// now attempt to start again
|
|
require.NoError(t, node.Start())
|
|
|
|
}
|
|
|
|
func TestDoubleStop(t *testing.T) {
|
|
requiresNode(t)
|
|
|
|
config := common.WakuConfig{
|
|
Relay: true,
|
|
Store: true,
|
|
LogLevel: "DEBUG",
|
|
Discv5Discovery: true,
|
|
ClusterID: 16,
|
|
Shards: []uint16{64},
|
|
Discv5UdpPort: 0,
|
|
TcpPort: 0,
|
|
}
|
|
|
|
node, err := NewFromWakuConfig(&config)
|
|
require.NoError(t, err)
|
|
defer func() { _ = node.Close() }()
|
|
|
|
// start node
|
|
require.NoError(t, node.Start())
|
|
|
|
// stop node
|
|
require.NoError(t, node.Stop())
|
|
// now attempt to stop it again
|
|
require.NoError(t, node.Stop())
|
|
|
|
}
|