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.
92 lines
1.6 KiB
Go
92 lines
1.6 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package utils
|
|
|
|
import (
|
|
"math"
|
|
"math/rand"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// Verify that [intSize] is correctly set based on the word size. This test uses
|
|
// [math.MaxInt] to detect the word size.
|
|
func TestIntSize(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
require.Contains([]int{32, 64}, intSize)
|
|
if intSize == 32 {
|
|
require.Equal(math.MaxInt32, math.MaxInt)
|
|
} else {
|
|
require.Equal(math.MaxInt64, math.MaxInt)
|
|
}
|
|
}
|
|
|
|
func TestBytesPool(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
p := NewBytesPool()
|
|
for i := 0; i < 128; i++ {
|
|
bytes := p.Get(i)
|
|
require.NotNil(bytes)
|
|
require.Len(*bytes, i)
|
|
p.Put(bytes)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_Constant(b *testing.B) {
|
|
sizes := []int{
|
|
0,
|
|
8,
|
|
16,
|
|
32,
|
|
64,
|
|
256,
|
|
2048,
|
|
}
|
|
for _, size := range sizes {
|
|
b.Run(strconv.Itoa(size), func(b *testing.B) {
|
|
p := NewBytesPool()
|
|
for i := 0; i < b.N; i++ {
|
|
p.Put(p.Get(size))
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_Descending(b *testing.B) {
|
|
p := NewBytesPool()
|
|
for i := 0; i < b.N; i++ {
|
|
for size := 100_000; size > 0; size-- {
|
|
p.Put(p.Get(size))
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_Ascending(b *testing.B) {
|
|
p := NewBytesPool()
|
|
for i := 0; i < b.N; i++ {
|
|
for size := 0; size < 100_000; size++ {
|
|
p.Put(p.Get(size))
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_Random(b *testing.B) {
|
|
p := NewBytesPool()
|
|
sizes := make([]int, 1_000)
|
|
for i := range sizes {
|
|
sizes[i] = rand.Intn(100_000) //#nosec G404
|
|
}
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
for _, size := range sizes {
|
|
p.Put(p.Get(size))
|
|
}
|
|
}
|
|
}
|