blob: 91ed4a609674071535f3db9dab509273de6e8308 [file] [log] [blame]
Clement Courbetac74acd2018-04-04 11:37:06 +00001//===-- PerfHelperTest.cpp --------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "PerfHelper.h"
11#include "llvm/Config/config.h"
12#include "gmock/gmock.h"
13#include "gtest/gtest.h"
14
Fangrui Song32401af2018-10-22 17:10:47 +000015namespace llvm {
Clement Courbetac74acd2018-04-04 11:37:06 +000016namespace exegesis {
17namespace pfm {
18namespace {
19
20using ::testing::IsEmpty;
21using ::testing::Not;
22
23TEST(PerfHelperTest, FunctionalTest) {
24#ifdef HAVE_LIBPFM
25 ASSERT_FALSE(pfmInitialize());
26 const PerfEvent SingleEvent("CYCLES:u");
27 const auto &EmptyFn = []() {};
28 std::string CallbackEventName;
29 std::string CallbackEventNameFullyQualifed;
30 int64_t CallbackEventCycles;
31 Measure(llvm::makeArrayRef(SingleEvent),
32 [&](const PerfEvent &Event, int64_t Value) {
33 CallbackEventName = Event.name();
34 CallbackEventNameFullyQualifed = Event.getPfmEventString();
35 CallbackEventCycles = Value;
36 },
37 EmptyFn);
38 EXPECT_EQ(CallbackEventName, "CYCLES:u");
39 EXPECT_THAT(CallbackEventNameFullyQualifed, Not(IsEmpty()));
40 pfmTerminate();
41#else
Clement Courbet59888422018-04-04 11:48:15 +000042 ASSERT_TRUE(pfmInitialize());
Clement Courbetac74acd2018-04-04 11:37:06 +000043#endif
44}
45
46} // namespace
47} // namespace pfm
48} // namespace exegesis
Fangrui Song32401af2018-10-22 17:10:47 +000049} // namespace llvm