Skip to content

Commit

Permalink
Check Sscanf ret val, and fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
mt-inside committed Sep 19, 2024
1 parent f4cf884 commit 1fbea6f
Showing 1 changed file with 66 additions and 47 deletions.
113 changes: 66 additions & 47 deletions pkg/data/enrichments/cpu-model.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,76 +70,95 @@ func EnrichCpuModel(ctx context.Context, log logr.Logger, name string, vals chan
// https://www.intel.co.uk/content/www/uk/en/processors/processor-numbers-data-center.html
if strings.Contains(name, "Platinum") || strings.Contains(name, "Gold") || strings.Contains(name, "Silver") || strings.Contains(name, "Bronze") {
// "Intel Xeon Scalable Processors"
var series, series_num, generation, sku, flags string
fmt.Sscanf(name, "Intel(R) Xeon(R) %s %1s%1s%2s%1s CPU", &series, &series_num, &generation, &sku, &flags)

vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(flags), "Flags")

nGen, err := strconv.Atoi(generation)
var series, series_num, generation, sku string
_, err := fmt.Sscanf(name, "Intel(R) Xeon(R) %s %1s%1s%2s CPU", &series, &series_num, &generation, &sku)
if err != nil {
vals <- trie.Insert(trie.Error(err), "Microarchitecture")
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(intelScalableXeonGens[nGen]), "Microarchitecture")
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
// TODO: flags. Are 0+ of them, dunno how to scan
//vals <- trie.Insert(trie.Some(flags), "Flags")

nGen, err := strconv.Atoi(generation)
if err != nil {
vals <- trie.Insert(trie.Error(err), "Microarchitecture")
} else {
vals <- trie.Insert(trie.Some(intelScalableXeonGens[nGen]), "Microarchitecture")
}
}
} else {
// "Intel Xeon Processors"
var series, ways, socket, sku, generation string
fmt.Sscanf(name, "Intel(R) Xeon(R) CPU %2s-%1s%1s%2s v%s", &series, &ways, &socket, &sku, &generation)

_, err := fmt.Sscanf(name, "Intel(R) Xeon(R) CPU %2s-%1s%1s%2s v%s", &series, &ways, &socket, &sku, &generation)
if err != nil {
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(ways), "Ways")
vals <- trie.Insert(trie.Some(socket), "Socket")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")

nGen, err := strconv.Atoi(generation)
if err != nil {
vals <- trie.Insert(trie.Error(err), "Microarchitecture")
} else {
vals <- trie.Insert(trie.Some(intelXeonGens[nGen+1]), "Microarchitecture")
}
}
}
} else if strings.Contains(name, "Core(TM)") {
var series, sku, generation, flags string
_, err := fmt.Sscanf(name, "Intel(R) Core(TM) %2s-%1s%3s%1s", &series, &generation, &sku, &flags)
if err != nil {
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(ways), "Ways")
vals <- trie.Insert(trie.Some(socket), "Socket")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(flags), "Flags")

nGen, err := strconv.Atoi(generation)
if err != nil {
vals <- trie.Insert(trie.Error(err), "Microarchitecture")
} else {
vals <- trie.Insert(trie.Some(intelXeonGens[nGen+1]), "Microarchitecture")
vals <- trie.Insert(trie.Some(intelCoreGens[nGen]), "Microarchitecture")
}
}
} else if strings.Contains(name, "Core(TM)") {
var series, sku, generation, flags string
fmt.Sscanf(name, "Intel(R) Core(TM) %2s-%1s%3s%1s", &series, &generation, &sku, &flags)

vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(flags), "Flags")

nGen, err := strconv.Atoi(generation)
} else if strings.Contains(name, "EPYC") {
var series, sku, generation string
_, err := fmt.Sscanf(name, "AMD EPYC %1s%2s%1s", &series, &sku, &generation)
if err != nil {
vals <- trie.Insert(trie.Error(err), "Microarchitecture")
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(intelCoreGens[nGen]), "Microarchitecture")
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(amdEpycGens[generation]), "Microarchitecture")
}
} else if strings.Contains(name, "EPYC") {
var series, sku, generation string
fmt.Sscanf(name, "AMD EPYC %1s%2s%1s", &series, &sku, &generation)

vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(amdEpycGens[generation]), "Microarchitecture")
} else if strings.Contains(name, "Ryzen") {
var series, sku, generation string
fmt.Sscanf(name, "AMD Ryzen %s %1s%3s", &series, &generation, &sku)

vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(amdRyzenGens[generation]), "Microarchitecture")
_, err := fmt.Sscanf(name, "AMD Ryzen %s %1s%3s", &series, &generation, &sku)
if err != nil {
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(sku), "SKU")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(amdRyzenGens[generation]), "Microarchitecture")
}
} else if strings.Contains(name, "Apple") {
var series, generation string
fmt.Sscanf(name, "Apple M%1s %s", &generation, &series)

vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(appleSiliconGens[generation]), "Microarchitecture")
_, err := fmt.Sscanf(name, "Apple M%1s %s", &generation, &series)
if err != nil {
vals <- trie.Insert(trie.Error(err))
} else {
vals <- trie.Insert(trie.Some(series), "Series")
vals <- trie.Insert(trie.Some(generation), "Generation")
vals <- trie.Insert(trie.Some(appleSiliconGens[generation]), "Microarchitecture")
}
}
}

Expand Down

0 comments on commit 1fbea6f

Please sign in to comment.