[machineserver] Fix for crash
Change-Id: I485b9f8ae137de7fb8c99d15394c7aa05b50e8ca
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/560800
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Erik Rose <erikrose@google.com>
diff --git a/go/taskname/task_name_schema_gen.go b/go/taskname/task_name_schema_gen.go
index 736cdf5..7bbb62b 100644
--- a/go/taskname/task_name_schema_gen.go
+++ b/go/taskname/task_name_schema_gen.go
@@ -4,6 +4,7 @@
var SCHEMA_FROM_GIT = map[string]*Schema{
"BazelBuild": {Keys: []string{"label", "config", "host"}, OptionalKeys: []string{"cross"}, RecurseRoles: []string(nil)},
+ "BazelTest": {Keys: []string{"task_driver", "config", "host"}, OptionalKeys: []string{"cross"}, RecurseRoles: []string(nil)},
"Build": {Keys: []string{"os", "compiler", "target_arch", "configuration"}, OptionalKeys: []string{"extra_config"}, RecurseRoles: []string(nil)},
"BuildStats": {Keys: []string{"os", "compiler", "target_arch", "configuration"}, OptionalKeys: []string{"extra_config"}, RecurseRoles: []string(nil)},
"Canary": {Keys: []string{"project"}, OptionalKeys: []string(nil), RecurseRoles: []string(nil)},
diff --git a/machine/go/machine/machine.go b/machine/go/machine/machine.go
index 42660d1..bda8745 100644
--- a/machine/go/machine/machine.go
+++ b/machine/go/machine/machine.go
@@ -24,7 +24,7 @@
}
func (s SwarmingDimensions) getDimensionValueOrEmptyString(key string) string {
- if values, ok := s[key]; ok {
+ if values, ok := s[key]; ok && len(values) > 0 {
return values[len(values)-1]
}
return ""
diff --git a/machine/go/machine/machine_test.go b/machine/go/machine/machine_test.go
index c13ed77..dcb4094 100644
--- a/machine/go/machine/machine_test.go
+++ b/machine/go/machine/machine_test.go
@@ -69,6 +69,34 @@
assert.Equal(t, emptyTags, SwarmingDimensions{}.AsMetricsTags())
}
+func TestAsMetricsTags_NilSlices_ReturnsEmptyTags(t *testing.T) {
+ unittest.SmallTest(t)
+ emptyTags := map[string]string{
+ DimID: "",
+ DimOS: "",
+ DimDeviceType: "",
+ }
+ assert.Equal(t, emptyTags, SwarmingDimensions{
+ DimID: nil,
+ DimOS: nil,
+ DimDeviceType: nil,
+ }.AsMetricsTags())
+}
+
+func TestAsMetricsTags_ZeroLengthSlices_ReturnsEmptyTags(t *testing.T) {
+ unittest.SmallTest(t)
+ emptyTags := map[string]string{
+ DimID: "",
+ DimOS: "",
+ DimDeviceType: "",
+ }
+ assert.Equal(t, emptyTags, SwarmingDimensions{
+ DimID: {},
+ DimOS: {},
+ DimDeviceType: {},
+ }.AsMetricsTags())
+}
+
func TestAsMetricsTags_MultipleValues_ReturnsTagsWithMostSpecificValues(t *testing.T) {
unittest.SmallTest(t)
expected := map[string]string{