go_study/fabric-main/common/ledger/blkstorage/blockstore_test.go

84 lines
2.0 KiB
Go

/*
Copyright IBM Corp. 2016 All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package blkstorage
import (
"fmt"
"testing"
"github.com/hyperledger/fabric/common/ledger/testutil"
"github.com/stretchr/testify/require"
)
func TestWrongBlockNumber(t *testing.T) {
env := newTestEnv(t, NewConf(t.TempDir(), 0))
defer env.Cleanup()
provider := env.provider
store, _ := provider.Open("testLedger")
defer store.Shutdown()
blocks := testutil.ConstructTestBlocks(t, 5)
for i := 0; i < 3; i++ {
err := store.AddBlock(blocks[i])
require.NoError(t, err)
}
err := store.AddBlock(blocks[4])
require.Error(t, err, "Error shold have been thrown when adding block number 4 while block number 3 is expected")
}
func TestTxIDIndexErrorPropagations(t *testing.T) {
env := newTestEnv(t, NewConf(t.TempDir(), 0))
defer env.Cleanup()
provider := env.provider
store, _ := provider.Open("testLedger")
defer store.Shutdown()
blocks := testutil.ConstructTestBlocks(t, 3)
for i := 0; i < 3; i++ {
err := store.AddBlock(blocks[i])
require.NoError(t, err)
}
index := store.fileMgr.db
txIDBasedFunctions := []func() error{
func() error {
_, err := store.RetrieveTxByID("junkTxID")
return err
},
func() error {
_, err := store.RetrieveBlockByTxID("junkTxID")
return err
},
func() error {
_, _, err := store.RetrieveTxValidationCodeByTxID("junkTxID")
return err
},
}
index.Put(
constructTxIDKey("junkTxID", 5, 4),
[]byte("junkValue"),
false,
)
expectedErrMsg := fmt.Sprintf("unexpected error while unmarshalling bytes [%#v] into TxIDIndexValProto:", []byte("junkValue"))
for _, f := range txIDBasedFunctions {
err := f()
require.Error(t, err)
require.Contains(t, err.Error(), expectedErrMsg)
}
env.provider.leveldbProvider.Close()
expectedErrMsg = "error while trying to retrieve transaction info by TXID [junkTxID]:"
for _, f := range txIDBasedFunctions {
err := f()
require.Error(t, err)
require.Contains(t, err.Error(), expectedErrMsg)
}
}