func sanitizeOptions()

in nimo-full-check/main/main.go [57:110]


func sanitizeOptions() error {
	if len(conf.Opts.SourceAccessKeyID) == 0 || len(conf.Opts.SourceSecretAccessKey) == 0 {
		return fmt.Errorf("sourceAccessKeyID and sourceSecretAccessKey can't be empty")
	}

	if len(conf.Opts.TargetAddress) == 0 {
		return fmt.Errorf("targetAddress can't be empty")
	}

	if conf.Opts.Parallel <= 0 {
		return fmt.Errorf("parallel should >= 1, default is 16")
	}

	if conf.Opts.QpsFull == 0 {
		conf.Opts.QpsFull = 10000
	} else if conf.Opts.QpsFull < 0 {
		return fmt.Errorf("qps.full should > 0, default is 10000")
	}

	if conf.Opts.QpsFullBatchNum <= 0 {
		conf.Opts.QpsFullBatchNum = 128
	}

	shakeFilter.Init(conf.Opts.FilterCollectionWhite, conf.Opts.FilterCollectionBlack)

	if len(conf.Opts.DiffOutputFile) == 0 {
		return fmt.Errorf("diff output file shouldn't be empty")
	} else {
		_, err := os.Stat(conf.Opts.DiffOutputFile)
		if os.IsNotExist(err) {
			if err = os.Mkdir(conf.Opts.DiffOutputFile, os.ModePerm); err != nil {
				return fmt.Errorf("mkdir diffOutputFile[%v] failed[%v]", conf.Opts.DiffOutputFile, err)
			}
		} else {
			newName := fmt.Sprintf("%v-%v", conf.Opts.DiffOutputFile, time.Now().Format(shakeUtils.GolangSecurityTime))
			if err := os.Rename(conf.Opts.DiffOutputFile, newName); err != nil {
				return fmt.Errorf("diffOutputFile dir[%v] rename to newFile[%v] failed[%v], need to be remvoed manullay",
					conf.Opts.DiffOutputFile, newName, err)
			}
			if err = os.Mkdir(conf.Opts.DiffOutputFile, os.ModePerm); err != nil {
				return fmt.Errorf("mkdir diffOutputFile[%v] again failed[%v]", conf.Opts.DiffOutputFile, err)
			}
		}
	}

	if conf.Opts.ConvertType == "" {
		conf.Opts.ConvertType = shakeUtils.ConvertMTypeChange
	} else if conf.Opts.ConvertType != shakeUtils.ConvertMTypeChange {
		return fmt.Errorf("convertType[%v] illegal, only support %v",
			conf.Opts.ConvertType, shakeUtils.ConvertMTypeChange)
	}

	return nil
}