MCPcopy Create free account
hub / github.com/ethstorage/es-node / TestSaveAndLoadSyncStatus

Function TestSaveAndLoadSyncStatus

ethstorage/p2p/protocol/sync_test.go:660–732  ·  view source on GitHub ↗

TestSaveAndLoadSyncStatus test save sync state to DB for tasks and load sync state from DB for tasks.

(t *testing.T)

Source from the content-addressed store, hash-verified

658
659// TestSaveAndLoadSyncStatus test save sync state to DB for tasks and load sync state from DB for tasks.
660func TestSaveAndLoadSyncStatus(t *testing.T) {
661 var (
662 entries = uint64(1) << 10
663 kvSize = defaultChunkSize
664 lastKvIndex = entries*3 - 20
665 db = rawdb.NewMemoryDatabase()
666 mux = new(event.Feed)
667 m = metrics.NewMetrics("sync_test")
668 expectedSecondsUsed = uint64(10)
669 chainID = new(big.Int).SetUint64(3333)
670 )
671 // create ethstorage and generate data
672 shardManager, files := createEthStorage(contract, []uint64{0, 1, 2}, defaultChunkSize, kvSize, entries, common.Address{}, defaultEncodeType)
673 if shardManager == nil {
674 t.Fatalf("createEthStorage failed")
675 }
676
677 defer func(files []string) {
678 for _, file := range files {
679 os.Remove(file)
680 }
681 }(files)
682
683 l1 := NewMockL1Source(lastKvIndex, metafileName)
684 sm := ethstorage.NewStorageManager(shardManager, l1, lg)
685 sm.Reset(0)
686 _, syncCl := createLocalHostAndSyncClient(t, chainID, db, sm, m, mux)
687 syncCl.loadSyncStatus()
688 indexes := []uint64{30, 5, 8}
689 syncCl.tasks[0].healTask.insert(indexes)
690 syncCl.tasks[0].SubTasks[0].First = 1
691 syncCl.tasks[0].SubTasks[0].next = 33
692 syncCl.tasks[0].state.PeerCount = 60
693 syncCl.tasks[0].state.FillEmptySeconds = expectedSecondsUsed
694 syncCl.tasks[0].state.BlobsSynced = 30
695 syncCl.tasks[0].state.SyncedSeconds = expectedSecondsUsed
696 syncCl.tasks[1].SubTasks = make([]*subTask, 0)
697 syncCl.tasks[1].state.BlobsSynced = entries
698 syncCl.tasks[1].state.SyncedSeconds = expectedSecondsUsed
699
700 tasks := syncCl.tasks
701 syncCl.cleanTasks()
702 if !syncCl.tasks[1].done {
703 t.Fatalf("task 1 should be done.")
704 }
705 syncCl.saveSyncStatus()
706
707 syncCl.tasks = make([]*task, 0)
708 syncCl.loadSyncStatus()
709 tasks[0].healTask.Indexes = make(map[uint64]int64)
710 tasks[0].SubTasks[0].First = 5
711 tasks[0].SubTasks[0].next = 5
712 tasks[1].done = false
713
714 if err := compareTasks(tasks, syncCl.tasks); err != nil {
715 t.Fatalf("compare kv task fail. err: %s", err.Error())
716 }
717 if syncCl.tasks[0].state.PeerCount != 0 {

Callers

nothing calls this directly

Calls 12

ResetMethod · 0.95
NewMetricsFunction · 0.92
NewStorageManagerFunction · 0.92
NewMockL1SourceFunction · 0.85
compareTasksFunction · 0.85
loadSyncStatusMethod · 0.80
insertMethod · 0.80
cleanTasksMethod · 0.80
saveSyncStatusMethod · 0.80
createEthStorageFunction · 0.70
ErrorMethod · 0.45

Tested by

no test coverage detected