60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
/*
|
|
Copyright IBM Corp All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
ginkgo "github.com/onsi/ginkgo/v2"
|
|
)
|
|
|
|
// TestPortRange represents a port range
|
|
type TestPortRange int
|
|
|
|
const (
|
|
basePort = 20000
|
|
portsPerNode = 50
|
|
portsPerSuite = 10 * portsPerNode
|
|
)
|
|
|
|
const (
|
|
ConfigBasePort TestPortRange = basePort + portsPerSuite*iota
|
|
DevModePort
|
|
DiscoveryBasePort
|
|
E2EBasePort
|
|
GatewayBasePort
|
|
GossipBasePort
|
|
IdemixBasePort
|
|
KafkaBasePort
|
|
LedgerPort
|
|
LifecyclePort
|
|
MSPPort
|
|
NWOBasePort
|
|
PKCS11Port
|
|
PluggableBasePort
|
|
PrivateDataBasePort
|
|
PrivateDataPurgeBasePort
|
|
RaftBasePort
|
|
SBEBasePort
|
|
SmartBFTBasePort
|
|
)
|
|
|
|
// On linux, the default ephemeral port range is 32768-60999 and can be
|
|
// allocated by the system for the client side of TCP connections or when
|
|
// programs explicitly request one. Given linux is our default CI system,
|
|
// we want to try avoid ports in that range.
|
|
func (t TestPortRange) StartPortForNode() int {
|
|
const startEphemeral, endEphemeral = 32768, 60999
|
|
|
|
port := int(t) + portsPerNode*(ginkgo.GinkgoParallelProcess()-1)
|
|
if port >= startEphemeral-portsPerNode && port <= endEphemeral-portsPerNode {
|
|
fmt.Fprintf(os.Stderr, "WARNING: port %d is part of the default ephemeral port range on linux", port)
|
|
}
|
|
return port
|
|
}
|