Documentation ¶
Index ¶
- Constants
- type Alert
- type AlertType
- type AlertedBuilder
- type Alerts
- type AlertsSummary
- type Build
- type BuildFailure
- type BuildIdentifierByNumber
- type BuildStep
- type BuilderGroupLocation
- type Change
- type CrbugAuthor
- type CrbugItem
- type CrbugSearchResults
- type Culprit
- type EpochTime
- type Files
- type FinditResultV2
- type GerritChange
- type GitilesCommit
- type Link
- type Reason
- type ReasonRaw
- type RegressionRange
- type RevisionSummary
- type RevisionWithFinditResult
- type Severity
- type Step
- type SuspectCL
Constants ¶
const ( // GoogleTimeZone is the timezone used by the services whose // messages this package parses. GoogleTimeZone = "UTC" // AlertHungBuilder indicates that a builder has been executing a step for too long. AlertHungBuilder = "hung-builder" // AlertOfflineBuilder indicates that we have no recent updates from the builder. AlertOfflineBuilder = "offline-builder" // AlertIdleBuilder indicates that a builder has not executed any builds recently // even though it has requests queued up. AlertIdleBuilder = "idle-builder" // AlertInfraFailure indicates that a builder step failed due to infrastructure // problems rather than errors in the code it tried to build or execute. AlertInfraFailure = "infra-failure" // AlertBuildFailure indicates that one of the build steps failed, most likely // due to the patch it's building/running with. AlertBuildFailure = "build-failure" // AlertTestFailure indicates that one of the test steps failed AlertTestFailure = "test-failure" )
const ( // ResultOK is a step result which is deemed as ok. For some reason, 1 is not // a failure. Copied from legacy code :/ ResultOK = float64(1) // ResultInfraFailure is a step result which is deemed an infra failure. ResultInfraFailure = float64(4) )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Alert ¶
type Alert struct { Key string `json:"key"` Title string `json:"title"` Body string `json:"body"` Severity Severity `json:"severity"` // TODO: consider using an enum. Time EpochTime `json:"time"` StartTime EpochTime `json:"start_time"` Links []*Link `json:"links"` Tags []string `json:"tags"` // Type determines what kind of extension has been set on the Alert. Type AlertType `json:"type"` // Extension may take on different concrete types depending on the // code that generates the Alert. Extension interface{} `json:"extension"` }
Alert represents a condition that should be examined by a human.
type AlertType ¶
type AlertType string
AlertType is a type of alert; used for categorizing and grouping alerts on the SOM frontend.
type AlertedBuilder ¶
type AlertedBuilder struct { Name string `json:"name"` BuilderGroup string `json:"builder_group"` URL string `json:"url"` StartTime EpochTime `json:"start_time"` // FirstFailure is the build ID of first failure. FirstFailure int64 `json:"first_failure"` // LatestFailure is the build ID of latest failure. LatestFailure int64 `json:"latest_failure"` FirstFailureBuildNumber int64 `json:"first_failure_build_number"` LatestFailureBuildNumber int64 `json:"latest_failure_build_number"` FirstFailureURL string `json:"first_failure_url"` LatestFailureURL string `json:"latest_failure_url"` // LatestPassing is the build number of latest passing build LatestPassing int64 `json:"latest_passing"` LatestPassingRev *RevisionSummary `json:"last_passing_rev"` FirstFailingRev *RevisionSummary `json:"first_failing_rev"` Count int `json:"count"` Project string `json:"project"` Bucket string `json:"bucket"` FailingTestsTrunc string `json:"failing_tests_trunc"` NumFailingTests int64 `json:"num_failing_tests"` BuildStatus string `json:"build_status"` }
AlertedBuilder represents an individual builder.
type AlertsSummary ¶
type AlertsSummary struct { Alerts []*Alert `json:"alerts"` Resolved []*Alert `json:"resolved"` RevisionSummaries map[string]*RevisionSummary `json:"revision_summaries"` Timestamp EpochTime `json:"timestamp"` }
AlertsSummary is the top-level entity in alerts.json.
type Build ¶
type Build struct {
BuilderName string `json:"builderName"`
}
Build represents a buildbot build.
type BuildFailure ¶
type BuildFailure struct { TreeCloser bool `json:"tree_closer"` Builders []*AlertedBuilder `json:"builders"` StepAtFault *BuildStep `json:"-"` Reason *Reason `json:"reason"` RegressionRanges []*RegressionRange `json:"regression_ranges"` SuspectedCLs []*SuspectCL `json:"suspected_cls"` // Status of Findit analysis: RUNNING or FINISHED. FinditStatus string `json:"findit_status"` // Url to Findit result page. FinditURL string `json:"findit_url"` HasFindings bool `json:"has_findings"` IsFinished bool `json:"is_finished"` IsSupported bool `json:"is_supported"` // New struct for the culprits found by Findit. // Culprit is essentially the same as SuspectedCL, but it has more // gitiles information like host/project/ref to identify a commit, so // that it can support different LUCI projects easily. // When presents, SuspectedCLs should be empty. Culprits []*Culprit `json:"culprits"` }
BuildFailure is an Extension.
type BuildIdentifierByNumber ¶
type BuildIdentifierByNumber struct { Project string `json:"project"` Bucket string `json:"bucket"` Builder string `json:"builder"` Number int64 `json:"number"` }
BuildIdentifierByNumber is the alternative way to identify a LUCI build.
type BuildStep ¶
type BuildStep struct { BuilderGroup *BuilderGroupLocation Build *Build Step *Step }
BuildStep is a step which was run in a particular build. Useful for analyzing and generating additional data for extensions.
type BuilderGroupLocation ¶
BuilderGroupLocation is the location of a builder group. Currently it's just a URL.
func (*BuilderGroupLocation) Name ¶
func (m *BuilderGroupLocation) Name() string
Name is the name of the builder group; chromium, chromium.linux, etc.
type Change ¶
type Change struct { At string `json:"at"` Branch string `json:"branch"` Category string `json:"category"` Comments string `json:"comments"` Files []Files `json:"files"` Number int64 `json:"number"` Project string `json:"project"` Properties [][]interface{} `json:"properties"` Repository string `json:"repository"` Rev string `json:"rev"` Revision string `json:"revision"` Revlink string `json:"revlink"` When EpochTime `json:"when"` Who string `json:"who"` }
Change is an automatically generated type.
type CrbugAuthor ¶
type CrbugAuthor struct { HTMLLink string `json:"htmlLink"` Kind string `json:"kind"` Name string `json:"name"` }
CrbugAuthor is the author of an issue.
type CrbugItem ¶
type CrbugItem struct { Author CrbugAuthor `json:"author"` CanComment bool `json:"canComment"` CanEdit bool `json:"canEdit"` ID float64 `json:"id"` Kind string `json:"kind"` Labels []string `json:"labels"` ProjectID string `json:"projectId"` Published string `json:"published"` Starred bool `json:"starred"` Stars float64 `json:"stars"` State string `json:"state"` Status string `json:"status"` Summary string `json:"summary"` Title string `json:"title"` Updated string `json:"updated"` }
CrbugItem represents an issue in crbug.
type CrbugSearchResults ¶
type CrbugSearchResults struct { Items []CrbugItem `json:"items"` Kind string `json:"kind"` TotalResults float64 `json:"totalResults"` }
CrbugSearchResults conatains issue search results from crbug.
type Culprit ¶
type Culprit struct { Commit *GitilesCommit `json:"commit"` Revert *GerritChange `json:"revert"` Markdown string `json:"markdown"` }
Culprit is a CL which is suspected to have caused a failure.
type EpochTime ¶
type EpochTime float64
EpochTime is used for marshalling timestamps represented as doubles in json.
func TimeToEpochTime ¶
TimeToEpochTime converts a time.Time value to a EpochTime value.
type FinditResultV2 ¶
type FinditResultV2 struct { BuildID int64 `json:"build_id"` BuildAlternativeID *BuildIdentifierByNumber `json:"build_alternative_id"` StepName string `json:"step_name"` TestName string `json:"test_name"` LastPassedCommit *GitilesCommit `json:"last_passed_commit"` FirstFailedCommit *GitilesCommit `json:"first_failed_commit"` Culprits []*Culprit `json:"culprits"` IsFinished bool `json:"is_finished"` IsSupported bool `json:"is_supported"` IsFlakyTest bool `json:"is_flaky_test"` Markdown string `json:"markdown"` }
FinditResultV2 is the result of request to the findit server using buildbucket concepts. INTERNAL ONLY: For documentation of data format and fields, please check: https://docs.google.com/a/google.com/document/d/1u2O9iGroKKpL38SSK2E_krK29P5PeFI9fM_hgFkjGRc/edit?usp=sharing
type GerritChange ¶
type GerritChange struct { Host string `json:"host"` Project string `json:"project"` Change int64 `json:"change"` Patchset int64 `json:"patchset"` IsLanded bool `json:"is_landed"` }
GerritChange is information about a gerrit change.
type GitilesCommit ¶
type GitilesCommit struct { Host string `json:"host"` Project string `json:"project"` ID string `json:"id"` Ref string `json:"ref"` CommitPosition int `json:"commit_position"` }
GitilesCommit is information about a gitiles commit.
type Reason ¶
type Reason struct {
Raw ReasonRaw
}
Reason is the cause of a build extension failure.
func (*Reason) MarshalJSON ¶
MarshalJSON returns the json marshalled version of the Reason. Delegates to the raw reason.
type ReasonRaw ¶
type ReasonRaw interface { Signature() string Kind() string Severity() Severity Title([]*BuildStep) string }
ReasonRaw is the interface any results an analysis pipeline outputs must implement.
type RegressionRange ¶
type RegressionRange struct { Repo string `json:"repo"` URL string `json:"url"` // Revisions have the first and last revisions in the range, // And RevisionsWithResults have the revisions that are suspected. Revisions []string `json:"revisions"` Positions []string `json:"positions"` RevisionsWithResults []*RevisionWithFinditResult `json:"revisions_with_results"` Host string `json:"host"` }
RegressionRange identifies the bounds of the location of a regression.
type RevisionSummary ¶
type RevisionSummary struct { GitHash string `json:"git_hash"` Position int `json:"commit_position"` Branch string `json:"branch"` Link string `json:"link"` Description string `json:"description"` Author string `json:"author"` When EpochTime `json:"when"` // Host and Repo were added to differentiate chromium from chromeos revisions. Host string `json:"host"` Repo string `json:"repo"` }
RevisionSummary summarizes some information about a revision.
type RevisionWithFinditResult ¶
type RevisionWithFinditResult struct { Revision string `json:"revision"` // A flag to determine if Findit finds it to be a culprit to some failures. IsSuspect bool `json:"is_suspect"` // A score calculated by Findit based on historical triaging results of the same type of suspected CLs. // Only has value when IsSuspect is true. Confidence int `json:"confidence"` // Used to indicate how Findit finds this CL as a suspect. // Only has a [value when IsSuspect is true. AnalysisApproach string `json:"analysis_approach"` }
RevisionWithFinditResult saves information from Findit about a specific revision.
type Severity ¶
type Severity int
Severity is a sorted order of how severe an alert is.
const ( // TreeCloser is an alert which closes the tree. Highest priority alert. TreeCloser Severity = 0 // HungBuilder is an alert about a builder being hung (stuck running a particular step) HungBuilder Severity = 2 // InfraFailure is an infrastructure failure. It is higher severity than a reliable failure // because if there is an infrastructure failure, the test code is not even run, // and so we are losing data about if the tests pass or not. InfraFailure Severity = 3 // ReliableFailure is a failure which has shown up multiple times. ReliableFailure Severity = 4 // NewFailure is a failure which just started happening. NewFailure Severity = 5 // IdleBuilder is a builder which is "idle" (buildbot term) and which has above // a certain threshold of pending builds. IdleBuilder Severity = 6 // OfflineBuilder is a builder which is offline. OfflineBuilder Severity = 7 // NoSeverity is a placeholder Severity value which means nothing. Used by analysis // to indicate that it doesn't have a particular Severity to assign to an alert. NoSeverity Severity = 8 )
type Step ¶
type Step struct { Eta EpochTime `json:"eta"` Expectations [][]interface{} `json:"expectations"` Hidden bool `json:"hidden"` IsFinished bool `json:"isFinished"` IsStarted bool `json:"isStarted"` Logs [][]interface{} `json:"logs"` Links map[string]string `json:"urls"` Name string `json:"name"` // Results is a homogenous array. Use runtime introspection to // determine element types. Results []interface{} `json:"results"` StepNumber float64 `json:"step_number"` Text []string `json:"text"` Times []EpochTime `json:"times"` }
Step is an automatically generated type.
type SuspectCL ¶
type SuspectCL struct { RepoName string `json:"repo_name"` Revision string `json:"revision"` CommitPosition int64 `json:"commit_position,omitempty"` Confidence int `json:"confidence"` AnalysisApproach string `json:"analysis_approach"` RevertCLURL string `json:"revert_cl_url"` RevertCommitted bool `json:"revert_committed"` }
SuspectCL is a CL which is suspected to have caused a failure.