ceremonyclient/node/execution/intrinsics/token/token_execution_engine_test.go
Cassandra Heart b0a87b2fe4
wrapping up
2024-11-13 06:03:14 -06:00

56 lines
2.2 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, 9999)
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: 9999})
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{}
// Seniority works from highest to lowest, so we should have one removal in the bottom most, three in the middle, and one in the highest
leaves = append(leaves, joins[30])
leaves = append(leaves, joins[1907])
leaves = append(leaves, joins[1955])
leaves = append(leaves, joins[2047])
leaves = append(leaves, joins[4095])
token.ProcessJoinsAndLeaves([]token.PeerSeniorityItem{}, leaves, app, seniority, &protobufs.ClockFrame{FrameNumber: 10000})
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))), 1899)
}