go-ethereum/internal/cli/server/helper.go
Evgeny Danilenko 3c94dfb25f
A thread safe way to take a free port (#485)
* initial commit

* safe latest error

* remove json listener

* fix: debug block unit test

* remove jsonrpc listener from server

* fix: consume network's find port in heimdall client test

* update key in log while startup

* linters

* fix

Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
2022-08-16 18:43:18 +03:00

43 lines
876 B
Go

package server
import (
"fmt"
"os"
"github.com/ethereum/go-ethereum/common/network"
)
func CreateMockServer(config *Config) (*Server, error) {
if config == nil {
config = DefaultConfig()
}
// get grpc port and listener
grpcPort, gRPCListener, err := network.FindAvailablePort()
if err != nil {
return nil, err
}
// The test uses grpc port from config so setting it here.
config.GRPC.Addr = fmt.Sprintf(":%d", grpcPort)
// datadir
datadir, err := os.MkdirTemp("", "bor-cli-test")
if err != nil {
return nil, err
}
config.DataDir = datadir
config.JsonRPC.Http.Port = 0 // It will choose a free/available port
// start the server
return NewServer(config, WithGRPCListener(gRPCListener))
}
func CloseMockServer(server *Server) {
// remove the contents of temp data dir
os.RemoveAll(server.config.DataDir)
// close the server
server.Stop()
}