From f782f6431c28ca75f17dae5a07e981b41d359ac7 Mon Sep 17 00:00:00 2001 From: Kyle Zhang Date: Mon, 23 May 2022 23:43:38 +0000 Subject: [PATCH] Add multiple provision attempts in vts openSession test Bug: 233085112 Test: VtsAidlHalDrmTargetTest Change-Id: I4dd42b3c7155b6476f51a8cc4cca185bea7d565f --- drm/aidl/vts/drm_hal_common.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drm/aidl/vts/drm_hal_common.cpp b/drm/aidl/vts/drm_hal_common.cpp index de7dc288ec..7de81670ab 100644 --- a/drm/aidl/vts/drm_hal_common.cpp +++ b/drm/aidl/vts/drm_hal_common.cpp @@ -73,6 +73,7 @@ std::string HalBaseName(const std::string& fullname) { } const char* kDrmIface = "android.hardware.drm.IDrmFactory"; +const int MAX_OPEN_SESSION_ATTEMPTS = 3; std::string HalFullName(const std::string& iface, const std::string& basename) { return iface + '/' + basename; @@ -328,9 +329,19 @@ SessionId DrmHalTest::openSession(SecurityLevel level, Status* err) { */ SessionId DrmHalTest::openSession() { SessionId sessionId; - auto ret = drmPlugin->openSession(SecurityLevel::DEFAULT, &sessionId); - EXPECT_OK(ret); - EXPECT_NE(0u, sessionId.size()); + + int attmpt = 0; + while (attmpt++ < MAX_OPEN_SESSION_ATTEMPTS) { + auto ret = drmPlugin->openSession(SecurityLevel::DEFAULT, &sessionId); + if(DrmErr(ret) == Status::ERROR_DRM_NOT_PROVISIONED) { + provision(); + } else { + EXPECT_OK(ret); + EXPECT_NE(0u, sessionId.size()); + break; + } + } + return sessionId; }