Revert "Revert "transcoding: add thermal status listener""
This reverts commit b253cec66de2986379ef94e1d372123dee1b826f.
Reason for revert: reland with fix
Change-Id: Ieab554dc2dc4187e75fc223997387f4875832e52
diff --git a/services/mediatranscoding/tests/Android.bp b/services/mediatranscoding/tests/Android.bp
index 5a7c4cc..9d3e56c 100644
--- a/services/mediatranscoding/tests/Android.bp
+++ b/services/mediatranscoding/tests/Android.bp
@@ -18,13 +18,13 @@
"libbinder_ndk",
"liblog",
"libutils",
- "libmediatranscodingservice",
"libcutils",
],
static_libs: [
"mediatranscoding_aidl_interface-ndk_platform",
"resourcemanager_aidl_interface-ndk_platform",
+ "libmediatranscodingservice",
],
required: [
diff --git a/services/mediatranscoding/tests/mediatranscodingservice_simulated_tests.cpp b/services/mediatranscoding/tests/mediatranscodingservice_simulated_tests.cpp
index 7dfda44..601bb1b 100644
--- a/services/mediatranscoding/tests/mediatranscodingservice_simulated_tests.cpp
+++ b/services/mediatranscoding/tests/mediatranscodingservice_simulated_tests.cpp
@@ -354,5 +354,36 @@
ALOGD("TestTranscodingUidPolicy finished.");
}
+TEST_F(MediaTranscodingServiceSimulatedTest, TestTranscodingThermalPolicy) {
+ ALOGD("TestTranscodingThermalPolicy starting...");
+
+ registerMultipleClients();
+
+ // Submit request, should start immediately.
+ EXPECT_TRUE(mClient1->submit(0, "test_source_file_0", "test_destination_file_0"));
+ EXPECT_EQ(mClient1->pop(kPaddingUs), EventTracker::Start(CLIENT(1), 0));
+
+ // Now, simulate thermal status change by adb cmd. The status code is as defined in
+ // frameworks/native/include/android/thermal.h.
+ // ATHERMAL_STATUS_SEVERE(3): should start throttling.
+ EXPECT_TRUE(ShellHelper::RunCmd("cmd thermalservice override-status 3"));
+ EXPECT_EQ(mClient1->pop(kPaddingUs), EventTracker::Pause(CLIENT(1), 0));
+
+ // ATHERMAL_STATUS_CRITICAL(4): shouldn't start throttling again (already started).
+ EXPECT_TRUE(ShellHelper::RunCmd("cmd thermalservice override-status 4"));
+ EXPECT_EQ(mClient1->pop(kPaddingUs), EventTracker::NoEvent);
+
+ // ATHERMAL_STATUS_MODERATE(2): should stop throttling.
+ EXPECT_TRUE(ShellHelper::RunCmd("cmd thermalservice override-status 2"));
+ EXPECT_EQ(mClient1->pop(kPaddingUs), EventTracker::Resume(CLIENT(1), 0));
+
+ // ATHERMAL_STATUS_LIGHT(1): shouldn't stop throttling again (already stopped).
+ EXPECT_TRUE(ShellHelper::RunCmd("cmd thermalservice override-status 1"));
+ EXPECT_EQ(mClient1->pop(kSessionWithPaddingUs), EventTracker::Finished(CLIENT(1), 0));
+
+ unregisterMultipleClients();
+
+ ALOGD("TestTranscodingThermalPolicy finished.");
+}
} // namespace media
} // namespace android