aboutsummaryrefslogtreecommitdiffstats
path: root/syz-manager
diff options
context:
space:
mode:
authorSabyrzhan Tasbolatov <snovitoll@gmail.com>2024-09-04 21:33:28 +0500
committerAleksandr Nogikh <nogikh@google.com>2024-09-09 16:49:28 +0000
commitcb2d8b3aef0920cbb5521f948e262598efc3fc1c (patch)
treea5dd2e30ebaa63b2835fa6656e8e7078054829a0 /syz-manager
parent10df4c09063bf091d9d003880e4d1044b0ec163d (diff)
pkg/rpcserver: add unit tests, Manager mocks
Added more test coverage of the package and created an interface of rpcserver to use it as the dependency (for syz-manager). Also tried to cover with tests a private method handleConn(), though it calls handleRunnerConn which has a separate logic in Handshake(), which within handleConn() unit test we should've mocked. This will require a refactoring of `runners map[int]*Runner` and runner.go in general with a separate interface which we can mock as well. General idea is to have interfaces of Server (rpc), Runner etc. and mock a compound logic like Handshake during a separate public (or private if it has callable, if-else logic) method unit-testing.
Diffstat (limited to 'syz-manager')
-rw-r--r--syz-manager/manager.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index db181d3a3..4b89277d4 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -80,7 +80,7 @@ type Manager struct {
sysTarget *targets.Target
reporter *report.Reporter
crashdir string
- serv *rpcserver.Server
+ serv rpcserver.Server
corpus *corpus.Corpus
corpusDB *db.DB
corpusDBMu sync.Mutex // for concurrent operations on corpusDB
@@ -252,7 +252,10 @@ func RunManager(mode Mode, cfg *mgrconfig.Config) {
if err != nil {
log.Fatalf("failed to create rpc server: %v", err)
}
- log.Logf(0, "serving rpc on tcp://%v", mgr.serv.Port)
+ if err := mgr.serv.Listen(); err != nil {
+ log.Fatalf("failed to start rpc server: %v", err)
+ }
+ log.Logf(0, "serving rpc on tcp://%v", mgr.serv.Port())
if cfg.DashboardAddr != "" {
opts := []dashapi.DashboardOpts{}
@@ -287,7 +290,7 @@ func RunManager(mode Mode, cfg *mgrconfig.Config) {
if mgr.vmPool == nil {
log.Logf(0, "no VMs started (type=none)")
log.Logf(0, "you are supposed to start syz-executor manually as:")
- log.Logf(0, "syz-executor runner local manager.ip %v", mgr.serv.Port)
+ log.Logf(0, "syz-executor runner local manager.ip %v", mgr.serv.Port())
<-vm.Shutdown
return
}
@@ -536,7 +539,7 @@ func (mgr *Manager) fuzzerInstance(ctx context.Context, inst *vm.Instance, updIn
func (mgr *Manager) runInstanceInner(ctx context.Context, inst *vm.Instance, injectExec <-chan bool,
finishCb vm.EarlyFinishCb) (*report.Report, []byte, error) {
- fwdAddr, err := inst.Forward(mgr.serv.Port)
+ fwdAddr, err := inst.Forward(mgr.serv.Port())
if err != nil {
return nil, nil, fmt.Errorf("failed to setup port forwarding: %w", err)
}