func GenerateRubyPerfSettings()

in pkg/degradation-detector/setting/rubySettings.go [11:65]


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
}