github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/tendermint/state/txindex/indexer_service_test.go (about) 1 package txindex_test 2 3 import ( 4 "testing" 5 "time" 6 7 blockindexer "github.com/fibonacci-chain/fbc/libs/tendermint/state/indexer/block/kv" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 12 db "github.com/fibonacci-chain/fbc/libs/tm-db" 13 14 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 15 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/log" 16 "github.com/fibonacci-chain/fbc/libs/tendermint/state/txindex" 17 "github.com/fibonacci-chain/fbc/libs/tendermint/state/txindex/kv" 18 "github.com/fibonacci-chain/fbc/libs/tendermint/types" 19 ) 20 21 func TestIndexerServiceIndexesBlocks(t *testing.T) { 22 // event bus 23 eventBus := types.NewEventBus() 24 eventBus.SetLogger(log.TestingLogger()) 25 err := eventBus.Start() 26 require.NoError(t, err) 27 defer eventBus.Stop() 28 29 // tx indexer 30 store := db.NewMemDB() 31 txIndexer := kv.NewTxIndex(store, kv.IndexAllEvents()) 32 bStore := db.NewMemDB() 33 blockIndexer := blockindexer.New(bStore) 34 35 service := txindex.NewIndexerService(txIndexer, blockIndexer, eventBus) 36 service.SetLogger(log.TestingLogger()) 37 err = service.Start() 38 require.NoError(t, err) 39 defer service.Stop() 40 41 // publish block with txs 42 eventBus.PublishEventNewBlockHeader(types.EventDataNewBlockHeader{ 43 Header: types.Header{Height: 1}, 44 NumTxs: int64(2), 45 }) 46 txResult1 := &types.TxResult{ 47 Height: 1, 48 Index: uint32(0), 49 Tx: types.Tx("foo"), 50 Result: abci.ResponseDeliverTx{Code: 0}, 51 } 52 eventBus.PublishEventTx(types.EventDataTx{TxResult: *txResult1}) 53 txResult2 := &types.TxResult{ 54 Height: 1, 55 Index: uint32(1), 56 Tx: types.Tx("bar"), 57 Result: abci.ResponseDeliverTx{Code: 0}, 58 } 59 eventBus.PublishEventTx(types.EventDataTx{TxResult: *txResult2}) 60 61 time.Sleep(100 * time.Millisecond) 62 63 // check the result 64 res, err := txIndexer.Get(types.Tx("foo").Hash(txResult1.Height)) 65 assert.NoError(t, err) 66 assert.Equal(t, txResult1, res) 67 res, err = txIndexer.Get(types.Tx("bar").Hash(txResult2.Height)) 68 assert.NoError(t, err) 69 assert.Equal(t, txResult2, res) 70 }