2026-06-10 10:13:55 +01:00
|
|
|
package kernel
|
2025-02-12 13:21:47 +02:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
2026-06-10 10:13:55 +01:00
|
|
|
"github.com/logos-messaging/logos-delivery-go-bindings/pkg/kernel/common"
|
2025-02-12 13:21:47 +02:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestBasicWakuNodes(t *testing.T) {
|
2026-08-25 00:46:13 +01:00
|
|
|
requiresNode(t)
|
|
|
|
|
logDebug("Starting TestBasicWakuNodes")
|
2025-02-12 13:21:47 +02:00
|
|
|
|
|
|
|
|
nodeCfg := DefaultWakuConfig
|
|
|
|
|
nodeCfg.Relay = true
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Starting the WakuNode")
|
|
|
|
|
node, err := StartWakuNode(&nodeCfg)
|
2025-02-12 13:21:47 +02:00
|
|
|
require.NoError(t, err, "Failed to create the WakuNode")
|
|
|
|
|
|
|
|
|
|
// Use defer to ensure proper cleanup
|
|
|
|
|
defer func() {
|
2026-08-24 17:41:58 +01:00
|
|
|
_ = node.Close()
|
2025-02-12 13:21:47 +02:00
|
|
|
}()
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Successfully created the WakuNode")
|
2025-02-12 13:21:47 +02:00
|
|
|
time.Sleep(2 * time.Second)
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("TestBasicWakuNodes completed successfully")
|
2025-02-12 13:21:47 +02:00
|
|
|
}
|
|
|
|
|
|
2026-06-09 23:04:57 +01:00
|
|
|
/* artifact https://github.com/logos-messaging/logos-delivery-go-bindings/issues/40 */
|
2025-02-12 13:21:47 +02:00
|
|
|
func TestNodeRestart(t *testing.T) {
|
2026-08-25 00:46:13 +01:00
|
|
|
requiresNode(t)
|
2025-03-18 11:13:42 +02:00
|
|
|
t.Skip("Skipping test for open artifact ")
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Starting TestNodeRestart")
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Creating Node")
|
2025-02-12 13:21:47 +02:00
|
|
|
nodeConfig := DefaultWakuConfig
|
2026-08-25 00:46:13 +01:00
|
|
|
node, err := StartWakuNode(&nodeConfig)
|
2025-02-12 14:03:36 +02:00
|
|
|
require.NoError(t, err, "Failed to start Waku node")
|
2026-08-24 17:41:58 +01:00
|
|
|
defer func() { _ = node.Close() }()
|
2025-02-12 14:03:36 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Node started successfully")
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Fetching ENR before stopping the node")
|
|
|
|
|
enrBefore, err := node.Debug().ENR()
|
2025-02-12 14:03:36 +02:00
|
|
|
require.NoError(t, err, "Failed to get ENR before stopping")
|
|
|
|
|
require.NotEmpty(t, enrBefore, "ENR should not be empty before stopping")
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("ENR before stopping: %s", enrBefore)
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Stopping the Node")
|
2025-02-12 13:21:47 +02:00
|
|
|
err = node.Stop()
|
2025-02-12 14:03:36 +02:00
|
|
|
require.NoError(t, err, "Failed to stop Waku node")
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Node stopped successfully")
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Restarting the Node")
|
2025-02-12 13:21:47 +02:00
|
|
|
err = node.Start()
|
2025-02-12 14:03:36 +02:00
|
|
|
require.NoError(t, err, "Failed to restart Waku node")
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Node restarted successfully")
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Fetching ENR after restarting the node")
|
|
|
|
|
enrAfter, err := node.Debug().ENR()
|
2025-02-12 14:03:36 +02:00
|
|
|
require.NoError(t, err, "Failed to get ENR after restarting")
|
|
|
|
|
require.NotEmpty(t, enrAfter, "ENR should not be empty after restart")
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("ENR after restarting: %s", enrAfter)
|
2025-02-12 13:21:47 +02:00
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("Comparing ENRs before and after restart")
|
2025-02-12 13:21:47 +02:00
|
|
|
require.Equal(t, enrBefore, enrAfter, "ENR should remain the same after node restart")
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
logDebug("TestNodeRestart completed successfully")
|
2025-02-12 13:21:47 +02:00
|
|
|
}
|
2025-07-24 16:18:58 +02:00
|
|
|
func TestDoubleStart(t *testing.T) {
|
2026-08-25 00:46:13 +01:00
|
|
|
requiresNode(t)
|
2025-07-24 16:18:58 +02:00
|
|
|
|
|
|
|
|
config := common.WakuConfig{
|
|
|
|
|
Relay: true,
|
|
|
|
|
Store: true,
|
|
|
|
|
LogLevel: "DEBUG",
|
|
|
|
|
Discv5Discovery: true,
|
|
|
|
|
ClusterID: 16,
|
|
|
|
|
Shards: []uint16{64},
|
2026-08-25 14:31:42 +01:00
|
|
|
Discv5UdpPort: freeUDPPort(t),
|
|
|
|
|
TcpPort: freeTCPPort(t),
|
2025-07-24 16:18:58 +02:00
|
|
|
}
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
node, err := NewFromWakuConfig(&config)
|
2025-07-24 16:18:58 +02:00
|
|
|
require.NoError(t, err)
|
2026-08-24 17:41:58 +01:00
|
|
|
defer func() { _ = node.Close() }()
|
2025-07-24 16:18:58 +02:00
|
|
|
|
|
|
|
|
// start node
|
|
|
|
|
require.NoError(t, node.Start())
|
|
|
|
|
// now attempt to start again
|
|
|
|
|
require.NoError(t, node.Start())
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestDoubleStop(t *testing.T) {
|
2026-08-25 00:46:13 +01:00
|
|
|
requiresNode(t)
|
2025-07-24 16:18:58 +02:00
|
|
|
|
|
|
|
|
config := common.WakuConfig{
|
|
|
|
|
Relay: true,
|
|
|
|
|
Store: true,
|
|
|
|
|
LogLevel: "DEBUG",
|
|
|
|
|
Discv5Discovery: true,
|
|
|
|
|
ClusterID: 16,
|
|
|
|
|
Shards: []uint16{64},
|
2026-08-25 14:31:42 +01:00
|
|
|
Discv5UdpPort: freeUDPPort(t),
|
|
|
|
|
TcpPort: freeTCPPort(t),
|
2025-07-24 16:18:58 +02:00
|
|
|
}
|
|
|
|
|
|
2026-08-25 00:46:13 +01:00
|
|
|
node, err := NewFromWakuConfig(&config)
|
2025-07-24 16:18:58 +02:00
|
|
|
require.NoError(t, err)
|
2026-08-24 17:41:58 +01:00
|
|
|
defer func() { _ = node.Close() }()
|
2025-07-24 16:18:58 +02:00
|
|
|
|
|
|
|
|
// 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())
|
|
|
|
|
|
|
|
|
|
}
|