Skip to content

Conversation

@vkarak
Copy link
Contributor

@vkarak vkarak commented Aug 19, 2022

Each test is now associated with a hash code, which is generated by the test name and the key value pairs of its parameters. This hash code is printed along with the display name with the -l option and tests can be selected also by their hash code with the -n option, by passing -n /<hash>. Tests do still have their unique name that is comprised by the class name and the variant number. Test-specific files associated with the test execution, such as the stage and output directories and the performance log file of the filelog handler use the test's hash code in their filename. Conversely to the variant number, the test's hash code does not change if new values are added to a parameter, or values are deleted or the list of values are shuffled. However, you might get filesystem conflicts if you run a parameterised test that has a parameter that takes the same value many times. Such tests must run serially to avoid this. Note that if a parameter is added to or deleted from the test or the name of parameter changes, the hash will change.

Fixes #2577.

@vkarak
Copy link
Contributor Author

vkarak commented Aug 19, 2022

@flx42 Could you test this PR with your scenario? Now filelog performance files should not change across reframe invocations.

@codecov-commenter
Copy link

Codecov Report

Merging #2578 (6ccf6f3) into master (0463226) will decrease coverage by 0.01%.
The diff coverage is 84.44%.

@@            Coverage Diff             @@
##           master    #2578      +/-   ##
==========================================
- Coverage   86.69%   86.68%   -0.02%     
==========================================
  Files          59       59              
  Lines       10827    10854      +27     
==========================================
+ Hits         9387     9409      +22     
- Misses       1440     1445       +5     
Impacted Files Coverage Δ
reframe/frontend/cli.py 72.30% <50.00%> (-0.08%) ⬇️
reframe/core/pipeline.py 93.36% <84.61%> (-0.52%) ⬇️
reframe/core/logging.py 77.77% <100.00%> (ø)
reframe/core/meta.py 99.08% <100.00%> (+<0.01%) ⬆️
reframe/frontend/executors/__init__.py 97.64% <100.00%> (+<0.01%) ⬆️
reframe/frontend/filters.py 98.61% <100.00%> (+0.12%) ⬆️
reframe/frontend/executors/policies.py 92.59% <0.00%> (+0.28%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@flx42
Copy link

flx42 commented Aug 22, 2022 via email

@vkarak
Copy link
Contributor Author

vkarak commented Aug 30, 2022

But it doesn't solve the part about being able to customize the perflog
output file to get a behavior similar to 3.x if you want to, not sure what
is your opinion on this.

Actually, 4.x does not change how the filelog handler generates the log filenames. In the filelog handler you could only (and still can) configure the prefix directory of the log file, but not the name of the filename. The name of the filename was composed by the test's unique_name, thus the ambiguity with the variant names, which is now solved with hashes. In the old naming scheme, the unique_name contained a stringification of the test parameters and their values, which is essentially the same as of now, except that the string representation is now different.

I would see this as a separate feature request, especially if the current behaviour breaks your workflow or just annoys you 😂 Technically, it is possible, but it might need to add another configuration parameter to the filelog handler to control the log file name per se.

@flx42
Copy link

flx42 commented Aug 30, 2022 via email

@vkarak vkarak merged commit 0d2c112 into reframe-hpc:master Aug 30, 2022
@vkarak vkarak deleted the feat/hashed-unique-names branch August 30, 2022 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Parameters values for filelog perflogs

4 participants