mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-28 07:36:44 +00:00
* Limit state sync by gas * Added logging for state-sync total gas usage * Added number of event-records in log * Minor Changes * Minor Fix * Adding individual gasUsed * Minor Fix * it works * fix tests * log wiggle and delay with block number * log delays as numbers * linters * fix tests * restore linters for the project * fix linters * fix * fix * fix * linters * generation * fix tests * remove heimdall wrapper response * linters * remove possible collisions * remove possible collisions * remove possible collisions * tests for unique address generation * generalize set * bor miner tests got restored * fixes after CR * final step and mining test * fix * fix e2e * more tests for Heimdall requests * fix linters Co-authored-by: Ferran <ferranbt@protonmail.com> Co-authored-by: Shivam Sharma <shivam691999@gmail.com>
83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"math/rand"
|
|
"net"
|
|
"os"
|
|
"sync/atomic"
|
|
"time"
|
|
)
|
|
|
|
var maxPortCheck int32 = 100
|
|
|
|
// findAvailablePort returns the next available port starting from `from`
|
|
func findAvailablePort(from int32, count int32) (int32, error) {
|
|
if count == maxPortCheck {
|
|
return 0, fmt.Errorf("no available port found")
|
|
}
|
|
|
|
port := atomic.AddInt32(&from, 1)
|
|
addr := fmt.Sprintf("localhost:%d", port)
|
|
|
|
count++
|
|
|
|
lis, err := net.Listen("tcp", addr)
|
|
if err == nil {
|
|
lis.Close()
|
|
return port, nil
|
|
} else {
|
|
return findAvailablePort(from, count)
|
|
}
|
|
}
|
|
|
|
func CreateMockServer(config *Config) (*Server, error) {
|
|
if config == nil {
|
|
config = DefaultConfig()
|
|
}
|
|
|
|
// find available port for grpc server
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
var (
|
|
from int32 = 60000 // the min port to start checking from
|
|
to int32 = 61000 // the max port to start checking from
|
|
)
|
|
|
|
//nolint: gosec
|
|
port, err := findAvailablePort(rand.Int31n(to-from+1)+from, 0)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// grpc port
|
|
config.GRPC.Addr = fmt.Sprintf(":%d", port)
|
|
|
|
// datadir
|
|
datadir, _ := ioutil.TempDir("/tmp", "bor-cli-test")
|
|
config.DataDir = datadir
|
|
|
|
// find available port for http server
|
|
from = 8545
|
|
to = 9545
|
|
|
|
//nolint: gosec
|
|
port, err = findAvailablePort(rand.Int31n(to-from+1)+from, 0)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
config.JsonRPC.Http.Port = uint64(port)
|
|
|
|
// start the server
|
|
return NewServer(config)
|
|
}
|
|
|
|
func CloseMockServer(server *Server) {
|
|
// remove the contents of temp data dir
|
|
os.RemoveAll(server.config.DataDir)
|
|
|
|
// close the server
|
|
server.Stop()
|
|
}
|