15de0a3e9SWalter Erquinigo //===-- ProcfsTests.cpp ---------------------------------------------------===//
25de0a3e9SWalter Erquinigo //
35de0a3e9SWalter Erquinigo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45de0a3e9SWalter Erquinigo // See https://llvm.org/LICENSE.txt for license information.
55de0a3e9SWalter Erquinigo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65de0a3e9SWalter Erquinigo //
75de0a3e9SWalter Erquinigo //===----------------------------------------------------------------------===//
85de0a3e9SWalter Erquinigo
95de0a3e9SWalter Erquinigo #include "Procfs.h"
105de0a3e9SWalter Erquinigo
115de0a3e9SWalter Erquinigo #include "lldb/Host/linux/Support.h"
125de0a3e9SWalter Erquinigo
135de0a3e9SWalter Erquinigo #include "gmock/gmock.h"
145de0a3e9SWalter Erquinigo #include "gtest/gtest.h"
155de0a3e9SWalter Erquinigo
165de0a3e9SWalter Erquinigo using namespace lldb_private;
175de0a3e9SWalter Erquinigo using namespace process_linux;
185de0a3e9SWalter Erquinigo using namespace llvm;
195de0a3e9SWalter Erquinigo
TEST(Perf,HardcodedLogicalCoreIDs)205de0a3e9SWalter Erquinigo TEST(Perf, HardcodedLogicalCoreIDs) {
21*6a5355e8SWalter Erquinigo Expected<std::vector<lldb::cpu_id_t>> cpu_ids =
225de0a3e9SWalter Erquinigo GetAvailableLogicalCoreIDs(R"(processor : 13
235de0a3e9SWalter Erquinigo vendor_id : GenuineIntel
245de0a3e9SWalter Erquinigo cpu family : 6
255de0a3e9SWalter Erquinigo model : 85
265de0a3e9SWalter Erquinigo model name : Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz
275de0a3e9SWalter Erquinigo stepping : 4
285de0a3e9SWalter Erquinigo microcode : 0x2000065
295de0a3e9SWalter Erquinigo cpu MHz : 2886.370
305de0a3e9SWalter Erquinigo cache size : 28160 KB
315de0a3e9SWalter Erquinigo physical id : 1
325de0a3e9SWalter Erquinigo siblings : 40
335de0a3e9SWalter Erquinigo core id : 19
345de0a3e9SWalter Erquinigo cpu cores : 20
355de0a3e9SWalter Erquinigo apicid : 103
365de0a3e9SWalter Erquinigo initial apicid : 103
375de0a3e9SWalter Erquinigo fpu : yes
385de0a3e9SWalter Erquinigo fpu_exception : yes
395de0a3e9SWalter Erquinigo cpuid level : 22
405de0a3e9SWalter Erquinigo power management:
415de0a3e9SWalter Erquinigo
425de0a3e9SWalter Erquinigo processor : 24
435de0a3e9SWalter Erquinigo vendor_id : GenuineIntel
445de0a3e9SWalter Erquinigo cpu family : 6
455de0a3e9SWalter Erquinigo model : 85
465de0a3e9SWalter Erquinigo model name : Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz
475de0a3e9SWalter Erquinigo stepping : 4
485de0a3e9SWalter Erquinigo microcode : 0x2000065
495de0a3e9SWalter Erquinigo cpu MHz : 2768.494
505de0a3e9SWalter Erquinigo cache size : 28160 KB
515de0a3e9SWalter Erquinigo physical id : 1
525de0a3e9SWalter Erquinigo siblings : 40
535de0a3e9SWalter Erquinigo core id : 20
545de0a3e9SWalter Erquinigo cpu cores : 20
555de0a3e9SWalter Erquinigo apicid : 105
565de0a3e9SWalter Erquinigo power management:
575de0a3e9SWalter Erquinigo
585de0a3e9SWalter Erquinigo processor : 35
595de0a3e9SWalter Erquinigo vendor_id : GenuineIntel
605de0a3e9SWalter Erquinigo cpu family : 6
615de0a3e9SWalter Erquinigo model : 85
625de0a3e9SWalter Erquinigo model name : Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz
635de0a3e9SWalter Erquinigo stepping : 4
645de0a3e9SWalter Erquinigo microcode : 0x2000065
655de0a3e9SWalter Erquinigo cpu MHz : 2884.703
665de0a3e9SWalter Erquinigo cache size : 28160 KB
675de0a3e9SWalter Erquinigo physical id : 1
685de0a3e9SWalter Erquinigo siblings : 40
695de0a3e9SWalter Erquinigo core id : 24
705de0a3e9SWalter Erquinigo cpu cores : 20
715de0a3e9SWalter Erquinigo apicid : 113
725de0a3e9SWalter Erquinigo
735de0a3e9SWalter Erquinigo processor : 79
745de0a3e9SWalter Erquinigo vendor_id : GenuineIntel
755de0a3e9SWalter Erquinigo cpu family : 6
765de0a3e9SWalter Erquinigo model : 85
775de0a3e9SWalter Erquinigo model name : Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz
785de0a3e9SWalter Erquinigo stepping : 4
795de0a3e9SWalter Erquinigo microcode : 0x2000065
805de0a3e9SWalter Erquinigo cpu MHz : 3073.955
815de0a3e9SWalter Erquinigo cache size : 28160 KB
825de0a3e9SWalter Erquinigo physical id : 1
835de0a3e9SWalter Erquinigo siblings : 40
845de0a3e9SWalter Erquinigo core id : 28
855de0a3e9SWalter Erquinigo cpu cores : 20
865de0a3e9SWalter Erquinigo apicid : 121
875de0a3e9SWalter Erquinigo power management:
885de0a3e9SWalter Erquinigo )");
895de0a3e9SWalter Erquinigo
90*6a5355e8SWalter Erquinigo ASSERT_TRUE((bool)cpu_ids);
91*6a5355e8SWalter Erquinigo ASSERT_THAT(*cpu_ids, ::testing::ElementsAre(13, 24, 35, 79));
925de0a3e9SWalter Erquinigo }
935de0a3e9SWalter Erquinigo
TEST(Perf,RealLogicalCoreIDs)945de0a3e9SWalter Erquinigo TEST(Perf, RealLogicalCoreIDs) {
955de0a3e9SWalter Erquinigo // We first check we can read /proc/cpuinfo
965de0a3e9SWalter Erquinigo auto buffer_or_error = errorOrToExpected(getProcFile("cpuinfo"));
975de0a3e9SWalter Erquinigo if (!buffer_or_error)
985de0a3e9SWalter Erquinigo GTEST_SKIP() << toString(buffer_or_error.takeError());
995de0a3e9SWalter Erquinigo
1005de0a3e9SWalter Erquinigo // At this point we shouldn't fail parsing the core ids
101*6a5355e8SWalter Erquinigo Expected<ArrayRef<lldb::cpu_id_t>> cpu_ids = GetAvailableLogicalCoreIDs();
102*6a5355e8SWalter Erquinigo ASSERT_TRUE((bool)cpu_ids);
103*6a5355e8SWalter Erquinigo ASSERT_GT((int)cpu_ids->size(), 0) << "We must see at least one core";
1045de0a3e9SWalter Erquinigo }
105