mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-06-11 19:29:57 +00:00
* chore: rename module path to logos-delivery-go-bindings
The module path still read `logos-messaging-go-bindings`, mismatching the
repository name. Rename it to `github.com/logos-messaging/logos-delivery-go-bindings`
and update all in-repo imports. gofmt re-sorts a few import blocks as a result
(plus two files that were already unformatted on master).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: add PR-gate workflow and golangci-lint config
The repo had no `on: pull_request` CI (only workflow_dispatch + nightly
schedule), so nothing validated PRs. Add `.github/workflows/pr.yml` that
builds libwaku and runs `go build`, `go vet`, golangci-lint, and a test-compile
pass on every PR. Add a baseline `.golangci.yml` (standard linters + gofmt).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: scope golangci-lint to new code via new-from-merge-base
Run the full `standard` linter set but only report findings introduced since
the merge-base with master, so the legacy kernel wrapper's pre-existing issues
(unchecked defer-Close, dead helpers) don't drown the gate while new code still
gets full coverage. Fetch origin/master so the base ref is available in CI.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: clone logos-delivery outside vendor/ and build in module mode
`go build` failed in CI because cloning logos-delivery into `vendor/` put Go
into vendor mode against an inconsistent `vendor/modules.txt`. Clone the
checkout into `.logos-delivery` instead and set `GOFLAGS=-mod=mod` so the gate
always builds in module mode.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: use golangci-lint-action@v7 for golangci-lint v2
v6 of the action rejects golangci-lint v2 versions ("v2 is not supported by
golangci-lint-action v6"). Bump to v7.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: cache libwaku, gate go mod tidy, rename LMN_DIR
- Rename LMN_DIR -> LOGOS_DELIVERY_DIR across the PR-gate and nightly
workflows, the waku Makefile, and the build docs.
- Cache the built logos-delivery kernel keyed on its upstream HEAD SHA,
skipping the clone + libwaku build while that commit is unchanged.
- Add a "go mod tidy is clean" step that fails if go.mod/go.sum drift.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
128 lines
3.2 KiB
Go
128 lines
3.2 KiB
Go
package waku
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/logos-messaging/logos-delivery-go-bindings/waku/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())
|
|
|
|
}
|