private/testplanet: try using multiple localhosts

Rather than starting all servers on 127.0.0.1 start them
on a random local host to try avoid port exhaustion.
The port exhaustion is just a guess.

Change-Id: Ibf31d6a017852238d836291d703642b44ff66c0c
This commit is contained in:
Egon Elbre 2022-03-28 21:05:53 +03:00
parent 53de525721
commit 19a2555126
6 changed files with 33 additions and 9 deletions

View File

@ -183,6 +183,7 @@ pipeline {
}
stage('Tests') {
environment {
STORJ_TEST_HOST = '127.0.0.20;127.0.0.21;127.0.0.22;127.0.0.23;127.0.0.24;127.0.0.25'
STORJ_TEST_COCKROACH = 'cockroach://root@localhost:26256/testcockroach?sslmode=disable;' +
'cockroach://root@localhost:26257/testcockroach?sslmode=disable;' +
'cockroach://root@localhost:26258/testcockroach?sslmode=disable;' +

View File

@ -20,6 +20,13 @@
// STORJ_TEST_COCKROACH=omit
//
//
// Host
//
// It's possible to change the listing host with:
//
// STORJ_TEST_HOST=127.0.0.2;127.0.0.3
//
//
// Debugging
//
// For debugging, it's possible to set STORJ_TEST_MONKIT to get a trace per test.

View File

@ -12,6 +12,7 @@ import (
"os"
"path/filepath"
"runtime/pprof"
"strings"
"sync"
"time"
@ -25,6 +26,7 @@ import (
"storj.io/common/pb"
"storj.io/common/storj"
"storj.io/common/testcontext"
"storj.io/common/testrand"
"storj.io/private/dbutil/pgutil"
"storj.io/storj/satellite/overlay"
"storj.io/storj/satellite/satellitedb/satellitedbtest"
@ -59,6 +61,7 @@ type Config struct {
Reconfigure Reconfigure
Name string
Host string
NonParallel bool
}
@ -132,6 +135,14 @@ func NewCustom(ctx *testcontext.Context, log *zap.Logger, config Config, satelli
config.IdentityVersion = &version
}
if config.Host == "" {
config.Host = "127.0.0.1"
if hostlist := os.Getenv("STORJ_TEST_HOST"); hostlist != "" {
hosts := strings.Split(hostlist, ";")
config.Host = hosts[testrand.Intn(len(hosts))]
}
}
planet := &Planet{
ctx: ctx,
log: log,
@ -359,9 +370,14 @@ func (planet *Planet) NewIdentity() (*identity.FullIdentity, error) {
return planet.identities.NewIdentity()
}
// NewListenAddress returns an address for listening.
func (planet *Planet) NewListenAddress() string {
return net.JoinHostPort(planet.config.Host, "0")
}
// NewListener creates a new listener.
func (planet *Planet) NewListener() (net.Listener, error) {
return net.Listen("tcp", "127.0.0.1:0")
return net.Listen("tcp", planet.NewListenAddress())
}
// WriteWhitelist writes the pregenerated signer's CA cert to a "CA whitelist", PEM-encoded.

View File

@ -455,10 +455,10 @@ func (planet *Planet) newSatellite(ctx context.Context, prefix string, index int
config.Metainfo.SegmentLoop.ListLimit = 0
// Actual testplanet-specific configuration
config.Server.Address = "127.0.0.1:0"
config.Server.PrivateAddress = "127.0.0.1:0"
config.Admin.Address = "127.0.0.1:0"
config.Console.Address = "127.0.0.1:0"
config.Server.Address = planet.NewListenAddress()
config.Server.PrivateAddress = planet.NewListenAddress()
config.Admin.Address = planet.NewListenAddress()
config.Console.Address = planet.NewListenAddress()
config.Server.Config.PeerCAWhitelistPath = planet.whitelistPath
config.Server.Config.UsePeerCAWhitelist = true
config.Version = planet.NewVersionConfig()

View File

@ -118,8 +118,8 @@ func (planet *Planet) newStorageNode(ctx context.Context, prefix string, index,
config := storagenode.Config{
Server: server.Config{
Address: "127.0.0.1:0",
PrivateAddress: "127.0.0.1:0",
Address: planet.NewListenAddress(),
PrivateAddress: planet.NewListenAddress(),
Config: tlsopts.Config{
RevocationDBURL: "bolt://" + filepath.Join(storageDir, "revocation.db"),
@ -157,7 +157,7 @@ func (planet *Planet) newStorageNode(ctx context.Context, prefix string, index,
StorageSync: defaultInterval,
},
Console: consoleserver.Config{
Address: "127.0.0.1:0",
Address: planet.NewListenAddress(),
StaticDir: filepath.Join(developmentRoot, "web/storagenode/"),
},
Storage2: piecestore.Config{

View File

@ -36,7 +36,7 @@ func (planet *Planet) newVersionControlServer() (peer *versioncontrol.Peer, err
},
}
config := &versioncontrol.Config{
Address: "127.0.0.1:0",
Address: planet.NewListenAddress(),
Versions: versioncontrol.OldVersionConfig{
Satellite: "v0.0.1",
Storagenode: "v0.0.1",