summaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2023-01-19 12:47:36 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2023-01-20 10:17:52 +0000
commit3e7206c9f0ceb404edf378fb3d31a0ca12b6ad21 (patch)
tree93207ba5170071d0a1834df01a1bfbb706d4af2a /vespalib/src/tests
parentf01c1607b1637eecb40a45c32b851ebeec539fe7 (diff)
support flat profiling
Diffstat (limited to 'vespalib/src/tests')
-rw-r--r--vespalib/src/tests/execution_profiler/execution_profiler_test.cpp60
1 files changed, 59 insertions, 1 deletions
diff --git a/vespalib/src/tests/execution_profiler/execution_profiler_test.cpp b/vespalib/src/tests/execution_profiler/execution_profiler_test.cpp
index f41aaffd90d..969521a2a9e 100644
--- a/vespalib/src/tests/execution_profiler/execution_profiler_test.cpp
+++ b/vespalib/src/tests/execution_profiler/execution_profiler_test.cpp
@@ -73,7 +73,7 @@ TEST(ExecutionProfilerTest, resolve_names) {
EXPECT_EQ(profiler.resolve("baz"), 2);
}
-TEST(ExecutionProfilerTest, empty_report) {
+TEST(ExecutionProfilerTest, empty_tree_report) {
Profiler profiler(64);
profiler.resolve("foo");
profiler.resolve("bar");
@@ -81,6 +81,24 @@ TEST(ExecutionProfilerTest, empty_report) {
Slime slime;
profiler.report(slime.setObject());
fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "tree");
+ EXPECT_EQ(slime["depth"].asLong(), 64);
+ EXPECT_EQ(slime["total_time_ms"].asDouble(), 0.0);
+ EXPECT_EQ(slime["roots"].entries(), 0);
+ EXPECT_TRUE(find_path(slime, {}));
+}
+
+TEST(ExecutionProfilerTest, empty_flat_report) {
+ Profiler profiler(-64);
+ profiler.resolve("foo");
+ profiler.resolve("bar");
+ profiler.resolve("baz");
+ Slime slime;
+ profiler.report(slime.setObject());
+ fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "flat");
+ EXPECT_EQ(slime["topn"].asLong(), 64);
+ EXPECT_EQ(slime["total_time_ms"].asDouble(), 0.0);
EXPECT_EQ(slime["roots"].entries(), 0);
EXPECT_TRUE(find_path(slime, {}));
}
@@ -96,6 +114,8 @@ TEST(ExecutionProfilerTest, perform_dummy_profiling) {
Slime slime;
profiler.report(slime.setObject());
fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "tree");
+ EXPECT_EQ(slime["depth"].asLong(), 64);
EXPECT_EQ(slime["roots"].entries(), 4);
EXPECT_TRUE(find_path(slime, {{"foo", 3}, {"bar", 3}, {"baz", 6}, {"fox", 18}}));
EXPECT_TRUE(find_path(slime, {{"foo", 3}, {"bar", 3}, {"fox", 6}}));
@@ -107,6 +127,42 @@ TEST(ExecutionProfilerTest, perform_dummy_profiling) {
EXPECT_TRUE(find_path(slime, {{"fox", 3}}));
}
+TEST(ExecutionProfilerTest, perform_flat_dummy_profiling) {
+ Profiler profiler(-64);
+ for (int i = 0; i < 3; ++i) {
+ foo(profiler);
+ bar(profiler);
+ baz(profiler);
+ fox(profiler);
+ }
+ Slime slime;
+ profiler.report(slime.setObject());
+ fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "flat");
+ EXPECT_EQ(slime["topn"].asLong(), 64);
+ EXPECT_EQ(slime["roots"].entries(), 4);
+ EXPECT_TRUE(find_path(slime, {{"foo", 3}}));
+ EXPECT_TRUE(find_path(slime, {{"bar", 6}}));
+ EXPECT_TRUE(find_path(slime, {{"baz", 18}}));
+ EXPECT_TRUE(find_path(slime, {{"fox", 72}}));
+}
+
+TEST(ExecutionProfilerTest, perform_limited_flat_dummy_profiling) {
+ Profiler profiler(-2);
+ for (int i = 0; i < 3; ++i) {
+ foo(profiler);
+ bar(profiler);
+ baz(profiler);
+ fox(profiler);
+ }
+ Slime slime;
+ profiler.report(slime.setObject());
+ fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "flat");
+ EXPECT_EQ(slime["topn"].asLong(), 2);
+ EXPECT_EQ(slime["roots"].entries(), 2);
+}
+
TEST(ExecutionProfilerTest, perform_shallow_dummy_profiling) {
Profiler profiler(2);
for (int i = 0; i < 3; ++i) {
@@ -118,6 +174,8 @@ TEST(ExecutionProfilerTest, perform_shallow_dummy_profiling) {
Slime slime;
profiler.report(slime.setObject());
fprintf(stderr, "%s\n", slime.toString().c_str());
+ EXPECT_EQ(slime["profiler"].asString().make_string(), "tree");
+ EXPECT_EQ(slime["depth"].asLong(), 2);
EXPECT_EQ(slime["roots"].entries(), 4);
EXPECT_TRUE(find_path(slime, {{"foo", 3}, {"bar", 3}}));
EXPECT_TRUE(find_path(slime, {{"foo", 3}, {"bar", 3}}));