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