@@ -6,145 +6,22 @@ package blocktree
66import (
77 "bytes"
88 "fmt"
9- "math/rand"
109 "testing"
1110 "time"
1211
1312 "github.com/ChainSafe/gossamer/dot/types"
1413 "github.com/ChainSafe/gossamer/lib/common"
15- "github.com/ChainSafe/gossamer/pkg/scale"
1614 "github.com/stretchr/testify/assert"
1715 "github.com/stretchr/testify/require"
1816)
1917
20- var zeroHash , _ = common .HexToHash ("0x00" )
21- var testHeader = & types.Header {
22- ParentHash : zeroHash ,
23- Number : 0 ,
24- Digest : types .NewDigest (),
25- }
26-
27- type testBranch struct {
28- hash Hash
29- number uint
30- arrivalTime int64
31- }
32-
3318func newBlockTreeFromNode (root * node ) * BlockTree {
3419 return & BlockTree {
3520 root : root ,
3621 leaves : newLeafMap (root ),
3722 }
3823}
3924
40- func createPrimaryBABEDigest (t testing.TB ) scale.VaryingDataTypeSlice {
41- babeDigest := types .NewBabeDigest ()
42- err := babeDigest .Set (types.BabePrimaryPreDigest {AuthorityIndex : 0 })
43- require .NoError (t , err )
44-
45- bdEnc , err := scale .Marshal (babeDigest )
46- require .NoError (t , err )
47-
48- digest := types .NewDigest ()
49- err = digest .Add (types.PreRuntimeDigest {
50- ConsensusEngineID : types .BabeEngineID ,
51- Data : bdEnc ,
52- })
53- require .NoError (t , err )
54- return digest
55- }
56-
57- func createTestBlockTree (t * testing.T , header * types.Header , number uint ) (* BlockTree , []testBranch ) {
58- bt := NewBlockTreeFromRoot (header )
59- previousHash := header .Hash ()
60-
61- // branch tree randomly
62- var branches []testBranch
63- r := rand .New (rand .NewSource (time .Now ().UnixNano ())) //skipcq: GSC-G404
64-
65- at := int64 (0 )
66-
67- // create base tree
68- for i := uint (1 ); i <= number ; i ++ {
69- header := & types.Header {
70- ParentHash : previousHash ,
71- Number : i ,
72- Digest : createPrimaryBABEDigest (t ),
73- }
74-
75- hash := header .Hash ()
76- err := bt .AddBlock (header , time .Unix (0 , at ))
77- require .NoError (t , err )
78-
79- previousHash = hash
80-
81- isBranch := r .Intn (2 )
82- if isBranch == 1 {
83- branches = append (branches , testBranch {
84- hash : hash ,
85- number : bt .getNode (hash ).number ,
86- arrivalTime : at ,
87- })
88- }
89-
90- at += int64 (r .Intn (8 ))
91- }
92-
93- // create tree branches
94- for _ , branch := range branches {
95- at := branch .arrivalTime
96- previousHash = branch .hash
97-
98- for i := branch .number ; i <= number ; i ++ {
99- header := & types.Header {
100- ParentHash : previousHash ,
101- Number : i + 1 ,
102- StateRoot : common.Hash {0x1 },
103- Digest : createPrimaryBABEDigest (t ),
104- }
105-
106- hash := header .Hash ()
107- err := bt .AddBlock (header , time .Unix (0 , at ))
108- require .NoError (t , err )
109-
110- previousHash = hash
111- at += int64 (r .Intn (8 ))
112-
113- }
114- }
115-
116- return bt , branches
117- }
118-
119- func createFlatTree (t testing.TB , number uint ) (* BlockTree , []common.Hash ) {
120- rootHeader := & types.Header {
121- ParentHash : zeroHash ,
122- Digest : createPrimaryBABEDigest (t ),
123- }
124-
125- bt := NewBlockTreeFromRoot (rootHeader )
126- require .NotNil (t , bt )
127- previousHash := bt .root .hash
128-
129- hashes := []common.Hash {bt .root .hash }
130- for i := uint (1 ); i <= number ; i ++ {
131- header := & types.Header {
132- ParentHash : previousHash ,
133- Number : i ,
134- Digest : createPrimaryBABEDigest (t ),
135- }
136-
137- hash := header .Hash ()
138- hashes = append (hashes , hash )
139-
140- err := bt .AddBlock (header , time .Unix (0 , 0 ))
141- require .NoError (t , err )
142- previousHash = hash
143- }
144-
145- return bt , hashes
146- }
147-
14825func Test_NewBlockTreeFromNode (t * testing.T ) {
14926 var bt * BlockTree
15027 var branches []testBranch
0 commit comments