create_testΒΆ

create_test is a script in CIMEROOT/scripts.

$ ./create_test --help
usage: create_test [-h] [-d] [-v] [-s] [--no-run] [--no-build] [--no-setup]
                   [-u] [--save-timing] [--no-batch] [--single-exe]
                   [--single-submit] [-r TEST_ROOT]
                   [--output-root OUTPUT_ROOT] [--baseline-root BASELINE_ROOT]
                   [--clean] [-m MACHINE] [--mpilib MPILIB] [-c COMPARE]
                   [-g GENERATE] [--xml-machine XML_MACHINE]
                   [--xml-compiler XML_COMPILER] [--xml-category XML_CATEGORY]
                   [--xml-testlist XML_TESTLIST]
                   [--xml-driver {mct,nuopc,moab}] [--compiler COMPILER] [-n]
                   [-p PROJECT] [-t TEST_ID] [-j PARALLEL_JOBS]
                   [--proc-pool PROC_POOL] [--walltime WALLTIME] [-q QUEUE]
                   [-f TESTFILE] [-o] [--wait] [--allow-pnl]
                   [--wait-check-throughput] [--wait-check-memory]
                   [--wait-ignore-namelists] [--wait-ignore-memleak]
                   [--force-procs FORCE_PROCS] [--force-threads FORCE_THREADS]
                   [-i INPUT_DIR] [--pesfile PESFILE] [--retry RETRY] [-N]
                   [--workflow WORKFLOW] [--mail-user MAIL_USER]
                   [-M MAIL_TYPE]
                   [testargs [testargs ...]]

Script to create, build and run CIME tests. This script can:

1) Run a single test, or more than one test
   ./create_test TESTNAME
   ./create_test TESTNAME1 TESTNAME2 ...
2) Run a test suite from a text file with one test per line
   ./create_test -f TESTFILE
3) Run an E3SM test suite:
  Below, a suite name, SUITE, is defined in $CIMEROOT/scripts/lib/get_tests.py
  - Run a single suite
   ./create_test SUITE
  - Run two suites
   ./create_test SUITE1 SUITE2
  - Run all tests in a suite except for one
   ./create_test SUITE ^TESTNAME
  - Run all tests in a suite except for tests that are in another suite
   ./create_test SUITE1 ^SUITE2
  - Run all tests in a suite with baseline comparisons against master baselines
   ./create_test SUITE1 -c -b master
4) Run a CESM test suite(s):
   ./create_test --xml-category XML_CATEGORY [--xml-machine XML_MACHINE] [--xml-compiler XML_COMPILER] [ --xml-testlist XML_TESTLIST]

If this tool is missing any feature that you need, please add an issue on
https://github.com/ESMCI/cime

positional arguments:
  testargs              Tests to run. Testname form is TEST.GRID.COMPSET[.MACHINE_COMPILER]

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Print debug information (very verbose) to file /Users/sacks/cime/scripts/create_test.log
  -v, --verbose         Add additional context (time and file) to log messages
  -s, --silent          Print only warnings and error messages
  --no-run              Do not run generated tests
  --no-build            Do not build generated tests, implies --no-run
  --no-setup            Do not setup generated tests, implies --no-build and --no-run
  -u, --use-existing    Use pre-existing case directories they will pick up at the 
                        latest PEND state or re-run the first failed state. Requires test-id
  --save-timing         Enable archiving of performance data.
  --no-batch            Do not submit jobs to batch system, run locally.
                        If false, this will default to machine setting.
  --single-exe          Use a single build for all cases. This can 
                        drastically improve test throughput but is currently use-at-your-own risk.
                        It's up to the user to ensure that all cases are build-compatible.
                        E3SM tests belonging to a suite with share enabled will always share exes.
  --single-submit       Use a single interactive allocation to run all the tests. This can 
                        drastically reduce queue waiting but only makes sense on batch machines.
  -r TEST_ROOT, --test-root TEST_ROOT
                        Where test cases will be created. The default is output root
                        as defined in the config_machines file
  --output-root OUTPUT_ROOT
                        Where the case output is written.
  --baseline-root BASELINE_ROOT
                        Specifies a root directory for baseline datasets that will 
                        be used for Bit-for-bit generate and/or compare testing.
  --clean               Specifies if tests should be cleaned after run. If set, all object
                        executables and data files will be removed after the tests are run.
  -m MACHINE, --machine MACHINE
                        The machine for creating and building tests. This machine must be defined
                        in the config_machines.xml file for the given model. The default is to 
                        to match the name of the machine in the test name or the name of the 
                        machine this script is run on to the NODENAME_REGEX field in 
                        config_machines.xml. WARNING: This option is highly unsafe and should 
                        only be used if you are an expert.
  --mpilib MPILIB       Specify the mpilib. To see list of supported MPI libraries for each machine, 
                        invoke ./query_config. The default is the first listing .
  -c COMPARE, --compare COMPARE
                        While testing, compare baselines against the given compare directory. 
  -g GENERATE, --generate GENERATE
                        While testing, generate baselines in the given generate directory. 
                        NOTE: this can also be done after the fact with bless_test_results
  --xml-machine XML_MACHINE
                        Use this machine key in the lookup in testlist.xml. 
                        The default is all if any --xml- argument is used.
  --xml-compiler XML_COMPILER
                        Use this compiler key in the lookup in testlist.xml. 
                        The default is all if any --xml- argument is used.
  --xml-category XML_CATEGORY
                        Use this category key in the lookup in testlist.xml. 
                        The default is all if any --xml- argument is used.
  --xml-testlist XML_TESTLIST
                        Use this testlist to lookup tests.The default is specified in config_files.xml
  --xml-driver {mct,nuopc,moab}
                        Override driver specified in tests and use this one.
  --compiler COMPILER   Compiler for building cime. Default will be the name in the 
                        Testname or the default defined for the machine.
  -n, --namelists-only  Only perform namelist actions for tests
  -p PROJECT, --project PROJECT
                        Specify a project id for the case (optional).
                        Used for accounting and directory permissions when on a batch system.
                        The default is user or machine specified by PROJECT.
                        Accounting (only) may be overridden by user or machine specified CHARGE_ACCOUNT.
  -t TEST_ID, --test-id TEST_ID
                        Specify an 'id' for the test. This is simply a string that is appended 
                        to the end of a test name. If no test-id is specified, a time stamp plus a 
                        random string will be used (ensuring a high probability of uniqueness). 
                        If a test-id is specified, it is the user's responsibility to ensure that 
                        each run of create_test uses a unique test-id. WARNING: problems will occur 
                        if you use the same test-id twice on the same file system, even if the test 
                        lists are completely different.
  -j PARALLEL_JOBS, --parallel-jobs PARALLEL_JOBS
                        Number of tasks create_test should perform simultaneously. The default 
                         is min(num_cores, num_tests).
  --proc-pool PROC_POOL
                        The size of the processor pool that create_test can use. The default is 
                        MAX_MPITASKS_PER_NODE + 25 percent.
  --walltime WALLTIME   Set the wallclock limit for all tests in the suite. 
                        Use the variable CIME_GLOBAL_WALLTIME to set this for all tests.
  -q QUEUE, --queue QUEUE
                        Force batch system to use a certain queue
  -f TESTFILE, --testfile TESTFILE
                        A file containing an ascii list of tests to run
  -o, --allow-baseline-overwrite
                        If the --generate option is given, then an attempt to overwrite 
                        an existing baseline directory will raise an error. WARNING: Specifying this 
                        option will allow existing baseline directories to be silently overwritten.
  --wait                On batch systems, wait for submitted jobs to complete
  --allow-pnl           Do not pass skip-pnl to case.submit
  --wait-check-throughput
                        If waiting, fail if throughput check fails
  --wait-check-memory   If waiting, fail if memory check fails
  --wait-ignore-namelists
                        If waiting, ignore if namelist diffs
  --wait-ignore-memleak
                        If waiting, ignore if there's a memleak
  --force-procs FORCE_PROCS
                        For all tests to run with this number of processors
  --force-threads FORCE_THREADS
                        For all tests to run with this number of threads
  -i INPUT_DIR, --input-dir INPUT_DIR
                        Use a non-default location for input files
  --pesfile PESFILE     Full pathname of an optional pes specification file. The file
                        can follow either the config_pes.xml or the env_mach_pes.xml format.
  --retry RETRY         Automatically retry failed tests. >0 implies --wait
  -N, --non-local       Use when you've requested a machine that you aren't on. Will reduce errors for missing directories etc.
  --workflow WORKFLOW   A workflow from config_workflow.xml to apply to this case. 
  --mail-user MAIL_USER
                        Email to be used for batch notification.
  -M MAIL_TYPE, --mail-type MAIL_TYPE
                        When to send user email. Options are: never, all, begin, end, fail.
                        You can specify multiple types with either comma-separated args or multiple -M flags.