8 "github.com/davecgh/go-spew/spew"
10 dbm "github.com/vapor/database/leveldb"
11 "github.com/vapor/protocol/bc/types"
14 func TestReadWriteBlocks(t *testing.T) {
15 tmp, err := ioutil.TempDir(".", "")
19 defer os.RemoveAll(tmp)
21 testDB := dbm.NewDB("testdb", "leveldb", tmp)
24 s := newStorage(testDB)
33 storageRAMLimit: 800 * 1024 * 1024,
34 blocks: mockBlocks(nil, 500),
40 blocks: mockBlocks(nil, 500),
46 for index, c := range cases {
47 maxByteOfStorageRAM = c.storageRAMLimit
48 s.writeBlocks(c.peerID, c.blocks)
50 for i := 0; i < len(c.blocks); i++ {
51 blockStorage, err := s.readBlock(uint64(i))
56 if blockStorage.isRAM != c.isRAM {
57 t.Fatalf("case %d: TestReadWriteBlocks block %d isRAM: got %t want %t", index, i, blockStorage.isRAM, c.isRAM)
60 if blockStorage.block.Hash() != c.blocks[i].Hash() {
61 t.Fatalf("case %d: TestReadWriteBlocks block %d: got %s want %s", index, i, spew.Sdump(blockStorage.block), spew.Sdump(c.blocks[i]))
67 func TestDeleteBlock(t *testing.T) {
68 tmp, err := ioutil.TempDir(".", "")
72 defer os.RemoveAll(tmp)
74 testDB := dbm.NewDB("testdb", "leveldb", tmp)
77 maxByteOfStorageRAM = 1024
78 blocks := mockBlocks(nil, 500)
79 s := newStorage(testDB)
80 for i, block := range blocks {
81 if err := s.writeBlocks("testPeer", []*types.Block{block}); err != nil {
85 blockStorage, err := s.readBlock(block.Height)
90 if !blockStorage.isRAM {
91 t.Fatalf("TestReadWriteBlocks block %d isRAM: got %t want %t", i, blockStorage.isRAM, true)
94 s.deleteBlock(block.Height)
99 func TestLevelDBStorageReadWrite(t *testing.T) {
100 tmp, err := ioutil.TempDir(".", "")
104 defer os.RemoveAll(tmp)
106 testDB := dbm.NewDB("testdb", "leveldb", tmp)
109 blocks := mockBlocks(nil, 16)
110 s := newDBStore(testDB)
112 for i, block := range blocks {
113 err := s.writeBlock(block)
118 gotBlock, err := s.readBlock(block.Height)
123 if gotBlock.Hash() != block.Hash() {
124 t.Fatalf("TestLevelDBStorageReadWrite block %d: got %s want %s", i, spew.Sdump(gotBlock), spew.Sdump(block))
128 _, err = s.readBlock(block.Height)
130 t.Fatalf("TestLevelDBStorageReadWrite clear data err block %d", i)