/
tortoise_test.go
44 lines (39 loc) · 1.06 KB
/
tortoise_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package consensus
import (
"github.com/spacemeshos/go-spacemesh/crypto"
"github.com/spacemeshos/go-spacemesh/log"
"github.com/spacemeshos/go-spacemesh/mesh"
"testing"
"time"
)
func TestAlgorithm_Sanity(t *testing.T) {
layerSize := 50
cachedLayers := 100
alg := NewTortoise(uint32(layerSize), uint32(cachedLayers))
l := GenesisLayer()
alg.HandleIncomingLayer(l)
alg.RegisterLayerCallback(func(id mesh.LayerID) {})
for i := 0; i < 11-1; i++ {
lyr := createFullPointingLayer(l, layerSize)
start := time.Now()
alg.HandleIncomingLayer(lyr)
log.Info("Time to process layer: %v ", time.Since(start))
l = lyr
}
}
func createFullPointingLayer(prev *mesh.Layer, blocksInLayer int) *mesh.Layer {
ts := time.Now()
coin := false
// just some random Data
data := []byte(crypto.UUIDString())
l := mesh.NewLayer(prev.Index() + 1)
for i := 0; i < blocksInLayer; i++ {
bl := mesh.NewBlock(coin, data, ts, 1)
for _, prevBloc := range prev.Blocks() {
bl.AddVote(mesh.BlockID(prevBloc.Id))
}
l.AddBlock(bl)
}
log.Info("Created layer Id %v", l.Index())
return l
}