From: Fenghua Yu <fenghua.yu@intel.com>
To: "Shuah Khan" <shuah@kernel.org>,
"Reinette Chatre" <reinette.chatre@intel.com>,
"Tony Luck" <tony.luck@intel.com>,
"Babu Moger" <babu.moger@amd.com>,
"James Morse" <james.morse@arm.com>,
"Borislav Petkov" <bp@alien8.de>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Ravi V Shankar" <ravi.v.shankar@intel.com>
Cc: "linux-kselftest" <linux-kselftest@vger.kernel.org>,
"linux-kernel" <linux-kernel@vger.kernel.org>,
Fenghua Yu <fenghua.yu@intel.com>
Subject: [PATCH v3 14/21] selftests/resctrl: Modularize resctrl test suite main() function
Date: Tue, 20 Oct 2020 23:51:19 +0000 [thread overview]
Message-ID: <20201020235126.1871815-15-fenghua.yu@intel.com> (raw)
In-Reply-To: <20201020235126.1871815-1-fenghua.yu@intel.com>
Resctrl test suite main() function does the following things
1. Parses command line arguments passed by user
2. Some setup checks
3. Logic that calls into each unit test
4. Print result and clean up after running each unit test
Introduce wrapper functions for steps 3 and 4 to modularize the main()
function. Adding these wrapper functions makes it easier to add any logic
to each individual test.
Please note that this is a preparatory patch for the next one and no
functional changes are intended.
Fixes: 01fee6b4d1f9 ("selftests/resctrl: Add MBA test")
Fixes: ecdbb911f22d ("selftests/resctrl: Add MBM test")
Fixes: 78941183d1b15 ("selftests/resctrl: Add Cache QoS Monitoring (CQM) selftest")
Fixes: 790bf585b0eee ("selftests/resctrl: Add Cache Allocation Technology (CAT) selftest")
Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
---
.../testing/selftests/resctrl/resctrl_tests.c | 96 ++++++++++++-------
1 file changed, 61 insertions(+), 35 deletions(-)
diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
index 5c217d0228f4..be7cd57efca8 100644
--- a/tools/testing/selftests/resctrl/resctrl_tests.c
+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
@@ -54,10 +54,62 @@ void tests_cleanup(void)
cat_test_cleanup();
}
+static void run_mbm_test(bool has_ben, char **benchmark_cmd, int span,
+ int cpu_no, char *bw_report)
+{
+ int res;
+
+ printf("# Starting MBM BW change ...\n");
+ if (!has_ben)
+ sprintf(benchmark_cmd[5], "%s", "mba");
+ res = mbm_bw_change(span, cpu_no, bw_report, benchmark_cmd);
+ printf("%sok MBM: bw change\n", res ? "not " : "");
+ mbm_test_cleanup();
+ tests_run++;
+}
+
+static void run_mba_test(bool has_ben, char **benchmark_cmd, int span,
+ int cpu_no, char *bw_report)
+{
+ int res;
+
+ printf("# Starting MBA Schemata change ...\n");
+ if (!has_ben)
+ sprintf(benchmark_cmd[1], "%d", span);
+ res = mba_schemata_change(cpu_no, bw_report, benchmark_cmd);
+ printf("%sok MBA: schemata change\n", res ? "not " : "");
+ mba_test_cleanup();
+ tests_run++;
+}
+
+static void run_cmt_test(bool has_ben, char **benchmark_cmd, int cpu_no)
+{
+ int res;
+
+ printf("# Starting CMT test ...\n");
+ if (!has_ben)
+ sprintf(benchmark_cmd[5], "%s", "cmt");
+ res = cmt_resctrl_val(cpu_no, 5, benchmark_cmd);
+ printf("%sok CMT: test\n", res ? "not " : "");
+ cmt_test_cleanup();
+ tests_run++;
+}
+
+static void run_cat_test(int cpu_no, int no_of_bits)
+{
+ int res;
+
+ printf("# Starting CAT test ...\n");
+ res = cat_perf_miss_val(cpu_no, no_of_bits, "L3");
+ printf("%sok CAT: test\n", res ? "not " : "");
+ tests_run++;
+ cat_test_cleanup();
+}
+
int main(int argc, char **argv)
{
bool has_ben = false, mbm_test = true, mba_test = true, cmt_test = true;
- int res, c, cpu_no = 1, span = 250, argc_new = argc, i, no_of_bits = 0;
+ int c, cpu_no = 1, span = 250, argc_new = argc, i, no_of_bits = 0;
char *benchmark_cmd[BENCHMARK_ARGS], bw_report[64], bm_type[64];
char benchmark_cmd_area[BENCHMARK_ARGS][BENCHMARK_ARG_SIZE];
int ben_ind, ben_count;
@@ -168,43 +220,17 @@ int main(int argc, char **argv)
filter_dmesg();
- if (!is_amd && mbm_test) {
- printf("# Starting MBM BW change ...\n");
- if (!has_ben)
- sprintf(benchmark_cmd[5], "%s", "mba");
- res = mbm_bw_change(span, cpu_no, bw_report, benchmark_cmd);
- printf("%sok MBM: bw change\n", res ? "not " : "");
- mbm_test_cleanup();
- tests_run++;
- }
+ if (!is_amd && mbm_test)
+ run_mbm_test(has_ben, benchmark_cmd, span, cpu_no, bw_report);
- if (!is_amd && mba_test) {
- printf("# Starting MBA Schemata change ...\n");
- if (!has_ben)
- sprintf(benchmark_cmd[1], "%d", span);
- res = mba_schemata_change(cpu_no, bw_report, benchmark_cmd);
- printf("%sok MBA: schemata change\n", res ? "not " : "");
- mba_test_cleanup();
- tests_run++;
- }
+ if (!is_amd && mba_test)
+ run_mba_test(has_ben, benchmark_cmd, span, cpu_no, bw_report);
- if (cmt_test) {
- printf("# Starting CMT test ...\n");
- if (!has_ben)
- sprintf(benchmark_cmd[5], "%s", "cmt");
- res = cmt_resctrl_val(cpu_no, 5, benchmark_cmd);
- printf("%sok CMT: test\n", res ? "not " : "");
- cmt_test_cleanup();
- tests_run++;
- }
+ if (cmt_test)
+ run_cmt_test(has_ben, benchmark_cmd, cpu_no);
- if (cat_test) {
- printf("# Starting CAT test ...\n");
- res = cat_perf_miss_val(cpu_no, no_of_bits, "L3");
- printf("%sok CAT: test\n", res ? "not " : "");
- tests_run++;
- cat_test_cleanup();
- }
+ if (cat_test)
+ run_cat_test(cpu_no, no_of_bits);
out:
printf("1..%d\n", tests_run);
--
2.29.0
next prev parent reply other threads:[~2020-10-20 23:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-20 23:51 [PATCH v3 00/21] Miscellaneous fixes for resctrl selftests Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 01/21] selftests/resctrl: Rename CQM test as CMT test Fenghua Yu
2020-10-27 20:55 ` Shuah Khan
2020-10-20 23:51 ` [PATCH v3 02/21] selftests/resctrl: Fix typo Fenghua Yu
2020-10-27 20:56 ` Shuah Khan
2020-10-20 23:51 ` [PATCH v3 03/21] selftests/resctrl: Fix typo in help text Fenghua Yu
2020-10-27 20:58 ` Shuah Khan
2020-10-20 23:51 ` [PATCH v3 04/21] selftests/resctrl: Declare global variables as extern Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 05/21] selftests/resctrl: Return if resctrl file system is not supported Fenghua Yu
2020-10-27 21:34 ` Shuah Khan
2020-10-20 23:51 ` [PATCH v3 06/21] selftests/resctrl: Check for resctrl mount point only if resctrl FS is supported Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 07/21] selftests/resctrl: Use resctrl/info for feature detection Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 08/21] selftests/resctrl: Ensure sibling CPU is not same as original CPU Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 09/21] selftests/resctrl: Fix missing options "-n" and "-p" Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 10/21] selftests/resctrl: Fix MBA/MBM results reporting format Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 11/21] selftests/resctrl: Abort running tests if not root user Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 12/21] selftests/resctrl: Enable gcc checks to detect buffer overflows Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 13/21] selftests/resctrl: Don't hard code value of "no_of_bits" variable Fenghua Yu
2020-10-20 23:51 ` Fenghua Yu [this message]
2020-10-20 23:51 ` [PATCH v3 15/21] selftests/resctrl: Skip the test if requested resctrl feature is not supported Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 16/21] selftests/resctrl: Umount resctrl FS only if mounted Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 17/21] selftests/resctrl: Unmount resctrl FS after running all tests Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 18/21] selftests/resctrl: Fix incorrect parsing of iMC counters Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 19/21] selftests/resctrl: Fix checking for < 0 for unsigned values Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 20/21] selftests/resctrl: Fix unnecessary usage of global variables Fenghua Yu
2020-10-20 23:51 ` [PATCH v3 21/21] selftests/resctrl: Don't use global variable for capacity bitmask (CBM) Fenghua Yu
2020-10-28 0:46 ` [PATCH v3 00/21] Miscellaneous fixes for resctrl selftests Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201020235126.1871815-15-fenghua.yu@intel.com \
--to=fenghua.yu@intel.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=ravi.v.shankar@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox