summaryrefslogtreecommitdiffstats
path: root/drm
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-02-12 17:55:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-02-12 17:55:50 +0000
commit1233c1046d57c6234fb6a687c487c320821832fe (patch)
treeec2a1bf3c26d715108cd174c5a4cb2b1769eb48a /drm
parent55bb8f76d3f3416cd8ba1c5ec75c014b6a56421e (diff)
parent6c2589f524eeeb44e8d90610dcc42f6f3cedc447 (diff)
downloadandroid_hardware_interfaces-1233c1046d57c6234fb6a687c487c320821832fe.tar.gz
android_hardware_interfaces-1233c1046d57c6234fb6a687c487c320821832fe.tar.bz2
android_hardware_interfaces-1233c1046d57c6234fb6a687c487c320821832fe.zip
Merge "Revert "Revert "VTS tests for fixed MediaDrm security level APIs"""
Diffstat (limited to 'drm')
-rw-r--r--drm/1.1/vts/functional/drm_hal_clearkey_test.cpp131
1 files changed, 82 insertions, 49 deletions
diff --git a/drm/1.1/vts/functional/drm_hal_clearkey_test.cpp b/drm/1.1/vts/functional/drm_hal_clearkey_test.cpp
index 62cc8b67e..a8ed0e500 100644
--- a/drm/1.1/vts/functional/drm_hal_clearkey_test.cpp
+++ b/drm/1.1/vts/functional/drm_hal_clearkey_test.cpp
@@ -158,6 +158,7 @@ public:
virtual void TearDown() override {}
SessionId openSession();
+ SessionId openSession(SecurityLevel level);
void closeSession(const SessionId& sessionId);
hidl_vec<uint8_t> loadKeys(const SessionId& sessionId, const KeyType& type);
sp<IMemory> getDecryptMemory(size_t size, size_t index);
@@ -277,6 +278,23 @@ SessionId DrmHalClearkeyTest::openSession() {
}
/**
+ * Helper method to open as session using V1.1 API
+ */
+SessionId DrmHalClearkeyTest::openSession(SecurityLevel level) {
+ SessionId sessionId;
+
+ auto res = drmPlugin->openSession_1_1(level,
+ [&sessionId](Status status, const SessionId& id) {
+ EXPECT_EQ(Status::OK, status);
+ EXPECT_NE(0u, id.size());
+ sessionId = id;
+ });
+ EXPECT_OK(res);
+ return sessionId;
+}
+
+
+/**
* Helper method to close a session
*/
void DrmHalClearkeyTest::closeSession(const SessionId& sessionId) {
@@ -298,14 +316,14 @@ TEST_F(DrmHalClearkeyTest, GetHdcpLevels) {
}
/**
- * Test that the plugin returns valid open and max session counts
+ * Test that the plugin returns default open and max session counts
*/
-TEST_F(DrmHalClearkeyTest, GetSessionCounts) {
+TEST_F(DrmHalClearkeyTest, GetDefaultSessionCounts) {
auto res = drmPlugin->getNumberOfSessions(
[&](Status status, uint32_t currentSessions,
uint32_t maxSessions) {
EXPECT_EQ(Status::OK, status);
- EXPECT_GT(maxSessions, (uint32_t)0);
+ EXPECT_GE(maxSessions, (uint32_t)8);
EXPECT_GE(currentSessions, (uint32_t)0);
EXPECT_LE(currentSessions, maxSessions);
});
@@ -313,77 +331,92 @@ TEST_F(DrmHalClearkeyTest, GetSessionCounts) {
}
/**
- * Test that the plugin returns a valid security level for
- * a valid session
+ * Test that the plugin returns valid open and max session counts
+ * after a session is opened.
*/
-TEST_F(DrmHalClearkeyTest, GetSecurityLevel) {
+TEST_F(DrmHalClearkeyTest, GetOpenSessionCounts) {
+ uint32_t initialSessions = 0;
+ auto res = drmPlugin->getNumberOfSessions(
+ [&](Status status, uint32_t currentSessions,
+ uint32_t maxSessions) {
+ EXPECT_EQ(Status::OK, status);
+ EXPECT_GE(maxSessions, (uint32_t)8);
+ EXPECT_GE(currentSessions, (uint32_t)0);
+ EXPECT_LE(currentSessions, maxSessions);
+ initialSessions = currentSessions;
+ });
+ EXPECT_OK(res);
+
SessionId session = openSession();
- auto res = drmPlugin->getSecurityLevel(session,
- [&](Status status, SecurityLevel level) {
+ res = drmPlugin->getNumberOfSessions(
+ [&](Status status, uint32_t currentSessions,
+ uint32_t /*maxSessions*/) {
EXPECT_EQ(Status::OK, status);
- EXPECT_GE(level, SecurityLevel::SW_SECURE_CRYPTO);
- EXPECT_LE(level, SecurityLevel::HW_SECURE_ALL);
+ EXPECT_EQ(currentSessions, initialSessions + 1);
});
EXPECT_OK(res);
- closeSession(session);
-}
-/**
- * Test that the plugin returns the documented error
- * when requesting the security level for an invalid sessionId
- */
-TEST_F(DrmHalClearkeyTest, GetSecurityLevelInvalidSessionId) {
- SessionId session;
- auto res = drmPlugin->getSecurityLevel(session,
- [&](Status status, SecurityLevel /*level*/) {
- EXPECT_EQ(Status::BAD_VALUE, status);
+ closeSession(session);
+ res = drmPlugin->getNumberOfSessions(
+ [&](Status status, uint32_t currentSessions,
+ uint32_t /*maxSessions*/) {
+ EXPECT_EQ(Status::OK, status);
+ EXPECT_EQ(currentSessions, initialSessions);
});
EXPECT_OK(res);
}
/**
- * Test that setting all valid security levels on a valid sessionId
- * is supported
+ * Test that the plugin returns the same security level
+ * by default as when it is requested explicitly
*/
-TEST_F(DrmHalClearkeyTest, SetSecurityLevel) {
+TEST_F(DrmHalClearkeyTest, GetDefaultSecurityLevel) {
SessionId session = openSession();
- for (uint32_t level = static_cast<uint32_t>(SecurityLevel::SW_SECURE_CRYPTO);
- level <= static_cast<uint32_t>(SecurityLevel::HW_SECURE_ALL); level++) {
- EXPECT_EQ(Status::OK, drmPlugin->setSecurityLevel(session, static_cast<SecurityLevel>(level)));
+ SecurityLevel defaultLevel;
+ auto res = drmPlugin->getSecurityLevel(session,
+ [&](Status status, SecurityLevel level) {
+ EXPECT_EQ(Status::OK, status);
+ defaultLevel = level;
+ });
+ EXPECT_OK(res);
+ closeSession(session);
- // check that the level got set
- auto res = drmPlugin->getSecurityLevel(session,
- [&](Status status, SecurityLevel readLevel) {
- EXPECT_EQ(Status::OK, status);
- EXPECT_EQ(level, static_cast<uint32_t>(readLevel));
- });
- EXPECT_OK(res);
- }
+ session = openSession(defaultLevel);
+ res = drmPlugin->getSecurityLevel(session,
+ [&](Status status, SecurityLevel level) {
+ EXPECT_EQ(Status::OK, status);
+ EXPECT_EQ(level, defaultLevel);
+ });
+ EXPECT_OK(res);
closeSession(session);
}
/**
- * Test that setting an invalid security level on a valid
- * sessionId is prohibited with the documented error code.
+ * Test that the plugin returns the lowest security level
+ * when it is requested
*/
-TEST_F(DrmHalClearkeyTest, SetInvalidSecurityLevel) {
- SessionId session = openSession();
- SecurityLevel level = static_cast<SecurityLevel>(
- static_cast<uint32_t>(SecurityLevel::HW_SECURE_ALL) + 1);
- Status status = drmPlugin->setSecurityLevel(session, level);
- EXPECT_EQ(Status::BAD_VALUE, status);
+TEST_F(DrmHalClearkeyTest, GetSecurityLevel) {
+ SessionId session = openSession(SecurityLevel::SW_SECURE_CRYPTO);
+ auto res = drmPlugin->getSecurityLevel(session,
+ [&](Status status, SecurityLevel level) {
+ EXPECT_EQ(Status::OK, status);
+ EXPECT_EQ(level, SecurityLevel::SW_SECURE_CRYPTO);
+ });
+ EXPECT_OK(res);
closeSession(session);
}
/**
- * Test that attempting to set security level on an invalid
- * (empty) sessionId is prohibited with the documented error
- * code.
+ * Test that the plugin returns the documented error
+ * when requesting the security level for an invalid sessionId
*/
-TEST_F(DrmHalClearkeyTest, SetSecurityLevelInvalidSessionId) {
+TEST_F(DrmHalClearkeyTest, GetSecurityLevelInvalidSessionId) {
SessionId session;
- SecurityLevel level = SecurityLevel::SW_SECURE_CRYPTO;
- EXPECT_EQ(Status::BAD_VALUE, drmPlugin->setSecurityLevel(session, level));
+ auto res = drmPlugin->getSecurityLevel(session,
+ [&](Status status, SecurityLevel /*level*/) {
+ EXPECT_EQ(Status::BAD_VALUE, status);
+ });
+ EXPECT_OK(res);
}
/**