aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-06-30 16:02:51 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-06-30 16:04:30 +0200
commita8b32c55ab1a8021e9a7baabbffde7f1f711083f (patch)
treec83882e6d908eaff7cb4715eef7aa11796214751
parent1b8e07333a489139526618fbbd8075470f16f25e (diff)
syz-ci: switch to the new dashboard
Switch to the new dashboard and start uploading build info.
-rw-r--r--syz-ci/manager.go37
-rw-r--r--syz-ci/syz-ci.go9
-rw-r--r--syz-manager/mgrconfig/mgrconfig.go11
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