@ -105,7 +105,7 @@ func TestEmptySync(t *testing.T) {
func TestIterativeSyncIndividual ( t * testing . T ) { testIterativeSync ( t , 1 ) }
func TestIterativeSyncBatched ( t * testing . T ) { testIterativeSync ( t , 100 ) }
func testIterativeSync ( t * testing . T , batch int ) {
func testIterativeSync ( t * testing . T , count int ) {
// Create a random trie to copy
srcDb , srcTrie , srcData := makeTestTrie ( )
@ -114,7 +114,7 @@ func testIterativeSync(t *testing.T, batch int) {
triedb := NewDatabase ( diskdb )
sched := NewSync ( srcTrie . Hash ( ) , diskdb , nil , NewSyncBloom ( 1 , diskdb ) )
queue := append ( [ ] common . Hash { } , sched . Missing ( batch ) ... )
queue := append ( [ ] common . Hash { } , sched . Missing ( count ) ... )
for len ( queue ) > 0 {
results := make ( [ ] SyncResult , len ( queue ) )
for i , hash := range queue {
@ -127,10 +127,12 @@ func testIterativeSync(t *testing.T, batch int) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
queue = append ( queue [ : 0 ] , sched . Missing ( batch ) ... )
batch . Write ( )
queue = append ( queue [ : 0 ] , sched . Missing ( count ) ... )
}
// Cross check that the two tries are in sync
checkTrieContents ( t , triedb , srcTrie . Hash ( ) . Bytes ( ) , srcData )
@ -161,9 +163,11 @@ func TestIterativeDelayedSync(t *testing.T) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
batch . Write ( )
queue = append ( queue [ len ( results ) : ] , sched . Missing ( 10000 ) ... )
}
// Cross check that the two tries are in sync
@ -176,7 +180,7 @@ func TestIterativeDelayedSync(t *testing.T) {
func TestIterativeRandomSyncIndividual ( t * testing . T ) { testIterativeRandomSync ( t , 1 ) }
func TestIterativeRandomSyncBatched ( t * testing . T ) { testIterativeRandomSync ( t , 100 ) }
func testIterativeRandomSync ( t * testing . T , batch int ) {
func testIterativeRandomSync ( t * testing . T , count int ) {
// Create a random trie to copy
srcDb , srcTrie , srcData := makeTestTrie ( )
@ -186,7 +190,7 @@ func testIterativeRandomSync(t *testing.T, batch int) {
sched := NewSync ( srcTrie . Hash ( ) , diskdb , nil , NewSyncBloom ( 1 , diskdb ) )
queue := make ( map [ common . Hash ] struct { } )
for _ , hash := range sched . Missing ( batch ) {
for _ , hash := range sched . Missing ( count ) {
queue [ hash ] = struct { } { }
}
for len ( queue ) > 0 {
@ -203,11 +207,13 @@ func testIterativeRandomSync(t *testing.T, batch int) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
batch . Write ( )
queue = make ( map [ common . Hash ] struct { } )
for _ , hash := range sched . Missing ( batch ) {
for _ , hash := range sched . Missing ( count ) {
queue [ hash ] = struct { } { }
}
}
@ -248,9 +254,11 @@ func TestIterativeRandomDelayedSync(t *testing.T) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
batch . Write ( )
for _ , result := range results {
delete ( queue , result . Hash )
}
@ -293,9 +301,11 @@ func TestDuplicateAvoidanceSync(t *testing.T) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
batch . Write ( )
queue = append ( queue [ : 0 ] , sched . Missing ( 0 ) ... )
}
// Cross check that the two tries are in sync
@ -329,9 +339,11 @@ func TestIncompleteSync(t *testing.T) {
if _ , index , err := sched . Process ( results ) ; err != nil {
t . Fatalf ( "failed to process result #%d: %v" , index , err )
}
if index , err := sched . Commit ( diskdb ) ; err != nil {
t . Fatalf ( "failed to commit data #%d: %v" , index , err )
batch := diskdb . NewBatch ( )
if err := sched . Commit ( batch ) ; err != nil {
t . Fatalf ( "failed to commit data: %v" , err )
}
batch . Write ( )
for _ , result := range results {
added = append ( added , result . Hash )
}