func CreateTestDirectoryBlock(prevBlock *directoryBlock.DirectoryBlock) *directoryBlock.DirectoryBlock { dblock := new(directoryBlock.DirectoryBlock) dblock.SetHeader(CreateTestDirectoryBlockHeader(prevBlock)) dblock.SetDBEntries(make([]interfaces.IDBEntry, 0, 5)) de := new(directoryBlock.DBEntry) de.ChainID = primitives.NewZeroHash() de.KeyMR = primitives.NewZeroHash() dblock.SetDBEntries(append(dblock.GetDBEntries(), de)) //dblock.GetHeader().SetBlockCount(uint32(len(dblock.GetDBEntries()))) return dblock }
func CreateTestBlockSet(prev *BlockSet) *BlockSet { var err error height := 0 if prev != nil { height = prev.Height + 1 } if prev == nil { prev = new(BlockSet) } answer := new(BlockSet) answer.Height = height dbEntries := []interfaces.IDBEntry{} answer.ABlock = CreateTestAdminBlock(prev.ABlock) de := new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.ABlock.GetChainID()) if err != nil { panic(err) } de.KeyMR, err = answer.ABlock.GetKeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) answer.FBlock = CreateTestFactoidBlock(prev.FBlock) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.FBlock.GetChainID()) if err != nil { panic(err) } de.KeyMR = answer.FBlock.GetKeyMR() dbEntries = append(dbEntries, de) answer.EBlock, answer.Entries = CreateTestEntryBlock(prev.EBlock) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.EBlock.GetChainID()) if err != nil { panic(err) } de.KeyMR, err = answer.EBlock.KeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) anchor, entries := CreateTestAnchorEntryBlock(prev.AnchorEBlock, prev.DBlock) answer.AnchorEBlock = anchor answer.Entries = append(answer.Entries, entries...) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.AnchorEBlock.GetChainID()) if err != nil { panic(err) } de.KeyMR, err = answer.AnchorEBlock.KeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) answer.ECBlock = CreateTestEntryCreditBlock(prev.ECBlock) ecEntries := createECEntriesfromBlocks(answer.FBlock, []*entryBlock.EBlock{answer.EBlock, answer.AnchorEBlock}, height) answer.ECBlock.GetBody().SetEntries(ecEntries) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.ECBlock.GetChainID()) if err != nil { panic(err) } de.KeyMR, err = answer.ECBlock.HeaderHash() if err != nil { panic(err) } dbEntries = append(dbEntries, de) answer.DBlock = CreateTestDirectoryBlock(prev.DBlock) answer.DBlock.SetDBEntries(dbEntries) return answer }
func CreateTestBlockSetForFER(prev *BlockSet, db *databaseOverlay.Overlay, testEntries []FEREntryWithHeight) *BlockSet { var err error height := 0 if prev != nil { height = prev.Height + 1 } if prev == nil { prev = newBlockSet() } answer := new(BlockSet) answer.Height = height dbEntries := []interfaces.IDBEntry{} //ABlock answer.ABlock = CreateTestAdminBlock(prev.ABlock) de := new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.ABlock.GetChainID().Bytes()) if err != nil { panic(err) } de.KeyMR, err = answer.ABlock.GetKeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) //FBlock answer.FBlock = CreateTestFactoidBlock(prev.FBlock) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.FBlock.GetChainID().Bytes()) if err != nil { panic(err) } de.KeyMR = answer.FBlock.GetKeyMR() dbEntries = append(dbEntries, de) //EBlock answer.EBlock, answer.Entries = CreateTestEntryBlockForFER(prev.EBlock, uint32(height)) // Loop through the passed FEREntries and see which ones need to go into this EBlock for _, testEntry := range testEntries { if testEntry.Height == uint32(height) { answer.EBlock.AddEBEntry(testEntry.AnFEREntry) // db.InsertEntry(testEntry.AnFEREntry) // I don't think I need this } } de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.EBlock.GetChainID().Bytes()) if err != nil { panic(err) } de.KeyMR, err = answer.EBlock.KeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) //Anchor EBlock anchor, entries := CreateTestAnchorEntryBlock(prev.AnchorEBlock, prev.DBlock) answer.AnchorEBlock = anchor answer.Entries = append(answer.Entries, entries...) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.AnchorEBlock.GetChainID().Bytes()) if err != nil { panic(err) } de.KeyMR, err = answer.AnchorEBlock.KeyMR() if err != nil { panic(err) } dbEntries = append(dbEntries, de) //ECBlock answer.ECBlock = CreateTestEntryCreditBlock(prev.ECBlock) ecEntries := createECEntriesfromBlocks(answer.FBlock, []*entryBlock.EBlock{answer.EBlock, answer.AnchorEBlock}, height) answer.ECBlock.GetBody().SetEntries(ecEntries) de = new(directoryBlock.DBEntry) de.ChainID, err = primitives.NewShaHash(answer.ECBlock.GetChainID().Bytes()) if err != nil { panic(err) } de.KeyMR, err = answer.ECBlock.GetFullHash() if err != nil { panic(err) } dbEntries = append(dbEntries[:1], append([]interfaces.IDBEntry{de}, dbEntries[1:]...)...) answer.DBlock = CreateTestDirectoryBlock(prev.DBlock) err = answer.DBlock.SetDBEntries(dbEntries) if err != nil { panic(err) } return answer }