Upgrade geth and cleanup
This commit is contained in:
parent
6e1a73bcad
commit
85ca203972
35
Gopkg.lock
generated
35
Gopkg.lock
generated
@ -57,6 +57,14 @@
|
|||||||
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
||||||
version = "v1.1.1"
|
version = "v1.1.1"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
digest = "1:e47d51dab652d26c3fba6f8cba403f922d02757a82abdc77e90df7948daf296e"
|
||||||
|
name = "github.com/deckarep/golang-set"
|
||||||
|
packages = ["."]
|
||||||
|
pruneopts = "T"
|
||||||
|
revision = "cbaa98ba5575e67703b32b4b19f73c91f3c4159e"
|
||||||
|
version = "v1.7.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
digest = "1:67d0b50be0549e610017cb91e0b0b745ec0cad7c613bc8e18ff2d1c1fc8825a7"
|
digest = "1:67d0b50be0549e610017cb91e0b0b745ec0cad7c613bc8e18ff2d1c1fc8825a7"
|
||||||
@ -66,7 +74,7 @@
|
|||||||
revision = "0bce6a6887123b67a60366d2c9fe2dfb74289d2e"
|
revision = "0bce6a6887123b67a60366d2c9fe2dfb74289d2e"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:3238a0c355a81640974751f7d3bab21bf91035165f75c2c457959425c0422a4b"
|
digest = "1:c24d17ef5d37ae7215811cf1cade45822faa232d6bcfbadff30bbeba52225a98"
|
||||||
name = "github.com/ethereum/go-ethereum"
|
name = "github.com/ethereum/go-ethereum"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
@ -80,6 +88,7 @@
|
|||||||
"common/hexutil",
|
"common/hexutil",
|
||||||
"common/math",
|
"common/math",
|
||||||
"common/mclock",
|
"common/mclock",
|
||||||
|
"common/prque",
|
||||||
"consensus",
|
"consensus",
|
||||||
"consensus/ethash",
|
"consensus/ethash",
|
||||||
"consensus/misc",
|
"consensus/misc",
|
||||||
@ -93,7 +102,6 @@
|
|||||||
"crypto/bn256/cloudflare",
|
"crypto/bn256/cloudflare",
|
||||||
"crypto/bn256/google",
|
"crypto/bn256/google",
|
||||||
"crypto/ecies",
|
"crypto/ecies",
|
||||||
"crypto/randentropy",
|
|
||||||
"crypto/secp256k1",
|
"crypto/secp256k1",
|
||||||
"crypto/sha3",
|
"crypto/sha3",
|
||||||
"eth/downloader",
|
"eth/downloader",
|
||||||
@ -114,8 +122,8 @@
|
|||||||
"trie",
|
"trie",
|
||||||
]
|
]
|
||||||
pruneopts = "T"
|
pruneopts = "T"
|
||||||
revision = "dea1ce052a10cd7d401a5c04f83f371a06fe293c"
|
revision = "477eb0933b9529f7deeccc233cc815fe34a8ea56"
|
||||||
version = "v1.8.11"
|
version = "v1.8.16"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:0b9c3ad6c948d57a379da9c4e1cdd989b1c73ddc5ec8673f52a9539ce60a109b"
|
digest = "1:0b9c3ad6c948d57a379da9c4e1cdd989b1c73ddc5ec8673f52a9539ce60a109b"
|
||||||
@ -427,6 +435,7 @@
|
|||||||
digest = "1:bfa444982d49ce4ca1360599270a94de12a573ccd3bf04493c79bee09da3170b"
|
digest = "1:bfa444982d49ce4ca1360599270a94de12a573ccd3bf04493c79bee09da3170b"
|
||||||
name = "golang.org/x/sys"
|
name = "golang.org/x/sys"
|
||||||
packages = [
|
packages = [
|
||||||
|
"cpu",
|
||||||
"unix",
|
"unix",
|
||||||
"windows",
|
"windows",
|
||||||
]
|
]
|
||||||
@ -510,22 +519,6 @@
|
|||||||
revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8"
|
revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8"
|
||||||
version = "v1.13.0"
|
version = "v1.13.0"
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
digest = "1:3ccd10c863188cfe0d936fcfe6a055c95362e43af8e7039e33baade846928e74"
|
|
||||||
name = "gopkg.in/fatih/set.v0"
|
|
||||||
packages = ["."]
|
|
||||||
pruneopts = "T"
|
|
||||||
revision = "57907de300222151a123d29255ed17f5ed43fad3"
|
|
||||||
version = "v0.1.0"
|
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
branch = "v2"
|
|
||||||
digest = "1:dae137be246befa42ce4b48c0feff2c5796b8a5027139a283f31a21173744410"
|
|
||||||
name = "gopkg.in/karalabe/cookiejar.v2"
|
|
||||||
packages = ["collections/prque"]
|
|
||||||
pruneopts = "T"
|
|
||||||
revision = "8dcd6a7f4951f6ff3ee9cbb919a06d8925822e57"
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "v2"
|
branch = "v2"
|
||||||
digest = "1:3d3f9391ab615be8655ae0d686a1564f3fec413979bb1aaf018bac1ec1bb1cc7"
|
digest = "1:3d3f9391ab615be8655ae0d686a1564f3fec413979bb1aaf018bac1ec1bb1cc7"
|
||||||
@ -548,7 +541,6 @@
|
|||||||
"github.com/cosmos/cosmos-sdk/x/params",
|
"github.com/cosmos/cosmos-sdk/x/params",
|
||||||
"github.com/cosmos/cosmos-sdk/x/slashing",
|
"github.com/cosmos/cosmos-sdk/x/slashing",
|
||||||
"github.com/cosmos/cosmos-sdk/x/stake",
|
"github.com/cosmos/cosmos-sdk/x/stake",
|
||||||
"github.com/cosmos/cosmos-sdk/x/stake/types",
|
|
||||||
"github.com/ethereum/go-ethereum/common",
|
"github.com/ethereum/go-ethereum/common",
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil",
|
"github.com/ethereum/go-ethereum/common/hexutil",
|
||||||
"github.com/ethereum/go-ethereum/common/math",
|
"github.com/ethereum/go-ethereum/common/math",
|
||||||
@ -569,7 +561,6 @@
|
|||||||
"github.com/ethereum/go-ethereum/trie",
|
"github.com/ethereum/go-ethereum/trie",
|
||||||
"github.com/hashicorp/golang-lru",
|
"github.com/hashicorp/golang-lru",
|
||||||
"github.com/pkg/errors",
|
"github.com/pkg/errors",
|
||||||
"github.com/stretchr/testify/assert",
|
|
||||||
"github.com/stretchr/testify/require",
|
"github.com/stretchr/testify/require",
|
||||||
"github.com/stretchr/testify/suite",
|
"github.com/stretchr/testify/suite",
|
||||||
"github.com/tendermint/tendermint/abci/types",
|
"github.com/tendermint/tendermint/abci/types",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/ethereum/go-ethereum"
|
name = "github.com/ethereum/go-ethereum"
|
||||||
version = "=1.8.11"
|
version = "=1.8.16"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/cosmos/cosmos-sdk"
|
name = "github.com/cosmos/cosmos-sdk"
|
||||||
|
29
Makefile
29
Makefile
@ -16,7 +16,7 @@ PACKAGES=$(shell go list ./... | grep -v '/vendor/')
|
|||||||
COMMIT_HASH := $(shell git rev-parse --short HEAD)
|
COMMIT_HASH := $(shell git rev-parse --short HEAD)
|
||||||
BUILD_FLAGS = -tags netgo -ldflags "-X github.com/cosmos/ethermint/version.GitCommit=${COMMIT_HASH}"
|
BUILD_FLAGS = -tags netgo -ldflags "-X github.com/cosmos/ethermint/version.GitCommit=${COMMIT_HASH}"
|
||||||
DOCKER_TAG = unstable
|
DOCKER_TAG = unstable
|
||||||
DOCKER_IMAGE = tendermint/ethermint
|
DOCKER_IMAGE = cosmos/ethermint
|
||||||
ETHERMINT_DAEMON_BINARY = emintd
|
ETHERMINT_DAEMON_BINARY = emintd
|
||||||
ETHERMINT_CLI_BINARY = emintcli
|
ETHERMINT_CLI_BINARY = emintcli
|
||||||
|
|
||||||
@ -43,8 +43,9 @@ clean:
|
|||||||
@rm -rf ./build ./vendor
|
@rm -rf ./build ./vendor
|
||||||
|
|
||||||
update-tools:
|
update-tools:
|
||||||
@echo "--> Updating golang dependencies"
|
@echo "--> Updating vendor dependencies"
|
||||||
go get -u -v $(DEP) $(GOLINT) $(GOMETALINTER) $(UNCONVERT) $(INEFFASSIGN) $(MISSPELL) $(ERRCHECK) $(UNPARAM) $(GOCYCLO)
|
go get -u -v $(DEP) $(GOLINT) $(GOMETALINTER) $(UNCONVERT) $(INEFFASSIGN) $(MISSPELL) $(ERRCHECK) $(UNPARAM)
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
### Tools / Dependencies ###
|
### Tools / Dependencies ###
|
||||||
@ -62,7 +63,6 @@ INEFFASSIGN = github.com/gordonklaus/ineffassign
|
|||||||
MISSPELL = github.com/client9/misspell/cmd/misspell
|
MISSPELL = github.com/client9/misspell/cmd/misspell
|
||||||
ERRCHECK = github.com/kisielk/errcheck
|
ERRCHECK = github.com/kisielk/errcheck
|
||||||
UNPARAM = mvdan.cc/unparam
|
UNPARAM = mvdan.cc/unparam
|
||||||
GOCYCLO = github.com/alecthomas/gocyclo
|
|
||||||
|
|
||||||
DEP_CHECK := $(shell command -v dep 2> /dev/null)
|
DEP_CHECK := $(shell command -v dep 2> /dev/null)
|
||||||
GOLINT_CHECK := $(shell command -v golint 2> /dev/null)
|
GOLINT_CHECK := $(shell command -v golint 2> /dev/null)
|
||||||
@ -72,7 +72,6 @@ INEFFASSIGN_CHECK := $(shell command -v ineffassign 2> /dev/null)
|
|||||||
MISSPELL_CHECK := $(shell command -v misspell 2> /dev/null)
|
MISSPELL_CHECK := $(shell command -v misspell 2> /dev/null)
|
||||||
ERRCHECK_CHECK := $(shell command -v errcheck 2> /dev/null)
|
ERRCHECK_CHECK := $(shell command -v errcheck 2> /dev/null)
|
||||||
UNPARAM_CHECK := $(shell command -v unparam 2> /dev/null)
|
UNPARAM_CHECK := $(shell command -v unparam 2> /dev/null)
|
||||||
GOCYCLO_CHECK := $(shell command -v gocyclo 2> /dev/null)
|
|
||||||
|
|
||||||
tools:
|
tools:
|
||||||
ifdef DEP_CHECK
|
ifdef DEP_CHECK
|
||||||
@ -123,12 +122,6 @@ else
|
|||||||
@echo "--> Installing unparam"
|
@echo "--> Installing unparam"
|
||||||
go get -v $(UNPARAM)
|
go get -v $(UNPARAM)
|
||||||
endif
|
endif
|
||||||
ifdef GOCYCLO_CHECK
|
|
||||||
@echo "goyclo is already installed. Run 'make update-tools' to update."
|
|
||||||
else
|
|
||||||
@echo "--> Installing goyclo"
|
|
||||||
go get -v $(GOCYCLO)
|
|
||||||
endif
|
|
||||||
|
|
||||||
deps:
|
deps:
|
||||||
@rm -rf vendor/
|
@rm -rf vendor/
|
||||||
@ -139,26 +132,20 @@ deps:
|
|||||||
### Testing / Misc. ###
|
### Testing / Misc. ###
|
||||||
#######################
|
#######################
|
||||||
|
|
||||||
TEST_PACKAGES=$(shell go list ./... | grep -v github.com/cosmos/ethermint/cmd/test)
|
|
||||||
|
|
||||||
test: test-unit
|
test: test-unit
|
||||||
|
|
||||||
test-unit:
|
test-unit:
|
||||||
@go test -v $(TEST_PACKAGES)
|
@go test -v --vet=off $(PACKAGES)
|
||||||
|
|
||||||
test-race:
|
test-race:
|
||||||
@go test -v -race $(TEST_PACKAGES)
|
@go test -v --vet=off -race $(PACKAGES)
|
||||||
|
|
||||||
test-cli:
|
test-cli:
|
||||||
@echo "NO CLI TESTS"
|
@echo "NO CLI TESTS"
|
||||||
|
|
||||||
test-lint:
|
test-lint:
|
||||||
@echo "--> Running gometalinter"
|
@echo "--> Running gometalinter..."
|
||||||
@gometalinter.v2 --config=gometalinter.json ./...
|
@gometalinter.v2 --config=gometalinter.json --exclude=vendor ./...
|
||||||
@!(gometalinter.v2 --disable-all --enable='errcheck' --vendor ./... | grep -v "client/")
|
|
||||||
@find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" | xargs gofmt -d -s
|
|
||||||
@dep status >/dev/null 2>&1
|
|
||||||
@!(grep -n branch Gopkg.toml)
|
|
||||||
|
|
||||||
godocs:
|
godocs:
|
||||||
@echo "--> Wait a few seconds and visit http://localhost:6060/pkg/github.com/cosmos/ethermint"
|
@echo "--> Wait a few seconds and visit http://localhost:6060/pkg/github.com/cosmos/ethermint"
|
||||||
|
@ -64,8 +64,8 @@ func (cc *ChainContext) Author(_ *ethtypes.Header) (ethcmn.Address, error) {
|
|||||||
return cc.Coinbase, nil
|
return cc.Coinbase, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// APIs implements Ethereum's core.ChainContext interface. It currently
|
// APIs implements Ethereum's consensus.Engine interface. It currently performs
|
||||||
// performs a no-op.
|
// a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Do we need to support such RPC APIs? This will tie into a bigger
|
// TODO: Do we need to support such RPC APIs? This will tie into a bigger
|
||||||
// discussion on if we want to support web3.
|
// discussion on if we want to support web3.
|
||||||
@ -73,13 +73,13 @@ func (cc *ChainContext) APIs(_ ethcons.ChainReader) []ethrpc.API {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CalcDifficulty implements Ethereum's core.ChainContext interface. It
|
// CalcDifficulty implements Ethereum's consensus.Engine interface. It currently
|
||||||
// currently performs a no-op.
|
// performs a no-op.
|
||||||
func (cc *ChainContext) CalcDifficulty(_ ethcons.ChainReader, _ uint64, _ *ethtypes.Header) *big.Int {
|
func (cc *ChainContext) CalcDifficulty(_ ethcons.ChainReader, _ uint64, _ *ethtypes.Header) *big.Int {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finalize implements Ethereum's core.ChainContext interface. It currently
|
// Finalize implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
||||||
@ -90,7 +90,7 @@ func (cc *ChainContext) Finalize(
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare implements Ethereum's core.ChainContext interface. It currently
|
// Prepare implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
||||||
@ -98,15 +98,21 @@ func (cc *ChainContext) Prepare(_ ethcons.ChainReader, _ *ethtypes.Header) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seal implements Ethereum's core.ChainContext interface. It currently
|
// Seal implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
// TODO: Figure out if this needs to be hooked up to any part of the ABCI?
|
||||||
func (cc *ChainContext) Seal(_ ethcons.ChainReader, _ *ethtypes.Block, _ <-chan struct{}) (*ethtypes.Block, error) {
|
func (cc *ChainContext) Seal(_ ethcons.ChainReader, _ *ethtypes.Block, _ chan<- *ethtypes.Block, _ <-chan struct{}) error {
|
||||||
return nil, nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifyHeader implements Ethereum's core.ChainContext interface. It currently
|
// SealHash implements Ethereum's consensus.Engine interface. It returns the
|
||||||
|
// hash of a block prior to it being sealed.
|
||||||
|
func (cc *ChainContext) SealHash(header *ethtypes.Header) ethcmn.Hash {
|
||||||
|
return ethcmn.Hash{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// VerifyHeader implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
||||||
@ -115,7 +121,7 @@ func (cc *ChainContext) VerifyHeader(_ ethcons.ChainReader, _ *ethtypes.Header,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifyHeaders implements Ethereum's core.ChainContext interface. It
|
// VerifyHeaders implements Ethereum's consensus.Engine interface. It
|
||||||
// currently performs a no-op.
|
// currently performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
||||||
@ -124,7 +130,7 @@ func (cc *ChainContext) VerifyHeaders(_ ethcons.ChainReader, _ []*ethtypes.Heade
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifySeal implements Ethereum's core.ChainContext interface. It currently
|
// VerifySeal implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
//
|
//
|
||||||
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
// TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK
|
||||||
@ -133,8 +139,15 @@ func (cc *ChainContext) VerifySeal(_ ethcons.ChainReader, _ *ethtypes.Header) er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifyUncles implements Ethereum's core.ChainContext interface. It currently
|
// VerifyUncles implements Ethereum's consensus.Engine interface. It currently
|
||||||
// performs a no-op.
|
// performs a no-op.
|
||||||
func (cc *ChainContext) VerifyUncles(_ ethcons.ChainReader, _ *ethtypes.Block) error {
|
func (cc *ChainContext) VerifyUncles(_ ethcons.ChainReader, _ *ethtypes.Block) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close implements Ethereum's consensus.Engine interface. It terminates any
|
||||||
|
// background threads maintained by the consensus engine. It currently performs
|
||||||
|
// a no-op.
|
||||||
|
func (cc *ChainContext) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -86,9 +86,8 @@ func TestChainContextPrepare(t *testing.T) {
|
|||||||
func TestChainContextSeal(t *testing.T) {
|
func TestChainContextSeal(t *testing.T) {
|
||||||
cc := NewChainContext()
|
cc := NewChainContext()
|
||||||
|
|
||||||
block, err := cc.Seal(nil, nil, nil)
|
err := cc.Seal(nil, nil, nil, nil)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Nil(t, block)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChainContextVerifyHeader(t *testing.T) {
|
func TestChainContextVerifyHeader(t *testing.T) {
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Linters": {
|
"Linters": {
|
||||||
"vet": "go tool vet -composites=false :PATH:LINE:MESSAGE"
|
"vet": "go tool vet -composites=false :PATH:LINE:MESSAGE"
|
||||||
},
|
},
|
||||||
"Enable": ["golint", "vet", "ineffassign", "unparam", "unconvert", "misspell", "gocyclo"],
|
"Enable": [
|
||||||
|
"golint",
|
||||||
|
"vet",
|
||||||
|
"ineffassign",
|
||||||
|
"unparam",
|
||||||
|
"unconvert",
|
||||||
|
"misspell"
|
||||||
|
],
|
||||||
"Deadline": "500s",
|
"Deadline": "500s",
|
||||||
"Vendor": true,
|
"Vendor": true,
|
||||||
"Cyclo": 11
|
"Cyclo": 11
|
||||||
|
@ -9,7 +9,8 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// returns the master list of public APIs for use with StartHTTPEndpoint
|
// GetRPCAPIs returns the master list of public APIs for use with
|
||||||
|
// StartHTTPEndpoint.
|
||||||
func GetRPCAPIs() []rpc.API {
|
func GetRPCAPIs() []rpc.API {
|
||||||
return []rpc.API{
|
return []rpc.API{
|
||||||
{
|
{
|
||||||
|
@ -2,10 +2,13 @@ package rpc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/cosmos/ethermint/version"
|
"github.com/cosmos/ethermint/version"
|
||||||
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
"testing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type apisTestSuite struct {
|
type apisTestSuite struct {
|
||||||
@ -56,10 +59,18 @@ func startAPIServer() (context.CancelFunc, int, error) {
|
|||||||
RPCAddr: "127.0.0.1",
|
RPCAddr: "127.0.0.1",
|
||||||
RPCPort: randomPort(),
|
RPCPort: randomPort(),
|
||||||
}
|
}
|
||||||
|
timeouts := rpc.HTTPTimeouts{
|
||||||
|
ReadTimeout: 5 * time.Second,
|
||||||
|
WriteTimeout: 5 * time.Second,
|
||||||
|
IdleTimeout: 5 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
_, err := StartHTTPEndpoint(ctx, config, GetRPCAPIs())
|
|
||||||
|
_, err := StartHTTPEndpoint(ctx, config, GetRPCAPIs(), timeouts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cancel, 0, err
|
return cancel, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return cancel, config.RPCPort, nil
|
return cancel, config.RPCPort, nil
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,19 @@ package rpc
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StartHTTPEndpoint starts the Tendermint Web3-compatible RPC layer. Consumes a Context for cancellation, a config
|
// StartHTTPEndpoint starts the Tendermint Web3-compatible RPC layer. Consumes
|
||||||
// struct, and a list of rpc.API interfaces that will be automatically wired into a JSON-RPC webserver.
|
// a Context for cancellation, a config struct, and a list of rpc.API interfaces
|
||||||
func StartHTTPEndpoint(ctx context.Context, config *Config, apis []rpc.API) (*rpc.Server, error) {
|
// that will be automatically wired into a JSON-RPC webserver.
|
||||||
|
func StartHTTPEndpoint(ctx context.Context, config *Config, apis []rpc.API, timeouts rpc.HTTPTimeouts) (*rpc.Server, error) {
|
||||||
uniqModules := make(map[string]string)
|
uniqModules := make(map[string]string)
|
||||||
for _, api := range apis {
|
for _, api := range apis {
|
||||||
uniqModules[api.Namespace] = api.Namespace
|
uniqModules[api.Namespace] = api.Namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
modules := make([]string, len(uniqModules))
|
modules := make([]string, len(uniqModules))
|
||||||
i := 0
|
i := 0
|
||||||
for k := range uniqModules {
|
for k := range uniqModules {
|
||||||
@ -21,7 +24,9 @@ func StartHTTPEndpoint(ctx context.Context, config *Config, apis []rpc.API) (*rp
|
|||||||
}
|
}
|
||||||
|
|
||||||
endpoint := fmt.Sprintf("%s:%d", config.RPCAddr, config.RPCPort)
|
endpoint := fmt.Sprintf("%s:%d", config.RPCAddr, config.RPCPort)
|
||||||
_, server, err := rpc.StartHTTPEndpoint(endpoint, apis, modules, config.RPCCORSDomains, config.RPCVHosts)
|
_, server, err := rpc.StartHTTPEndpoint(
|
||||||
|
endpoint, apis, modules, config.RPCCORSDomains, config.RPCVHosts, timeouts,
|
||||||
|
)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
<-ctx.Done()
|
<-ctx.Done()
|
||||||
|
@ -4,13 +4,15 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TestService struct{}
|
type TestService struct{}
|
||||||
@ -24,21 +26,34 @@ func TestStartHTTPEndpointStartStop(t *testing.T) {
|
|||||||
RPCAddr: "127.0.0.1",
|
RPCAddr: "127.0.0.1",
|
||||||
RPCPort: randomPort(),
|
RPCPort: randomPort(),
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
_, err := StartHTTPEndpoint(ctx, config, []rpc.API{
|
|
||||||
{
|
_, err := StartHTTPEndpoint(
|
||||||
Namespace: "test",
|
ctx, config, []rpc.API{
|
||||||
Version: "1.0",
|
{
|
||||||
Service: &TestService{},
|
Namespace: "test",
|
||||||
Public: true,
|
Version: "1.0",
|
||||||
|
Service: &TestService{},
|
||||||
|
Public: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
rpc.HTTPTimeouts{
|
||||||
|
ReadTimeout: 5 * time.Second,
|
||||||
|
WriteTimeout: 5 * time.Second,
|
||||||
|
IdleTimeout: 5 * time.Second,
|
||||||
|
},
|
||||||
|
)
|
||||||
require.Nil(t, err, "unexpected error")
|
require.Nil(t, err, "unexpected error")
|
||||||
|
|
||||||
res, err := rpcCall(config.RPCPort, "test_foo", []string{"baz"})
|
res, err := rpcCall(config.RPCPort, "test_foo", []string{"baz"})
|
||||||
require.Nil(t, err, "unexpected error")
|
require.Nil(t, err, "unexpected error")
|
||||||
|
|
||||||
resStr := res.(string)
|
resStr := res.(string)
|
||||||
require.Equal(t, "baz", resStr)
|
require.Equal(t, "baz", resStr)
|
||||||
|
|
||||||
cancel()
|
cancel()
|
||||||
|
|
||||||
_, err = rpcCall(config.RPCPort, "test_foo", []string{"baz"})
|
_, err = rpcCall(config.RPCPort, "test_foo", []string{"baz"})
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
}
|
}
|
||||||
@ -48,12 +63,17 @@ func rpcCall(port int, method string, params []string) (interface{}, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
fullBody := fmt.Sprintf(`{ "id": 1, "jsonrpc": "2.0", "method": "%s", "params": %s }`,
|
|
||||||
method, string(parsedParams))
|
fullBody := fmt.Sprintf(
|
||||||
|
`{ "id": 1, "jsonrpc": "2.0", "method": "%s", "params": %s }`,
|
||||||
|
method, string(parsedParams),
|
||||||
|
)
|
||||||
|
|
||||||
res, err := http.Post(fmt.Sprintf("http://127.0.0.1:%d", port), "application/json", strings.NewReader(fullBody))
|
res, err := http.Post(fmt.Sprintf("http://127.0.0.1:%d", port), "application/json", strings.NewReader(fullBody))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := ioutil.ReadAll(res.Body)
|
data, err := ioutil.ReadAll(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -182,7 +182,7 @@ func TestTrieCommit(t *testing.T) {
|
|||||||
tc.trie.TryUpdate(tc.data.key, tc.data.value)
|
tc.trie.TryUpdate(tc.data.key, tc.data.value)
|
||||||
}
|
}
|
||||||
if tc.code != nil {
|
if tc.code != nil {
|
||||||
tc.trie.ethTrieDB.Insert(tc.code.hash, tc.code.blob)
|
tc.trie.ethTrieDB.InsertBlob(tc.code.hash, tc.code.blob)
|
||||||
}
|
}
|
||||||
|
|
||||||
root, err := tc.trie.Commit(nil)
|
root, err := tc.trie.Commit(nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user