github.com/line/ostracon@v1.0.10-0.20230328032236-7f20145f065d/abci/client/local_client_test.go (about) 1 package abcicli 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/tendermint/tendermint/abci/types" 8 9 ocabci "github.com/line/ostracon/abci/types" 10 "github.com/stretchr/testify/require" 11 ) 12 13 type sampleApp struct { 14 ocabci.BaseApplication 15 } 16 17 func newDoneChan(t *testing.T) chan struct{} { 18 result := make(chan struct{}) 19 go func() { 20 select { 21 case <-time.After(time.Second): 22 require.Fail(t, "callback is not called for a second") 23 case <-result: 24 return 25 } 26 }() 27 return result 28 } 29 30 func getResponseCallback(t *testing.T) ResponseCallback { 31 doneChan := newDoneChan(t) 32 return func(res *ocabci.Response) { 33 require.NotNil(t, res) 34 doneChan <- struct{}{} 35 } 36 } 37 38 func TestLocalClientCalls(t *testing.T) { 39 app := sampleApp{} 40 c := NewLocalClient(nil, app) 41 42 c.SetGlobalCallback(func(*ocabci.Request, *ocabci.Response) { 43 }) 44 45 c.EchoAsync("msg", getResponseCallback(t)) 46 c.FlushAsync(getResponseCallback(t)) 47 c.InfoAsync(types.RequestInfo{}, getResponseCallback(t)) 48 c.SetOptionAsync(types.RequestSetOption{}, getResponseCallback(t)) 49 c.DeliverTxAsync(types.RequestDeliverTx{}, getResponseCallback(t)) 50 c.CheckTxAsync(types.RequestCheckTx{}, getResponseCallback(t)) 51 c.QueryAsync(types.RequestQuery{}, getResponseCallback(t)) 52 c.CommitAsync(getResponseCallback(t)) 53 c.InitChainAsync(types.RequestInitChain{}, getResponseCallback(t)) 54 c.BeginBlockAsync(ocabci.RequestBeginBlock{}, getResponseCallback(t)) 55 c.EndBlockAsync(types.RequestEndBlock{}, getResponseCallback(t)) 56 c.BeginRecheckTxAsync(ocabci.RequestBeginRecheckTx{}, getResponseCallback(t)) 57 c.EndRecheckTxAsync(ocabci.RequestEndRecheckTx{}, getResponseCallback(t)) 58 c.ListSnapshotsAsync(types.RequestListSnapshots{}, getResponseCallback(t)) 59 c.OfferSnapshotAsync(types.RequestOfferSnapshot{}, getResponseCallback(t)) 60 c.LoadSnapshotChunkAsync(types.RequestLoadSnapshotChunk{}, getResponseCallback(t)) 61 c.ApplySnapshotChunkAsync(types.RequestApplySnapshotChunk{}, getResponseCallback(t)) 62 63 _, err := c.EchoSync("msg") 64 require.NoError(t, err) 65 66 _, err = c.FlushSync() 67 require.NoError(t, err) 68 69 _, err = c.InfoSync(types.RequestInfo{}) 70 require.NoError(t, err) 71 72 _, err = c.SetOptionSync(types.RequestSetOption{}) 73 require.NoError(t, err) 74 75 _, err = c.DeliverTxSync(types.RequestDeliverTx{}) 76 require.NoError(t, err) 77 78 _, err = c.CheckTxSync(types.RequestCheckTx{}) 79 require.NoError(t, err) 80 81 _, err = c.QuerySync(types.RequestQuery{}) 82 require.NoError(t, err) 83 84 _, err = c.CommitSync() 85 require.NoError(t, err) 86 87 _, err = c.InitChainSync(types.RequestInitChain{}) 88 require.NoError(t, err) 89 90 _, err = c.BeginBlockSync(ocabci.RequestBeginBlock{}) 91 require.NoError(t, err) 92 93 _, err = c.EndBlockSync(types.RequestEndBlock{}) 94 require.NoError(t, err) 95 96 _, err = c.BeginRecheckTxSync(ocabci.RequestBeginRecheckTx{}) 97 require.NoError(t, err) 98 99 _, err = c.EndRecheckTxSync(ocabci.RequestEndRecheckTx{}) 100 require.NoError(t, err) 101 102 _, err = c.ListSnapshotsSync(types.RequestListSnapshots{}) 103 require.NoError(t, err) 104 105 _, err = c.OfferSnapshotSync(types.RequestOfferSnapshot{}) 106 require.NoError(t, err) 107 108 _, err = c.LoadSnapshotChunkSync(types.RequestLoadSnapshotChunk{}) 109 require.NoError(t, err) 110 111 _, err = c.ApplySnapshotChunkSync(types.RequestApplySnapshotChunk{}) 112 require.NoError(t, err) 113 }