• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #define private public
19 #define protected public
20 #include "bundle_manager_helper.h"
21 #undef private
22 #undef protected
23 
24 #include "common_event_constant.h"
25 #include "common_event_listener.h"
26 #include "datetime_ex.h"
27 #include "inner_common_event_manager.h"
28 #include "mock_bundle_manager.h"
29 
30 using namespace testing::ext;
31 using namespace OHOS::EventFwk;
32 using namespace OHOS::AppExecFwk;
33 
34 namespace {
35 const std::string EVENT = "com.ces.test.event";
36 const std::string ENTITY = "com.ces.test.entity";
37 const std::string SCHEME = "com.ces.test.scheme";
38 const std::string PERMISSION = "com.ces.test.permission";
39 const std::string DEVICEDID = "deviceId";
40 const std::string TYPE = "type";
41 const std::string BUNDLE = "BundleName";
42 const std::string ABILITY = "AbilityName";
43 constexpr uint8_t PRIORITY = 1;
44 constexpr uint8_t FLAG = 1;
45 constexpr uint8_t CODE = 1;
46 const std::string DATA = "DATA";
47 
48 const std::string EVENT2 = "com.ces.test.event2";
49 const std::string ENTITY2 = "com.ces.test.entity2";
50 const std::string SCHEME2 = "com.ces.test.scheme2";
51 const std::string PERMISSION2 = "com.ces.test.permission2";
52 const std::string DEVICEDID2 = "deviceId2";
53 const std::string TYPE2 = "type2";
54 constexpr uint8_t PRIORITY2 = 2;
55 constexpr uint8_t FLAG2 = 2;
56 constexpr uint8_t CODE2 = 2;
57 const std::string DATA2 = "DATA2";
58 
59 const std::string EVENT3 = "com.ces.test.event3";
60 constexpr uint8_t INNITCODE = 0;
61 constexpr uint8_t CHANGECODE = 1;
62 constexpr uint8_t CHANGECODE2 = 2;
63 const std::string EVENTCASE1 = "com.ces.test.event.case1";
64 const std::string EVENTCASE2 = "com.ces.test.event.case2";
65 const std::string EVENTCASE3 = "com.ces.test.event.case3";
66 const std::string INNITDATA = "com.ces.test.initdata";
67 const std::string CHANGEDATA = "com.ces.test.changedata";
68 const std::string CHANGEDATA2 = "com.ces.test.changedata2";
69 constexpr uid_t UID = 10;
70 constexpr uid_t UID2 = 11;
71 constexpr uint8_t STATE_INDEX1 = 1;
72 constexpr uint8_t STATE_INDEX2 = 2;
73 constexpr uint8_t STATE_INDEX3 = 3;
74 constexpr uint8_t PUBLISH_COUNT = 60;
75 constexpr uint8_t DUMP_SUBSCRIBER_COUNT_ONE = 1;
76 constexpr uint8_t DUMP_SUBSCRIBER_COUNT_TWO = 2;
77 constexpr uint8_t DUMP_STICKY_COUNT_ONE = 1;
78 constexpr uint8_t DUMP_STICKY_COUNT_TWO = 2;
79 constexpr uint8_t DUMP_PENDING_COUNT_ONE = 1;
80 constexpr uint8_t DUMP_HISTORY_COUNT_ONE = 1;
81 constexpr uint8_t DUMP_HISTORY_COUNT_TWO = 2;
82 constexpr uint8_t DUMP_HISTORY_COUNT_THREE = 3;
83 constexpr uint8_t DUMP_HISTORY_COUNT_MAX = 100;
84 
85 constexpr uint8_t PID = 0;
86 constexpr uint16_t SYSTEM_UID = 1000;
87 
88 static OHOS::sptr<OHOS::IRemoteObject> bundleObject = nullptr;
89 OHOS::sptr<OHOS::IRemoteObject> commonEventListener;
90 OHOS::sptr<OHOS::IRemoteObject> commonEventListener2;
91 OHOS::sptr<OHOS::IRemoteObject> commonEventListener3;
92 
93 class CommonEventDumpTest : public testing::Test {
94 public:
CommonEventDumpTest()95     CommonEventDumpTest()
96     {}
~CommonEventDumpTest()97     ~CommonEventDumpTest()
98     {}
99     static void SetUpTestCase(void);
100     static void TearDownTestCase(void);
101     void SetUp();
102     void TearDown();
103     bool SubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> &subscriber, uid_t callingUid,
104         OHOS::sptr<OHOS::IRemoteObject> &commonEventListener);
105     bool PublishCommonEvent(const CommonEventData &data, const CommonEventPublishInfo &publishInfo,
106         const std::shared_ptr<CommonEventSubscriber> &subscriber, OHOS::sptr<OHOS::IRemoteObject> &commonEventListener);
107     static bool FinishReceiver(
108         const OHOS::sptr<OHOS::IRemoteObject> &proxy, const int &code, const std::string &data, const bool &abortEvent);
109     void AsyncProcess();
110     std::shared_ptr<InnerCommonEventManager> GetInnerCommonEventManager();
111     static void DumpInfoCount(const std::vector<std::string> &state, int desSubscribersCount, int desStickyCount,
112         int desOrderedCount, int desHistoryCount);
113     void SetPublishDataByOrdered(CommonEventData &data, CommonEventPublishInfo &publishInfo);
114     void SetPublishDataByOrdered2(CommonEventData &data, CommonEventPublishInfo &publishInfo);
115     void SetPublishDataByUnordered(CommonEventData &data, CommonEventPublishInfo &publishInfo);
116     void SubscribeDoubleEvent(
117         int priority, const std::string &permission, const std::string &deviceId, CommonEventListener *&listener);
118     void PublishUnorderedEvent(
119         const std::string &event, const std::string &type,
120         const int code, const std::string &data, const std::string &permission);
121     void PublishStickyEvent(
122         const std::string &event, const std::string &type,
123         const int code, const std::string &data, const std::string &permission);
124     void PublishStickyEvent(
125         const std::string &event, const std::string &type, const int flag, const std::string &permission);
126 
127 private:
128     std::shared_ptr<EventRunner> runner_;
129     static std::shared_ptr<EventHandler> handler_;
130     static std::shared_ptr<InnerCommonEventManager> innerCommonEventManager_;
131 };
132 
133 class SubscriberTest : public CommonEventSubscriber {
134 public:
SubscriberTest(const CommonEventSubscribeInfo & sp,const std::shared_ptr<InnerCommonEventManager> & innerCommonEventManager=nullptr)135     explicit SubscriberTest(const CommonEventSubscribeInfo &sp,
136         const std::shared_ptr<InnerCommonEventManager> &innerCommonEventManager = nullptr)
137         : CommonEventSubscriber(sp)
138     {
139         innerCommonEventManager_ = innerCommonEventManager;
140         handler_ = std::make_shared<EventHandler>(EventRunner::Create());
141     }
142 
~SubscriberTest()143     ~SubscriberTest()
144     {}
145 
OnReceiveEvent(const CommonEventData & data)146     virtual void OnReceiveEvent(const CommonEventData &data)
147     {
148         std::string action = data.GetWant().GetAction();
149         if (action == EVENTCASE1) {
150             ProcessSubscriberTestCase1(data);
151         } else if (action == EVENTCASE2) {
152             ProcessSubscriberTestCase2(data);
153         } else if (action == EVENTCASE3) {
154             GTEST_LOG_(INFO) << "ProcessSubscriberTestCase3:  start";
155         } else {
156         }
157     }
158 
159 private:
ProcessSubscriberTestCase1(CommonEventData data)160     void ProcessSubscriberTestCase1(CommonEventData data)
161     {
162         GTEST_LOG_(INFO) << "ProcessSubscriberTestCase1:  start";
163         std::shared_ptr<AsyncCommonEventResult> result = GoAsyncCommonEvent();
164         std::function<void()> asyncProcessFunc = std::bind(&SubscriberTest::AsyncProcess, this, commonEventListener);
165         handler_->PostTask(asyncProcessFunc);
166     }
ProcessSubscriberTestCase2(CommonEventData data)167     void ProcessSubscriberTestCase2(CommonEventData data)
168     {
169         GTEST_LOG_(INFO) << "ProcessSubscriberTestCase2:  start";
170         std::shared_ptr<AsyncCommonEventResult> result = GoAsyncCommonEvent();
171         std::function<void()> asyncProcessFunc = std::bind(&SubscriberTest::AsyncProcess, this, commonEventListener);
172         handler_->PostTask(asyncProcessFunc);
173     }
174 
AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)175     void AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)
176     {
177         EXPECT_TRUE(CommonEventDumpTest::FinishReceiver(commonEventListener, CHANGECODE, CHANGEDATA, false));
178     }
179 
180 private:
181     std::shared_ptr<EventHandler> handler_;
182     std::shared_ptr<InnerCommonEventManager> innerCommonEventManager_;
183 };
184 
185 class SubscriberTest2 : public CommonEventSubscriber {
186 public:
SubscriberTest2(const CommonEventSubscribeInfo & sp,const std::shared_ptr<InnerCommonEventManager> & innerCommonEventManager=nullptr)187     explicit SubscriberTest2(const CommonEventSubscribeInfo &sp,
188         const std::shared_ptr<InnerCommonEventManager> &innerCommonEventManager = nullptr)
189         : CommonEventSubscriber(sp)
190     {
191         innerCommonEventManager_ = innerCommonEventManager;
192         handler_ = std::make_shared<EventHandler>(EventRunner::Create());
193     }
194 
~SubscriberTest2()195     ~SubscriberTest2()
196     {}
197 
OnReceiveEvent(const CommonEventData & data)198     virtual void OnReceiveEvent(const CommonEventData &data)
199     {
200         std::string action = data.GetWant().GetAction();
201         if (action == EVENTCASE1) {
202             ProcessSubscriberTest2Case1(data);
203         } else if (action == EVENTCASE2) {
204             ProcessSubscriberTest2Case2(data);
205         } else if (action == EVENTCASE3) {
206             GTEST_LOG_(INFO) << "ProcessSubscriberTest2Case3:  start";
207         } else {
208         }
209     }
210 
211 private:
ProcessSubscriberTest2Case1(CommonEventData data)212     void ProcessSubscriberTest2Case1(CommonEventData data)
213     {
214         GTEST_LOG_(INFO) << "ProcessSubscriberTest2Case1:  start";
215         std::shared_ptr<AsyncCommonEventResult> result = GoAsyncCommonEvent();
216         if (innerCommonEventManager_) {
217             std::vector<std::string> state;
218             innerCommonEventManager_->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
219             CommonEventDumpTest::DumpInfoCount(state,
220                 DUMP_SUBSCRIBER_COUNT_TWO, DUMP_STICKY_COUNT_TWO, DUMP_PENDING_COUNT_ONE, 0);
221         }
222         std::function<void()> asyncProcessFunc = std::bind(&SubscriberTest2::AsyncProcess, this, commonEventListener2);
223         handler_->PostTask(asyncProcessFunc);
224     }
ProcessSubscriberTest2Case2(CommonEventData data)225     void ProcessSubscriberTest2Case2(CommonEventData data)
226     {
227         GTEST_LOG_(INFO) << "ProcessSubscriberTest2Case2:  start";
228         std::shared_ptr<AsyncCommonEventResult> result = GoAsyncCommonEvent();
229         std::function<void()> asyncProcessFunc = std::bind(&SubscriberTest2::AsyncProcess, this, commonEventListener2);
230         handler_->PostTask(asyncProcessFunc);
231     }
232 
AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)233     void AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)
234     {
235         EXPECT_TRUE(CommonEventDumpTest::FinishReceiver(commonEventListener, CHANGECODE2, CHANGEDATA2, false));
236     }
237 
238 private:
239     std::shared_ptr<EventHandler> handler_;
240     std::shared_ptr<InnerCommonEventManager> innerCommonEventManager_;
241 };
242 
243 class SubscriberTestLast : public CommonEventSubscriber {
244 public:
SubscriberTestLast()245     SubscriberTestLast() : CommonEventSubscriber()
246     {
247         handler_ = std::make_shared<EventHandler>(EventRunner::Create());
248     }
249 
SubscriberTestLast(const CommonEventSubscribeInfo & sp)250     explicit SubscriberTestLast(const CommonEventSubscribeInfo &sp) : CommonEventSubscriber(sp)
251     {
252         handler_ = std::make_shared<EventHandler>(EventRunner::Create());
253     }
254 
~SubscriberTestLast()255     ~SubscriberTestLast()
256     {}
257 
OnReceiveEvent(const CommonEventData & data)258     virtual void OnReceiveEvent(const CommonEventData &data)
259     {
260         std::string action = data.GetWant().GetAction();
261         if (action == EVENTCASE1) {
262             ProcessSubscriberTestLastCase1(data);
263         } else if (action == EVENTCASE2) {
264             ProcessSubscriberTestLastCase2(data);
265         } else {
266         }
267     }
268 
269 private:
ProcessSubscriberTestLastCase1(CommonEventData data)270     void ProcessSubscriberTestLastCase1(CommonEventData data)
271     {
272         GTEST_LOG_(INFO) << "ProcessSubscriberTestLastCase1:  start";
273         std::shared_ptr<AsyncCommonEventResult> result = GoAsyncCommonEvent();
274         std::function<void()> asyncProcessFunc =
275             std::bind(&SubscriberTestLast::AsyncProcess, this, commonEventListener3);
276         handler_->PostTask(asyncProcessFunc);
277     }
ProcessSubscriberTestLastCase2(CommonEventData data)278     void ProcessSubscriberTestLastCase2(CommonEventData data)
279     {
280         GTEST_LOG_(INFO) << "ProcessSubscriberTestLastCase2:  start";
281     }
282 
AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)283     void AsyncProcess(OHOS::sptr<OHOS::IRemoteObject> commonEventListener)
284     {
285         EXPECT_TRUE(CommonEventDumpTest::FinishReceiver(commonEventListener, CHANGECODE2, CHANGEDATA2, false));
286     }
287 
288 private:
289     std::shared_ptr<EventHandler> handler_;
290 };
291 
292 std::shared_ptr<EventHandler> CommonEventDumpTest::handler_ = nullptr;
293 std::shared_ptr<InnerCommonEventManager> CommonEventDumpTest::innerCommonEventManager_ = nullptr;
294 
SetUpTestCase(void)295 void CommonEventDumpTest::SetUpTestCase(void)
296 {
297     bundleObject = new MockBundleMgrService();
298     OHOS::DelayedSingleton<BundleManagerHelper>::GetInstance()->sptrBundleMgr_ =
299         OHOS::iface_cast<OHOS::AppExecFwk::IBundleMgr>(bundleObject);
300 }
301 
TearDownTestCase(void)302 void CommonEventDumpTest::TearDownTestCase(void)
303 {}
304 
SetUp(void)305 void CommonEventDumpTest::SetUp(void)
306 {
307     runner_ = EventRunner::Create(true);
308     if (!runner_) {
309         return;
310     }
311     handler_ = std::make_shared<EventHandler>(runner_);
312     innerCommonEventManager_ = std::make_shared<InnerCommonEventManager>();
313 }
314 
TearDown(void)315 void CommonEventDumpTest::TearDown(void)
316 {}
317 
SubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> & subscriber,uid_t callingUid,OHOS::sptr<OHOS::IRemoteObject> & commonEventListener)318 bool CommonEventDumpTest::SubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> &subscriber,
319     uid_t callingUid, OHOS::sptr<OHOS::IRemoteObject> &commonEventListener)
320 {
321     OHOS::sptr<IEventReceive> listener = new CommonEventListener(subscriber);
322     if (!listener) {
323         return false;
324     }
325     commonEventListener = listener->AsObject();
326     struct tm recordTime = {0};
327     if (!OHOS::GetSystemCurrentTime(&recordTime)) {
328         return false;
329     }
330     pid_t callingPid = 10;
331     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
332 
333     std::string bundleName = "";
334     std::function<void()> SubscribeCommonEventFunc = std::bind(&InnerCommonEventManager::SubscribeCommonEvent,
335         innerCommonEventManager_,
336         subscriber->GetSubscribeInfo(),
337         commonEventListener,
338         recordTime,
339         callingPid,
340         callingUid,
341         tokenID,
342         bundleName);
343     return handler_->PostTask(SubscribeCommonEventFunc);
344 }
345 
PublishCommonEvent(const CommonEventData & data,const CommonEventPublishInfo & publishInfo,const std::shared_ptr<CommonEventSubscriber> & subscriber,OHOS::sptr<OHOS::IRemoteObject> & commonEventListener)346 bool CommonEventDumpTest::PublishCommonEvent(const CommonEventData &data, const CommonEventPublishInfo &publishInfo,
347     const std::shared_ptr<CommonEventSubscriber> &subscriber, OHOS::sptr<OHOS::IRemoteObject> &commonEventListener)
348 {
349     if (commonEventListener == nullptr && publishInfo.IsOrdered()) {
350         OHOS::sptr<IEventReceive> listener = new CommonEventListener(subscriber);
351         if (!listener) {
352             return false;
353         }
354         commonEventListener = listener->AsObject();
355     } else if (!publishInfo.IsOrdered()) {
356         commonEventListener = nullptr;
357     }
358 
359     struct tm recordTime = {0};
360     if (!OHOS::GetSystemCurrentTime(&recordTime)) {
361         return false;
362     }
363     pid_t callingPid = 20;
364     uid_t callingUid = 21;
365     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
366     int32_t userId = UNDEFINED_USER;
367     std::string bundleName = "";
368 
369     std::function<void()> PublishCommonEventFunc = std::bind(&InnerCommonEventManager::PublishCommonEvent,
370         innerCommonEventManager_,
371         data,
372         publishInfo,
373         commonEventListener,
374         recordTime,
375         callingPid,
376         callingUid,
377         tokenID,
378         userId,
379         bundleName,
380         nullptr);
381     return handler_->PostTask(PublishCommonEventFunc);
382 }
383 
FinishReceiver(const OHOS::sptr<OHOS::IRemoteObject> & proxy,const int & code,const std::string & data,const bool & abortEvent)384 bool CommonEventDumpTest::FinishReceiver(
385     const OHOS::sptr<OHOS::IRemoteObject> &proxy, const int &code, const std::string &data, const bool &abortEvent)
386 {
387     std::function<void()> FinishReceiverFunc =
388         std::bind(&InnerCommonEventManager::FinishReceiver, innerCommonEventManager_, proxy, code, data, abortEvent);
389     return handler_->PostTask(FinishReceiverFunc);
390 }
391 
GetInnerCommonEventManager()392 std::shared_ptr<InnerCommonEventManager> CommonEventDumpTest::GetInnerCommonEventManager()
393 {
394     return innerCommonEventManager_;
395 }
396 
DumpInfoCount(const std::vector<std::string> & state,int desSubscribersCount,int desStickyCount,int desPendingCount,int desHistoryCount)397 void CommonEventDumpTest::DumpInfoCount(const std::vector<std::string> &state, int desSubscribersCount,
398     int desStickyCount, int desPendingCount, int desHistoryCount)
399 {
400     int subscribersNum = 0;
401     int stickyNum = 0;
402     int pendingCount = 0;
403     int historyCount = 0;
404     bool isSubscribers = false;
405     bool isSticky = false;
406     bool isPending = false;
407     bool isHistory = false;
408     for (auto vec : state) {
409         GTEST_LOG_(INFO) << vec;
410         auto pos = vec.find("No information");
411         if (pos != string::npos) {
412             auto pos2 = vec.find("\tSubscribers:\tNo information");
413             if (pos2 != string::npos) {
414             } else {
415                 continue;
416             }
417         }
418         if (!isPending && !isHistory) {
419             auto pos = vec.find("Subscribers:");
420             if (pos != string::npos) {
421                 isSubscribers = true;
422             }
423         }
424         pos = vec.find("Sticky Events:");
425         if (pos != string::npos) {
426             isSubscribers = false;
427             isSticky = true;
428         }
429         pos = vec.find("Pending Events:");
430         if (pos != string::npos) {
431             isSubscribers = false;
432             isSticky = false;
433             isPending = true;
434         }
435         pos = vec.find("History Events:");
436         if (pos != string::npos) {
437             isSubscribers = false;
438             isSticky = false;
439             isPending = false;
440             isHistory = true;
441         }
442         if (isSubscribers) {
443             subscribersNum++;
444         } else if (isSticky) {
445             stickyNum++;
446         } else if (isPending) {
447             pendingCount++;
448         } else if (isHistory) {
449             historyCount++;
450         }
451     }
452 
453     EXPECT_EQ(subscribersNum, desSubscribersCount);
454     EXPECT_EQ(stickyNum, desStickyCount);
455     EXPECT_EQ(pendingCount, desPendingCount);
456     EXPECT_EQ(historyCount, desHistoryCount);
457 }
458 
SetPublishDataByOrdered(CommonEventData & data,CommonEventPublishInfo & publishInfo)459 void CommonEventDumpTest::SetPublishDataByOrdered(CommonEventData &data, CommonEventPublishInfo &publishInfo)
460 {
461     // make a want
462     Want want;
463     want.SetAction(EVENTCASE1);
464     want.AddEntity(ENTITY);
465     want.AddEntity(ENTITY2);
466     want.SetType(TYPE);
467     want.SetFlags(FLAG);
468 
469     OHOS::AppExecFwk::ElementName element;
470     element.SetBundleName(BUNDLE);
471     element.SetAbilityName(ABILITY);
472     element.SetDeviceID(DEVICEDID);
473     want.SetElement(element);
474 
475     // make common event data
476     data.SetWant(want);
477     data.SetData(INNITDATA);
478     data.SetCode(INNITCODE);
479 
480     publishInfo.SetOrdered(true);
481 }
482 
SetPublishDataByOrdered2(CommonEventData & data,CommonEventPublishInfo & publishInfo)483 void CommonEventDumpTest::SetPublishDataByOrdered2(CommonEventData &data, CommonEventPublishInfo &publishInfo)
484 {
485     // make a want
486     Want want;
487     want.SetAction(EVENTCASE2);
488     want.AddEntity(ENTITY);
489     want.AddEntity(ENTITY2);
490     want.SetType(TYPE);
491     want.SetFlags(FLAG);
492 
493     OHOS::AppExecFwk::ElementName element;
494     element.SetBundleName(BUNDLE);
495     element.SetAbilityName(ABILITY);
496     element.SetDeviceID(DEVICEDID);
497     want.SetElement(element);
498 
499     // make common event data
500     data.SetWant(want);
501     data.SetData(INNITDATA);
502     data.SetCode(INNITCODE);
503 
504     publishInfo.SetOrdered(true);
505 }
506 
SetPublishDataByUnordered(CommonEventData & data,CommonEventPublishInfo & publishInfo)507 void CommonEventDumpTest::SetPublishDataByUnordered(CommonEventData &data, CommonEventPublishInfo &publishInfo)
508 {
509     // make a want
510     Want want;
511     want.SetAction(EVENTCASE3);
512     want.AddEntity(ENTITY);
513     want.AddEntity(ENTITY2);
514     want.SetType(TYPE);
515     want.SetFlags(FLAG);
516 
517     OHOS::AppExecFwk::ElementName element;
518     element.SetBundleName(BUNDLE);
519     element.SetAbilityName(ABILITY);
520     element.SetDeviceID(DEVICEDID);
521     want.SetElement(element);
522 
523     // make common event data
524     data.SetWant(want);
525     data.SetData(INNITDATA);
526     data.SetCode(INNITCODE);
527 
528     publishInfo.SetOrdered(false);
529 }
530 
SubscribeDoubleEvent(int priority,const std::string & permission,const std::string & deviceId,CommonEventListener * & listener)531 void CommonEventDumpTest::SubscribeDoubleEvent(
532     int priority, const std::string &permission, const std::string &deviceId, CommonEventListener *&listener)
533 {
534     MatchingSkills matchingSkills;
535     matchingSkills.AddEvent(EVENT);
536     matchingSkills.AddEvent(EVENT2);
537     matchingSkills.AddEntity(ENTITY);
538     matchingSkills.AddEntity(ENTITY2);
539 
540     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
541     subscribeInfo.SetPriority(priority);
542     subscribeInfo.SetPermission(permission);
543     subscribeInfo.SetDeviceId(deviceId);
544 
545     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
546     listener = new (std::nothrow) CommonEventListener(subscriber);
547 
548     struct tm curTime {0};
549     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
550     innerCommonEventManager_->SubscribeCommonEvent(
551         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
552 }
553 
PublishUnorderedEvent(const std::string & event,const std::string & type,const int code,const std::string & data,const std::string & permission)554 void CommonEventDumpTest::PublishUnorderedEvent(
555     const std::string &event, const std::string &type,
556     const int code, const std::string &data, const std::string &permission)
557 {
558     Want want;
559     want.SetAction(event);
560     want.AddEntity(ENTITY);
561     want.AddEntity(ENTITY2);
562     want.SetType(type);
563 
564     OHOS::AppExecFwk::ElementName element;
565     element.SetBundleName(BUNDLE);
566     element.SetAbilityName(ABILITY);
567     element.SetDeviceID(DEVICEDID);
568     want.SetElement(element);
569 
570     // make common event data
571     CommonEventData eventData;
572     eventData.SetWant(want);
573     eventData.SetCode(code);
574     eventData.SetData(data);
575 
576     // make publish info
577     CommonEventPublishInfo publishInfo;
578     publishInfo.SetSticky(false);
579     std::vector<std::string> permissions;
580     permissions.emplace_back(permission);
581     publishInfo.SetSubscriberPermissions(permissions);
582 
583     struct tm curTime {0};
584     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
585     innerCommonEventManager_->PublishCommonEvent(
586         eventData, publishInfo, nullptr, curTime, PID, SYSTEM_UID, tokenID, UNDEFINED_USER, "hello");
587 }
588 
PublishStickyEvent(const std::string & event,const std::string & type,const int code,const std::string & data,const std::string & permission)589 void CommonEventDumpTest::PublishStickyEvent(
590     const std::string &event, const std::string &type,
591     const int code, const std::string &data, const std::string &permission)
592 {
593     Want want;
594     want.SetAction(event);
595     want.AddEntity(ENTITY);
596     want.AddEntity(ENTITY2);
597     want.SetType(type);
598 
599     OHOS::AppExecFwk::ElementName element;
600     element.SetBundleName(BUNDLE);
601     element.SetAbilityName(ABILITY);
602     element.SetDeviceID(DEVICEDID);
603     want.SetElement(element);
604 
605     // make common event data
606     CommonEventData eventData;
607     eventData.SetWant(want);
608     eventData.SetCode(code);
609     eventData.SetData(data);
610 
611     // make publish info
612     CommonEventPublishInfo publishInfo;
613     publishInfo.SetSticky(true);
614     std::vector<std::string> permissions;
615     permissions.emplace_back(permission);
616     publishInfo.SetSubscriberPermissions(permissions);
617 
618     struct tm curTime {0};
619     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
620     innerCommonEventManager_->PublishCommonEvent(
621         eventData, publishInfo, nullptr, curTime, PID, SYSTEM_UID, tokenID, UNDEFINED_USER, "hello");
622 }
623 
PublishStickyEvent(const std::string & event,const std::string & type,const int flag,const std::string & permission)624 void CommonEventDumpTest::PublishStickyEvent(
625     const std::string &event, const std::string &type, const int flag, const std::string &permission)
626 {
627     Want want;
628     want.SetAction(event);
629     want.AddEntity(ENTITY);
630     want.AddEntity(ENTITY2);
631     want.SetType(type);
632     want.SetFlags(flag);
633 
634     OHOS::AppExecFwk::ElementName element;
635     element.SetBundleName(BUNDLE);
636     element.SetAbilityName(ABILITY);
637     element.SetDeviceID(DEVICEDID);
638     want.SetElement(element);
639 
640     // make common event data
641     CommonEventData eventData;
642     eventData.SetWant(want);
643 
644     // make publish info
645     CommonEventPublishInfo publishInfo;
646     publishInfo.SetSticky(true);
647     std::vector<std::string> permissions;
648     permissions.emplace_back(permission);
649     publishInfo.SetSubscriberPermissions(permissions);
650 
651     struct tm curTime {0};
652     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
653     innerCommonEventManager_->PublishCommonEvent(
654         eventData, publishInfo, nullptr, curTime, PID, SYSTEM_UID, tokenID, UNDEFINED_USER, "hello");
655 }
656 
657 /*
658  * @tc.number: CommonEventDumpTest_0100
659  * @tc.name: test dump
660  * @tc.desc: Verify dump information after publishing unordered events
661  */
662 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0100, Function | MediumTest | Level1)
663 {
664     /* Subscribe */
665     CommonEventListener *listener = nullptr;
666     CommonEventListener *listener2 = nullptr;
667     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
668     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
669     EXPECT_NE(nullptr, listener);
670     EXPECT_NE(nullptr, listener2);
671 
672     /* Publish */
673     PublishUnorderedEvent(EVENT, TYPE, CODE, DATA, PERMISSION);
674     PublishUnorderedEvent(EVENT2, TYPE2, CODE2, DATA2, PERMISSION2);
675 
676     usleep(50000);
677 
678     std::vector<std::string> state;
679     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
680     GTEST_LOG_(INFO) << "get state size:" << state.size();
681     ASSERT_NE(state.size(), 0);
682     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_TWO, 0, 0, DUMP_HISTORY_COUNT_TWO);
683     EXPECT_EQ("Sticky Events:\tNo information", state[STATE_INDEX2]);
684 
685     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
686     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
687 }
688 
689 /*
690  * @tc.number: CommonEventDumpTest_0200
691  * @tc.name: test dump
692  * @tc.desc: Verify dump information after publishing sticky events
693  */
694 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0200, Function | MediumTest | Level1)
695 {
696     /* Subscribe */
697     CommonEventListener *listener = nullptr;
698     CommonEventListener *listener2 = nullptr;
699     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
700     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
701     EXPECT_NE(nullptr, listener);
702     EXPECT_NE(nullptr, listener2);
703 
704     /* Publish */
705     PublishStickyEvent(EVENT, TYPE, CODE, DATA, PERMISSION);
706     PublishStickyEvent(EVENT2, TYPE2, CODE2, DATA2, PERMISSION2);
707 
708     usleep(50000);
709 
710     std::vector<std::string> state;
711     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
712     GTEST_LOG_(INFO) << "get state size:" << state.size();
713     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_TWO, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_TWO);
714 
715     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
716     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
717 }
718 
719 /*
720  * @tc.number: CommonEventDumpTest_0300
721  * @tc.name: test dump
722  * @tc.desc: Verify dump information after updating sticky events
723  */
724 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0300, Function | MediumTest | Level1)
725 {
726     /* Publish */
727     PublishStickyEvent(EVENT, TYPE, FLAG, PERMISSION);
728     PublishStickyEvent(EVENT2, TYPE2, FLAG2, PERMISSION2);
729 
730     usleep(50000);
731 
732     std::vector<std::string> state;
733     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
734     GTEST_LOG_(INFO) << "get state size:" << state.size();
735     ASSERT_NE(state.size(), 0);
736     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_TWO);
737     EXPECT_EQ("Subscribers:\tNo information", state[0]);
738 }
739 
740 /*
741  * @tc.number: CommonEventDumpTest_0400
742  * @tc.name: test dump
743  * @tc.desc: Verify dump information after subscribing
744  */
745 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0400, Function | MediumTest | Level1)
746 {
747     /* Subscribe */
748     MatchingSkills matchingSkills;
749     matchingSkills.AddEvent(EVENT);
750     matchingSkills.AddScheme(SCHEME);
751 
752     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
753     subscribeInfo.SetPriority(PRIORITY);
754     subscribeInfo.SetPermission(PERMISSION);
755     subscribeInfo.SetDeviceId(DEVICEDID);
756 
757     struct tm curTime {0};
758     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
759 
760     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
761     CommonEventListener *listener = new CommonEventListener(subscriber);
762     GetInnerCommonEventManager()->SubscribeCommonEvent(
763         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
764 
765     usleep(50000);
766 
767     std::vector<std::string> state;
768     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
769     GTEST_LOG_(INFO) << "get state size:" << state.size();
770     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_ONE, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
771 
772     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
773 }
774 
775 /*
776  * @tc.number: CommonEventDumpTest_0500
777  * @tc.name: test dump
778  * @tc.desc: Verify dump information after subscribing
779  */
780 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0500, Function | MediumTest | Level1)
781 {
782     /* Subscribe */
783     MatchingSkills matchingSkills;
784     matchingSkills.AddEvent(EVENT);
785 
786     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
787     subscribeInfo.SetPriority(PRIORITY);
788     subscribeInfo.SetPermission(PERMISSION);
789     subscribeInfo.SetDeviceId(DEVICEDID);
790 
791     struct tm curTime {0};
792     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
793 
794     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
795     CommonEventListener *listener = new CommonEventListener(subscriber);
796     GetInnerCommonEventManager()->SubscribeCommonEvent(
797         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
798 
799     usleep(50000);
800 
801     std::vector<std::string> state;
802     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
803     GTEST_LOG_(INFO) << "get state size:" << state.size();
804     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_ONE, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
805 
806     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
807 }
808 
809 /*
810  * @tc.number: CommonEventDumpTest_0600
811  * @tc.name: test dump
812  * @tc.desc: Verify dump information after subscribing
813  */
814 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0600, Function | MediumTest | Level1)
815 {
816     /* Subscribe */
817     MatchingSkills matchingSkills;
818     matchingSkills.AddEvent(EVENT);
819 
820     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
821     subscribeInfo.SetPermission(PERMISSION);
822     subscribeInfo.SetDeviceId(DEVICEDID);
823 
824     struct tm curTime {0};
825     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
826 
827     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
828     CommonEventListener *listener = new CommonEventListener(subscriber);
829     GetInnerCommonEventManager()->SubscribeCommonEvent(
830         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
831 
832     usleep(50000);
833 
834     std::vector<std::string> state;
835     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
836     GTEST_LOG_(INFO) << "get state size:" << state.size();
837     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_ONE, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
838 
839     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
840 }
841 
842 /*
843  * @tc.number: CommonEventDumpTest_0700
844  * @tc.name: test dump
845  * @tc.desc: Verify dump information after subscribing
846  */
847 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0700, Function | MediumTest | Level1)
848 {
849     /* Subscribe */
850     MatchingSkills matchingSkills;
851     matchingSkills.AddEvent(EVENT);
852 
853     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
854     subscribeInfo.SetDeviceId(DEVICEDID);
855 
856     struct tm curTime {0};
857     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
858 
859     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
860     CommonEventListener *listener = new CommonEventListener(subscriber);
861     GetInnerCommonEventManager()->SubscribeCommonEvent(
862         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
863 
864     usleep(50000);
865 
866     std::vector<std::string> state;
867     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
868     GTEST_LOG_(INFO) << "get state size:" << state.size();
869     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_ONE, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
870 
871     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
872 }
873 
874 /*
875  * @tc.number: CommonEventDumpTest_0800
876  * @tc.name: test dump
877  * @tc.desc: Verify dump information after subscribing
878  */
879 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0800, Function | MediumTest | Level1)
880 {
881     /* Subscribe */
882     MatchingSkills matchingSkills;
883     matchingSkills.AddEvent(EVENT);
884 
885     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
886 
887     struct tm curTime {0};
888     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
889 
890     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
891     CommonEventListener *listener = new CommonEventListener(subscriber);
892     GetInnerCommonEventManager()->SubscribeCommonEvent(
893         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
894 
895     usleep(50000);
896 
897     std::vector<std::string> state;
898     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
899     GTEST_LOG_(INFO) << "get state size:" << state.size();
900     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_ONE, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
901 
902     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
903 }
904 
905 /*
906  * @tc.number: CommonEventDumpTest_0900
907  * @tc.name: test dump
908  * @tc.desc: Verify dump information for unpublished event
909  */
910 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_0900, Function | MediumTest | Level1)
911 {
912     /* Subscribe */
913     MatchingSkills matchingSkills;
914     matchingSkills.AddEvent(EVENT);
915 
916     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
917 
918     struct tm curTime {0};
919     OHOS::Security::AccessToken::AccessTokenID tokenID = 1;
920 
921     std::shared_ptr<SubscriberTest> subscriber = std::make_shared<SubscriberTest>(subscribeInfo);
922     CommonEventListener *listener = new CommonEventListener(subscriber);
923     GetInnerCommonEventManager()->SubscribeCommonEvent(
924         subscribeInfo, listener->AsObject(), curTime, PID, SYSTEM_UID, tokenID, "hello");
925 
926     usleep(50000);
927 
928     std::vector<std::string> state;
929     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), EVENT3, ALL_USER, state);
930     GTEST_LOG_(INFO) << "get state size:" << state.size();
931     ASSERT_NE(state.size(), 0);
932     DumpInfoCount(state, 0, 0, 0, 0);
933     EXPECT_EQ("Subscribers:\tNo information", state[0]);
934     EXPECT_EQ("Sticky Events:\tNo information", state[STATE_INDEX1]);
935 
936     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
937 }
938 
939 /*
940  * @tc.number: CommonEventDumpTest_1000
941  * @tc.name: test dump
942  * @tc.desc: Verify dump information for specified event
943  */
944 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1000, TestSize.Level1)
945 {
946     /* Subscribe */
947     CommonEventListener *listener = nullptr;
948     CommonEventListener *listener2 = nullptr;
949     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
950     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
951     EXPECT_NE(nullptr, listener);
952     EXPECT_NE(nullptr, listener2);
953 
954     /* Publish */
955     PublishStickyEvent(EVENT, TYPE, FLAG, PERMISSION);
956     PublishStickyEvent(EVENT2, TYPE2, FLAG2, PERMISSION2);
957 
958     usleep(50000);
959 
960     std::vector<std::string> state;
961     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), EVENT2, ALL_USER, state);
962     GTEST_LOG_(INFO) << "get state size:" << state.size();
963     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_TWO, DUMP_STICKY_COUNT_ONE, 0, DUMP_HISTORY_COUNT_THREE);
964 
965     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
966     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
967 }
968 
969 /*
970  * @tc.number: CommonEventDumpTest_1100
971  * @tc.name: test dump
972  * @tc.desc: Verify dump information for sticky event
973  */
974 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1100, Function | MediumTest | Level1)
975 {
976     /* Publish */
977     PublishStickyEvent(EVENT, TYPE, FLAG, PERMISSION);
978 
979     usleep(50000);
980 
981     std::vector<std::string> state;
982     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
983     GTEST_LOG_(INFO) << "get state size:" << state.size();
984     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
985 }
986 
987 /*
988  * @tc.number: CommonEventDumpTest_1200
989  * @tc.name: test dump
990  * @tc.desc: Verify dump information for sticky event
991  */
992 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1200, Function | MediumTest | Level1)
993 {
994     /* Publish */
995     PublishStickyEvent(EVENT, "", FLAG, PERMISSION);
996 
997     usleep(50000);
998 
999     std::vector<std::string> state;
1000     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1001     GTEST_LOG_(INFO) << "get state size:" << state.size();
1002     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1003 }
1004 
1005 /*
1006  * @tc.number: CommonEventDumpTest_1300
1007  * @tc.name: test dump
1008  * @tc.desc: Verify dump information for sticky event
1009  */
1010 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1300, Function | MediumTest | Level1)
1011 {
1012     /* Publish */
1013     PublishStickyEvent(EVENT, "", 0, PERMISSION);
1014 
1015     usleep(50000);
1016 
1017     std::vector<std::string> state;
1018     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1019     GTEST_LOG_(INFO) << "get state size:" << state.size();
1020     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1021 }
1022 
1023 /*
1024  * @tc.number: CommonEventDumpTest_1400
1025  * @tc.name: test dump
1026  * @tc.desc: Verify dump information for sticky event
1027  */
1028 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1400, Function | MediumTest | Level1)
1029 {
1030     /* Publish */
1031     PublishStickyEvent(EVENT, "", 0, PERMISSION);
1032 
1033     usleep(50000);
1034 
1035     std::vector<std::string> state;
1036     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1037     GTEST_LOG_(INFO) << "get state size:" << state.size();
1038     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1039 }
1040 
1041 /*
1042  * @tc.number: CommonEventDumpTest_1500
1043  * @tc.name: test dump
1044  * @tc.desc: Verify dump information for sticky event
1045  */
1046 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1500, Function | MediumTest | Level1)
1047 {
1048     /* Publish */
1049     PublishStickyEvent(EVENT, "", 0, PERMISSION);
1050 
1051     usleep(50000);
1052 
1053     std::vector<std::string> state;
1054     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1055     GTEST_LOG_(INFO) << "get state size:" << state.size();
1056     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1057 }
1058 
1059 /*
1060  * @tc.number: CommonEventDumpTest_1600
1061  * @tc.name: test dump
1062  * @tc.desc: Verify dump information for sticky event
1063  */
1064 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1600, Function | MediumTest | Level1)
1065 {
1066     /* Publish */
1067     // make a want
1068     Want want;
1069     want.SetAction(EVENT);
1070     // make common event data
1071     CommonEventData data;
1072     data.SetWant(want);
1073 
1074     // make publish info
1075     CommonEventPublishInfo publishInfo;
1076     publishInfo.SetSticky(true);
1077 
1078     std::vector<std::string> permissions;
1079     permissions.emplace_back(PERMISSION);
1080     publishInfo.SetSubscriberPermissions(permissions);
1081 
1082     struct tm curTime {0};
1083     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
1084 
1085     GetInnerCommonEventManager()->PublishCommonEvent(
1086         data, publishInfo, nullptr, curTime, PID, SYSTEM_UID, tokenID, UNDEFINED_USER, "hello");
1087 
1088     usleep(50000);
1089 
1090     std::vector<std::string> state;
1091     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1092     GTEST_LOG_(INFO) << "get state size:" << state.size();
1093     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1094 }
1095 
1096 /*
1097  * @tc.number: CommonEventDumpTest_1700
1098  * @tc.name: test dump
1099  * @tc.desc: Verify dump information for sticky event
1100  */
1101 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1700, Function | MediumTest | Level1)
1102 {
1103     /* Publish */
1104     // make a want
1105     Want want;
1106     want.SetAction(EVENT);
1107     // make common event data
1108     CommonEventData data;
1109     data.SetWant(want);
1110 
1111     // make publish info
1112     CommonEventPublishInfo publishInfo;
1113     publishInfo.SetSticky(true);
1114 
1115     struct tm curTime {0};
1116     OHOS::Security::AccessToken::AccessTokenID tokenID = 0;
1117 
1118     GetInnerCommonEventManager()->PublishCommonEvent(
1119         data, publishInfo, nullptr, curTime, PID, SYSTEM_UID, tokenID, UNDEFINED_USER, "hello");
1120 
1121     usleep(50000);
1122 
1123     std::vector<std::string> state;
1124     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1125     GTEST_LOG_(INFO) << "get state size:" << state.size();
1126     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1127 }
1128 
1129 /*
1130  * @tc.number: CommonEventDumpTest_1800
1131  * @tc.name: test dump
1132  * @tc.desc: Verify dump information when the pending ordered event is empty
1133  */
1134 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1800, TestSize.Level1)
1135 {
1136     std::vector<std::string> state;
1137     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1138     ASSERT_NE(state.size(), 0);
1139     DumpInfoCount(state, 0, DUMP_STICKY_COUNT_TWO, 0, 0);
1140     EXPECT_EQ("Pending Events:\tNo information", state[STATE_INDEX3]);
1141 }
1142 
1143 /*
1144  * @tc.number: CommonEventDumpTest_1900
1145  * @tc.name: test dump
1146  * @tc.desc: Verify dump information for ordered event
1147  */
1148 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_1900, TestSize.Level1)
1149 {
1150     /* Subscribe */
1151     // make matching skills
1152     MatchingSkills matchingSkills;
1153     matchingSkills.AddEvent(EVENTCASE1);
1154     matchingSkills.AddEntity(ENTITY);
1155     matchingSkills.AddEntity(ENTITY2);
1156     // make subscriber info
1157     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
1158     subscribeInfo.SetPriority(1);
1159     subscribeInfo.SetDeviceId(DEVICEDID);
1160     // make a subscriber object
1161     std::shared_ptr<SubscriberTest> subscriberTest =
1162         std::make_shared<SubscriberTest>(subscribeInfo, GetInnerCommonEventManager());
1163     // subscribe a common event
1164     EXPECT_TRUE(SubscribeCommonEvent(subscriberTest, UID, commonEventListener));
1165     usleep(50000);
1166 
1167     // make another subscriber info
1168     CommonEventSubscribeInfo subscribeInfo2(matchingSkills);
1169     subscribeInfo2.SetPriority(0);
1170     subscribeInfo2.SetDeviceId(DEVICEDID2);
1171     // make another subscriber object
1172     std::shared_ptr<SubscriberTest2> subscriberTest2 =
1173         std::make_shared<SubscriberTest2>(subscribeInfo2, GetInnerCommonEventManager());
1174     // subscribe another event
1175     EXPECT_TRUE(SubscribeCommonEvent(subscriberTest2, UID2, commonEventListener2));
1176     usleep(50000);
1177 
1178     std::shared_ptr<SubscriberTestLast> subscriber = std::make_shared<SubscriberTestLast>();
1179 
1180     /* Publish */
1181     CommonEventData data;
1182     CommonEventPublishInfo publishInfo;
1183     SetPublishDataByOrdered(data, publishInfo);
1184 
1185     // publish order event
1186     EXPECT_TRUE(PublishCommonEvent(data, publishInfo, subscriber, commonEventListener3));
1187 
1188     usleep(500000);
1189 
1190     std::vector<std::string> state;
1191     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1192     DumpInfoCount(state, DUMP_SUBSCRIBER_COUNT_TWO, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_ONE);
1193 
1194     GetInnerCommonEventManager()->UnsubscribeCommonEvent(commonEventListener);
1195     GetInnerCommonEventManager()->UnsubscribeCommonEvent(commonEventListener2);
1196 }
1197 /*
1198  * @tc.number: CommonEventDumpTest_2000
1199  * @tc.name: test dump
1200  * @tc.desc: Verify dump information for maximum number of history events
1201  */
1202 HWTEST_F(CommonEventDumpTest, CommonEventDumpTest_2000, TestSize.Level1)
1203 {
1204     /* Subscribe */
1205     // make matching skills
1206     MatchingSkills matchingSkills;
1207     matchingSkills.AddEvent(EVENTCASE2);
1208     matchingSkills.AddEntity(ENTITY);
1209     matchingSkills.AddEntity(ENTITY2);
1210 
1211     // make subscriber info
1212     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
1213     subscribeInfo.SetPriority(1);
1214     subscribeInfo.SetDeviceId(DEVICEDID);
1215     // make a subscriber object
1216     std::shared_ptr<SubscriberTest> subscriberTest =
1217         std::make_shared<SubscriberTest>(subscribeInfo, GetInnerCommonEventManager());
1218     // subscribe a common event
1219     EXPECT_TRUE(SubscribeCommonEvent(subscriberTest, UID, commonEventListener));
1220     usleep(50000);
1221 
1222     // make another subscriber info
1223     CommonEventSubscribeInfo subscribeInfo2(matchingSkills);
1224     subscribeInfo2.SetPriority(0);
1225     subscribeInfo2.SetDeviceId(DEVICEDID2);
1226     // make another subscriber object
1227     std::shared_ptr<SubscriberTest2> subscriberTest2 =
1228         std::make_shared<SubscriberTest2>(subscribeInfo2, GetInnerCommonEventManager());
1229     // subscribe another event
1230     EXPECT_TRUE(SubscribeCommonEvent(subscriberTest2, UID2, commonEventListener2));
1231     usleep(50000);
1232 
1233     std::shared_ptr<SubscriberTestLast> subscriber = std::make_shared<SubscriberTestLast>();
1234 
1235     /* Publish */
1236     CommonEventData data;
1237     CommonEventPublishInfo publishInfo;
1238 
1239     int count = 0;
1240     while (count < PUBLISH_COUNT) {
1241         // publish order event
1242         SetPublishDataByOrdered2(data, publishInfo);
1243         EXPECT_TRUE(PublishCommonEvent(data, publishInfo, subscriber, commonEventListener3));
1244         usleep(50000);
1245 
1246         // publish unorder event
1247         SetPublishDataByUnordered(data, publishInfo);
1248         EXPECT_TRUE(PublishCommonEvent(data, publishInfo, subscriber, commonEventListener3));
1249         usleep(50000);
1250         count++;
1251     }
1252     usleep(500000);
1253 
1254     std::vector<std::string> state;
1255     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::ALL), "", ALL_USER, state);
1256     DumpInfoCount(state, DUMP_STICKY_COUNT_TWO, DUMP_STICKY_COUNT_TWO, 0, DUMP_HISTORY_COUNT_MAX);
1257 
1258     GetInnerCommonEventManager()->UnsubscribeCommonEvent(commonEventListener);
1259     GetInnerCommonEventManager()->UnsubscribeCommonEvent(commonEventListener2);
1260 }
1261 
1262 /*
1263  * @tc.number: CommonEventDumpPartEventTest_0100
1264  * @tc.name: test dump
1265  * @tc.desc: Verify dump all subscriber
1266  * @tc.require: I582WG
1267  */
1268 HWTEST_F(CommonEventDumpTest, CommonEventDumpPartEventTest_0100, Function | MediumTest | Level1)
1269 {
1270     /* Subscribe */
1271     CommonEventListener *listener = nullptr;
1272     CommonEventListener *listener2 = nullptr;
1273     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
1274     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
1275     EXPECT_NE(nullptr, listener);
1276     EXPECT_NE(nullptr, listener2);
1277 
1278     usleep(50000);
1279 
1280     std::vector<std::string> state;
1281     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::SUBSCRIBER), "", ALL_USER, state);
1282     GTEST_LOG_(INFO) << "get state size:" << state.size();
1283     ASSERT_EQ(state.size(), DUMP_SUBSCRIBER_COUNT_TWO);
1284     auto pos = state[0].find("Subscribers:");
1285     ASSERT_NE(pos, string::npos);
1286 
1287     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
1288     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
1289 }
1290 
1291 /*
1292  * @tc.number: CommonEventDumpPartEventTest_0200
1293  * @tc.name: test dump
1294  * @tc.desc: Verify dump information after publishing sticky events
1295  * @tc.require: I582WG
1296  */
1297 HWTEST_F(CommonEventDumpTest, CommonEventDumpPartEventTest_0200, Function | MediumTest | Level1)
1298 {
1299     /* Subscribe */
1300     CommonEventListener *listener = nullptr;
1301     CommonEventListener *listener2 = nullptr;
1302     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
1303     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
1304     EXPECT_NE(nullptr, listener);
1305     EXPECT_NE(nullptr, listener2);
1306 
1307     /* Publish */
1308     PublishStickyEvent(EVENT, TYPE, CODE, DATA, PERMISSION);
1309     PublishStickyEvent(EVENT2, TYPE2, CODE2, DATA2, PERMISSION2);
1310 
1311     usleep(50000);
1312 
1313     std::vector<std::string> state;
1314     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::STICKY), "", ALL_USER, state);
1315     GTEST_LOG_(INFO) << "get state size:" << state.size();
1316     ASSERT_EQ(state.size(), DUMP_STICKY_COUNT_TWO);
1317     auto pos = state[0].find("Sticky Events:");
1318     ASSERT_NE(pos, string::npos);
1319 
1320     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
1321     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
1322 }
1323 
1324 /*
1325  * @tc.number: CommonEventDumpPartEventTest_0300
1326  * @tc.name: test dump
1327  * @tc.desc: Verify dump pending events
1328  * @tc.require: I582WG
1329  */
1330 HWTEST_F(CommonEventDumpTest, CommonEventDumpPartEventTest_0300, Function | MediumTest | Level1)
1331 {
1332     /* Subscribe */
1333     CommonEventListener *listener = nullptr;
1334     CommonEventListener *listener2 = nullptr;
1335     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
1336     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
1337     EXPECT_NE(nullptr, listener);
1338     EXPECT_NE(nullptr, listener2);
1339 
1340     /* Publish */
1341     PublishUnorderedEvent(EVENT, TYPE, CODE, DATA, PERMISSION);
1342     PublishUnorderedEvent(EVENT2, TYPE2, CODE2, DATA2, PERMISSION2);
1343 
1344     usleep(50000);
1345 
1346     std::vector<std::string> state;
1347     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::PENDING), "", ALL_USER, state);
1348     GTEST_LOG_(INFO) << "get state size:" << state.size();
1349     ASSERT_EQ(state.size(), 1);
1350     EXPECT_EQ("Pending Events:\tNo information", state[0]);
1351 
1352     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
1353     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
1354 }
1355 
1356 /*
1357  * @tc.number: CommonEventDumpPartEventTest_0400
1358  * @tc.name: test dump
1359  * @tc.desc: Verify dump information after publishing unordered events
1360  * @tc.require: I582WG
1361  */
1362 HWTEST_F(CommonEventDumpTest, CommonEventDumpPartEventTest_0400, Function | MediumTest | Level1)
1363 {
1364     /* Subscribe */
1365     CommonEventListener *listener = nullptr;
1366     CommonEventListener *listener2 = nullptr;
1367     SubscribeDoubleEvent(PRIORITY, PERMISSION, DEVICEDID, listener);
1368     SubscribeDoubleEvent(PRIORITY2, PERMISSION2, DEVICEDID2, listener2);
1369     EXPECT_NE(nullptr, listener);
1370     EXPECT_NE(nullptr, listener2);
1371 
1372     /* Publish */
1373     PublishUnorderedEvent(EVENT, TYPE, CODE, DATA, PERMISSION);
1374     PublishUnorderedEvent(EVENT2, TYPE2, CODE2, DATA2, PERMISSION2);
1375 
1376     usleep(50000);
1377 
1378     std::vector<std::string> state;
1379     GetInnerCommonEventManager()->DumpState(static_cast<int32_t>(DumpEventType::HISTORY), "", ALL_USER, state);
1380     GTEST_LOG_(INFO) << "get state size:" << state.size();
1381     ASSERT_EQ(state.size(), DUMP_HISTORY_COUNT_TWO * 3);
1382     auto pos = state[0].find("History Events:");
1383     ASSERT_NE(pos, string::npos);
1384 
1385     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener->AsObject());
1386     GetInnerCommonEventManager()->UnsubscribeCommonEvent(listener2->AsObject());
1387 }
1388 }  // namespace
1389