in benchmarks/benchmark/tools/model-load-benchmark/config/config.go [63:93]
func (r *Resource) UnmarshalYAML(unmarshal func(interface{}) error) error {
rawData := make(map[string]interface{})
if err := unmarshal(&rawData); err != nil {
return err
}
if baseVal, ok := rawData["base"].(string); ok {
base, unit := parseValueUnit(baseVal)
r.Base = base
r.Unit = unit
} else if baseVal, ok := rawData["base"].(int); ok {
r.Base = baseVal
}
if stepVal, ok := rawData["step"].(int); ok {
r.Step = stepVal
}
if maxVal, ok := rawData["max"].(string); ok {
max, maxUnit := parseValueUnit(maxVal)
if maxUnit != "" && maxUnit != r.Unit {
return fmt.Errorf("unit mismatch between base and max: base unit is %s, but max unit is %s", r.Unit, maxUnit)
}
r.Max = max
} else if maxVal, ok := rawData["max"].(int); ok {
r.Max = maxVal
}
r.setDefaults()
return nil
}