diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-06-30 16:02:51 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-06-30 16:04:30 +0200 |
| commit | a8b32c55ab1a8021e9a7baabbffde7f1f711083f (patch) | |
| tree | c83882e6d908eaff7cb4715eef7aa11796214751 | |
| parent | 1b8e07333a489139526618fbbd8075470f16f25e (diff) | |
syz-ci: switch to the new dashboard
Switch to the new dashboard and start uploading build info.
| -rw-r--r-- | syz-ci/manager.go | 37 | ||||
| -rw-r--r-- | syz-ci/syz-ci.go | 9 | ||||
| -rw-r--r-- | syz-manager/mgrconfig/mgrconfig.go | 11 |
3 files changed, 44 insertions, 13 deletions
diff --git a/syz-ci/manager.go b/syz-ci/manager.go index afb0d8d1f..1b5c500df 100644 --- a/syz-ci/manager.go +++ b/syz-ci/manager.go @@ -10,6 +10,7 @@ import ( "path/filepath" "time" + "github.com/google/syzkaller/dashboard/dashapi" "github.com/google/syzkaller/pkg/config" "github.com/google/syzkaller/pkg/fileutil" "github.com/google/syzkaller/pkg/git" @@ -17,7 +18,6 @@ import ( "github.com/google/syzkaller/pkg/kernel" . "github.com/google/syzkaller/pkg/log" "github.com/google/syzkaller/pkg/osutil" - "github.com/google/syzkaller/syz-dash/dashboard" "github.com/google/syzkaller/syz-manager/mgrconfig" ) @@ -53,11 +53,11 @@ type Manager struct { cfg *Config mgrcfg *ManagerConfig cmd *ManagerCmd - dash *dashboard.Dashboard + dash *dashapi.Dashboard stop chan struct{} } -func createManager(dash *dashboard.Dashboard, cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Manager { +func createManager(dash *dashapi.Dashboard, cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Manager { dir := osutil.Abs(filepath.Join("managers", mgrcfg.Name)) if err := os.MkdirAll(dir, osutil.DefaultDirPerm); err != nil { Fatal(err) @@ -288,6 +288,10 @@ func (mgr *Manager) restartManager() { Logf(0, "%v: failed to create manager config: %v", mgr.name, err) return } + if err := mgr.uploadBuild(info); err != nil { + Logf(0, "%v: failed to upload build: %v", mgr.name, err) + return + } bin := filepath.FromSlash("syzkaller/current/bin/syz-manager") logFile := filepath.Join(mgr.currentDir, "manager.log") mgr.cmd = NewManagerCmd(mgr.name, logFile, bin, "-config", cfgFile) @@ -316,8 +320,10 @@ func (mgr *Manager) writeConfig(info *BuildInfo) (string, error) { tag = info.KernelCommit } mgrcfg.Name = mgr.cfg.Name + "-" + mgr.name + mgrcfg.Hub_Client = mgr.cfg.Name mgrcfg.Hub_Addr = mgr.cfg.Hub_Addr mgrcfg.Hub_Key = mgr.cfg.Hub_Key + mgrcfg.Dashboard_Client = mgr.cfg.Name mgrcfg.Dashboard_Addr = mgr.cfg.Dashboard_Addr mgrcfg.Dashboard_Key = mgr.cfg.Dashboard_Key mgrcfg.Workdir = mgr.workDir @@ -340,3 +346,28 @@ func (mgr *Manager) writeConfig(info *BuildInfo) (string, error) { } return configFile, nil } + +func (mgr *Manager) uploadBuild(info *BuildInfo) error { + if mgr.dash == nil { + return nil + } + + syzkallerCommit, _ := readTag(filepath.FromSlash("syzkaller/current/tag")) + if syzkallerCommit == "" { + return fmt.Errorf("no tag in syzkaller/current/tag") + } + kernelConfig, err := ioutil.ReadFile(filepath.Join(mgr.currentDir, "kernel.config")) + if err != nil { + return fmt.Errorf("failed to read kernel.config: %v", err) + } + build := &dashapi.Build{ + ID: info.Tag, + SyzkallerCommit: syzkallerCommit, + CompilerID: info.CompilerID, + KernelRepo: info.KernelRepo, + KernelBranch: info.KernelBranch, + KernelCommit: info.KernelCommit, + KernelConfig: kernelConfig, + } + return mgr.dash.UploadBuild(build) +} diff --git a/syz-ci/syz-ci.go b/syz-ci/syz-ci.go index 48e0d0290..6d51b5240 100644 --- a/syz-ci/syz-ci.go +++ b/syz-ci/syz-ci.go @@ -54,10 +54,10 @@ import ( "os" "sync" + "github.com/google/syzkaller/dashboard/dashapi" "github.com/google/syzkaller/pkg/config" . "github.com/google/syzkaller/pkg/log" "github.com/google/syzkaller/pkg/osutil" - "github.com/google/syzkaller/syz-dash/dashboard" "github.com/google/syzkaller/syz-manager/mgrconfig" ) @@ -114,12 +114,9 @@ func main() { close(stop) }() - var dash *dashboard.Dashboard + var dash *dashapi.Dashboard if cfg.Dashboard_Addr != "" { - dash, err = dashboard.New(cfg.Name, cfg.Dashboard_Addr, cfg.Dashboard_Key) - if err != nil { - Fatalf("failed to create dashboard client: %v", err) - } + dash = dashapi.New(cfg.Name, cfg.Dashboard_Addr, cfg.Dashboard_Key) } var wg sync.WaitGroup diff --git a/syz-manager/mgrconfig/mgrconfig.go b/syz-manager/mgrconfig/mgrconfig.go index 29644eece..1ed17719d 100644 --- a/syz-manager/mgrconfig/mgrconfig.go +++ b/syz-manager/mgrconfig/mgrconfig.go @@ -31,8 +31,9 @@ type Config struct { Hub_Addr string Hub_Key string - Dashboard_Addr string - Dashboard_Key string + Dashboard_Client string + Dashboard_Addr string + Dashboard_Key string Syzkaller string // path to syzkaller checkout (syz-manager will look for binaries in bin subdir) Procs int // number of parallel processes inside of every VM @@ -134,8 +135,10 @@ func load(data []byte, filename string) (*Config, map[int]bool, error) { if cfg.Hub_Client != "" && (cfg.Name == "" || cfg.Hub_Addr == "" || cfg.Hub_Key == "") { return nil, nil, fmt.Errorf("hub_client is set, but name/hub_addr/hub_key is empty") } - if cfg.Dashboard_Addr != "" && (cfg.Name == "" || cfg.Dashboard_Key == "") { - return nil, nil, fmt.Errorf("dashboard_addr is set, but name/dashboard_key is empty") + if cfg.Dashboard_Client != "" && (cfg.Name == "" || + cfg.Dashboard_Addr == "" || + cfg.Dashboard_Key == "") { + return nil, nil, fmt.Errorf("dashboard_client is set, but name/dashboard_addr/dashboard_key is empty") } return cfg, syscalls, nil |
