xref: /aosp_15_r20/frameworks/av/services/mediaresourcemanager/test/ResourceManagerServiceTestUtils.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker  * Copyright 2015 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker  *
4*ec779b8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker  *
8*ec779b8eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker  *
10*ec779b8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker  * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker  */
16*ec779b8eSAndroid Build Coastguard Worker 
17*ec779b8eSAndroid Build Coastguard Worker #include <gtest/gtest.h>
18*ec779b8eSAndroid Build Coastguard Worker #include <android/binder_process.h>
19*ec779b8eSAndroid Build Coastguard Worker 
20*ec779b8eSAndroid Build Coastguard Worker #include "ResourceManagerService.h"
21*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/media/BnResourceManagerClient.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaResource.h>
23*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaResourcePolicy.h>
24*ec779b8eSAndroid Build Coastguard Worker #include <media/stagefright/foundation/ADebug.h>
25*ec779b8eSAndroid Build Coastguard Worker #include <mediautils/ProcessInfoInterface.h>
26*ec779b8eSAndroid Build Coastguard Worker 
27*ec779b8eSAndroid Build Coastguard Worker namespace android {
28*ec779b8eSAndroid Build Coastguard Worker 
29*ec779b8eSAndroid Build Coastguard Worker using Status = ::ndk::ScopedAStatus;
30*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::BnResourceManagerClient;
31*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::IResourceManagerService;
32*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::IResourceManagerClient;
33*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::MediaResourceParcel;
34*ec779b8eSAndroid Build Coastguard Worker 
getId(const std::shared_ptr<IResourceManagerClient> & client)35*ec779b8eSAndroid Build Coastguard Worker static int64_t getId(const std::shared_ptr<IResourceManagerClient>& client) {
36*ec779b8eSAndroid Build Coastguard Worker     return (int64_t) client.get();
37*ec779b8eSAndroid Build Coastguard Worker }
38*ec779b8eSAndroid Build Coastguard Worker 
39*ec779b8eSAndroid Build Coastguard Worker struct TestProcessInfo : public ProcessInfoInterface {
TestProcessInfoTestProcessInfo40*ec779b8eSAndroid Build Coastguard Worker     TestProcessInfo() {}
~TestProcessInfoTestProcessInfo41*ec779b8eSAndroid Build Coastguard Worker     virtual ~TestProcessInfo() {}
42*ec779b8eSAndroid Build Coastguard Worker 
getPriorityTestProcessInfo43*ec779b8eSAndroid Build Coastguard Worker     virtual bool getPriority(int pid, int *priority) {
44*ec779b8eSAndroid Build Coastguard Worker         // For testing, use pid as priority.
45*ec779b8eSAndroid Build Coastguard Worker         // Lower the value higher the priority.
46*ec779b8eSAndroid Build Coastguard Worker         *priority = pid;
47*ec779b8eSAndroid Build Coastguard Worker         return true;
48*ec779b8eSAndroid Build Coastguard Worker     }
49*ec779b8eSAndroid Build Coastguard Worker 
isPidTrustedTestProcessInfo50*ec779b8eSAndroid Build Coastguard Worker     virtual bool isPidTrusted(int /* pid */) {
51*ec779b8eSAndroid Build Coastguard Worker         return true;
52*ec779b8eSAndroid Build Coastguard Worker     }
53*ec779b8eSAndroid Build Coastguard Worker 
isPidUidTrustedTestProcessInfo54*ec779b8eSAndroid Build Coastguard Worker     virtual bool isPidUidTrusted(int /* pid */, int /* uid */) {
55*ec779b8eSAndroid Build Coastguard Worker         return true;
56*ec779b8eSAndroid Build Coastguard Worker     }
57*ec779b8eSAndroid Build Coastguard Worker 
overrideProcessInfoTestProcessInfo58*ec779b8eSAndroid Build Coastguard Worker     virtual bool overrideProcessInfo(
59*ec779b8eSAndroid Build Coastguard Worker             int /* pid */, int /* procState */, int /* oomScore */) {
60*ec779b8eSAndroid Build Coastguard Worker         return true;
61*ec779b8eSAndroid Build Coastguard Worker     }
62*ec779b8eSAndroid Build Coastguard Worker 
removeProcessInfoOverrideTestProcessInfo63*ec779b8eSAndroid Build Coastguard Worker     virtual void removeProcessInfoOverride(int /* pid */) {
64*ec779b8eSAndroid Build Coastguard Worker     }
65*ec779b8eSAndroid Build Coastguard Worker 
66*ec779b8eSAndroid Build Coastguard Worker private:
67*ec779b8eSAndroid Build Coastguard Worker     DISALLOW_EVIL_CONSTRUCTORS(TestProcessInfo);
68*ec779b8eSAndroid Build Coastguard Worker };
69*ec779b8eSAndroid Build Coastguard Worker 
70*ec779b8eSAndroid Build Coastguard Worker struct TestSystemCallback :
71*ec779b8eSAndroid Build Coastguard Worker         public ResourceManagerService::SystemCallbackInterface {
TestSystemCallbackTestSystemCallback72*ec779b8eSAndroid Build Coastguard Worker     TestSystemCallback() :
73*ec779b8eSAndroid Build Coastguard Worker         mLastEvent({EventType::INVALID, 0}), mEventCount(0) {}
74*ec779b8eSAndroid Build Coastguard Worker 
75*ec779b8eSAndroid Build Coastguard Worker     enum EventType {
76*ec779b8eSAndroid Build Coastguard Worker         INVALID          = -1,
77*ec779b8eSAndroid Build Coastguard Worker         VIDEO_ON         = 0,
78*ec779b8eSAndroid Build Coastguard Worker         VIDEO_OFF        = 1,
79*ec779b8eSAndroid Build Coastguard Worker         VIDEO_RESET      = 2,
80*ec779b8eSAndroid Build Coastguard Worker         CPUSET_ENABLE    = 3,
81*ec779b8eSAndroid Build Coastguard Worker         CPUSET_DISABLE   = 4,
82*ec779b8eSAndroid Build Coastguard Worker     };
83*ec779b8eSAndroid Build Coastguard Worker 
84*ec779b8eSAndroid Build Coastguard Worker     struct EventEntry {
85*ec779b8eSAndroid Build Coastguard Worker         EventType type;
86*ec779b8eSAndroid Build Coastguard Worker         int arg;
87*ec779b8eSAndroid Build Coastguard Worker     };
88*ec779b8eSAndroid Build Coastguard Worker 
noteStartVideoTestSystemCallback89*ec779b8eSAndroid Build Coastguard Worker     virtual void noteStartVideo(int uid) override {
90*ec779b8eSAndroid Build Coastguard Worker         mLastEvent = {EventType::VIDEO_ON, uid};
91*ec779b8eSAndroid Build Coastguard Worker         mEventCount++;
92*ec779b8eSAndroid Build Coastguard Worker     }
93*ec779b8eSAndroid Build Coastguard Worker 
noteStopVideoTestSystemCallback94*ec779b8eSAndroid Build Coastguard Worker     virtual void noteStopVideo(int uid) override {
95*ec779b8eSAndroid Build Coastguard Worker         mLastEvent = {EventType::VIDEO_OFF, uid};
96*ec779b8eSAndroid Build Coastguard Worker         mEventCount++;
97*ec779b8eSAndroid Build Coastguard Worker     }
98*ec779b8eSAndroid Build Coastguard Worker 
noteResetVideoTestSystemCallback99*ec779b8eSAndroid Build Coastguard Worker     virtual void noteResetVideo() override {
100*ec779b8eSAndroid Build Coastguard Worker         mLastEvent = {EventType::VIDEO_RESET, 0};
101*ec779b8eSAndroid Build Coastguard Worker         mEventCount++;
102*ec779b8eSAndroid Build Coastguard Worker     }
103*ec779b8eSAndroid Build Coastguard Worker 
requestCpusetBoostTestSystemCallback104*ec779b8eSAndroid Build Coastguard Worker     virtual bool requestCpusetBoost(bool enable) override {
105*ec779b8eSAndroid Build Coastguard Worker         mLastEvent = {enable ? EventType::CPUSET_ENABLE : EventType::CPUSET_DISABLE, 0};
106*ec779b8eSAndroid Build Coastguard Worker         mEventCount++;
107*ec779b8eSAndroid Build Coastguard Worker         return true;
108*ec779b8eSAndroid Build Coastguard Worker     }
109*ec779b8eSAndroid Build Coastguard Worker 
eventCountTestSystemCallback110*ec779b8eSAndroid Build Coastguard Worker     size_t eventCount() { return mEventCount; }
lastEventTypeTestSystemCallback111*ec779b8eSAndroid Build Coastguard Worker     EventType lastEventType() { return mLastEvent.type; }
lastEventTestSystemCallback112*ec779b8eSAndroid Build Coastguard Worker     EventEntry lastEvent() { return mLastEvent; }
113*ec779b8eSAndroid Build Coastguard Worker 
114*ec779b8eSAndroid Build Coastguard Worker protected:
~TestSystemCallbackTestSystemCallback115*ec779b8eSAndroid Build Coastguard Worker     virtual ~TestSystemCallback() {}
116*ec779b8eSAndroid Build Coastguard Worker 
117*ec779b8eSAndroid Build Coastguard Worker private:
118*ec779b8eSAndroid Build Coastguard Worker     EventEntry mLastEvent;
119*ec779b8eSAndroid Build Coastguard Worker     size_t mEventCount;
120*ec779b8eSAndroid Build Coastguard Worker 
121*ec779b8eSAndroid Build Coastguard Worker     DISALLOW_EVIL_CONSTRUCTORS(TestSystemCallback);
122*ec779b8eSAndroid Build Coastguard Worker };
123*ec779b8eSAndroid Build Coastguard Worker 
124*ec779b8eSAndroid Build Coastguard Worker 
125*ec779b8eSAndroid Build Coastguard Worker struct TestClient : public BnResourceManagerClient {
TestClientTestClient126*ec779b8eSAndroid Build Coastguard Worker     TestClient(int pid, int uid, int32_t clientImportance,
127*ec779b8eSAndroid Build Coastguard Worker                const std::shared_ptr<ResourceManagerService> &service)
128*ec779b8eSAndroid Build Coastguard Worker         : mPid(pid), mUid(uid), mClientImportance(clientImportance), mService(service) {}
129*ec779b8eSAndroid Build Coastguard Worker 
reclaimResourceTestClient130*ec779b8eSAndroid Build Coastguard Worker     Status reclaimResource(bool* _aidl_return) override {
131*ec779b8eSAndroid Build Coastguard Worker         ClientInfoParcel clientInfo{.pid = static_cast<int32_t>(mPid),
132*ec779b8eSAndroid Build Coastguard Worker                                     .uid = static_cast<int32_t>(mUid),
133*ec779b8eSAndroid Build Coastguard Worker                                     .id = getId(ref<TestClient>()),
134*ec779b8eSAndroid Build Coastguard Worker                                     .name = "none",
135*ec779b8eSAndroid Build Coastguard Worker                                     .importance = mClientImportance};
136*ec779b8eSAndroid Build Coastguard Worker         mService->removeClient(clientInfo);
137*ec779b8eSAndroid Build Coastguard Worker         mWasReclaimResourceCalled = true;
138*ec779b8eSAndroid Build Coastguard Worker         *_aidl_return = true;
139*ec779b8eSAndroid Build Coastguard Worker         return Status::ok();
140*ec779b8eSAndroid Build Coastguard Worker     }
141*ec779b8eSAndroid Build Coastguard Worker 
getNameTestClient142*ec779b8eSAndroid Build Coastguard Worker     Status getName(::std::string* _aidl_return) override {
143*ec779b8eSAndroid Build Coastguard Worker         *_aidl_return = "test_client";
144*ec779b8eSAndroid Build Coastguard Worker         return Status::ok();
145*ec779b8eSAndroid Build Coastguard Worker     }
146*ec779b8eSAndroid Build Coastguard Worker 
checkIfReclaimedAndResetTestClient147*ec779b8eSAndroid Build Coastguard Worker     bool checkIfReclaimedAndReset() {
148*ec779b8eSAndroid Build Coastguard Worker         bool wasReclaimResourceCalled = mWasReclaimResourceCalled;
149*ec779b8eSAndroid Build Coastguard Worker         mWasReclaimResourceCalled = false;
150*ec779b8eSAndroid Build Coastguard Worker         return wasReclaimResourceCalled;
151*ec779b8eSAndroid Build Coastguard Worker     }
152*ec779b8eSAndroid Build Coastguard Worker 
~TestClientTestClient153*ec779b8eSAndroid Build Coastguard Worker     virtual ~TestClient() {}
154*ec779b8eSAndroid Build Coastguard Worker 
pidTestClient155*ec779b8eSAndroid Build Coastguard Worker     inline int pid() const { return mPid; }
uidTestClient156*ec779b8eSAndroid Build Coastguard Worker     inline int uid() const { return mUid; }
clientImportanceTestClient157*ec779b8eSAndroid Build Coastguard Worker     inline int32_t clientImportance() const { return mClientImportance; }
158*ec779b8eSAndroid Build Coastguard Worker 
159*ec779b8eSAndroid Build Coastguard Worker private:
160*ec779b8eSAndroid Build Coastguard Worker     bool mWasReclaimResourceCalled = false;
161*ec779b8eSAndroid Build Coastguard Worker     int mPid;
162*ec779b8eSAndroid Build Coastguard Worker     int mUid;
163*ec779b8eSAndroid Build Coastguard Worker     int32_t mClientImportance = 0;
164*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<ResourceManagerService> mService;
165*ec779b8eSAndroid Build Coastguard Worker     DISALLOW_EVIL_CONSTRUCTORS(TestClient);
166*ec779b8eSAndroid Build Coastguard Worker };
167*ec779b8eSAndroid Build Coastguard Worker 
168*ec779b8eSAndroid Build Coastguard Worker // [pid, uid] used by the test.
169*ec779b8eSAndroid Build Coastguard Worker static const int kTestPid1 = 30;
170*ec779b8eSAndroid Build Coastguard Worker static const int kTestUid1 = 1010;
171*ec779b8eSAndroid Build Coastguard Worker 
172*ec779b8eSAndroid Build Coastguard Worker static const int kTestPid2 = 20;
173*ec779b8eSAndroid Build Coastguard Worker static const int kTestUid2 = 1011;
174*ec779b8eSAndroid Build Coastguard Worker 
175*ec779b8eSAndroid Build Coastguard Worker static const int kLowPriorityPid = 40;
176*ec779b8eSAndroid Build Coastguard Worker static const int kMidPriorityPid = 25;
177*ec779b8eSAndroid Build Coastguard Worker static const int kHighPriorityPid = 10;
178*ec779b8eSAndroid Build Coastguard Worker 
179*ec779b8eSAndroid Build Coastguard Worker // Client Ids used by the test.
180*ec779b8eSAndroid Build Coastguard Worker static const int kLowPriorityClientId = 1111;
181*ec779b8eSAndroid Build Coastguard Worker static const int kMidPriorityClientId = 2222;
182*ec779b8eSAndroid Build Coastguard Worker static const int kHighPriorityClientId = 3333;
183*ec779b8eSAndroid Build Coastguard Worker 
184*ec779b8eSAndroid Build Coastguard Worker // Client importance used by the test.
185*ec779b8eSAndroid Build Coastguard Worker static const int32_t kHighestCodecImportance = 0;
186*ec779b8eSAndroid Build Coastguard Worker static const int32_t kLowestCodecImportance = 100;
187*ec779b8eSAndroid Build Coastguard Worker static const int32_t kMidCodecImportance = 50;
188*ec779b8eSAndroid Build Coastguard Worker 
189*ec779b8eSAndroid Build Coastguard Worker using EventType = TestSystemCallback::EventType;
190*ec779b8eSAndroid Build Coastguard Worker using EventEntry = TestSystemCallback::EventEntry;
191*ec779b8eSAndroid Build Coastguard Worker bool operator== (const EventEntry& lhs, const EventEntry& rhs) {
192*ec779b8eSAndroid Build Coastguard Worker     return lhs.type == rhs.type && lhs.arg == rhs.arg;
193*ec779b8eSAndroid Build Coastguard Worker }
194*ec779b8eSAndroid Build Coastguard Worker 
195*ec779b8eSAndroid Build Coastguard Worker // The condition is expected to return a status but also update the local
196*ec779b8eSAndroid Build Coastguard Worker // result variable.
197*ec779b8eSAndroid Build Coastguard Worker #define CHECK_STATUS_TRUE(conditionThatUpdatesResult) \
198*ec779b8eSAndroid Build Coastguard Worker     do { \
199*ec779b8eSAndroid Build Coastguard Worker         bool result = false; \
200*ec779b8eSAndroid Build Coastguard Worker         EXPECT_TRUE((conditionThatUpdatesResult).isOk()); \
201*ec779b8eSAndroid Build Coastguard Worker         EXPECT_TRUE(result); \
202*ec779b8eSAndroid Build Coastguard Worker     } while(false)
203*ec779b8eSAndroid Build Coastguard Worker 
204*ec779b8eSAndroid Build Coastguard Worker // The condition is expected to return a status but also update the local
205*ec779b8eSAndroid Build Coastguard Worker // result variable.
206*ec779b8eSAndroid Build Coastguard Worker #define CHECK_STATUS_FALSE(conditionThatUpdatesResult) \
207*ec779b8eSAndroid Build Coastguard Worker     do { \
208*ec779b8eSAndroid Build Coastguard Worker         bool result = true; \
209*ec779b8eSAndroid Build Coastguard Worker         EXPECT_TRUE((conditionThatUpdatesResult).isOk()); \
210*ec779b8eSAndroid Build Coastguard Worker         EXPECT_FALSE(result); \
211*ec779b8eSAndroid Build Coastguard Worker     } while(false)
212*ec779b8eSAndroid Build Coastguard Worker 
213*ec779b8eSAndroid Build Coastguard Worker class ResourceManagerServiceTestBase : public ::testing::Test {
214*ec779b8eSAndroid Build Coastguard Worker public:
toTestClient(std::shared_ptr<IResourceManagerClient> testClient)215*ec779b8eSAndroid Build Coastguard Worker     static TestClient* toTestClient(std::shared_ptr<IResourceManagerClient> testClient) {
216*ec779b8eSAndroid Build Coastguard Worker         return static_cast<TestClient*>(testClient.get());
217*ec779b8eSAndroid Build Coastguard Worker     }
218*ec779b8eSAndroid Build Coastguard Worker 
mNewRM(newRM)219*ec779b8eSAndroid Build Coastguard Worker     ResourceManagerServiceTestBase(bool newRM = false) : mNewRM(newRM) {
220*ec779b8eSAndroid Build Coastguard Worker         ALOGI("ResourceManagerServiceTestBase created with %s RM", newRM ? "new" : "old");
221*ec779b8eSAndroid Build Coastguard Worker     }
222*ec779b8eSAndroid Build Coastguard Worker 
SetUp()223*ec779b8eSAndroid Build Coastguard Worker     void SetUp() override {
224*ec779b8eSAndroid Build Coastguard Worker         // Need thread pool to receive callbacks, otherwise oneway callbacks are
225*ec779b8eSAndroid Build Coastguard Worker         // silently ignored.
226*ec779b8eSAndroid Build Coastguard Worker         ABinderProcess_startThreadPool();
227*ec779b8eSAndroid Build Coastguard Worker         mSystemCB = new TestSystemCallback();
228*ec779b8eSAndroid Build Coastguard Worker         if (mNewRM) {
229*ec779b8eSAndroid Build Coastguard Worker             mService = ResourceManagerService::CreateNew(new TestProcessInfo, mSystemCB);
230*ec779b8eSAndroid Build Coastguard Worker         } else {
231*ec779b8eSAndroid Build Coastguard Worker             mService = ResourceManagerService::Create(new TestProcessInfo, mSystemCB);
232*ec779b8eSAndroid Build Coastguard Worker         }
233*ec779b8eSAndroid Build Coastguard Worker         mTestClient1 = ::ndk::SharedRefBase::make<TestClient>(kTestPid1, kTestUid1, 0, mService);
234*ec779b8eSAndroid Build Coastguard Worker         mTestClient2 = ::ndk::SharedRefBase::make<TestClient>(kTestPid2, kTestUid2, 0, mService);
235*ec779b8eSAndroid Build Coastguard Worker         mTestClient3 = ::ndk::SharedRefBase::make<TestClient>(kTestPid2, kTestUid2, 0, mService);
236*ec779b8eSAndroid Build Coastguard Worker     }
237*ec779b8eSAndroid Build Coastguard Worker 
238*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<IResourceManagerClient> createTestClient(int pid, int uid,
239*ec779b8eSAndroid Build Coastguard Worker                                                              int32_t importance = 0) {
240*ec779b8eSAndroid Build Coastguard Worker         return ::ndk::SharedRefBase::make<TestClient>(pid, uid, importance, mService);
241*ec779b8eSAndroid Build Coastguard Worker     }
242*ec779b8eSAndroid Build Coastguard Worker 
243*ec779b8eSAndroid Build Coastguard Worker     sp<TestSystemCallback> mSystemCB;
244*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<ResourceManagerService> mService;
245*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<IResourceManagerClient> mTestClient1;
246*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<IResourceManagerClient> mTestClient2;
247*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<IResourceManagerClient> mTestClient3;
248*ec779b8eSAndroid Build Coastguard Worker 
249*ec779b8eSAndroid Build Coastguard Worker protected:
isEqualResources(const std::vector<MediaResourceParcel> & resources1,const ResourceList & resources2)250*ec779b8eSAndroid Build Coastguard Worker     static bool isEqualResources(const std::vector<MediaResourceParcel> &resources1,
251*ec779b8eSAndroid Build Coastguard Worker             const ResourceList &resources2) {
252*ec779b8eSAndroid Build Coastguard Worker         // convert resource1 to ResourceList
253*ec779b8eSAndroid Build Coastguard Worker         ResourceList r1;
254*ec779b8eSAndroid Build Coastguard Worker         for (size_t i = 0; i < resources1.size(); ++i) {
255*ec779b8eSAndroid Build Coastguard Worker             r1.addOrUpdate(resources1[i]);
256*ec779b8eSAndroid Build Coastguard Worker         }
257*ec779b8eSAndroid Build Coastguard Worker         return r1 == resources2;
258*ec779b8eSAndroid Build Coastguard Worker     }
259*ec779b8eSAndroid Build Coastguard Worker 
expectEqResourceInfo(const ResourceInfo & info,int uid,std::shared_ptr<IResourceManagerClient> client,const std::vector<MediaResourceParcel> & resources)260*ec779b8eSAndroid Build Coastguard Worker     static void expectEqResourceInfo(const ResourceInfo &info,
261*ec779b8eSAndroid Build Coastguard Worker             int uid,
262*ec779b8eSAndroid Build Coastguard Worker             std::shared_ptr<IResourceManagerClient> client,
263*ec779b8eSAndroid Build Coastguard Worker             const std::vector<MediaResourceParcel> &resources) {
264*ec779b8eSAndroid Build Coastguard Worker         EXPECT_EQ(uid, info.uid);
265*ec779b8eSAndroid Build Coastguard Worker         EXPECT_EQ(client, info.client);
266*ec779b8eSAndroid Build Coastguard Worker         EXPECT_TRUE(isEqualResources(resources, info.resources));
267*ec779b8eSAndroid Build Coastguard Worker     }
268*ec779b8eSAndroid Build Coastguard Worker 
269*ec779b8eSAndroid Build Coastguard Worker     bool mNewRM = false;
270*ec779b8eSAndroid Build Coastguard Worker };
271*ec779b8eSAndroid Build Coastguard Worker 
272*ec779b8eSAndroid Build Coastguard Worker } // namespace android
273