SF: Adding Layer History to SF.
Calculate average and median between the timestamp differences that come in for
individual layers, and store them to systrace.
See go/surface-flinger-scheduler for more details and systrace links.
Test: SF tests updated.
Bug: 113612090
Change-Id: I934bbe36ab57d16a5b219c7cb8e0580112238671
diff --git a/services/surfaceflinger/tests/unittests/SchedulerTest.cpp b/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
index be91a9c..e967742 100644
--- a/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
+++ b/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
@@ -59,6 +59,8 @@
SchedulerTest();
~SchedulerTest() override;
+ int64_t calculateMedian(std::vector<int64_t>* v);
+
sp<Scheduler::ConnectionHandle> mConnectionHandle;
mock::DispSync* mPrimaryDispSync = new mock::DispSync();
mock::EventThread* mEventThread;
@@ -95,6 +97,10 @@
ALOGD("**** Tearing down after %s.%s\n", test_info->test_case_name(), test_info->name());
}
+int64_t SchedulerTest::calculateMedian(std::vector<int64_t>* v) {
+ return mScheduler->calculateMedian(v);
+}
+
namespace {
/* ------------------------------------------------------------------------
* Test cases
@@ -185,5 +191,37 @@
ASSERT_NO_FATAL_FAILURE(mScheduler->setPhaseOffset(mConnectionHandle, 10));
}
+TEST_F(SchedulerTest, calculateMedian) {
+ std::vector<int64_t> testVector;
+ // Calling the function on empty vector returns 0.
+ EXPECT_EQ(0, calculateMedian(&testVector));
+
+ testVector.push_back(33);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(33);
+ testVector.push_back(33);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(42);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(33);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(42);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(42);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+ testVector.push_back(42);
+ EXPECT_EQ(42, calculateMedian(&testVector));
+ testVector.push_back(60);
+ EXPECT_EQ(42, calculateMedian(&testVector));
+ testVector.push_back(60);
+ EXPECT_EQ(42, calculateMedian(&testVector));
+ testVector.push_back(33);
+ EXPECT_EQ(42, calculateMedian(&testVector));
+ testVector.push_back(33);
+ EXPECT_EQ(42, calculateMedian(&testVector));
+ testVector.push_back(33);
+ EXPECT_EQ(33, calculateMedian(&testVector));
+}
+
} // namespace
-} // namespace android
\ No newline at end of file
+} // namespace android