diff --git a/clients/drcachesim/CMakeLists.txt b/clients/drcachesim/CMakeLists.txt index 75f417d00a9..cfd33148df1 100644 --- a/clients/drcachesim/CMakeLists.txt +++ b/clients/drcachesim/CMakeLists.txt @@ -391,6 +391,13 @@ if (X86 AND X64 AND ZIP_FOUND) add_test(NAME tool.scheduler_launcher COMMAND scheduler_launcher -trace_dir ${trace_dir}) set_tests_properties(tool.scheduler_launcher PROPERTIES TIMEOUT ${test_seconds}) + + set(trace_dir_2 + "${PROJECT_SOURCE_DIR}/clients/drcachesim/tests/drmemtrace.schedtest.x64") + add_test(NAME tool.scheduler_launcher_map_to_rec + COMMAND scheduler_launcher -trace_dir ${trace_dir_2} -cpu_schedule_file + ${trace_dir_2}/cpu_schedule.bin.zip) + set_tests_properties(tool.scheduler_launcher_map_to_rec PROPERTIES TIMEOUT ${test_seconds}) endif () # We have a companion test built using a separate --build-and-test CMake project in diff --git a/clients/drcachesim/tests/drmemtrace.schedtest.x64/cpu_schedule.bin.zip b/clients/drcachesim/tests/drmemtrace.schedtest.x64/cpu_schedule.bin.zip new file mode 100644 index 00000000000..0e5f652ef20 Binary files /dev/null and b/clients/drcachesim/tests/drmemtrace.schedtest.x64/cpu_schedule.bin.zip differ diff --git a/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180524.3292.trace.zip b/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180524.3292.trace.zip new file mode 100644 index 00000000000..721b4bf5e75 Binary files /dev/null and b/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180524.3292.trace.zip differ diff --git a/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180525.6841.trace.zip b/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180525.6841.trace.zip new file mode 100644 index 00000000000..00f5ad4b09e Binary files /dev/null and b/clients/drcachesim/tests/drmemtrace.schedtest.x64/drmemtrace.threadsig.180525.6841.trace.zip differ diff --git a/clients/drcachesim/tests/drmemtrace.schedtest.x64/serial_schedule.bin.gz b/clients/drcachesim/tests/drmemtrace.schedtest.x64/serial_schedule.bin.gz new file mode 100644 index 00000000000..50a071285c9 Binary files /dev/null and b/clients/drcachesim/tests/drmemtrace.schedtest.x64/serial_schedule.bin.gz differ diff --git a/clients/drcachesim/tests/scheduler_launcher.cpp b/clients/drcachesim/tests/scheduler_launcher.cpp index bfebb7e5861..d69e99db832 100644 --- a/clients/drcachesim/tests/scheduler_launcher.cpp +++ b/clients/drcachesim/tests/scheduler_launcher.cpp @@ -231,6 +231,21 @@ simulate_core(int ordinal, scheduler_t::stream_t *stream, const scheduler_t &sch thread_sequence += 'A' + static_cast(input % 26); cur_segment_instrs = 0; } + } else if (record.marker.type == dynamorio::drmemtrace::TRACE_TYPE_MARKER) { + if (record.marker.marker_type == + dynamorio::drmemtrace::TRACE_MARKER_TYPE_CPU_ID) { +#ifdef HAS_ZIP + if (!op_cpu_schedule_file.get_value().empty()) { + int cpu = (int)record.marker.marker_value; + int output_cpuid = stream->get_output_cpuid(); + if (cpu != output_cpuid) { + FATAL_ERROR( + "CPU marker differs from output stream CPU ID: %d != %d\n", + cpu, output_cpuid); + } + } +#endif + } } #ifdef HAS_ZIP else if (record.marker.type == dynamorio::drmemtrace::TRACE_TYPE_MARKER) {