diff --git a/benchmarks/simu/counter.go b/benchmarks/simu/counter.go index 36d1e35df..ca155bbd8 100644 --- a/benchmarks/simu/counter.go +++ b/benchmarks/simu/counter.go @@ -37,9 +37,7 @@ func main() { for i := 0; ; i++ { binary.BigEndian.PutUint64(buf, uint64(i)) //txBytes := hex.EncodeToString(buf[:n]) - request := rpctypes.NewRPCRequest("fakeid", - "broadcast_tx", - map[string]interface{}{"tx": buf[:8]}) + request := rpctypes.NewRPCRequest("fakeid", "broadcast_tx", Arr(buf[:8])) reqBytes := wire.JSONBytes(request) //fmt.Println("!!", string(reqBytes)) fmt.Print(".") diff --git a/glide.lock b/glide.lock index f3065569d..e79888029 100644 --- a/glide.lock +++ b/glide.lock @@ -1,12 +1,12 @@ -hash: 3fd28c04658701e65d8f27e245d15c61056199201fd5af6d18385491fc579a70 -updated: 2017-04-10T22:34:33.346948802+02:00 +hash: 81cd41d28f9a747a71e6a47e8bc7d855846df29f359ffdcc8d1645c451112b31 +updated: 2017-03-06T17:34:23.99160606-05:00 imports: - name: github.com/btcsuite/btcd - version: 4b348c1d33373d672edd83fc576892d0e46686d2 + version: 583684b21bfbde9b5fc4403916fd7c807feb0289 subpackages: - btcec - name: github.com/BurntSushi/toml - version: b26d9c308763d68093482582cea63d69be07a0f0 + version: 99064174e013895bbd9b025c31100bd1d9b590ca - name: github.com/davecgh/go-spew version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9 subpackages: @@ -16,14 +16,13 @@ imports: - name: github.com/go-stack/stack version: 100eb0c0a9c5b306ca2fb4f165df21d80ada4b82 - name: github.com/gogo/protobuf - version: 100ba4e885062801d56799d78530b73b178a78f3 + version: 909568be09de550ed094403c2bf8a261b5bb730a subpackages: - proto - name: github.com/golang/protobuf - version: 2bba0603135d7d7f5cb73b2125beeda19c09f4ef + version: 69b215d01a5606c843240eab4937eab3acee6530 subpackages: - proto - - ptypes/any - name: github.com/golang/snappy version: 553a641470496b2327abcac10b36396bd98e45c9 - name: github.com/gorilla/websocket @@ -33,9 +32,9 @@ imports: - name: github.com/jmhodges/levigo version: c42d9e0ca023e2198120196f842701bb4c55d7b9 - name: github.com/mattn/go-colorable - version: ded68f7a9561c023e790de24279db7ebf473ea80 + version: acb9493f2794fd0f820de7a27a217dafbb1b65ea - name: github.com/mattn/go-isatty - version: fc9e8d8ef48496124e79ae0df75490096eccf6fe + version: 9622e0cc9d8f9be434ca605520ff9a16808fee47 - name: github.com/pkg/errors version: 645ef00459ed84a119197bfb8d8205042c6df63d - name: github.com/pmezard/go-difflib @@ -43,16 +42,16 @@ imports: subpackages: - difflib - name: github.com/spf13/cobra - version: 5deb57bbca49eb370538fc295ba4b2988f9f5e09 + version: fcd0c5a1df88f5d6784cb4feead962c3f3d0b66c - name: github.com/spf13/pflag - version: 9a906f17374922ed0f74e1b2f593d3723f2ffb00 + version: 9ff6c6923cfffbcd502984b8e0c80539a94968b7 - name: github.com/stretchr/testify version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0 subpackages: - assert - require - name: github.com/syndtr/goleveldb - version: 8c81ea47d4c41a385645e133e15510fc6a2a74b4 + version: 3c5717caf1475fd25964109a0fc640bd150fce43 subpackages: - leveldb - leveldb/cache @@ -67,7 +66,7 @@ imports: - leveldb/table - leveldb/util - name: github.com/tendermint/abci - version: 31eafe8f8eba6b8817edd74df399f508540da528 + version: 1236e8fb6eee3a63909f4014a8e84385ead7933d subpackages: - client - example/counter @@ -84,15 +83,15 @@ imports: - name: github.com/tendermint/go-clist version: 3baa390bbaf7634251c42ad69a8682e7e3990552 - name: github.com/tendermint/go-common - version: 6af2364fa91ef2f3afc8ba0db33b66d9d3ae006c + version: dcb015dff6c7af21e65c8e2f3b450df19d38c777 subpackages: - test - name: github.com/tendermint/go-config version: 620dcbbd7d587cf3599dedbf329b64311b0c307a - name: github.com/tendermint/go-crypto - version: 750b25c47a5782f5f2b773ed9e706cb82b3ccef4 + version: 3f47cfac5fcd9e0f1727c7db980b3559913b3e3a - name: github.com/tendermint/go-data - version: e7fcc6d081ec8518912fcdc103188275f83a3ee5 + version: 32271140e8fd5abdbb22e268d7a02421fa382f0b - name: github.com/tendermint/go-db version: eac3f2bc147023957c8bf69432a4e6c4dc5c3f72 - name: github.com/tendermint/go-events @@ -106,11 +105,11 @@ imports: - name: github.com/tendermint/go-merkle version: 714d4d04557fd068a7c2a1748241ce8428015a96 - name: github.com/tendermint/go-p2p - version: ebd3929c0db9e42268cd677a7782451be7d23327 + version: 97a5ed2d1a17eaee8717b8a32cfaf7a9a82a273d subpackages: - upnp - name: github.com/tendermint/go-rpc - version: a416c37ebd389dcc320d8f41bdcdc575bdc0a826 + version: fcea0cda21f64889be00a0f4b6d13266b1a76ee7 subpackages: - client - server @@ -128,7 +127,7 @@ imports: - client - testutil - name: golang.org/x/crypto - version: 9ef620b9ca2f82b55030ffd4f41327fa9e77a92c + version: 40541ccb1c6e64c947ed6f606b8a6cb4b67d7436 subpackages: - curve25519 - nacl/box @@ -139,7 +138,7 @@ imports: - ripemd160 - salsa20/salsa - name: golang.org/x/net - version: d1e1b351919c6738fdeb9893d5c998b161464f0c + version: d379faa25cbdc04d653984913a2ceb43b0bc46d7 subpackages: - context - http2 @@ -149,33 +148,20 @@ imports: - lex/httplex - trace - name: golang.org/x/sys - version: f3918c30c5c2cb527c0b071a27c35120a6c0719a + version: e48874b42435b4347fc52bdee0424a52abc974d7 subpackages: - unix -- name: golang.org/x/text - version: f4b4367115ec2de254587813edaa901bc1c723a8 - subpackages: - - secure/bidirule - - transform - - unicode/bidi - - unicode/norm -- name: google.golang.org/genproto - version: 411e09b969b1170a9f0c467558eb4c4c110d9c77 - subpackages: - - googleapis/rpc/status - name: google.golang.org/grpc - version: b47cbd158b4721c318abbb389929ef005c322118 + version: 7b399ed358736bc5522021cdc7d79a8ee9ac6f98 subpackages: - codes - credentials - grpclog - internal - - keepalive - metadata - naming - peer - stats - - status - tap - transport testImports: [] diff --git a/glide.yaml b/glide.yaml index cdb083e69..53d308233 100644 --- a/glide.yaml +++ b/glide.yaml @@ -10,8 +10,6 @@ import: version: develop - package: github.com/tendermint/go-crypto version: develop -- package: github.com/tendermint/go-data - version: develop - package: github.com/tendermint/go-db version: develop - package: github.com/tendermint/go-events diff --git a/rpc/client/httpclient.go b/rpc/client/httpclient.go index 07059bca0..bb4e6d3a8 100644 --- a/rpc/client/httpclient.go +++ b/rpc/client/httpclient.go @@ -22,7 +22,7 @@ out the server for test code (mock). */ type HTTP struct { remote string - rpc *rpcclient.JSONRPCClient + rpc *rpcclient.ClientJSONRPC *WSEvents } @@ -30,7 +30,7 @@ type HTTP struct { // and the websocket path (which always seems to be "/websocket") func NewHTTP(remote, wsEndpoint string) *HTTP { return &HTTP{ - rpc: rpcclient.NewJSONRPCClient(remote), + rpc: rpcclient.NewClientJSONRPC(remote), remote: remote, WSEvents: newWSEvents(remote, wsEndpoint), } @@ -50,7 +50,7 @@ func (c *HTTP) _assertIsEventSwitch() types.EventSwitch { func (c *HTTP) Status() (*ctypes.ResultStatus, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("status", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("status", []interface{}{}, tmResult) if err != nil { return nil, errors.Wrap(err, "Status") } @@ -60,7 +60,7 @@ func (c *HTTP) Status() (*ctypes.ResultStatus, error) { func (c *HTTP) ABCIInfo() (*ctypes.ResultABCIInfo, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("abci_info", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("abci_info", []interface{}{}, tmResult) if err != nil { return nil, errors.Wrap(err, "ABCIInfo") } @@ -69,9 +69,7 @@ func (c *HTTP) ABCIInfo() (*ctypes.ResultABCIInfo, error) { func (c *HTTP) ABCIQuery(path string, data []byte, prove bool) (*ctypes.ResultABCIQuery, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("abci_query", - map[string]interface{}{"path": path, "data": data, "prove": prove}, - tmResult) + _, err := c.rpc.Call("abci_query", []interface{}{path, data, prove}, tmResult) if err != nil { return nil, errors.Wrap(err, "ABCIQuery") } @@ -80,7 +78,7 @@ func (c *HTTP) ABCIQuery(path string, data []byte, prove bool) (*ctypes.ResultAB func (c *HTTP) BroadcastTxCommit(tx types.Tx) (*ctypes.ResultBroadcastTxCommit, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("broadcast_tx_commit", map[string]interface{}{"tx": tx}, tmResult) + _, err := c.rpc.Call("broadcast_tx_commit", []interface{}{tx}, tmResult) if err != nil { return nil, errors.Wrap(err, "broadcast_tx_commit") } @@ -97,7 +95,7 @@ func (c *HTTP) BroadcastTxSync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) { func (c *HTTP) broadcastTX(route string, tx types.Tx) (*ctypes.ResultBroadcastTx, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call(route, map[string]interface{}{"tx": tx}, tmResult) + _, err := c.rpc.Call(route, []interface{}{tx}, tmResult) if err != nil { return nil, errors.Wrap(err, route) } @@ -106,7 +104,7 @@ func (c *HTTP) broadcastTX(route string, tx types.Tx) (*ctypes.ResultBroadcastTx func (c *HTTP) NetInfo() (*ctypes.ResultNetInfo, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("net_info", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("net_info", nil, tmResult) if err != nil { return nil, errors.Wrap(err, "NetInfo") } @@ -115,7 +113,7 @@ func (c *HTTP) NetInfo() (*ctypes.ResultNetInfo, error) { func (c *HTTP) DumpConsensusState() (*ctypes.ResultDumpConsensusState, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("dump_consensus_state", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("dump_consensus_state", nil, tmResult) if err != nil { return nil, errors.Wrap(err, "DumpConsensusState") } @@ -124,9 +122,7 @@ func (c *HTTP) DumpConsensusState() (*ctypes.ResultDumpConsensusState, error) { func (c *HTTP) BlockchainInfo(minHeight, maxHeight int) (*ctypes.ResultBlockchainInfo, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("blockchain", - map[string]interface{}{"minHeight": minHeight, "maxHeight": maxHeight}, - tmResult) + _, err := c.rpc.Call("blockchain", []interface{}{minHeight, maxHeight}, tmResult) if err != nil { return nil, errors.Wrap(err, "BlockchainInfo") } @@ -135,7 +131,7 @@ func (c *HTTP) BlockchainInfo(minHeight, maxHeight int) (*ctypes.ResultBlockchai func (c *HTTP) Genesis() (*ctypes.ResultGenesis, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("genesis", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("genesis", nil, tmResult) if err != nil { return nil, errors.Wrap(err, "Genesis") } @@ -144,7 +140,7 @@ func (c *HTTP) Genesis() (*ctypes.ResultGenesis, error) { func (c *HTTP) Block(height int) (*ctypes.ResultBlock, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("block", map[string]interface{}{"height": height}, tmResult) + _, err := c.rpc.Call("block", []interface{}{height}, tmResult) if err != nil { return nil, errors.Wrap(err, "Block") } @@ -153,7 +149,7 @@ func (c *HTTP) Block(height int) (*ctypes.ResultBlock, error) { func (c *HTTP) Commit(height int) (*ctypes.ResultCommit, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("commit", map[string]interface{}{"height": height}, tmResult) + _, err := c.rpc.Call("commit", []interface{}{height}, tmResult) if err != nil { return nil, errors.Wrap(err, "Commit") } @@ -162,7 +158,7 @@ func (c *HTTP) Commit(height int) (*ctypes.ResultCommit, error) { func (c *HTTP) Validators() (*ctypes.ResultValidators, error) { tmResult := new(ctypes.TMResult) - _, err := c.rpc.Call("validators", map[string]interface{}{}, tmResult) + _, err := c.rpc.Call("validators", nil, tmResult) if err != nil { return nil, errors.Wrap(err, "Validators") } diff --git a/rpc/test/client_test.go b/rpc/test/client_test.go index 43409c723..1141de4ee 100644 --- a/rpc/test/client_test.go +++ b/rpc/test/client_test.go @@ -12,7 +12,6 @@ import ( "github.com/stretchr/testify/require" abci "github.com/tendermint/abci/types" . "github.com/tendermint/go-common" - rpc "github.com/tendermint/go-rpc/client" ctypes "github.com/tendermint/tendermint/rpc/core/types" "github.com/tendermint/tendermint/types" ) @@ -26,20 +25,24 @@ import ( // status func TestURIStatus(t *testing.T) { - testStatus(t, GetURIClient()) + tmResult := new(ctypes.TMResult) + _, err := GetURIClient().Call("status", map[string]interface{}{}, tmResult) + require.Nil(t, err) + testStatus(t, tmResult) } func TestJSONStatus(t *testing.T) { - testStatus(t, GetJSONClient()) + tmResult := new(ctypes.TMResult) + _, err := GetJSONClient().Call("status", []interface{}{}, tmResult) + require.Nil(t, err) + testStatus(t, tmResult) } -func testStatus(t *testing.T, client rpc.HTTPClient) { +func testStatus(t *testing.T, statusI interface{}) { chainID := GetConfig().GetString("chain_id") - tmResult := new(ctypes.TMResult) - _, err := client.Call("status", map[string]interface{}{}, tmResult) - require.Nil(t, err) - status := (*tmResult).(*ctypes.ResultStatus) + tmRes := statusI.(*ctypes.TMResult) + status := (*tmRes).(*ctypes.ResultStatus) assert.Equal(t, chainID, status.NodeInfo.Network) } @@ -56,22 +59,28 @@ func randBytes(t *testing.T) []byte { } func TestURIBroadcastTxSync(t *testing.T) { - testBroadcastTxSync(t, GetURIClient()) + config.Set("block_size", 0) + defer config.Set("block_size", -1) + tmResult := new(ctypes.TMResult) + tx := randBytes(t) + _, err := GetURIClient().Call("broadcast_tx_sync", map[string]interface{}{"tx": tx}, tmResult) + require.Nil(t, err) + testBroadcastTxSync(t, tmResult, tx) } func TestJSONBroadcastTxSync(t *testing.T) { - testBroadcastTxSync(t, GetJSONClient()) -} - -func testBroadcastTxSync(t *testing.T, client rpc.HTTPClient) { config.Set("block_size", 0) defer config.Set("block_size", -1) tmResult := new(ctypes.TMResult) tx := randBytes(t) - _, err := client.Call("broadcast_tx_sync", map[string]interface{}{"tx": tx}, tmResult) + _, err := GetJSONClient().Call("broadcast_tx_sync", []interface{}{tx}, tmResult) require.Nil(t, err) + testBroadcastTxSync(t, tmResult, tx) +} - res := (*tmResult).(*ctypes.ResultBroadcastTx) +func testBroadcastTxSync(t *testing.T, resI interface{}, tx []byte) { + tmRes := resI.(*ctypes.TMResult) + res := (*tmRes).(*ctypes.ResultBroadcastTx) require.Equal(t, abci.CodeType_OK, res.Code) mem := node.MempoolReactor().Mempool require.Equal(t, 1, mem.Size()) @@ -89,31 +98,34 @@ func testTxKV(t *testing.T) ([]byte, []byte, []byte) { return k, v, []byte(Fmt("%s=%s", k, v)) } -func sendTx(t *testing.T, client rpc.HTTPClient) ([]byte, []byte) { +func sendTx(t *testing.T) ([]byte, []byte) { tmResult := new(ctypes.TMResult) k, v, tx := testTxKV(t) - _, err := client.Call("broadcast_tx_commit", map[string]interface{}{"tx": tx}, tmResult) + _, err := GetJSONClient().Call("broadcast_tx_commit", []interface{}{tx}, tmResult) require.Nil(t, err) return k, v } func TestURIABCIQuery(t *testing.T) { - testABCIQuery(t, GetURIClient()) + k, v := sendTx(t) + time.Sleep(time.Second) + tmResult := new(ctypes.TMResult) + _, err := GetURIClient().Call("abci_query", map[string]interface{}{"path": "", "data": k, "prove": false}, tmResult) + require.Nil(t, err) + testABCIQuery(t, tmResult, v) } func TestJSONABCIQuery(t *testing.T) { - testABCIQuery(t, GetURIClient()) -} - -func testABCIQuery(t *testing.T, client rpc.HTTPClient) { - k, _ := sendTx(t, client) - time.Sleep(time.Millisecond * 100) + k, v := sendTx(t) tmResult := new(ctypes.TMResult) - _, err := client.Call("abci_query", - map[string]interface{}{"path": "", "data": k, "prove": false}, tmResult) + _, err := GetJSONClient().Call("abci_query", []interface{}{"", k, false}, tmResult) require.Nil(t, err) + testABCIQuery(t, tmResult, v) +} - resQuery := (*tmResult).(*ctypes.ResultABCIQuery) +func testABCIQuery(t *testing.T, statusI interface{}, value []byte) { + tmRes := statusI.(*ctypes.TMResult) + resQuery := (*tmRes).(*ctypes.ResultABCIQuery) require.EqualValues(t, 0, resQuery.Response.Code) // XXX: specific to value returned by the dummy @@ -124,22 +136,25 @@ func testABCIQuery(t *testing.T, client rpc.HTTPClient) { // broadcast tx commit func TestURIBroadcastTxCommit(t *testing.T) { - testBroadcastTxCommit(t, GetURIClient()) + tmResult := new(ctypes.TMResult) + tx := randBytes(t) + _, err := GetURIClient().Call("broadcast_tx_commit", map[string]interface{}{"tx": tx}, tmResult) + require.Nil(t, err) + testBroadcastTxCommit(t, tmResult, tx) } func TestJSONBroadcastTxCommit(t *testing.T) { - testBroadcastTxCommit(t, GetJSONClient()) -} - -func testBroadcastTxCommit(t *testing.T, client rpc.HTTPClient) { - require := require.New(t) - tmResult := new(ctypes.TMResult) tx := randBytes(t) - _, err := client.Call("broadcast_tx_commit", map[string]interface{}{"tx": tx}, tmResult) - require.Nil(err) + _, err := GetJSONClient().Call("broadcast_tx_commit", []interface{}{tx}, tmResult) + require.Nil(t, err) + testBroadcastTxCommit(t, tmResult, tx) +} - res := (*tmResult).(*ctypes.ResultBroadcastTxCommit) +func testBroadcastTxCommit(t *testing.T, resI interface{}, tx []byte) { + require := require.New(t) + tmRes := resI.(*ctypes.TMResult) + res := (*tmRes).(*ctypes.ResultBroadcastTxCommit) checkTx := res.CheckTx require.Equal(abci.CodeType_OK, checkTx.Code) deliverTx := res.DeliverTx @@ -225,7 +240,7 @@ func TestWSTxEvent(t *testing.T) { // send an tx tmResult := new(ctypes.TMResult) - _, err := GetJSONClient().Call("broadcast_tx_sync", map[string]interface{}{"tx": tx}, tmResult) + _, err := GetJSONClient().Call("broadcast_tx_sync", []interface{}{tx}, tmResult) require.Nil(err) waitForEvent(t, wsc, eid, true, func() {}, func(eid string, b interface{}) error { @@ -295,9 +310,7 @@ func TestURIUnsafeSetConfig(t *testing.T) { func TestJSONUnsafeSetConfig(t *testing.T) { for _, testCase := range testCasesUnsafeSetConfig { tmResult := new(ctypes.TMResult) - _, err := GetJSONClient().Call("unsafe_set_config", - map[string]interface{}{"type": testCase[0], "key": testCase[1], "value": testCase[2]}, - tmResult) + _, err := GetJSONClient().Call("unsafe_set_config", []interface{}{testCase[0], testCase[1], testCase[2]}, tmResult) require.Nil(t, err) } testUnsafeSetConfig(t) diff --git a/rpc/test/helpers.go b/rpc/test/helpers.go index 349980e9c..cf64ac155 100644 --- a/rpc/test/helpers.go +++ b/rpc/test/helpers.go @@ -72,15 +72,15 @@ func GetConfig() cfg.Config { } // GetURIClient gets a uri client pointing to the test tendermint rpc -func GetURIClient() *client.URIClient { +func GetURIClient() *client.ClientURI { rpcAddr := GetConfig().GetString("rpc_laddr") - return client.NewURIClient(rpcAddr) + return client.NewClientURI(rpcAddr) } // GetJSONClient gets a http/json client pointing to the test tendermint rpc -func GetJSONClient() *client.JSONRPCClient { +func GetJSONClient() *client.ClientJSONRPC { rpcAddr := GetConfig().GetString("rpc_laddr") - return client.NewJSONRPCClient(rpcAddr) + return client.NewClientJSONRPC(rpcAddr) } func GetGRPCClient() core_grpc.BroadcastAPIClient { diff --git a/scripts/install_abci_apps.sh b/scripts/install_abci_apps.sh index b2c0b085b..6da2e2ed2 100644 --- a/scripts/install_abci_apps.sh +++ b/scripts/install_abci_apps.sh @@ -1,6 +1,6 @@ #! /bin/bash -go get -d github.com/tendermint/abci +go get github.com/tendermint/abci/... # get the abci commit used by tendermint COMMIT=`bash scripts/glide/parse.sh abci`