summaryrefslogtreecommitdiff
path: root/simpleperf/sample_tree_test.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-06-08 12:27:19 -0700
committerYabin Cui <yabinc@google.com>2015-06-08 12:31:36 -0700
commitb47de4af4d9a1ceffa74a148f6e89be4dbb62bcd (patch)
tree75960ad4120ea2f5b72e192b91efb2ad6b22c404 /simpleperf/sample_tree_test.cpp
parent4f9a042a60dcdb7492c1372cc3c973e3eda8a0ab (diff)
downloadextras-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.cpp32
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);
+}