Files
zeekay 7cf87b230b node-unified is the node
The module already called itself github.com/luxfi/node while containing no node
in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and
the Go column of the matrix measured a VM plugin. A repo that fetches the thing
it claims to be has not replaced it, so the Go sources move in — 1515 files,
the daemon and everything under it — and the build reaches outside this module
for nothing.

Rust and C++ sit beside it unchanged and are still measured against it by the
differential. That is the point of one repo: the reference implementation and
the two ports are the same checkout, so parity is a thing you can run rather
than a thing you assert.

Verified: builds, and the closure carries no lux-private — checked at build time
rather than believed. The daemon starts twelve chains on a local network
(P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
2026-09-07 16:15:25 -07:00

133 lines
3.6 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package indexer
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/luxfi/formatting"
"github.com/luxfi/ids"
"github.com/luxfi/node/utils/json"
"github.com/luxfi/rpc"
"github.com/luxfi/util"
)
type mockClient struct {
require *require.Assertions
expectedMethod string
onSendRequestF func(reply interface{}) error
}
func (mc *mockClient) SendRequest(_ context.Context, method string, _ interface{}, reply interface{}, _ ...rpc.Option) error {
mc.require.Equal(mc.expectedMethod, method)
return mc.onSendRequestF(reply)
}
func TestIndexClient(t *testing.T) {
require := require.New(t)
client := Client{}
{
// Test GetIndex
client.Requester = &mockClient{
require: require,
expectedMethod: "index.getIndex",
onSendRequestF: func(reply interface{}) error {
*(reply.(*GetIndexResponse)) = GetIndexResponse{Index: 5}
return nil
},
}
index, err := client.GetIndex(context.Background(), ids.Empty)
require.NoError(err)
require.Equal(uint64(5), index)
}
{
// Test GetLastAccepted
id := ids.GenerateTestID()
bytes := utils.RandomBytes(10)
bytesStr, err := formatting.Encode(formatting.Hex, bytes)
require.NoError(err)
client.Requester = &mockClient{
require: require,
expectedMethod: "index.getLastAccepted",
onSendRequestF: func(reply interface{}) error {
*(reply.(*FormattedContainer)) = FormattedContainer{
ID: id,
Bytes: bytesStr,
Index: json.Uint64(10),
}
return nil
},
}
container, index, err := client.GetLastAccepted(context.Background())
require.NoError(err)
require.Equal(id, container.ID)
require.Equal(bytes, container.Bytes)
require.Equal(uint64(10), index)
}
{
// Test GetContainerRange
id := ids.GenerateTestID()
bytes := utils.RandomBytes(10)
bytesStr, err := formatting.Encode(formatting.Hex, bytes)
require.NoError(err)
client.Requester = &mockClient{
require: require,
expectedMethod: "index.getContainerRange",
onSendRequestF: func(reply interface{}) error {
*(reply.(*GetContainerRangeResponse)) = GetContainerRangeResponse{Containers: []FormattedContainer{{
ID: id,
Bytes: bytesStr,
}}}
return nil
},
}
containers, err := client.GetContainerRange(context.Background(), 1, 10)
require.NoError(err)
require.Len(containers, 1)
require.Equal(id, containers[0].ID)
require.Equal(bytes, containers[0].Bytes)
}
{
// Test IsAccepted
client.Requester = &mockClient{
require: require,
expectedMethod: "index.isAccepted",
onSendRequestF: func(reply interface{}) error {
*(reply.(*IsAcceptedResponse)) = IsAcceptedResponse{IsAccepted: true}
return nil
},
}
isAccepted, err := client.IsAccepted(context.Background(), ids.Empty)
require.NoError(err)
require.True(isAccepted)
}
{
// Test GetContainerByID
id := ids.GenerateTestID()
bytes := utils.RandomBytes(10)
bytesStr, err := formatting.Encode(formatting.Hex, bytes)
require.NoError(err)
client.Requester = &mockClient{
require: require,
expectedMethod: "index.getContainerByID",
onSendRequestF: func(reply interface{}) error {
*(reply.(*FormattedContainer)) = FormattedContainer{
ID: id,
Bytes: bytesStr,
Index: json.Uint64(10),
}
return nil
},
}
container, index, err := client.GetContainerByID(context.Background(), id)
require.NoError(err)
require.Equal(id, container.ID)
require.Equal(bytes, container.Bytes)
require.Equal(uint64(10), index)
}
}