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  }