static CommandLine initCommands()

in regression-test/framework/src/main/groovy/org/apache/doris/regression/ConfigOptions.groovy [101:671]


    static CommandLine initCommands(String[] args) {
        helpOption = Option.builder("h")
                .required(false)
                .hasArg(false)
                .longOpt("help")
                .desc("print this usage help")
                .build()
        confFileOpt = Option.builder("cf")
                .argName("confFilePath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("confFile")
                .desc("the configure file path")
                .build()
        defaultDbOpt = Option.builder("db")
                .argName("db")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("defaultDb")
                .desc("default db")
                .build()
        jdbcOpt = Option.builder("c")
                .argName("url")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("jdbc")
                .desc("jdbc url")
                .build()
        userOpt = Option.builder("u")
                .argName("user")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("user")
                .desc("the username of jdbc connection")
                .build()
        passwordOpt = Option.builder("p")
                .argName("password")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("password")
                .desc("the password of jdbc connection")
                .build()
        pathOpt = Option.builder("P")
                .argName("path")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("path")
                .desc("the suite path")
                .build()
        dataOpt = Option.builder("D")
                .argName("dataPath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("dataPath")
                .desc("the data path")
                .build()
        realDataOpt = Option.builder("RD")
                .argName("realDataPath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("realDataPath")
                .desc("the real data path")
                .build()
        cacheDataOpt = Option.builder("CD")
                .argName("cacheDataPath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("cacheDataPath")
                .desc("the cache data path caches data for stream load from s3")
                .build()
       enableCacheDataOpt = Option.builder("ECD")
                .argName("enableCacheData")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("enableCacheData")
                .desc("enable caches data for stream load from s3")
                .build()
        pluginOpt = Option.builder("plugin")
                .argName("pluginPath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("plugin")
                .desc("the plugin path")
                .build()

        sslCertificateOpt = Option.builder("ssl")
                .argName("sslCertificatePath")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("sslCertificatePath")
                .desc("the sslCertificate path")
                .build()

        imageOpt = Option.builder("image")
                .argName("image")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("image")
                .desc("the docker image")
                .build()

        noKillDockerOpt = Option.builder("noKillDocker")
                .required(false)
                .hasArg(false)
                .desc("don't kill docker containers")
                .build()

        runModeOpt = Option.builder("runMode")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("runMode")
                .desc("specific run mode: unknown/cloud/not_cloud. if unknow, will fetch it from fe.")
                .build()

        suiteOpt = Option.builder("s")
                .argName("suiteName")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("suite")
                .desc("the suite name wildcard to be test")
                .build()
        excludeSuiteOpt = Option.builder("xs")
                .argName("excludeSuiteName")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("excludeSuite")
                .desc("the suite name wildcard will not be tested")
                .build()
        groupsOpt = Option.builder("g")
                .argName("groups")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("groups")
                .desc("the suite group to be test")
                .build()
        excludeGroupsOpt = Option.builder("xg")
                .argName("excludeGroupNames")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("excludeGroups")
                .desc("the suite group will not be tested")
                .build()
        directoriesOpt = Option.builder("d")
                .argName("directories")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("directories")
                .desc("only the use cases in these directories can be executed")
                .build()
        excludeDirectoriesOpt = Option.builder("xd")
                .argName("excludeDirectoryNames")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("excludeDirectories")
                .desc("the use cases in these directories will not be tested")
                .build()
        feSourceThriftAddressOpt = Option.builder("stfa")
                .argName("address")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feSourceThriftAddressOpt")
                .desc("the fe source thrift address, format is ip:port")
                .build()
        feTargetThriftAddressOpt = Option.builder("ttfa")
                .argName("address")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feTargetThriftAddressOpt")
                .desc("the fe target thrift address, format is ip:port")
                .build()
        feSyncerUserOpt = Option.builder("syncu")
                .argName("userName")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feSyncerUser")
                .desc("the user of syncer")
                .build()
        feSyncerPasswordOpt = Option.builder("syncp")
                .argName("password")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feSyncerPassword")
                .desc("the password of syncer")
                .build()
        syncerAddressOpt = Option.builder("sa")
                .argName("address")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("syncerAddressOpt")
                .desc("the syncer address, format is ip:port")
                .build()
        feHttpAddressOpt = Option.builder("ha")
                .argName("address")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feHttpAddress")
                .desc("the fe http address, format is ip:port")
                .build()
        feHttpUserOpt = Option.builder("hu")
                .argName("userName")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feHttpUser")
                .desc("the user of fe http server")
                .build()
        feHttpPasswordOpt = Option.builder("hp")
                .argName("password")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feHttpPassword")
                .desc("the password of fe http server")
                .build()
        feCloudHttpAddressOpt = Option.builder("cha")
                .argName("address")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feCloudHttpAddress")
                .desc("the fe cloud http address, format is ip:port")
                .build()
        feCloudHttpUserOpt = Option.builder("chu")
                .argName("userName")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feCloudHttpUser")
                .desc("the user of fe cloud http server")
                .build()
        feCloudHttpPasswordOpt = Option.builder("chp")
                .argName("password")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("feCloudHttpPassword")
                .desc("the password of fe cloud http server")
                .build()
        instanceIdOpt = Option.builder("ii")
                .argName("instanceId")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("instanceId")
                .desc("the instance id")
                .build()
        cloudUniqueIdOpt = Option.builder("cui")
                .argName("cloudUniqueId")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("cloudUniqueId")
                .desc("the cloudUniqueId")
                .build()
        metaServiceHttpAddressOpt = Option.builder("hm")
                .argName("metaServiceHttpAddress")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("metaServiceHttpAddress")
                .desc("the meta service http address, format is ip:port")
                .build()
        recycleServiceHttpAddressOpt = Option.builder("hr")
                .argName("recycleServiceHttpAddress")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("recycleServiceHttpAddress")
                .desc("the recycle service http address, format is ip:port")
                .build()
        genOutOpt = Option.builder("genOut")
                .required(false)
                .hasArg(false)
                .desc("generate qt .out file if not exist")
                .build()
        forceGenOutOpt = Option.builder("forceGenOut")
                .required(false)
                .hasArg(false)
                .desc("delete and generate qt .out file")
                .build()
        confOpt = Option.builder("conf")
                .argName("conf")
                .required(false)
                .hasArgs()
                .valueSeparator(('=' as char))
                .longOpt("configurations, format: key=value")
                .desc("set addition context configurations")
                .build()
        parallelOpt = Option.builder("parallel")
                .argName("parallel")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("parallel")
                .desc("the num of threads running scripts")
                .build()
        suiteParallelOpt = Option.builder("suiteParallel")
                .argName("parallel")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("suiteParallel")
                .desc("the num of threads running for suites")
                .build()
        dockerSuiteParallelOpt = Option.builder("dockerSuiteParallel")
                .argName("dockerSuiteParallel")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("dockerSuiteParallel")
                .desc("the num of threads running for docker suites")
                .build()
        actionParallelOpt = Option.builder("actionParallel")
                .argName("parallel")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("actionParallel")
                .desc("the num of threads running for thread action")
                .build()
        randomOrderOpt = Option.builder("randomOrder")
                .required(false)
                .hasArg(false)
                .desc("run tests in random order")
                .build()
        stopWhenFailOpt = Option.builder("stopWhenFail")
                .required(false)
                .hasArg(false)
                .desc("stop when a failure happens")
                .build()
        timesOpt = Option.builder("times")
                .argName("times")
                .required(false)
                .hasArg(true)
                .optionalArg(true)
                .type(String.class)
                .longOpt("times")
                .desc("the times tests run, load.groovy is run only one time.")
                .build()
        withOutLoadDataOpt = Option.builder("w")
                .required(false)
                .hasArg(false)
                .longOpt("withOutLoadData")
                .desc("do not run load.groovy to reload data to Doris.")
                .build()
        runNonConcurrentOpt = Option.builder("runNonConcurrent")
                .required(false)
                .hasArg(true)
                .desc("whether run non-concurrent tests")
                .build()
        caseNamePrefixOpt = Option.builder("cnp")
                .required(false)
                .hasArg(true)
                .type(String.class)
                .longOpt("caseNamePrefix")
                .desc("add prefix to each case name")
                .build()
        dryRunOpt = Option.builder("dryRun")
                .required(false)
                .hasArg(false)
                .desc("just print cases and does not run")
                .build()
        isSmokeTestOpt = Option.builder("isSmokeTest")
                .required(false)
                .hasArg(false)
                .desc("is smoke test")
                .build()
        multiClusterBesOpt = Option.builder("multiClusterBes")
                .required(false)
                .hasArg(false)
                .desc("multi cluster backend info")
                .build()
        metaServiceTokenOpt = Option.builder("metaServiceToken")
                .required(false)
                .hasArg(false)
                .desc("meta service token")
                .build()
        multiClusterInstanceOpt = Option.builder("multiClusterInstance")
                .required(false)
                .hasArg(false)
                .desc("multi cluster instance")
                .build()
        upgradeNewBeIpOpt = Option.builder("upgradeNewBeIp")
                .required(false)
                .hasArg(false)
                .desc("new BE ip")
                .build()
        upgradeNewBeHbPortOpt = Option.builder("upgradeNewBeHbPort")
                .required(false)
                .hasArg(false)
                .desc("new BE heartbeat port")
                .build()
        upgradeNewBeHttpPortOpt = Option.builder("upgradeNewBeHttpPort")
                .required(false)
                .hasArg(false)
                .desc("new BE http port")
                .build()
        upgradeNewBeUniqueIdOpt = Option.builder("upgradeNewBeUniqueId")
                .required(false)
                .hasArg(false)
                .desc("new BE cloud unique id")
                .build()
        stageIamEndpointOpt = Option.builder("stageIamEndpoint")
                .required(false)
                .hasArg(false)
                .desc("stage iam endpoint")
                .build()
        stageIamRegionOpt = Option.builder("stageIamRegion")
                .required(false)
                .hasArg(false)
                .desc("stage iam region")
                .build()
        stageIamBucketOpt = Option.builder("stageIamBucket")
                .required(false)
                .hasArg(false)
                .desc("stage iam bucket")
                .build()
        stageIamPolicyOpt = Option.builder("stageIamPolicy")
                .required(false)
                .hasArg(false)
                .desc("stage iam policy")
                .build()
        stageIamRoleOpt = Option.builder("stageIamRole")
                .required(false)
                .hasArg(false)
                .desc("stage iam role")
                .build()
        stageIamArnOpt = Option.builder("stageIamArn")
                .required(false)
                .hasArg(false)
                .desc("stage iam arn")
                .build()
        stageIamAkOpt = Option.builder("stageIamAk")
                .required(false)
                .hasArg(false)
                .desc("stage iam ak")
                .build()
        stageIamSkOpt = Option.builder("stageIamSk")
                .required(false)
                .hasArg(false)
                .desc("stage iam sk")
                .build()
        stageIamUserIdOpt = Option.builder("stageIamUserId")
                .required(false)
                .hasArg(false)
                .desc("stage iam user id")
                .build()
        clusterDirOpt = Option.builder("clusterDir")
                .required(false)
                .hasArg(false)
                .desc("cloud cluster deploy dir")
                .build()
        kafkaBrokerListOpt = Option.builder("kafkaBrokerList")
                .required(false)
                .hasArg(false)
                .desc("kafka broker list")
                .build()
        cloudVersionOpt = Option.builder("cloudVersion")
                .required(false)
                .hasArg(false)
                .desc("selectdb cloud version")
                .build()

        Options options = new Options()
                .addOption(helpOption)
                .addOption(jdbcOpt)
                .addOption(userOpt)
                .addOption(passwordOpt)
                .addOption(pathOpt)
                .addOption(dataOpt)
                .addOption(pluginOpt)
                .addOption(sslCertificateOpt)
                .addOption(imageOpt)
                .addOption(noKillDockerOpt)
                .addOption(runModeOpt)
                .addOption(confOpt)
                .addOption(suiteOpt)
                .addOption(excludeSuiteOpt)
                .addOption(groupsOpt)
                .addOption(excludeGroupsOpt)
                .addOption(directoriesOpt)
                .addOption(excludeDirectoriesOpt)
                .addOption(feSourceThriftAddressOpt)
                .addOption(feTargetThriftAddressOpt)
                .addOption(feSyncerUserOpt)
                .addOption(feSyncerPasswordOpt)
                .addOption(syncerAddressOpt)
                .addOption(feHttpAddressOpt)
                .addOption(feHttpUserOpt)
                .addOption(feHttpPasswordOpt)
                .addOption(feCloudHttpAddressOpt)
                .addOption(feCloudHttpUserOpt)
                .addOption(feCloudHttpPasswordOpt)
                .addOption(metaServiceHttpAddressOpt)
                .addOption(recycleServiceHttpAddressOpt)
                .addOption(genOutOpt)
                .addOption(confFileOpt)
                .addOption(forceGenOutOpt)
                .addOption(parallelOpt)
                .addOption(suiteParallelOpt)
                .addOption(dockerSuiteParallelOpt)
                .addOption(actionParallelOpt)
                .addOption(randomOrderOpt)
                .addOption(stopWhenFailOpt)
                .addOption(timesOpt)
                .addOption(withOutLoadDataOpt)
                .addOption(runNonConcurrentOpt)
                .addOption(caseNamePrefixOpt)
                .addOption(dryRunOpt)
                .addOption(isSmokeTestOpt)
                .addOption(multiClusterBesOpt)
                .addOption(metaServiceTokenOpt)
                .addOption(multiClusterInstanceOpt)
                .addOption(upgradeNewBeIpOpt)
                .addOption(upgradeNewBeHbPortOpt)
                .addOption(upgradeNewBeHttpPortOpt)
                .addOption(upgradeNewBeUniqueIdOpt)
                .addOption(stageIamEndpointOpt)
                .addOption(stageIamRegionOpt)
                .addOption(stageIamBucketOpt)
                .addOption(stageIamPolicyOpt)
                .addOption(stageIamRoleOpt)
                .addOption(stageIamArnOpt)
                .addOption(stageIamAkOpt)
                .addOption(stageIamSkOpt)
                .addOption(stageIamUserIdOpt)
                .addOption(clusterDirOpt)
                .addOption(kafkaBrokerListOpt)
                .addOption(cloudVersionOpt)

        CommandLine cmd = new DefaultParser().parse(options, args, true)
        if (cmd.hasOption(helpOption)) {
            printHelp(options)
            return null
        }
        return cmd
    }