ceremonyclient/node/execution/intrinsics/token/token_execution_engine_test.go
Cassandra Heart cf89b1c4ee
v2.0.3-p0
2024-11-10 01:15:15 -06:00

53 lines
2.0 KiB
Go

package token_test
import (
"crypto/rand"
"testing"
"github.com/stretchr/testify/assert"
"source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/token"
"source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/token/application"
"source.quilibrium.com/quilibrium/monorepo/node/protobufs"
"source.quilibrium.com/quilibrium/monorepo/node/tries"
)
func TestProcessJoinsAndLeaves(t *testing.T) {
set := [][]byte{}
for i := 0; i < 6000; i++ {
b := make([]byte, 32)
rand.Read(b)
set = append(set, b)
}
joins := []token.PeerSeniorityItem{}
seniority := &token.PeerSeniority{}
for i, s := range set {
joins = append(joins, token.NewPeerSeniorityItem(uint64(i), string(s)))
(*seniority)[string(s)] = token.NewPeerSeniorityItem(uint64(i), string(s))
}
tr := []*tries.RollingFrecencyCritbitTrie{
&tries.RollingFrecencyCritbitTrie{},
&tries.RollingFrecencyCritbitTrie{},
}
app := &application.TokenApplication{
Tries: tr,
}
token.ProcessJoinsAndLeaves(joins, []token.PeerSeniorityItem{}, app, seniority, &protobufs.ClockFrame{FrameNumber: 20})
assert.Equal(t, len(app.Tries), 4)
assert.Equal(t, len(app.Tries[1].FindNearestAndApproximateNeighbors(make([]byte, 32))), 2048)
assert.Equal(t, len(app.Tries[2].FindNearestAndApproximateNeighbors(make([]byte, 32))), 2048)
assert.Equal(t, len(app.Tries[3].FindNearestAndApproximateNeighbors(make([]byte, 32))), 1904)
leaves := []token.PeerSeniorityItem{}
leaves = append(leaves, joins[30])
leaves = append(leaves, joins[2047])
leaves = append(leaves, joins[4095])
token.ProcessJoinsAndLeaves([]token.PeerSeniorityItem{}, leaves, app, seniority, &protobufs.ClockFrame{FrameNumber: 20})
assert.Equal(t, len(app.Tries), 4)
assert.Equal(t, len(app.Tries[1].FindNearestAndApproximateNeighbors(make([]byte, 32))), 2048)
assert.Equal(t, len(app.Tries[2].FindNearestAndApproximateNeighbors(make([]byte, 32))), 2048)
assert.Equal(t, len(app.Tries[3].FindNearestAndApproximateNeighbors(make([]byte, 32))), 1901)
}