github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/common/ledger/blkstorage/blockstore_test.go (about) 1 /* 2 Copyright hechain. 2022 All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package blkstorage 8 9 import ( 10 "fmt" 11 "testing" 12 13 "github.com/hechain20/hechain/common/ledger/testutil" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestWrongBlockNumber(t *testing.T) { 18 env := newTestEnv(t, NewConf(testPath(), 0)) 19 defer env.Cleanup() 20 21 provider := env.provider 22 store, _ := provider.Open("testLedger") 23 defer store.Shutdown() 24 25 blocks := testutil.ConstructTestBlocks(t, 5) 26 for i := 0; i < 3; i++ { 27 err := store.AddBlock(blocks[i]) 28 require.NoError(t, err) 29 } 30 err := store.AddBlock(blocks[4]) 31 require.Error(t, err, "Error shold have been thrown when adding block number 4 while block number 3 is expected") 32 } 33 34 func TestTxIDIndexErrorPropagations(t *testing.T) { 35 env := newTestEnv(t, NewConf(testPath(), 0)) 36 defer env.Cleanup() 37 38 provider := env.provider 39 store, _ := provider.Open("testLedger") 40 defer store.Shutdown() 41 blocks := testutil.ConstructTestBlocks(t, 3) 42 for i := 0; i < 3; i++ { 43 err := store.AddBlock(blocks[i]) 44 require.NoError(t, err) 45 } 46 47 index := store.fileMgr.db 48 49 txIDBasedFunctions := []func() error{ 50 func() error { 51 _, err := store.RetrieveTxByID("junkTxID") 52 return err 53 }, 54 func() error { 55 _, err := store.RetrieveBlockByTxID("junkTxID") 56 return err 57 }, 58 func() error { 59 _, _, err := store.RetrieveTxValidationCodeByTxID("junkTxID") 60 return err 61 }, 62 } 63 64 index.Put( 65 constructTxIDKey("junkTxID", 5, 4), 66 []byte("junkValue"), 67 false, 68 ) 69 expectedErrMsg := fmt.Sprintf("unexpected error while unmarshalling bytes [%#v] into TxIDIndexValProto:", []byte("junkValue")) 70 for _, f := range txIDBasedFunctions { 71 err := f() 72 require.Error(t, err) 73 require.Contains(t, err.Error(), expectedErrMsg) 74 } 75 76 env.provider.leveldbProvider.Close() 77 expectedErrMsg = "error while trying to retrieve transaction info by TXID [junkTxID]:" 78 for _, f := range txIDBasedFunctions { 79 err := f() 80 require.Error(t, err) 81 require.Contains(t, err.Error(), expectedErrMsg) 82 } 83 }