Skip to content

Commit a8fdefd

Browse files
committed
Refactor test and script logic to improve task handling
Updated functional tests and scripts to support dynamically filtering tasks by type. Refactored execution logic to reduce redundancy and improve maintainability. Adjusted macros and utility functions for better namespace resolution.
1 parent 9cce2f3 commit a8fdefd

3 files changed

Lines changed: 21 additions & 23 deletions

File tree

modules/core/util/include/util.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace ppc::util {
1616
std::string GetAbsolutePath(const std::string &relative_path);
1717
int GetPPCNumThreads();
1818

19-
#if defined(__clang__) || defined(__GNUC__)
19+
#if (defined(__clang__) || defined(__GNUC__)) && !defined(_MSC_VER)
2020
template <typename T>
2121
consteval std::string_view GetNamespace() {
2222
constexpr std::string_view kFunc = __PRETTY_FUNCTION__;

scripts/run_tests.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,27 @@ def __run_exec(command):
5353
raise Exception(f"Subprocess return {result.returncode}.")
5454

5555
@staticmethod
56-
def __get_gtest_settings(repeats_count):
56+
def __get_gtest_settings(repeats_count, type_task):
5757
command = f"--gtest_repeat={repeats_count} "
5858
command += "--gtest_recreate_environments_when_repeating "
5959
command += "--gtest_color=0 "
60+
command += "--gtest_shuffle "
61+
command += f"--gtest_filter=\"*{type_task}*\" "
6062
return command
6163

6264
def run_threads(self):
6365
if platform.system() == "Linux" and not os.environ.get("ASAN_RUN"):
64-
self.__run_exec(f"{self.valgrind_cmd} {self.work_dir / 'seq_func_tests'} {self.__get_gtest_settings(1)}")
65-
self.__run_exec(f"{self.valgrind_cmd} {self.work_dir / 'stl_func_tests'} {self.__get_gtest_settings(1)}")
66+
for task_type in ["seq", "stl"]:
67+
self.__run_exec(f"{self.valgrind_cmd} {self.work_dir / 'ppc_func_tests'} {self.__get_gtest_settings(1, '_' + task_type + '_')}")
6668

67-
self.__run_exec(f"{self.work_dir / 'seq_func_tests'} {self.__get_gtest_settings(3)}")
68-
self.__run_exec(f"{self.work_dir / 'stl_func_tests'} {self.__get_gtest_settings(3)}")
69-
self.__run_exec(f"{self.work_dir / 'tbb_func_tests'} {self.__get_gtest_settings(3)}")
70-
self.__run_exec(f"{self.work_dir / 'omp_func_tests'} {self.__get_gtest_settings(3)}")
69+
for task_type in ["omp", "seq", "stl", "tbb"]:
70+
self.__run_exec(f"{self.work_dir / 'ppc_func_tests'} {self.__get_gtest_settings(3, '_' + task_type + '_')}")
7171

7272
def run_core(self):
7373
if platform.system() == "Linux" and not os.environ.get("ASAN_RUN"):
74-
self.__run_exec(f"{self.valgrind_cmd} {self.work_dir / 'core_func_tests'} {self.__get_gtest_settings(1)}")
74+
self.__run_exec(f"{self.valgrind_cmd} {self.work_dir / 'core_func_tests'} {self.__get_gtest_settings(1, '*')}")
7575

76-
self.__run_exec(f"{self.work_dir / 'core_func_tests'} {self.__get_gtest_settings(1)}")
76+
self.__run_exec(f"{self.work_dir / 'core_func_tests'} {self.__get_gtest_settings(1, '*')}")
7777

7878
def run_processes(self, additional_mpi_args):
7979
proc_count = os.environ.get("PROC_COUNT")
@@ -82,26 +82,23 @@ def run_processes(self, additional_mpi_args):
8282

8383
mpi_running = f"{self.mpi_exec} {additional_mpi_args} -np {proc_count}"
8484
if not os.environ.get("ASAN_RUN"):
85-
self.__run_exec(f"{mpi_running} {self.work_dir / 'all_func_tests'} {self.__get_gtest_settings(10)}")
86-
self.__run_exec(f"{mpi_running} {self.work_dir / 'mpi_func_tests'} {self.__get_gtest_settings(10)}")
85+
for task_type in ["all", "mpi"]:
86+
self.__run_exec(f"{mpi_running} {self.work_dir / 'ppc_func_tests'} {self.__get_gtest_settings(10, '_' + task_type)}")
8787

8888
def run_performance(self):
8989
if not os.environ.get("ASAN_RUN"):
9090
proc_count = os.environ.get("PROC_COUNT")
9191
if proc_count is None:
9292
raise EnvironmentError("Required environment variable 'PROC_COUNT' is not set.")
9393
mpi_running = f"{self.mpi_exec} -np {proc_count}"
94-
self.__run_exec(f"{mpi_running} {self.work_dir / 'all_perf_tests'} {self.__get_gtest_settings(1)}")
95-
self.__run_exec(f"{mpi_running} {self.work_dir / 'mpi_perf_tests'} {self.__get_gtest_settings(1)}")
94+
for task_type in ["all", "mpi"]:
95+
self.__run_exec(f"{mpi_running} {self.work_dir / 'ppc_perf_tests'} {self.__get_gtest_settings(1, '_' + task_type)}")
9696

97-
self.__run_exec(f"{self.work_dir / 'omp_perf_tests'} {self.__get_gtest_settings(1)}")
98-
self.__run_exec(f"{self.work_dir / 'seq_perf_tests'} {self.__get_gtest_settings(1)}")
99-
self.__run_exec(f"{self.work_dir / 'stl_perf_tests'} {self.__get_gtest_settings(1)}")
100-
self.__run_exec(f"{self.work_dir / 'tbb_perf_tests'} {self.__get_gtest_settings(1)}")
97+
for task_type in ["omp", "seq", "stl", "tbb"]:
98+
self.__run_exec(f"{self.work_dir / 'ppc_perf_tests'} {self.__get_gtest_settings(1, '_' + task_type)}")
10199

102100
def run_performance_list(self):
103-
for task_type in ["all", "mpi", "omp", "seq", "stl", "tbb"]:
104-
self.__run_exec(f"{self.work_dir / f'{task_type}_perf_tests'} --gtest_list_tests")
101+
self.__run_exec(f"{self.work_dir / 'ppc_perf_tests'} --gtest_list_tests")
105102

106103

107104
if __name__ == "__main__":

tasks/example/tests/func_tests/main.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class NesterovARunFuncTests : public ::testing::TestWithParam<ppc::util::FuncTes
2222
public:
2323
static std::string CustomFuncTestName(
2424
const ::testing::TestParamInfo<ppc::util::FuncTestParam<InType, OutType, int>>& info) {
25-
return std::to_string(info.index);
25+
return std::get<ppc::util::FuncTestParamIndex::kNameTest>(info.param) + "_" +
26+
std::to_string(std::get<ppc::util::FuncTestParamIndex::kAddParams>(info.param));
2627
}
2728

2829
protected:
@@ -60,8 +61,8 @@ class NesterovARunFuncTests : public ::testing::TestWithParam<ppc::util::FuncTes
6061
TEST_P(NesterovARunFuncTests, MatmulFromPic) { ExecuteTest(); }
6162

6263
#define ADD_FUNC_TASK(TASK) \
63-
std::make_tuple(ppc::core::TaskGetter<TASK, InType>, "", 5), \
64-
std::make_tuple(ppc::core::TaskGetter<TASK, InType>, "", 10)
64+
std::make_tuple(ppc::core::TaskGetter<TASK, InType>, ppc::util::GetNamespace<TASK>(), 5), \
65+
std::make_tuple(ppc::core::TaskGetter<TASK, InType>, ppc::util::GetNamespace<TASK>(), 10)
6566

6667
INSTANTIATE_TEST_SUITE_P_NOLINT(PicMatrixTests, NesterovARunFuncTests,
6768
::testing::Values(ADD_FUNC_TASK(nesterov_a_test_task_all::TestTaskALL),

0 commit comments

Comments
 (0)