-
Notifications
You must be signed in to change notification settings - Fork 117
Closed
Description
The problem is that the test's standard output/error files are passed as options to the srun command, thus overriding the output of the whole script. Here's how to reproduce:
Configuration file (you can add the access options accordingly if needed):
site_configuration = {
'systems': [
{
'name': 'system',
'hostnames': ['nid0'],
'partitions': [
{
'name': 'part',
'scheduler': 'local',
'launcher': 'srunalloc',
'environs': ['builtin']
}
]
}
]
}And the test file:
import reframe as rfm
import reframe.utility.sanity as sn
@rfm.simple_test
class srunalloc_fail_test(rfm.RunOnlyRegressionTest):
executable = 'hostname'
prerun_cmds = ['echo hello']
valid_systems = ['system:part']
valid_prog_environs = ['*']
@sanity_function
def validate(self):
return sn.assert_found('hello', self.stdout)Running the test fails as follows:
SUMMARY OF FAILURES
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FAILURE INFO for srunalloc_fail_test (run: 1/1)
* Description:
* System partition: system:part
* Environment: builtin
* Stage directory: /home/user/reframe/stage/system/part/builtin/srunalloc_fail_test
* Node list: nid0001
* Job type: local (id=83006)
* Dependencies (conceptual): []
* Dependencies (actual): []
* Maintainers: []
* Failing phase: sanity
* Rerun with '-n /b359e5de -p builtin --system system:part -r'
* Reason: sanity error: pattern 'hello' not found in 'rfm_job.out'
--- rfm_job.out (first 10 lines) ---
nid0001
--- rfm_job.out ---
--- rfm_job.err (first 10 lines) ---
--- rfm_job.err ---Removing the --output and --error srun options here solves the issue:
reframe/reframe/core/launchers/mpi.py
Lines 129 to 133 in a3366b6
| if job.stdout: | |
| ret += ['--output=%s' % job.stdout] | |
| if job.stderr: | |
| ret += ['--error=%s' % job.stderr] |
Metadata
Metadata
Assignees
Type
Projects
Status
Done