Skip to content

Commit

Permalink
syz-ci: use unique ports for test instances
Browse files Browse the repository at this point in the history
Currently they can collide with the main instance and fail.
Use unique ports for test instances.
  • Loading branch information
dvyukov committed May 22, 2024
1 parent 1014eca commit 35ff7a1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
3 changes: 3 additions & 0 deletions syz-ci/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,9 @@ func (mgr *Manager) createTestConfig(imageDir string, info *BuildInfo) (*mgrconf
*mgrcfg = *mgr.managercfg
mgrcfg.Name += "-test"
mgrcfg.Tag = info.KernelCommit
// Use random free ports to not collide with the actual manager.
mgrcfg.HTTP = fmt.Sprintf("localhost:%v", mgr.mgrcfg.testHttpPort)
mgrcfg.RPC = fmt.Sprintf("localhost:%v", mgr.mgrcfg.testRpcPort)
mgrcfg.Workdir = filepath.Join(imageDir, "workdir")
if err := instance.SetConfigImage(mgrcfg, imageDir, true); err != nil {
return nil, err
Expand Down
10 changes: 10 additions & 0 deletions syz-ci/syz-ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ type Config struct {
Name string `json:"name"`
HTTP string `json:"http"`
// If manager http address is not specified, give it an address starting from this port. Optional.
// This is also used to auto-assign ports for test instances.
ManagerPort int `json:"manager_port_start"`
// If manager rpc address is not specified, give it addresses starting from this port. By default 30000.
// This is also used to auto-assign ports for test instances.
RPCPort int `json:"rpc_port_start"`
DashboardAddr string `json:"dashboard_addr"` // Optional.
DashboardClient string `json:"dashboard_client"` // Optional.
Expand Down Expand Up @@ -208,6 +210,10 @@ type ManagerConfig struct {
// By default it's 30 days.
MaxKernelLagDays int `json:"max_kernel_lag_days"`
managercfg *mgrconfig.Config

// Auto-assigned ports used by test instances.
testHttpPort int

Check failure on line 215 in syz-ci/syz-ci.go

View workflow job for this annotation

GitHub Actions / build

ST1003: struct field testHttpPort should be testHTTPPort (stylecheck)
testRpcPort int

Check failure on line 216 in syz-ci/syz-ci.go

View workflow job for this annotation

GitHub Actions / build

ST1003: struct field testRpcPort should be testRPCPort (stylecheck)
}

type ManagerJobs struct {
Expand Down Expand Up @@ -440,6 +446,10 @@ func loadManagerConfig(cfg *Config, mgr *ManagerConfig) error {
managercfg.RPC = fmt.Sprintf(":%v", cfg.RPCPort)
cfg.RPCPort++
}
mgr.testHttpPort = cfg.ManagerPort
cfg.ManagerPort++
mgr.testRpcPort = cfg.RPCPort
cfg.RPCPort++
// Note: we don't change Compiler/Ccache because it may be just "gcc" referring
// to the system binary, or pkg/build/netbsd.go uses "g++" and "clang++" as special marks.
mgr.Userspace = osutil.Abs(mgr.Userspace)
Expand Down

0 comments on commit 35ff7a1

Please sign in to comment.