patterns['change_arg'] = ''
# Generate the code with invalid color
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Invalid color in @{c}@'
replace['longdesc'] = 'invalid color in @{c}@'
replace['outcome'] = 'ERROR: InvalidOtherArg'
patterns['change_arg'] = ''
# Generate an incorrect root matching (root mismatch)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Collective @{c}@ with a root mismatch'
- replace['longdesc'] = f'Odd ranks use 0 as a root while even ranks use 1 as a root'
+ replace['longdesc'] = 'Odd ranks use 0 as a root while even ranks use 1 as a root'
replace['outcome'] = 'ERROR: RootMatching'
replace['errormsg'] = 'Collective root mistmatch. @{c}@ at @{filename}@:@{line:MBIERROR2}@ has 0 or 1 as a root.'
replace['change_arg'] = 'if (rank % 2)\n root = 1; /* MBIERROR1 */'
gen.make_file(template, f'ParamMatching_Root_{c}_nok.c', replace)
# Generate the call with root=-1 (invalid root)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = f'Collective {c} with root = -1'
replace['longdesc'] = f'Collective {c} with root = -1'
replace['outcome'] = 'ERROR: InvalidRoot'
gen.make_file(template, f'InvalidParam_RootNeg_{c}_nok.c', replace)
# Generate the call with root=2 (root not in communicator)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = f'Collective {c} with root out of the communicator'
replace['longdesc'] = f'Collective {c} with root = 2 (there is only 2 ranks)'
replace['outcome'] = 'ERROR: InvalidRoot'
patterns['change_arg'] = ''
# Generate the incorrect matching (datatype Mmismatch)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Collective @{c}@ with a datatype mismatch'
- replace['longdesc'] = f'Odd ranks use MPI_INT as the datatype while even ranks use MPI_FLOAT'
+ replace['longdesc'] = 'Odd ranks use MPI_INT as the datatype while even ranks use MPI_FLOAT'
replace['outcome'] = 'ERROR: DatatypeMatching'
replace['errormsg'] = 'Collective datatype mistmatch. @{c}@ at @{filename}@:@{line:MBIERROR2}@ has MPI_INT or MPI_FLOAT as a datatype.'
replace['change_arg'] = 'if (rank % 2)\n type = MPI_FLOAT; /* MBIERROR1 */'
gen.make_file(template, f'ParamMatching_Data_{c}_nok.c', replace)
# Generate the call with null type (invalid datatype)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Collective @{c}@ with an invalid datatype '
replace['longdesc'] = 'Collective @{c}@ with an invalid datatype '
replace['outcome'] = 'ERROR: InvalidDatatype'
patterns['change_arg'] = ''
# Generate the incorrect matching (op mismatch)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Collective @{c}@ with an operator mismatch'
- replace['longdesc'] = f'Odd ranks use MPI_SUM as the operator while even ranks use MPI_MAX'
+ replace['longdesc'] = 'Odd ranks use MPI_SUM as the operator while even ranks use MPI_MAX'
replace['outcome'] = 'ERROR: OperatorMatching'
replace['errormsg'] = 'Collective operator mistmatch. @{c}@ at @{filename}@:@{line:MBIERROR2}@ has MPI_MAX or MPI_SUM as an operator.'
replace['change_arg'] = 'if (rank % 2)\n op = MPI_MAX; /* MBIERROR1 */'
gen.make_file(template, f'ParamMatching_Op_{c}_nok.c', replace)
# Generate the call with Op=MPI_OP_NULL (invalid op)
- replace = patterns
+ replace = patterns.copy()
replace['shortdesc'] = 'Collective @{c}@ with an invalid operator '
replace['longdesc'] = 'Collective @{c}@ with an invalid operator '
replace['outcome'] = 'ERROR: InvalidOperator'