dashapi

package
v0.0.0-...-5d42abc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package dashapi defines data structures used in dashboard communication and provides client interface.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BugReport

type BugReport struct {
	Namespace         string
	Config            []byte
	ID                string
	JobID             string
	ExtID             string // arbitrary reporting ID forwarded from BugUpdate.ExtID
	First             bool   // Set for first report for this bug.
	Title             string
	Maintainers       []string
	CC                []string // additional CC emails
	OS                string
	Arch              string
	VMArch            string
	CompilerID        string
	KernelRepo        string
	KernelRepoAlias   string
	KernelBranch      string
	KernelCommit      string
	KernelCommitTitle string
	KernelCommitDate  time.Time
	KernelConfig      []byte
	KernelConfigLink  string
	Log               []byte
	LogLink           string
	Report            []byte
	ReportLink        string
	ReproC            []byte
	ReproCLink        string
	ReproSyz          []byte
	ReproSyzLink      string
	CrashID           int64 // returned back in BugUpdate
	NumCrashes        int64
	HappenedOn        []string // list of kernel repo aliases

	CrashTitle string // job execution crash title
	Error      []byte // job execution error
	ErrorLink  string
	Patch      []byte // testing job patch
	PatchLink  string
}

BugReport describes a single bug. Used by dashboard external reporting.

type BugStatus

type BugStatus int
const (
	BugStatusOpen BugStatus = iota
	BugStatusUpstream
	BugStatusInvalid
	BugStatusDup
	BugStatusUpdate // aux info update (i.e. ExtID/Link/CC)
)

type BugUpdate

type BugUpdate struct {
	ID         string
	ExtID      string
	Link       string
	Status     BugStatus
	ReproLevel ReproLevel
	DupOf      string
	FixCommits []string // Titles of commits that fix this bug.
	CC         []string // Additional emails to add to CC list in future emails.
	CrashID    int64
}

type BugUpdateReply

type BugUpdateReply struct {
	// Bug update can fail for 2 reason:
	//  - update does not pass logical validataion, in this case OK=false
	//  - internal/datastore error, in this case Error=true
	OK    bool
	Error bool
	Text  string
}

type Build

type Build struct {
	Manager           string
	ID                string
	OS                string
	Arch              string
	VMArch            string
	SyzkallerCommit   string
	CompilerID        string
	KernelRepo        string
	KernelBranch      string
	KernelCommit      string
	KernelCommitTitle string
	KernelCommitDate  time.Time
	KernelConfig      []byte
	Commits           []string // see BuilderPoll
	FixCommits        []FixCommit
}

Build describes all aspects of a kernel build.

type BuildErrorReq

type BuildErrorReq struct {
	Build Build
	Crash Crash
}

type BuilderPollReq

type BuilderPollReq struct {
	Manager string
}

type BuilderPollResp

type BuilderPollResp struct {
	PendingCommits []string
	ReportEmail    string
}

type Crash

type Crash struct {
	BuildID     string // refers to Build.ID
	Title       string
	Corrupted   bool // report is corrupted (corrupted title, no stacks, etc)
	Maintainers []string
	Log         []byte
	Report      []byte
	// The following is optional and is filled only after repro.
	ReproOpts []byte
	ReproSyz  []byte
	ReproC    []byte
}

Crash describes a single kernel crash (potentially with repro).

type CrashID

type CrashID struct {
	BuildID   string
	Title     string
	Corrupted bool
}

CrashID is a short summary of a crash for repro queries.

type Dashboard

type Dashboard struct {
	Client string
	Addr   string
	Key    string
	// contains filtered or unexported fields
}

func New

func New(client, addr, key string) *Dashboard

func NewCustom

func NewCustom(client, addr, key string, ctor RequestCtor, doer RequestDoer,
	logger RequestLogger, errorHandler func(error)) *Dashboard

func (*Dashboard) BuilderPoll

func (dash *Dashboard) BuilderPoll(manager string) (*BuilderPollResp, error)

func (*Dashboard) JobDone

func (dash *Dashboard) JobDone(req *JobDoneReq) error

func (*Dashboard) JobPoll

func (dash *Dashboard) JobPoll(managers []string) (*JobPollResp, error)

func (*Dashboard) LogError

func (dash *Dashboard) LogError(name, msg string, args ...interface{})

Centralized logging on dashboard.

func (*Dashboard) NeedRepro

func (dash *Dashboard) NeedRepro(crash *CrashID) (bool, error)

NeedRepro checks if dashboard needs a repro for this crash or not.

func (*Dashboard) Query

func (dash *Dashboard) Query(method string, req, reply interface{}) error

func (*Dashboard) ReportBuildError

func (dash *Dashboard) ReportBuildError(req *BuildErrorReq) error

func (*Dashboard) ReportCrash

func (dash *Dashboard) ReportCrash(crash *Crash) (*ReportCrashResp, error)

func (*Dashboard) ReportFailedRepro

func (dash *Dashboard) ReportFailedRepro(crash *CrashID) error

ReportFailedRepro notifies dashboard about a failed repro attempt for the crash.

func (*Dashboard) ReportingPollBugs

func (dash *Dashboard) ReportingPollBugs(typ string) (*PollBugsResponse, error)

func (*Dashboard) ReportingPollClosed

func (dash *Dashboard) ReportingPollClosed(ids []string) ([]string, error)

func (*Dashboard) ReportingUpdate

func (dash *Dashboard) ReportingUpdate(upd *BugUpdate) (*BugUpdateReply, error)

func (*Dashboard) UploadBuild

func (dash *Dashboard) UploadBuild(build *Build) error

func (*Dashboard) UploadManagerStats

func (dash *Dashboard) UploadManagerStats(req *ManagerStatsReq) error

type FixCommit

type FixCommit struct {
	Title string
	BugID string
}

type JobDoneReq

type JobDoneReq struct {
	ID          string
	Build       Build
	Error       []byte
	CrashTitle  string
	CrashLog    []byte
	CrashReport []byte
}

type JobPollReq

type JobPollReq struct {
	Managers []string
}

type JobPollResp

type JobPollResp struct {
	ID              string
	Manager         string
	KernelRepo      string
	KernelBranch    string
	KernelConfig    []byte
	SyzkallerCommit string
	Patch           []byte
	ReproOpts       []byte
	ReproSyz        []byte
	ReproC          []byte
}

type LogEntry

type LogEntry struct {
	Name string
	Text string
}

type ManagerStatsReq

type ManagerStatsReq struct {
	Name string
	Addr string

	// Current level:
	UpTime time.Duration
	Corpus uint64
	Cover  uint64

	// Delta since last sync:
	FuzzingTime time.Duration
	Crashes     uint64
	Execs       uint64
}

type NeedReproResp

type NeedReproResp struct {
	NeedRepro bool
}

type PollBugsRequest

type PollBugsRequest struct {
	Type string
}

type PollBugsResponse

type PollBugsResponse struct {
	Reports []*BugReport
}

type PollClosedRequest

type PollClosedRequest struct {
	IDs []string
}

type PollClosedResponse

type PollClosedResponse struct {
	IDs []string
}

type ReportCrashResp

type ReportCrashResp struct {
	NeedRepro bool
}

type ReproLevel

type ReproLevel int
const (
	ReproLevelNone ReproLevel = iota
	ReproLevelSyz
	ReproLevelC
)

type RequestCtor

type RequestCtor func(method, url string, body io.Reader) (*http.Request, error)

type RequestDoer

type RequestDoer func(req *http.Request) (*http.Response, error)

type RequestLogger

type RequestLogger func(msg string, args ...interface{})

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL