pkg/degradation-detector/setting/javaSettings.go (97 lines of code) (raw):
package setting
import (
"net/http"
"slices"
"strings"
detector "github.com/JetBrains/ij-perf-report-aggregator/pkg/degradation-detector"
)
func GenerateJavaSettings(backendUrl string, client *http.Client) []detector.PerformanceSettings {
return slices.Concat(
generateJavaDevAnalysisSettings(backendUrl, client),
)
}
func generateJavaDevAnalysisSettings(backendUrl string, client *http.Client) []detector.PerformanceSettings {
tests := []string{
"grails/%", "java/%", "spring_boot/%", "spring_boot_maven/%", "intellij_commit/%", "hadoop_commit/%",
}
baseSettings := detector.PerformanceSettings{
Db: "perfintDev",
Table: "idea",
BaseSettings: detector.BaseSettings{
Branch: "master",
Machine: "intellij-linux-performance-aws-%",
},
}
testsExpanded := detector.ExpandTestsByPattern(backendUrl, client, tests, baseSettings)
testsWithoutIndexingScanning := filterIndexingScanningTests(testsExpanded)
settings := make([]detector.PerformanceSettings, 0, 100)
machines := []string{"intellij-linux-performance-aws-%", "intellij-windows-performance-%"}
for _, machine := range machines {
for _, test := range testsWithoutIndexingScanning {
metrics := getJavaMetricsFromTestsNames(test)
for _, metric := range metrics {
settings = append(settings, detector.PerformanceSettings{
Db: baseSettings.Db,
Table: baseSettings.Table,
Project: test,
BaseSettings: detector.BaseSettings{
Branch: baseSettings.Branch,
Machine: machine,
Metric: metric,
SlackSettings: detector.SlackSettings{
Channel: "idea-java-alerts",
ProductLink: "intellij",
},
AnalysisSettings: detector.AnalysisSettings{MinimumSegmentLength: 8},
},
})
}
}
}
return settings
}
func getJavaMetricsFromTestsNames(test string) []string {
if strings.Contains(test, "/inspection") {
return []string{"globalInspections"}
}
if strings.Contains(test, "/showIntentions") {
return []string{"Test#average_awt_delay", "showQuickFixes"}
}
if strings.Contains(test, "/localInspection/java_file") {
return []string{"localInspections", "firstCodeAnalysis"}
}
if strings.Contains(test, "/completion") {
return []string{"completion"}
}
if strings.Contains(test, "/showIntentions") {
return []string{"Test#average_awt_delay", "showQuickFixes"}
}
if strings.Contains(test, "/createJavaClass") {
return []string{"createJavaFile"}
}
if strings.Contains(test, "/rename-method") {
return []string{"performInlineRename"}
}
if strings.Contains(test, "/rename-class") {
return []string{"performInlineRename"}
}
if strings.Contains(test, "/change-signature") {
return []string{"changeJavaSignature: add parameter"}
}
if strings.Contains(test, "/move-class") {
return []string{"moveClassToPackage"}
}
if strings.Contains(test, "/inline-method") {
return []string{"inlineJavaMethod"}
}
if strings.Contains(test, "/rename-package") {
return []string{"renameDirectoryAsPackage"}
}
if strings.Contains(test, "/editor-highlighting") {
return []string{"typing_EditorBackSpace_duration", "typing_EditorBackSpace_warmup_duration", "typing_}_duration", "typing_}_warmup_duration"}
}
// for the future cases
if strings.Contains(test, "/findUsages") {
return []string{"findUsages", "fus_find_usages_all", "fus_find_usages_first"}
}
return []string{}
}