pkg/degradation-detector/setting/clionSettings.go (79 lines of code) (raw):
package setting
import (
"log/slog"
"net/http"
"strings"
detector "github.com/JetBrains/ij-perf-report-aggregator/pkg/degradation-detector"
)
func GenerateClionSettings(backendUrl string, client *http.Client) []detector.PerformanceSettings {
baseSettings := detector.PerformanceSettings{
Db: "perfintDev",
Table: "clion",
BaseSettings: detector.BaseSettings{
Branch: "master",
Machine: "intellij-linux-performance-aws-%",
},
}
branches := []string{"252", "253", "master"}
tests, err := detector.FetchAllTests(backendUrl, client, baseSettings)
settings := make([]detector.PerformanceSettings, 0, 100)
if err != nil {
slog.Error("error while getting tests", "error", err)
return settings
}
modes := []string{"split", ""}
for _, branch := range branches {
for _, mode := range modes {
for _, test := range tests {
metrics := getClionMetricFromTestName(test)
for _, metric := range metrics {
settings = append(settings, detector.PerformanceSettings{
Db: baseSettings.Db,
Table: baseSettings.Table,
Project: test,
Mode: mode,
BaseSettings: detector.BaseSettings{
Branch: branch,
Machine: baseSettings.Machine,
Metric: metric,
SlackSettings: detector.SlackSettings{
Channel: "cidr-radler-perf-tests",
ProductLink: "clion",
},
},
})
}
}
}
}
return settings
}
func getClionMetricFromTestName(test string) []string {
if strings.Contains(test, "/gotoDeclaration") {
return []string{
"clionGotoDeclaration",
}
}
if strings.Contains(test, "checkLocalTestConfig") {
return []string{"waitFirstTestGutter"}
}
if strings.Contains(test, "/indexing") {
return []string{"ocSymbolBuildingTimeMs", "backendIndexingTimeMs", "cidr.workspace.metrics#duration_in_write_action_ms", "ui.lagging#average", "rd.memory.allocatedManagedMemoryMb/afterIndexing"}
}
if strings.Contains(test, "/completion") {
return []string{"fus_time_to_show_90p"}
}
if strings.Contains(test, "/findUsages") {
return []string{"%syncAction FindUsages"}
}
if strings.Contains(test, "/gotoDeclaration") {
return []string{"clionGotoDeclaration"}
}
if strings.Contains(test, "/checkLocalTestConfig") {
return []string{"waitFirstTestGutter"}
}
if strings.Contains(test, "/measureResolve") {
return []string{"nova_total_memory_mb"}
}
return getMetricFromTestName(test)
}