logos-messaging-go-bindings/pkg/kernel/nodes_basic_test.go
Igor Sirotin 4fd33b6121
refactor: adopt golang-standards/project-layout (#111)
* refactor: adopt golang-standards/project-layout

Move the legacy kernel wrapper `waku/*` to `pkg/kernel/*` and rename its
package `waku` -> `kernel`; nothing outside the package imported it, so this is
a mechanical import-path/prefix change. Update the relocated Makefile's
relative dep path, the legacy CI workflows (CI/endurance/repeated) build paths,
README, and .gitignore accordingly (preserving the libwaku-cache CI from #109).

Add scaffolding for the upcoming Messaging API work: `internal/ffi` (cgo
bridge), `pkg/messaging` (high-level Node API), and `examples/`. Document
`pkg/kernel` as legacy until logos-delivery#3851 consolidates the C libraries.

Also stop tracking the accidentally-committed `waku-bindings` build artifact
and gitignore the kernel build output.

No behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: cleanup

* fix: repair references to removed utils package

nwaku_test_utils.go now uses pkg/kernel/utils.GetRSSKB; the memory_record
tool is self-contained (local helpers, missing mutex restored).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 10:13:55 +01:00

128 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) {
Debug("Starting TestBasicWakuNodes")
nodeCfg := DefaultWakuConfig
nodeCfg.Relay = true
Debug("Starting the WakuNode")
node, err := StartWakuNode("node", &nodeCfg)
require.NoError(t, err, "Failed to create the WakuNode")
// Use defer to ensure proper cleanup
defer func() {
node.StopAndDestroy()
}()
Debug("Successfully created the WakuNode")
time.Sleep(2 * time.Second)
Debug("TestBasicWakuNodes completed successfully")
}
/* artifact https://github.com/logos-messaging/logos-delivery-go-bindings/issues/40 */
func TestNodeRestart(t *testing.T) {
t.Skip("Skipping test for open artifact ")
Debug("Starting TestNodeRestart")
Debug("Creating Node")
nodeConfig := DefaultWakuConfig
node, err := StartWakuNode("TestNode", &nodeConfig)
require.NoError(t, err, "Failed to start Waku node")
defer node.StopAndDestroy()
Debug("Node started successfully")
Debug("Fetching ENR before stopping the node")
enrBefore, err := node.ENR()
require.NoError(t, err, "Failed to get ENR before stopping")
require.NotEmpty(t, enrBefore, "ENR should not be empty before stopping")
Debug("ENR before stopping: %s", enrBefore)
Debug("Stopping the Node")
err = node.Stop()
require.NoError(t, err, "Failed to stop Waku node")
Debug("Node stopped successfully")
Debug("Restarting the Node")
err = node.Start()
require.NoError(t, err, "Failed to restart Waku node")
Debug("Node restarted successfully")
Debug("Fetching ENR after restarting the node")
enrAfter, err := node.ENR()
require.NoError(t, err, "Failed to get ENR after restarting")
require.NotEmpty(t, enrAfter, "ENR should not be empty after restart")
Debug("ENR after restarting: %s", enrAfter)
Debug("Comparing ENRs before and after restart")
require.Equal(t, enrBefore, enrAfter, "ENR should remain the same after node restart")
Debug("TestNodeRestart completed successfully")
}
func TestDoubleStart(t *testing.T) {
tcpPort, udpPort, err := GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
config := common.WakuConfig{
Relay: true,
Store: true,
LogLevel: "DEBUG",
Discv5Discovery: true,
ClusterID: 16,
Shards: []uint16{64},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node, err := NewWakuNode(&config, "node")
require.NoError(t, err)
defer node.StopAndDestroy()
// start node
require.NoError(t, node.Start())
// now attempt to start again
require.NoError(t, node.Start())
}
func TestDoubleStop(t *testing.T) {
tcpPort, udpPort, err := GetFreePortIfNeeded(0, 0)
require.NoError(t, err)
config := common.WakuConfig{
Relay: true,
Store: true,
LogLevel: "DEBUG",
Discv5Discovery: true,
ClusterID: 16,
Shards: []uint16{64},
Discv5UdpPort: udpPort,
TcpPort: tcpPort,
}
node, err := NewWakuNode(&config, "node")
require.NoError(t, err)
defer node.StopAndDestroy()
// 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())
}