dash

package
v0.0.0-...-4e6bda9 Latest Latest
Warning

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

Go to latest
Published: May 20, 2018 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BugStatusFixed = 1000 + iota
	BugStatusInvalid
	BugStatusDup
)
View Source
const (
	ReproLevelNone = dashapi.ReproLevelNone
	ReproLevelSyz  = dashapi.ReproLevelSyz
	ReproLevelC    = dashapi.ReproLevelC
)
View Source
const (
	BugStatusOpen = iota
)
View Source
const (
	MaxStringLen = 1024
)

Variables

This section is empty.

Functions

This section is empty.

Types

type APIHandler

type APIHandler func(c context.Context, ns string, r *http.Request) (interface{}, error)

type Bug

type Bug struct {
	Namespace  string
	Seq        int64 // sequences of the bug with the same title
	Title      string
	Status     int
	DupOf      string
	NumCrashes int64
	NumRepro   int64
	ReproLevel dashapi.ReproLevel
	HasReport  bool
	FirstTime  time.Time
	LastTime   time.Time
	Closed     time.Time
	Reporting  []BugReporting
	Commits    []string
	PatchedOn  []string
}

type BugReporting

type BugReporting struct {
	Name       string // refers to Reporting.Name
	ID         string // unique ID per BUG/BugReporting used in commucation with external systems
	ExtID      string // arbitrary reporting ID that is passed back in dashapi.BugReport
	Link       string
	CC         string // additional emails added to CC list (|-delimited list)
	ReproLevel dashapi.ReproLevel
	Reported   time.Time
	Closed     time.Time
}

type Build

type Build struct {
	Namespace       string
	Manager         string
	ID              string // unique ID generated by syz-ci
	OS              string
	Arch            string
	VMArch          string
	SyzkallerCommit string
	CompilerID      string
	KernelRepo      string
	KernelBranch    string
	KernelCommit    string
	KernelConfig    int64 // reference to KernelConfig text entity
}

type Config

type Config struct {
	// Per-namespace clients that act only on a particular namespace.
	Clients map[string]string
	// A unique key for hashing, can be anything.
	Key string
	// Mail bugs without reports (e.g. "no output").
	MailWithoutReport bool
	// How long should we wait for a C repro before reporting a bug.
	WaitForRepro time.Duration
	// Reporting config.
	Reporting []Reporting
}

Per-namespace config.

func (*Config) ReportingByName

func (cfg *Config) ReportingByName(name string) *Reporting

type Crash

type Crash struct {
	Manager     string
	BuildID     string
	Time        time.Time
	Maintainers []string `datastore:",noindex"`
	Log         int64    // reference to CrashLog text entity
	Report      int64    // reference to CrashReport text entity
	ReproOpts   []byte   `datastore:",noindex"`
	ReproSyz    int64    // reference to ReproSyz text entity
	ReproC      int64    // reference to ReproC text entity
	ReportLen   int
}

type EmailConfig

type EmailConfig struct {
	Email           string
	Moderation      bool
	MailMaintainers bool
}

func (*EmailConfig) NeedMaintainers

func (cfg *EmailConfig) NeedMaintainers() bool

func (*EmailConfig) Type

func (cfg *EmailConfig) Type() string

func (*EmailConfig) Validate

func (cfg *EmailConfig) Validate() error

type ExternalConfig

type ExternalConfig struct {
	ID string
}

func (*ExternalConfig) Type

func (cfg *ExternalConfig) Type() string

type GlobalConfig

type GlobalConfig struct {
	// Email suffix of authorized users (e.g. "@foobar.com").
	AuthDomain string
	// Global API clients that work across namespaces (e.g. external reporting).
	Clients map[string]string
	// Per-namespace config.
	// Namespaces are a mechanism to separate groups of different kernels.
	// E.g. Debian 4.4 kernels and Ubuntu 4.9 kernels.
	// Each namespace has own reporting config, own API clients
	// and bugs are not merged across namespaces.
	Namespaces map[string]*Config
}

There are multiple configurable aspects of the app (namespaces, reporting, API clients, etc). The exact config is stored in a global config variable and is read-only. Also see config_stub.go.

type JSONHandler

type JSONHandler func(c context.Context, r *http.Request) (interface{}, error)

type Reporting

type Reporting struct {
	// A unique name (the app does not care about exact contents).
	Name string
	// See ReportingStatus below.
	Status ReportingStatus
	// How many new bugs report per day.
	DailyLimit int
	// Type of reporting and its configuration.
	// The app has one built-in type, EmailConfig, which reports bugs by email.
	// And ExternalConfig which can be used to attach any external reporting system (e.g. Bugzilla).
	Config ReportingType
}

One reporting stage.

type ReportingState

type ReportingState struct {
	Entries []ReportingStateEntry
}

ReportingState holds dynamic info associated with reporting.

type ReportingStateEntry

type ReportingStateEntry struct {
	Namespace string
	Name      string
	// Current reporting quota consumption.
	Sent int
	Date int
}

type ReportingStatus

type ReportingStatus int
const (
	// Send reports to this reporting stage.
	ReportingActive ReportingStatus = iota
	// Don't send anything to this reporting, but don't skip it as well.
	ReportingSuspended
	// Skip this reporting.
	ReportingDisabled
)

type ReportingType

type ReportingType interface {
	// Type returns a unique string that identifies this reporting type (e.g. "email").
	Type() string
	// NeedMaintainers says if this reporting requires non-empty maintainers list.
	NeedMaintainers() bool
	// Validate validates the current object, this is called only during init.
	Validate() error
}

type Text

type Text struct {
	Namespace string
	Text      []byte `datastore:",noindex"` // gzip-compressed text
}

Text holds text blobs (crash logs, reports, reproducers, etc).

Jump to

Keyboard shortcuts

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