in config/config.go [104:162]
func validateAllUnique(c *configpb.Configuration) error {
var mErr error
if c == nil {
return multierror.Append(mErr, errors.New("got an empty config.Configuration"))
}
var tgNames []string
for _, tg := range c.GetTestGroups() {
if err := validateName(tg.GetName()); err != nil {
mErr = multierror.Append(mErr, &ValidationError{tg.GetName(), "TestGroup", err.Error()})
}
tgNames = append(tgNames, tg.GetName())
}
// Test Group names must be unique.
if err := validateUnique(tgNames, "TestGroup"); err != nil {
mErr = multierror.Append(mErr, err)
}
var dashNames []string
for _, dash := range c.GetDashboards() {
if err := validateName(dash.Name); err != nil {
mErr = multierror.Append(mErr, &ValidationError{dash.GetName(), "Dashboard", err.Error()})
}
dashNames = append(dashNames, dash.Name)
var tabNames []string
for _, tab := range dash.GetDashboardTab() {
if err := validateName(tab.Name); err != nil {
mErr = multierror.Append(mErr, &ValidationError{tab.Name, "DashboardTab", err.Error()})
}
tabNames = append(tabNames, tab.Name)
}
// Dashboard Tab names must be unique within a Dashboard.
if err := validateUnique(tabNames, "DashboardTab"); err != nil {
mErr = multierror.Append(mErr, err)
}
}
// Dashboard names must be unique within Dashboards.
if err := validateUnique(dashNames, "Dashboard"); err != nil {
mErr = multierror.Append(mErr, err)
}
var dgNames []string
for _, dg := range c.GetDashboardGroups() {
if err := validateName(dg.Name); err != nil {
mErr = multierror.Append(mErr, &ValidationError{dg.Name, "DashboardGroup", err.Error()})
}
dgNames = append(dgNames, dg.Name)
}
// Dashboard Group names must be unique within Dashboard Groups.
if err := validateUnique(dgNames, "DashboardGroup"); err != nil {
mErr = multierror.Append(mErr, err)
}
// Names must also be unique within DashboardGroups AND Dashbaords.
if err := validateUnique(append(dashNames, dgNames...), "Dashboard/DashboardGroup"); err != nil {
mErr = multierror.Append(mErr, err)
}
return mErr
}