in perf-tools/main.go [68:141]
func main() {
utils.SetLogLevel(commandLineConfig.LogLevel)
configFilePath := commandLineConfig.ConfigFilePath
if configFilePath == "" {
err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
} else if info.Name() == ConfigFileName {
configFilePath = path
return io.EOF
}
return nil
})
if err != io.EOF {
utils.Logger.Fatal("failed to find config file", zap.Error(err))
}
if configFilePath == "" {
utils.Logger.Fatal("can't find required config file for integration testing")
}
}
conf, err := framework.InitConfig(configFilePath)
if err != nil {
utils.Logger.Fatal("failed to initialize config", zap.Error(err))
}
// init kubeClient
kubeClient, err := utils.NewKubeClient(conf.Common.KubeConfigFile)
if err != nil {
utils.Logger.Fatal("failed to initialize kube-client", zap.Error(err))
}
// prepare expected test scenarios due to optional flag "scenarios",
// set to all registered test scenarios if not configured.
expectedTestScenarios := make([]framework.TestScenario, 0)
if commandLineConfig.ScenarioNames != "" {
for _, scenarioName := range strings.Split(commandLineConfig.ScenarioNames, ",") {
if ts := framework.GetRegisteredTestScenarios()[scenarioName]; ts != nil {
expectedTestScenarios = append(expectedTestScenarios, ts)
} else {
utils.Logger.Fatal("can't find specified scenario",
zap.String("specifiedScenarioName", scenarioName),
zap.Any("registeredTestScenarios", framework.GetRegisteredTestScenarios()))
}
}
} else {
for _, ts := range framework.GetRegisteredTestScenarios() {
expectedTestScenarios = append(expectedTestScenarios, ts)
}
}
// prepare output directory
outputTime := time.Now().Format(DateTimeLayout)
conf.Common.OutputPath = fmt.Sprintf("%s/%s-%s-%s",
conf.Common.OutputRootPath, OutputDirNamePrefix, commandLineConfig.ScenarioNames, outputTime)
err = os.Mkdir(conf.Common.OutputPath, os.ModePerm)
if err != nil {
utils.Logger.Fatal("failed to create output directory",
zap.String("outputPath", conf.Common.OutputPath), zap.Error(err))
}
// init expected test scenarios first
for _, testScenario := range expectedTestScenarios {
err := testScenario.Init(kubeClient, conf)
if err != nil {
utils.Logger.Fatal("failed to initialize scenario",
zap.String("scenarioName", testScenario.GetName()),
zap.Error(err))
}
}
// run expected test scenarios
results := utils.NewResults()
for _, testScenario := range expectedTestScenarios {
testScenario.Run(results)
}
utils.Logger.Info("all tests have been done, generate report")
results.RefreshStatus()
fmt.Println(results.String())
}