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  }