Hi Shaopeng,
On 11/8/2022 12:32 AM, Shaopeng Tan (Fujitsu) wrote:
Hi Shuah and Reinette,
On 11/1/2022 2:43 AM, Shaopeng Tan wrote:
Before exiting each test function(run_cmt/cat/mbm/mba_test()), test results("ok","not ok") are printed by ksft_test_result() and then temporary result files are cleaned by function cmt/cat/mbm/mba_test_cleanup(). However, before running ksft_test_result(), function cmt/cat/mbm/mba_test_cleanup() has been run in each test function as follows: cmt_resctrl_val() cat_perf_miss_val() mba_schemata_change() mbm_bw_change()
Remove duplicate codes that clear each test result file.
This isn't making much sense to me. Please include test report before and after this change in the change log.
With or without this patch, there is no effect on the result message. These functions were executed twice, in brief, it runs as follows:
- cmt/cat/mbm/mba_test_cleanup()
- ksft_test_result()
- cmt/cat/mbm/mba_test_cleanup()
So, I deleted once.
From what I can tell this still seem to suffer from the problem where the test files may not be cleaned. With the removal of mbm_test_cleanup() the cleanup is now expected to be done in mbm_bw_change().
Note that:
mbm_bw_change() { ...
ret = resctrl_val(benchmark_cmd, ¶m); if (ret) return ret;
/* Test results stored in file */
ret = check_results(span); if (ret) return ret; <== Return without cleaning test result file
mbm_test_cleanup(); <== Test result file cleaned only when test passed.
return 0; }
I intend to avoid this problem through the following codes.
mbm_bw_change() { ret = resctrl_val(benchmark_cmd, ¶m); if (ret)
return ret;
goto out; ret = check_results(span); if (ret)
return ret;
goto out;
+out: mbm_test_cleanup();
return 0;
return ret;
}
Yes, even though file removal may now encounter ENOENT this does seem the most robust route and the possible error is ok since mbm_test_cleanup() does not check the return code. Could you please replicate this pattern to the other functions (mba_schemata_change() and cmt_resctrl_val()) also?
Reinette