diff --git a/bug_reproduction_test_plans/cass-operator-intermediate-state-1.yaml b/bug_reproduction_test_plans/cass-operator-intermediate-state-1.yaml index e02a35d8969..c54b0b92bf8 100644 --- a/bug_reproduction_test_plans/cass-operator-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/cass-operator-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: restartController controllerLabel: cass-operator diff --git a/bug_reproduction_test_plans/cass-operator-stale-state-1.yaml b/bug_reproduction_test_plans/cass-operator-stale-state-1.yaml index 14013479c25..85e11262d95 100644 --- a/bug_reproduction_test_plans/cass-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/cass-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/cassandra-operator-indirect-1.yaml b/bug_reproduction_test_plans/cassandra-operator-indirect-1.yaml index 3fca2dcb367..f9be86df41f 100644 --- a/bug_reproduction_test_plans/cassandra-operator-indirect-1.yaml +++ b/bug_reproduction_test_plans/cassandra-operator-indirect-1.yaml @@ -1 +1,2 @@ +workload: scaledown-scaleup actions: null diff --git a/bug_reproduction_test_plans/cassandra-operator-indirect-2.yaml b/bug_reproduction_test_plans/cassandra-operator-indirect-2.yaml index 3fca2dcb367..e72f64b2d16 100644 --- a/bug_reproduction_test_plans/cassandra-operator-indirect-2.yaml +++ b/bug_reproduction_test_plans/cassandra-operator-indirect-2.yaml @@ -1 +1,2 @@ +workload: scaledown-scaleup-brittle actions: null diff --git a/bug_reproduction_test_plans/cassandra-operator-stale-state-1.yaml b/bug_reproduction_test_plans/cassandra-operator-stale-state-1.yaml index c061ba1a334..e1b2d42c04f 100644 --- a/bug_reproduction_test_plans/cassandra-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/cassandra-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/cassandra-operator-stale-state-2.yaml b/bug_reproduction_test_plans/cassandra-operator-stale-state-2.yaml index 3acf6fb2391..89ad7c0a10a 100644 --- a/bug_reproduction_test_plans/cassandra-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/cassandra-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: scaledown-scaleup actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/cassandra-operator-unobserved-state-1.yaml b/bug_reproduction_test_plans/cassandra-operator-unobserved-state-1.yaml index dc1ae5ef132..553e575968f 100644 --- a/bug_reproduction_test_plans/cassandra-operator-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/cassandra-operator-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaledown-scaleup actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/casskop-intermediate-state-1.yaml b/bug_reproduction_test_plans/casskop-intermediate-state-1.yaml index b1b7486129f..7bd762ae605 100644 --- a/bug_reproduction_test_plans/casskop-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/casskop-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaledown-to-zero actions: - actionType: restartController controllerLabel: casskop-operator diff --git a/bug_reproduction_test_plans/casskop-stale-state-1.yaml b/bug_reproduction_test_plans/casskop-stale-state-1.yaml index 6d9bd94c81c..97d0f1094ed 100644 --- a/bug_reproduction_test_plans/casskop-stale-state-1.yaml +++ b/bug_reproduction_test_plans/casskop-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/casskop-stale-state-2.yaml b/bug_reproduction_test_plans/casskop-stale-state-2.yaml index a1d5ee6cdb4..be4fc579881 100644 --- a/bug_reproduction_test_plans/casskop-stale-state-2.yaml +++ b/bug_reproduction_test_plans/casskop-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: reducepdb actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/casskop-unobserved-state-1.yaml b/bug_reproduction_test_plans/casskop-unobserved-state-1.yaml index 08a8df4900a..e570d0ebe33 100644 --- a/bug_reproduction_test_plans/casskop-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/casskop-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaledown-to-zero actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/elastic-operator-stale-state-1.yaml b/bug_reproduction_test_plans/elastic-operator-stale-state-1.yaml index 5d8eeb496b5..382f20ef07f 100644 --- a/bug_reproduction_test_plans/elastic-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/elastic-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/elastic-operator-stale-state-2.yaml b/bug_reproduction_test_plans/elastic-operator-stale-state-2.yaml index bbfb803b88b..c6b325a8786 100644 --- a/bug_reproduction_test_plans/elastic-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/elastic-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: scaledown-scaleup actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/mongodb-operator-indirect-1.yaml b/bug_reproduction_test_plans/mongodb-operator-indirect-1.yaml index 3fca2dcb367..b014cd18a0c 100644 --- a/bug_reproduction_test_plans/mongodb-operator-indirect-1.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-indirect-1.yaml @@ -1 +1,2 @@ +workload: disable-enable-shard actions: null diff --git a/bug_reproduction_test_plans/mongodb-operator-indirect-2.yaml b/bug_reproduction_test_plans/mongodb-operator-indirect-2.yaml index bac6d6b8f2c..a045b1ee4f6 100644 --- a/bug_reproduction_test_plans/mongodb-operator-indirect-2.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-indirect-2.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseController pauseAt: afterControllerWrite diff --git a/bug_reproduction_test_plans/mongodb-operator-indirect-3.yaml b/bug_reproduction_test_plans/mongodb-operator-indirect-3.yaml index 3fca2dcb367..538c103e10c 100644 --- a/bug_reproduction_test_plans/mongodb-operator-indirect-3.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-indirect-3.yaml @@ -1 +1,2 @@ +workload: disable-enable-shard-brittle actions: null diff --git a/bug_reproduction_test_plans/mongodb-operator-intermediate-state-1.yaml b/bug_reproduction_test_plans/mongodb-operator-intermediate-state-1.yaml index 6b626dae7d9..9d6a06d193f 100644 --- a/bug_reproduction_test_plans/mongodb-operator-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-shard actions: - actionType: restartController controllerLabel: mongodb-operator diff --git a/bug_reproduction_test_plans/mongodb-operator-intermediate-state-2.yaml b/bug_reproduction_test_plans/mongodb-operator-intermediate-state-2.yaml index 516f6a57c65..417d4566efe 100644 --- a/bug_reproduction_test_plans/mongodb-operator-intermediate-state-2.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-intermediate-state-2.yaml @@ -1,3 +1,4 @@ +workload: run-cert-manager actions: - actionType: restartController controllerLabel: mongodb-operator diff --git a/bug_reproduction_test_plans/mongodb-operator-stale-state-1.yaml b/bug_reproduction_test_plans/mongodb-operator-stale-state-1.yaml index 1ba5a1826d3..40eb1caa250 100644 --- a/bug_reproduction_test_plans/mongodb-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/mongodb-operator-stale-state-2.yaml b/bug_reproduction_test_plans/mongodb-operator-stale-state-2.yaml index f55cf66521c..e24824a05cb 100644 --- a/bug_reproduction_test_plans/mongodb-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-shard actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/mongodb-operator-stale-state-3.yaml b/bug_reproduction_test_plans/mongodb-operator-stale-state-3.yaml index fe36346ccac..d9354638f2a 100644 --- a/bug_reproduction_test_plans/mongodb-operator-stale-state-3.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-stale-state-3.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-arbiter actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/mongodb-operator-unobserved-state-1.yaml b/bug_reproduction_test_plans/mongodb-operator-unobserved-state-1.yaml index 7305ab40512..b9c55c54813 100644 --- a/bug_reproduction_test_plans/mongodb-operator-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/mongodb-operator-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-arbiter actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/nifikop-intermediate-state-1.yaml b/bug_reproduction_test_plans/nifikop-intermediate-state-1.yaml index cc471343a2c..4b48e459356 100644 --- a/bug_reproduction_test_plans/nifikop-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/nifikop-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: change-config actions: - actionType: restartController controllerLabel: nifikop-operator diff --git a/bug_reproduction_test_plans/rabbitmq-operator-intermediate-state-1.yaml b/bug_reproduction_test_plans/rabbitmq-operator-intermediate-state-1.yaml index 24be9111ab8..8219f327c03 100644 --- a/bug_reproduction_test_plans/rabbitmq-operator-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/rabbitmq-operator-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: resize-pvc actions: - actionType: restartController controllerLabel: rabbitmq-operator diff --git a/bug_reproduction_test_plans/rabbitmq-operator-stale-state-1.yaml b/bug_reproduction_test_plans/rabbitmq-operator-stale-state-1.yaml index 9b6d2ff38a3..48432a601be 100644 --- a/bug_reproduction_test_plans/rabbitmq-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/rabbitmq-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/rabbitmq-operator-stale-state-2.yaml b/bug_reproduction_test_plans/rabbitmq-operator-stale-state-2.yaml index 560abc0e4de..110f6c45342 100644 --- a/bug_reproduction_test_plans/rabbitmq-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/rabbitmq-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: resize-pvc actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/rabbitmq-operator-unobserved-state-1.yaml b/bug_reproduction_test_plans/rabbitmq-operator-unobserved-state-1.yaml index 8bc87504324..cbbc1908aaf 100644 --- a/bug_reproduction_test_plans/rabbitmq-operator-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/rabbitmq-operator-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaleup-scaledown actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/xtradb-operator-intermediate-state-1.yaml b/bug_reproduction_test_plans/xtradb-operator-intermediate-state-1.yaml index 560d76f9eb9..c21a06241ef 100644 --- a/bug_reproduction_test_plans/xtradb-operator-intermediate-state-1.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-intermediate-state-1.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-proxysql actions: - actionType: restartController controllerLabel: xtradb-operator diff --git a/bug_reproduction_test_plans/xtradb-operator-intermediate-state-2.yaml b/bug_reproduction_test_plans/xtradb-operator-intermediate-state-2.yaml index 74215aa66ca..badbae04128 100644 --- a/bug_reproduction_test_plans/xtradb-operator-intermediate-state-2.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-intermediate-state-2.yaml @@ -1,3 +1,4 @@ +workload: run-cert-manager actions: - actionType: restartController controllerLabel: xtradb-operator diff --git a/bug_reproduction_test_plans/xtradb-operator-stale-state-1.yaml b/bug_reproduction_test_plans/xtradb-operator-stale-state-1.yaml index a6c2bb45676..0facbb388e1 100644 --- a/bug_reproduction_test_plans/xtradb-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/xtradb-operator-stale-state-2.yaml b/bug_reproduction_test_plans/xtradb-operator-stale-state-2.yaml index 047759e879e..181833277c9 100644 --- a/bug_reproduction_test_plans/xtradb-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-haproxy actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/xtradb-operator-stale-state-3.yaml b/bug_reproduction_test_plans/xtradb-operator-stale-state-3.yaml index c9e55083449..fd302f30cfa 100644 --- a/bug_reproduction_test_plans/xtradb-operator-stale-state-3.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-stale-state-3.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-proxysql actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/xtradb-operator-unobserved-state-1.yaml b/bug_reproduction_test_plans/xtradb-operator-unobserved-state-1.yaml index eb9b87d30ee..44579e119c8 100644 --- a/bug_reproduction_test_plans/xtradb-operator-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/xtradb-operator-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaleup-scaledown actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/yugabyte-operator-indirect-1.yaml b/bug_reproduction_test_plans/yugabyte-operator-indirect-1.yaml index 3fca2dcb367..2b7478116f1 100644 --- a/bug_reproduction_test_plans/yugabyte-operator-indirect-1.yaml +++ b/bug_reproduction_test_plans/yugabyte-operator-indirect-1.yaml @@ -1 +1,2 @@ +workload: disable-enable-tuiport actions: null diff --git a/bug_reproduction_test_plans/yugabyte-operator-indirect-2.yaml b/bug_reproduction_test_plans/yugabyte-operator-indirect-2.yaml index 3fca2dcb367..161e44f2223 100644 --- a/bug_reproduction_test_plans/yugabyte-operator-indirect-2.yaml +++ b/bug_reproduction_test_plans/yugabyte-operator-indirect-2.yaml @@ -1 +1,2 @@ +workload: disable-enable-tls actions: null diff --git a/bug_reproduction_test_plans/yugabyte-operator-stale-state-1.yaml b/bug_reproduction_test_plans/yugabyte-operator-stale-state-1.yaml index 6511551f081..9a1e645256a 100644 --- a/bug_reproduction_test_plans/yugabyte-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/yugabyte-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-tls actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/yugabyte-operator-stale-state-2.yaml b/bug_reproduction_test_plans/yugabyte-operator-stale-state-2.yaml index 86261094c2b..845069f2d62 100644 --- a/bug_reproduction_test_plans/yugabyte-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/yugabyte-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: disable-enable-tuiport actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/yugabyte-operator-unobserved-state-1.yaml b/bug_reproduction_test_plans/yugabyte-operator-unobserved-state-1.yaml index d6c1e304dce..38f441f8941 100644 --- a/bug_reproduction_test_plans/yugabyte-operator-unobserved-state-1.yaml +++ b/bug_reproduction_test_plans/yugabyte-operator-unobserved-state-1.yaml @@ -1,3 +1,4 @@ +workload: scaleup-scaledown-tserver actions: - actionType: pauseController pauseAt: beforeControllerRead diff --git a/bug_reproduction_test_plans/zookeeper-operator-indirect-1.yaml b/bug_reproduction_test_plans/zookeeper-operator-indirect-1.yaml index db6bc599832..39d7a705810 100644 --- a/bug_reproduction_test_plans/zookeeper-operator-indirect-1.yaml +++ b/bug_reproduction_test_plans/zookeeper-operator-indirect-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseController pauseAt: afterControllerWrite diff --git a/bug_reproduction_test_plans/zookeeper-operator-stale-state-1.yaml b/bug_reproduction_test_plans/zookeeper-operator-stale-state-1.yaml index 04ae6b354df..5e2a9f06340 100644 --- a/bug_reproduction_test_plans/zookeeper-operator-stale-state-1.yaml +++ b/bug_reproduction_test_plans/zookeeper-operator-stale-state-1.yaml @@ -1,3 +1,4 @@ +workload: recreate actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/bug_reproduction_test_plans/zookeeper-operator-stale-state-2.yaml b/bug_reproduction_test_plans/zookeeper-operator-stale-state-2.yaml index 2c4046a869f..003d0c14bca 100644 --- a/bug_reproduction_test_plans/zookeeper-operator-stale-state-2.yaml +++ b/bug_reproduction_test_plans/zookeeper-operator-stale-state-2.yaml @@ -1,3 +1,4 @@ +workload: scaledown-scaleup actions: - actionType: pauseAPIServer apiServerName: kind-control-plane3 diff --git a/reproduce_bugs.py b/reproduce_bugs.py index 2b6db034982..b6e5f79ea47 100644 --- a/reproduce_bugs.py +++ b/reproduce_bugs.py @@ -195,15 +195,11 @@ def reproduce_single_bug(operator, bug, docker, phase): before_reproduce() test = reprod_map[operator][bug][0] config = os.path.join("bug_reproduction_test_plans", reprod_map[operator][bug][1]) - sieve_cmd = ( - "python3 sieve.py -p %s -s test -m test -t %s -c %s -d %s --phase=%s" - % ( - operator, - test, - config, - docker, - phase, - ) + sieve_cmd = "python3 sieve.py -p %s -c %s -d %s --phase=%s" % ( + operator, + config, + docker, + phase, ) cprint(sieve_cmd, bcolors.OKGREEN) os.system(sieve_cmd) diff --git a/sieve.py b/sieve.py index ae2d44c4cf4..6e6e3ff263b 100644 --- a/sieve.py +++ b/sieve.py @@ -70,7 +70,9 @@ def save_run_result( + test_result.history_errors, "no_exception": test_result.no_exception, "exception_message": test_result.exception_message, - "test_config_content": open(test_config).read() if mode == sieve_modes.TEST else "", + "test_config_content": open(test_config).read() + if mode == sieve_modes.TEST + else "", "host": socket.gethostname(), } } @@ -592,6 +594,11 @@ def generate_vanilla_config(vanilla_config): yaml.dump(vanilla_config_map, open(vanilla_config, "w"), sort_keys=False) +def get_test_workload_from_test_plan(test_plan_file): + test_plan = yaml.safe_load(open(test_plan_file)) + return test_plan["workload"] + + def run( project, test, @@ -608,6 +615,10 @@ def run( num_apiservers = 1 num_workers = 2 use_csi_driver = False + if test is None: + assert stage == sieve_stages.TEST and mode == sieve_modes.TEST + test = get_test_workload_from_test_plan(config) + print("get test workload {} from test plan".format(test)) if test in controller_config.test_setting: if "num_apiservers" in controller_config.test_setting[test]: num_apiservers = controller_config.test_setting[test]["num_apiservers"] @@ -707,11 +718,18 @@ def run_batch(project, test, dir, mode, stage, docker): parser.add_option( "-l", "--log", dest="log", help="save to LOG", metavar="LOG", default="log" ) + parser.add_option( + "-s", + "--stage", + dest="stage", + help="STAGE: learn, test", + default=sieve_stages.TEST, + ) parser.add_option( "-m", "--mode", dest="mode", - help="test MODE: vanilla, stale-state, unobserved-state, intermediate-state", + help="MODE: vanilla, test, learn-once, learn-twice", metavar="MODE", ) parser.add_option( @@ -736,12 +754,6 @@ def run_batch(project, test, dir, mode, stage, docker): metavar="PHASE", default="all", ) - parser.add_option( - "-s", - "--stage", - dest="stage", - help="STAGE: learn, test", - ) parser.add_option( "-r", "--rate_limiter", @@ -756,12 +768,7 @@ def run_batch(project, test, dir, mode, stage, docker): if options.project is None: parser.error("parameter project required") - if options.test is None: - parser.error("parameter test required") - - if options.stage is None: - parser.error("parameter stage required") - elif options.stage not in [sieve_stages.LEARN, sieve_stages.TEST]: + if options.stage not in [sieve_stages.LEARN, sieve_stages.TEST]: parser.error("invalid stage option: %s" % options.stage) if options.stage == sieve_stages.LEARN: @@ -776,7 +783,7 @@ def run_batch(project, test, dir, mode, stage, docker): if options.stage == sieve_stages.TEST: if options.mode is None: - parser.error("parameter mode required in test stage") + options.mode = sieve_modes.TEST elif options.mode not in [sieve_modes.TEST, sieve_modes.VANILLA]: parser.error("invalid test mode option: %s" % options.mode) if options.mode == sieve_modes.VANILLA: @@ -785,6 +792,10 @@ def run_batch(project, test, dir, mode, stage, docker): if options.config is None: parser.error("parameter config required in test stage") + if options.test is None: + if options.stage != sieve_stages.TEST or options.mode != sieve_stages.TEST: + parser.error("parameter test required") + if options.phase not in [ "all", "setup",