github.com/arcology-network/consensus-engine@v1.9.0/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 db "github.com/tendermint/tm-db" 11 12 abci "github.com/arcology-network/consensus-engine/abci/types" 13 "github.com/arcology-network/consensus-engine/libs/log" 14 "github.com/arcology-network/consensus-engine/state/txindex" 15 "github.com/arcology-network/consensus-engine/state/txindex/kv" 16 "github.com/arcology-network/consensus-engine/types" 17 ) 18 19 func TestIndexerServiceIndexesBlocks(t *testing.T) { 20 // event bus 21 eventBus := types.NewEventBus() 22 eventBus.SetLogger(log.TestingLogger()) 23 err := eventBus.Start() 24 require.NoError(t, err) 25 t.Cleanup(func() { 26 if err := eventBus.Stop(); err != nil { 27 t.Error(err) 28 } 29 }) 30 31 // tx indexer 32 store := db.NewMemDB() 33 txIndexer := kv.NewTxIndex(store) 34 35 service := txindex.NewIndexerService(txIndexer, eventBus) 36 service.SetLogger(log.TestingLogger()) 37 err = service.Start() 38 require.NoError(t, err) 39 t.Cleanup(func() { 40 if err := service.Stop(); err != nil { 41 t.Error(err) 42 } 43 }) 44 45 // publish block with txs 46 err = eventBus.PublishEventNewBlockHeader(types.EventDataNewBlockHeader{ 47 Header: types.Header{Height: 1}, 48 NumTxs: int64(2), 49 }) 50 require.NoError(t, err) 51 txResult1 := &abci.TxResult{ 52 Height: 1, 53 Index: uint32(0), 54 Tx: types.Tx("foo"), 55 Result: abci.ResponseDeliverTx{Code: 0}, 56 } 57 err = eventBus.PublishEventTx(types.EventDataTx{TxResult: *txResult1}) 58 require.NoError(t, err) 59 txResult2 := &abci.TxResult{ 60 Height: 1, 61 Index: uint32(1), 62 Tx: types.Tx("bar"), 63 Result: abci.ResponseDeliverTx{Code: 0}, 64 } 65 err = eventBus.PublishEventTx(types.EventDataTx{TxResult: *txResult2}) 66 require.NoError(t, err) 67 68 time.Sleep(100 * time.Millisecond) 69 70 // check the result 71 res, err := txIndexer.Get(types.Tx("foo").Hash()) 72 assert.NoError(t, err) 73 assert.Equal(t, txResult1, res) 74 res, err = txIndexer.Get(types.Tx("bar").Hash()) 75 assert.NoError(t, err) 76 assert.Equal(t, txResult2, res) 77 }