Interpreting test results
On the command line
When create_test is invoked at the command line, a "cs.status.<testid>" script is created which will parse the TestStatus.log of each test you run and output a summary of each phase. A typical output is below for a test run with baselines.
PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu CREATE_NEWCASE PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu SETUP PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu SHAREDLIB_BUILD time=164 PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu NLCOMP PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu MODEL_BUILD time=95 PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu SUBMIT PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu RUN time=17 PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu COMPARE_base_rest PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu BASELINE PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu MEMCOMP PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu TPUTCOMP PASS ERS.f09_g16_g.MPASLISIA.melvin_gnu MEMLEAK
See table below for more information on what a fail in a particular phase could mean.
On cdash
Within the E3SM nightly test system, the TestStatus.log is parsed in order to populate the cdash display with pass/fail and also uploaded to the dashboard for examination. For a fail, on the cdash dashboard the Status for the test will be "Failed" in white letters over red background. Some fail modes are indicated by other information on the dashboard as explained below. But you will usually have to examine the TestStatus.log file to see why a test failed. Click on the testname on cdash to see the TestStatus.log
Diagnosing test fails
You can find how exactly test failed by searching TestStatus.log for various fail messages summarized below. Usually you can just jump to the end of the file to see the message but sometimes the way parallel programs write to text to output files will have the fail message somewhere else in the file.
Within the test itself
While running an ERS or SMS or PET test, the test itself has many possible fail modes.
FAIL message | FAIL meaning | Setting | Control |
---|---|---|---|
ERROR: BUILD FAIL: build e3sm failed, cat 'filename' MODEL_BUILD FAILED for test 'testname' | Model failed to build. Could be a code error, or compiler error or compiler license may not be available at that time. Could run out of disk to store build artifacts. Linking error also possible. | Always on | None |
RUN FAILED for test 'testname' | The "run phase" of the test failed. This almost always means the executable exited early for some reason. It could be a code error or a read/write problem. A run fail is also triggered if data needed by check_input_data did not all download for any reason. | Always on | None |
| The driver computes a highwater memory mark and outputs it to the coupler log each simulated day. The log is parsed and if the highwater memory increased by more then TEST_MEMLEAK_TOLERANCE the test will fail. Only possible if case is set to run for multiple days. | Always on | Turn off by adding --ignore-memleak to create_test. TEST_MEMLEAK_TOLERANCE is defined per machine in config_machines.xml. Can be changed in testcase directory with xmlchange. |
When comparing with baselines
Every test can be given additional phases where the test results are compared with a baseline stored on the system. If any of those additional phases FAIL, the test will FAIL.