pkg/degradation-detector/setting/rubySettings.go (83 lines of code) (raw):

package setting import ( "log/slog" "net/http" "strings" detector "github.com/JetBrains/ij-perf-report-aggregator/pkg/degradation-detector" ) func GenerateRubyPerfSettings(backendUrl string, client *http.Client) []detector.PerformanceSettings { machines := []string{"intellij-linux-performance-aws-%"} baseSettings := detector.PerformanceSettings{ Db: "perfintDev", Table: "ruby", BaseSettings: detector.BaseSettings{ Branch: "master", }, } branches := []string{"master", "252"} modes := []string{"", "split"} 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 } for _, branch := range branches { for _, mode := range modes { for _, machine := range machines { for _, test := range tests { metrics := getRubyMetricFromTestName(test) for _, metric := range metrics { medianThreshold := 10.0 if metric == "gcPause" || metric == "freedMemoryByGC" { medianThreshold = 20 } settings = append(settings, detector.PerformanceSettings{ Db: baseSettings.Db, Table: baseSettings.Table, Project: test, Mode: mode, BaseSettings: detector.BaseSettings{ Branch: branch, Machine: machine, Metric: metric, AnalysisSettings: detector.AnalysisSettings{ MinimumSegmentLength: 14, MedianDifferenceThreshold: medianThreshold, ReportType: detector.DegradationEvent, }, SlackSettings: detector.SlackSettings{ Channel: "rubymine-performance-alerts", ProductLink: "rubymine", }, }, }) } } } } } return settings } func getRubyMetricFromTestName(test string) []string { if strings.Contains(test, "/indexing") { return []string{ "indexingTimeWithoutPauses", "numberOfIndexedFilesWritingIndexValue", "indexSize", "scanningTimeWithoutPauses", "gcPause", "freedMemoryByGC", } } if strings.Contains(test, "inspections-test/") { return []string{"globalInspections", "gcPause", "freedMemoryByGC"} } if strings.Contains(test, "/typing") { return []string{"firstCodeAnalysis", "test#average_awt_delay", "typing"} } if strings.Contains(test, "/completion") { return []string{"firstCodeAnalysis", "completion", "completion#firstElementShown#mean_value"} } if strings.Contains(test, "/getSymbolMembers") { return []string{"getSymbolMembers", "getSymbolMembers#number"} } // very likely find usages return []string{"findUsages", "findUsages#number", "gcPause", "freedMemoryByGC"} }