github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/internal/cli/server/server_test.go (about) 1 package server 2 3 import ( 4 "fmt" 5 "net" 6 "sync/atomic" 7 "testing" 8 "time" 9 10 "github.com/ethereum/go-ethereum/log" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 var initialPort uint64 = 61000 16 17 // nextPort gives the next available port starting from 60000 18 func nextPort() uint64 { 19 log.Info("Checking for new port", "current", initialPort) 20 port := atomic.AddUint64(&initialPort, 1) 21 addr := fmt.Sprintf("localhost:%d", port) 22 23 lis, err := net.Listen("tcp", addr) 24 if err == nil { 25 lis.Close() 26 27 return port 28 } else { 29 return nextPort() 30 } 31 } 32 33 func TestServer_DeveloperMode(t *testing.T) { 34 t.Parallel() 35 36 // get the default config 37 config := DefaultConfig() 38 39 // enable developer mode 40 config.Developer.Enabled = true 41 config.Developer.Period = 2 // block time 42 43 // start the mock server 44 server, err := CreateMockServer(config) 45 assert.NoError(t, err) 46 47 defer CloseMockServer(server) 48 49 // record the initial block number 50 blockNumber := server.backend.BlockChain().CurrentBlock().Header().Number.Int64() 51 52 var i int64 = 0 53 for i = 0; i < 3; i++ { 54 // We expect the node to mine blocks every `config.Developer.Period` time period 55 time.Sleep(time.Duration(config.Developer.Period) * time.Second) 56 currBlock := server.backend.BlockChain().CurrentBlock().Header().Number.Int64() 57 expected := blockNumber + i + 1 58 if res := assert.Equal(t, currBlock, expected); res == false { 59 break 60 } 61 } 62 }