Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: go/src/infra/monitoring/analyzer/analyzer_test.go

Issue 1125263004: dispatcher: fix test result parsing, build ranges for failure alerts, other fixes (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: added comments, some bounds/type assertion checks Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: go/src/infra/monitoring/analyzer/analyzer_test.go
diff --git a/go/src/infra/monitoring/analyzer/analyzer_test.go b/go/src/infra/monitoring/analyzer/analyzer_test.go
index bea8fa2f640ac4224b7e578cd07146415c5ac030..c0e919d480f289c617587eadf29cd80ad3a4165b 100644
--- a/go/src/infra/monitoring/analyzer/analyzer_test.go
+++ b/go/src/infra/monitoring/analyzer/analyzer_test.go
@@ -101,7 +101,7 @@ func TestMasterAlerts(t *testing.T) {
},
}
- a := New(&mockClient{}, 10)
+ a := New(&mockClient{}, 0, 10)
for _, test := range tests {
a.now = fakeNow(test.t)
@@ -124,12 +124,13 @@ func TestBuilderAlerts(t *testing.T) {
}{
{
name: "Empty",
+ url: "https://build.chromium.org/p/fake.master/json",
wantBuilders: []messages.Alert{},
wantMasters: []messages.Alert{},
},
{
name: "No Alerts",
- url: "http://fake.master",
+ url: "https://build.chromium.org/p/fake.master/json",
be: messages.BuildExtract{
CreatedTimestamp: messages.EpochTime(100),
},
@@ -139,7 +140,7 @@ func TestBuilderAlerts(t *testing.T) {
},
}
- a := New(&mockClient{}, 10)
+ a := New(&mockClient{}, 0, 10)
for _, test := range tests {
a.now = fakeNow(test.t)
@@ -213,10 +214,11 @@ func TestLittleBBuilderAlerts(t *testing.T) {
time: time.Unix(0, 0).Add(4 * time.Hour),
wantAlerts: []messages.Alert{
{
- Key: "fake.master.fake.builder.hung",
- Title: "fake.master.fake.builder is hung in step fake_step.",
- Time: messages.TimeToEpochTime(time.Unix(0, 0).Add(4 * time.Hour)),
- Body: "fake.master.fake.builder has been building for 3h59m50s (last step update 1970-01-01 00:00:10 +0000 UTC), past the alerting threshold of 3h0m0s",
+ Key: "fake.master.fake.builder.hung",
+ Title: "fake.master.fake.builder is hung in step fake_step.",
+ Time: messages.TimeToEpochTime(time.Unix(0, 0).Add(4 * time.Hour)),
+ Body: "fake.master.fake.builder has been building for 3h59m50s (last step update 1970-01-01 00:00:10 +0000 UTC), past the alerting threshold of 3h0m0s",
+ Severity: 1,
Links: []messages.Link{
{Title: "Builder", Href: "https://build.chromium.org/p/fake.master/builders/fake.builder"},
{Title: "Last build", Href: "https://build.chromium.org/p/fake.master/builders/fake.builder/builds/3"},
@@ -228,7 +230,7 @@ func TestLittleBBuilderAlerts(t *testing.T) {
},
}
- a := New(nil, 10)
+ a := New(nil, 0, 10)
for _, test := range tests {
a.now = fakeNow(test.time)
@@ -302,10 +304,10 @@ func TestReasonsForFailure(t *testing.T) {
},
},
testResults: &messages.TestResults{
- Tests: map[string]messages.TestResult{
- "test a": messages.TestResult{
- Expected: "PASS",
- Actual: "FAIL",
+ Tests: map[string]interface{}{
+ "test a": map[string]interface{}{
+ "expected": "PASS",
+ "actual": "FAIL",
},
},
},
@@ -314,7 +316,7 @@ func TestReasonsForFailure(t *testing.T) {
}
mc := &mockClient{}
- a := New(mc, 10)
+ a := New(mc, 0, 10)
for _, test := range tests {
mc.testResults = test.testResults
@@ -390,7 +392,7 @@ func TestStepFailures(t *testing.T) {
}
mc := &mockClient{}
- a := New(mc, 10)
+ a := New(mc, 0, 10)
for _, test := range tests {
mc.build = test.b
@@ -405,6 +407,79 @@ func TestStepFailures(t *testing.T) {
}
}
+func TestStepFailureAlerts(t *testing.T) {
+ tests := []struct {
+ name string
+ failures []stepFailure
+ testResults messages.TestResults
+ alerts []messages.Alert
+ err error
+ }{
+ {
+ name: "empty",
+ alerts: []messages.Alert{},
+ },
+ {
+ name: "single failure",
+ failures: []stepFailure{
+ {
+ masterName: "fake.master",
+ builderName: "fake.builder",
+ build: messages.Builds{
+ Number: 2,
+ },
+ step: messages.Steps{
+ Name: "steps",
+ },
+ },
+ {
+ masterName: "fake.master",
+ builderName: "fake.builder",
+ build: messages.Builds{
+ Number: 42,
+ },
+ step: messages.Steps{
+ Name: "fake_tests",
+ },
+ },
+ },
+ testResults: messages.TestResults{},
+ alerts: []messages.Alert{
+ {
+ Key: "fake.master.fake.builder.fake_tests.",
+ Title: "Builder step failure: fake.master.fake.builder",
+ Type: "buildfailure",
+ Extension: messages.BuildFailure{
+ Builders: []messages.AlertedBuilder{
+ {
+ Name: "fake.builder",
+ URL: "https://build.chromium.org/p/fake.master/builders/fake.builder",
+ FirstFailure: 42,
+ LatestFailure: 42,
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+
+ mc := &mockClient{}
+ a := New(mc, 0, 10)
+ a.now = fakeNow(time.Unix(0, 0))
+
+ for _, test := range tests {
+ mc.testResults = &test.testResults
+ alerts, err := a.stepFailureAlerts(test.failures)
+ if !reflect.DeepEqual(alerts, test.alerts) {
+ t.Errorf("%s failed. Got:\n\t%+v, want:\n\t%+v", test.name, alerts, test.alerts)
+ }
+ if !reflect.DeepEqual(err, test.err) {
+ t.Errorf("%s failed. Got %+v, want %+v", test.name, err, test.err)
+ }
+ }
+}
+
func TestLatestBuildStep(t *testing.T) {
tests := []struct {
name string
@@ -524,7 +599,7 @@ func TestLatestBuildStep(t *testing.T) {
},
}
- a := New(&mockClient{}, 10)
+ a := New(&mockClient{}, 0, 10)
a.now = fakeNow(time.Unix(0, 0))
for _, test := range tests {
gotStep, gotUpdate, gotErr := a.latestBuildStep(&test.b)

Powered by Google App Engine
This is Rietveld 408576698