summaryrefslogtreecommitdiff
path: root/unittests/ProfileData/SampleProfTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/ProfileData/SampleProfTest.cpp')
-rw-r--r--unittests/ProfileData/SampleProfTest.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/unittests/ProfileData/SampleProfTest.cpp b/unittests/ProfileData/SampleProfTest.cpp
index 764bded2f030..3ebfd0e500fe 100644
--- a/unittests/ProfileData/SampleProfTest.cpp
+++ b/unittests/ProfileData/SampleProfTest.cpp
@@ -77,6 +77,11 @@ struct SampleProfTest : ::testing::Test {
BarSamples.addTotalSamples(20301);
BarSamples.addHeadSamples(1437);
BarSamples.addBodySamples(1, 0, 1437);
+ // Test how reader/writer handles unmangled names.
+ StringRef MconstructName("_M_construct<char *>");
+ StringRef StringviewName("string_view<std::allocator<char> >");
+ BarSamples.addCalledTargetSamples(1, 0, MconstructName, 1000);
+ BarSamples.addCalledTargetSamples(1, 0, StringviewName, 437);
StringMap<FunctionSamples> Profiles;
Profiles[FooName] = std::move(FooSamples);
@@ -97,13 +102,29 @@ struct SampleProfTest : ::testing::Test {
StringMap<FunctionSamples> &ReadProfiles = Reader->getProfiles();
ASSERT_EQ(2u, ReadProfiles.size());
- FunctionSamples &ReadFooSamples = ReadProfiles[FooName];
+ std::string FooGUID;
+ StringRef FooRep = getRepInFormat(FooName, Format, FooGUID);
+ FunctionSamples &ReadFooSamples = ReadProfiles[FooRep];
ASSERT_EQ(7711u, ReadFooSamples.getTotalSamples());
ASSERT_EQ(610u, ReadFooSamples.getHeadSamples());
- FunctionSamples &ReadBarSamples = ReadProfiles[BarName];
+ std::string BarGUID;
+ StringRef BarRep = getRepInFormat(BarName, Format, BarGUID);
+ FunctionSamples &ReadBarSamples = ReadProfiles[BarRep];
ASSERT_EQ(20301u, ReadBarSamples.getTotalSamples());
ASSERT_EQ(1437u, ReadBarSamples.getHeadSamples());
+ ErrorOr<SampleRecord::CallTargetMap> CTMap =
+ ReadBarSamples.findCallTargetMapAt(1, 0);
+ ASSERT_FALSE(CTMap.getError());
+
+ std::string MconstructGUID;
+ StringRef MconstructRep =
+ getRepInFormat(MconstructName, Format, MconstructGUID);
+ std::string StringviewGUID;
+ StringRef StringviewRep =
+ getRepInFormat(StringviewName, Format, StringviewGUID);
+ ASSERT_EQ(1000u, CTMap.get()[MconstructRep]);
+ ASSERT_EQ(437u, CTMap.get()[StringviewRep]);
auto VerifySummary = [](ProfileSummary &Summary) mutable {
ASSERT_EQ(ProfileSummary::PSK_Sample, Summary.getKind());
@@ -158,10 +179,14 @@ TEST_F(SampleProfTest, roundtrip_text_profile) {
testRoundTrip(SampleProfileFormat::SPF_Text);
}
-TEST_F(SampleProfTest, roundtrip_binary_profile) {
+TEST_F(SampleProfTest, roundtrip_raw_binary_profile) {
testRoundTrip(SampleProfileFormat::SPF_Binary);
}
+TEST_F(SampleProfTest, roundtrip_compact_binary_profile) {
+ testRoundTrip(SampleProfileFormat::SPF_Compact_Binary);
+}
+
TEST_F(SampleProfTest, sample_overflow_saturation) {
const uint64_t Max = std::numeric_limits<uint64_t>::max();
sampleprof_error Result;