mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
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.
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package debug
|
|
|
|
import (
|
|
"github.com/luxfi/constants"
|
|
"github.com/luxfi/ids"
|
|
validators "github.com/luxfi/validators"
|
|
"testing"
|
|
)
|
|
|
|
func TestValidatorManager(t *testing.T) {
|
|
// Test our validator manager implementation
|
|
mgr := validators.NewManager()
|
|
|
|
nodeID := ids.GenerateTestNodeID()
|
|
chainID := constants.PrimaryNetworkID
|
|
txID := ids.GenerateTestID()
|
|
weight := uint64(1000000)
|
|
|
|
// Test AddStaker
|
|
err := mgr.AddStaker(chainID, nodeID, nil, txID, weight)
|
|
if err != nil {
|
|
t.Fatalf("AddStaker failed: %v", err)
|
|
}
|
|
|
|
// Test GetValidator
|
|
vdr, exists := mgr.GetValidator(chainID, nodeID)
|
|
if !exists {
|
|
t.Fatal("Validator should exist after AddStaker")
|
|
}
|
|
if vdr.Weight != weight {
|
|
t.Fatalf("Expected weight %d, got %d", weight, vdr.Weight)
|
|
}
|
|
|
|
// Test GetWeight
|
|
w := mgr.GetWeight(chainID, nodeID)
|
|
if w != weight {
|
|
t.Fatalf("Expected weight %d, got %d", weight, w)
|
|
}
|
|
|
|
// Test TotalWeight
|
|
total, err := mgr.TotalWeight(chainID)
|
|
if err != nil {
|
|
t.Fatalf("TotalWeight failed: %v", err)
|
|
}
|
|
if total != weight {
|
|
t.Fatalf("Expected total weight %d, got %d", weight, total)
|
|
}
|
|
|
|
// Test RemoveWeight
|
|
err = mgr.RemoveWeight(chainID, nodeID, weight)
|
|
if err != nil {
|
|
t.Fatalf("RemoveWeight failed: %v", err)
|
|
}
|
|
|
|
// Verify validator is removed
|
|
_, exists = mgr.GetValidator(chainID, nodeID)
|
|
if exists {
|
|
t.Fatal("Validator should not exist after RemoveWeight")
|
|
}
|
|
|
|
t.Log("All validator manager tests passed!")
|
|
}
|
|
|
|
func TestConsensusParameters(t *testing.T) {
|
|
// Verify consensus parameters for 1/1 validator setup
|
|
sampleSize := 1
|
|
quorumSize := 1
|
|
commitThreshold := 1
|
|
|
|
if sampleSize != 1 || quorumSize != 1 || commitThreshold != 1 {
|
|
t.Fatal("Consensus parameters should be set to 1 for single validator")
|
|
}
|
|
|
|
t.Log("Consensus parameters verified: K=1, Alpha=1, Beta=1")
|
|
}
|