diff options
author | Yabin Cui <yabinc@google.com> | 2015-06-08 12:27:19 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2015-06-08 12:31:36 -0700 |
commit | b47de4af4d9a1ceffa74a148f6e89be4dbb62bcd (patch) | |
tree | 75960ad4120ea2f5b72e192b91efb2ad6b22c404 /simpleperf/sample_tree_test.cpp | |
parent | 4f9a042a60dcdb7492c1372cc3c973e3eda8a0ab (diff) | |
download | extras-b47de4af4d9a1ceffa74a148f6e89be4dbb62bcd.tar.gz |
Simpleperf: remove overlapped user map in SampleTree.
If a new map overlapps with some old maps, the overlapped old
maps are not valid any more and should be removed.
Bug: 19483574
Change-Id: Ie5df5073d0c8c3727ab05163ef27537618bb416e
Diffstat (limited to 'simpleperf/sample_tree_test.cpp')
-rw-r--r-- | simpleperf/sample_tree_test.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/simpleperf/sample_tree_test.cpp b/simpleperf/sample_tree_test.cpp index 09a7a2cd..114fa037 100644 --- a/simpleperf/sample_tree_test.cpp +++ b/simpleperf/sample_tree_test.cpp @@ -64,6 +64,14 @@ static int CompareSampleFunction(const SampleEntry& sample1, const SampleEntry& return 0; } +void VisitSampleTree(SampleTree* sample_tree, + const std::vector<ExpectedSampleInMap>& expected_samples) { + size_t pos = 0; + sample_tree->VisitAllSamples( + std::bind(&CheckSampleCallback, std::placeholders::_1, expected_samples, &pos)); + ASSERT_EQ(expected_samples.size(), pos); +} + class SampleTreeTest : public testing::Test { protected: virtual void SetUp() { @@ -74,11 +82,8 @@ class SampleTreeTest : public testing::Test { sample_tree->AddKernelMap(11, 20, 0, 0, ""); } - void VisitSampleTree(std::vector<ExpectedSampleInMap>& expected_samples) { - size_t pos = 0; - sample_tree->VisitAllSamples( - std::bind(&CheckSampleCallback, std::placeholders::_1, expected_samples, &pos)); - ASSERT_EQ(expected_samples.size(), pos); + void VisitSampleTree(const std::vector<ExpectedSampleInMap>& expected_samples) { + ::VisitSampleTree(sample_tree.get(), expected_samples); } std::unique_ptr<SampleTree> sample_tree; @@ -140,3 +145,20 @@ TEST_F(SampleTreeTest, map_kernel) { }; VisitSampleTree(expected_samples); } + +TEST(sample_tree, overlapped_map) { + auto sample_tree = std::unique_ptr<SampleTree>(new SampleTree(CompareSampleFunction)); + sample_tree->AddUserMap(1, 1, 10, 0, 0, ""); // Add map 1. + sample_tree->AddSample(1, 1, 5, 0, 0); // Hit map 1. + sample_tree->AddUserMap(1, 5, 20, 0, 0, ""); // Add map 2. + sample_tree->AddSample(1, 1, 6, 0, 0); // Hit map 2. + sample_tree->AddSample(1, 1, 4, 0, 0); // Hit unknown map. + sample_tree->AddUserMap(1, 2, 7, 0, 0, ""); // Add map 3. + sample_tree->AddSample(1, 1, 7, 0, 0); // Hit map 3. + sample_tree->AddSample(1, 1, 10, 0, 0); // Hit unknown map. + + std::vector<ExpectedSampleInMap> expected_samples = { + {1, 1, 1, 0, 2}, {1, 1, 1, 1, 1}, {1, 1, 1, 2, 1}, {1, 1, 1, 5, 1}, + }; + VisitSampleTree(sample_tree.get(), expected_samples); +} |