• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "main_ability.h"
17 #include "hilog_wrapper.h"
18 #include "test_utils.h"
19 #include <algorithm>
20 #include <condition_variable>
21 #include <chrono>
22 #include <functional>
23 #include <regex>
24 #include <string>
25 
26 namespace OHOS {
27 namespace AppExecFwk {
28 using namespace OHOS::EventFwk;
29 using namespace OHOS::STtools;
30 namespace {
31 int terminated_task_num = 0;
32 std::condition_variable cv;
33 std::mutex cv_mutex;
34 constexpr int testTaskCount = 3;
35 std::string innerSyncBarrierId = "innerSyncBarrierId";
36 std::string innerAsyncBarrierId = "innerAsyncBarrierId";
37 std::string innerGroupWaitId = "innerGroupWaitId";
38 std::string innerGroupNotifyId = "innerGroupNotifyId";
39 std::string outerSyncBarrierId = "outerSyncBarrierId";
40 std::string outerAsyncBarrierId = "outerAsyncBarrierId";
41 std::string outerGroupWaitId = "outerGroupWaitId";
42 std::string outerGroupNotifyId = "outerGroupNotifyId";
43 constexpr int applyNum = 3;
44 constexpr int delayMs = 200;
45 constexpr int groupWait = 1000;
46 std::string delimiter = "_";
47 std::string innerDelimiter = "-";
48 std::string task_execution_sequence = delimiter;
49 std::vector<std::shared_ptr<AppExecFwk::TaskDispatcher>> allDispatchers;
50 std::mutex dispatcher_mutex;
51 constexpr int numZero = 0;
52 constexpr int numOne = 1;
53 constexpr int numTwo = 2;
54 constexpr int numThree = 3;
55 }  // namespace
56 
Wait(const int task_num)57 bool Wait(const int task_num)
58 {
59     std::unique_lock<std::mutex> ulock(cv_mutex);
60     using namespace std::chrono_literals;
61     bool result = cv.wait_for(ulock, 5000ms, [task_num] { return terminated_task_num == task_num; });
62     if (result) {
63         allDispatchers.clear();
64     }
65     return result;
66 }
67 
TestTask(const std::string task_id)68 void TestTask(const std::string task_id)
69 {
70     {
71         std::lock_guard<std::mutex> lock(cv_mutex);
72         terminated_task_num++;
73         task_execution_sequence += task_id + delimiter;
74     }
75     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, terminated_task_num, task_execution_sequence);
76     cv.notify_one();
77 }
78 
Reset()79 void Reset()
80 {
81     terminated_task_num = 0;
82     task_execution_sequence = delimiter;
83     allDispatchers.clear();
84 }
85 
IsAscend(const std::vector<size_t> & vec)86 bool IsAscend(const std::vector<size_t> &vec)
87 {
88     auto pos = std::adjacent_find(std::begin(vec), std::end(vec), std::greater<size_t>());
89     return pos == std::end(vec);
90 }
91 
OuterTaskExecuted(TestSetting setting)92 bool OuterTaskExecuted(TestSetting setting)
93 {
94     HILOG_INFO("-- -- -- -- -- --MainAbility::OuterTaskExecuted begin");
95     std::string expectedTaskId;
96     bool executed = true;
97     for (int i = 0; i < testTaskCount; i++) {
98         expectedTaskId = delimiter + std::to_string(i) + delimiter;
99         executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
100         if (!executed) {
101             return executed;
102         }
103     }
104     if (setting.sync_barrier) {
105         expectedTaskId = delimiter + outerSyncBarrierId + delimiter;
106         executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
107     }
108     if (setting.async_barrier) {
109         expectedTaskId = delimiter + outerAsyncBarrierId + delimiter;
110         executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
111     }
112     if (setting.group_notify) {
113         expectedTaskId = delimiter + outerGroupNotifyId + delimiter;
114         executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
115     }
116     HILOG_INFO("-- -- -- -- -- --MainAbility::OuterTaskExecuted end result:%{public}d", executed);
117     return executed;
118 }
119 
InnerTaskExecuted(TestSetting setting)120 bool InnerTaskExecuted(TestSetting setting)
121 {
122     HILOG_INFO("-- -- -- -- -- --MainAbility::InnerTaskExecuted begin");
123     std::string expectedTaskId;
124     bool executed = true;
125     for (int i = 0; i < testTaskCount; i++) {
126         for (int j = 0; j < testTaskCount; j++) {
127             expectedTaskId = delimiter + std::to_string(i) + innerDelimiter + std::to_string(j) + delimiter;
128             executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
129             if (!executed) {
130                 return executed;
131             }
132         }
133     }
134     if (setting.sync_barrier) {
135         for (int i = 0; i < testTaskCount; i++) {
136             expectedTaskId = delimiter + innerSyncBarrierId + std::to_string(i) + delimiter;
137             executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
138         }
139     }
140     if (setting.async_barrier) {
141         for (int i = 0; i < testTaskCount; i++) {
142             expectedTaskId = delimiter + innerAsyncBarrierId + std::to_string(i) + delimiter;
143             executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
144         }
145     }
146     if (setting.group_notify) {
147         for (int i = 0; i < testTaskCount; i++) {
148             expectedTaskId = delimiter + innerGroupNotifyId + std::to_string(i) + delimiter;
149             executed = executed && (task_execution_sequence.find(expectedTaskId) != string::npos);
150         }
151     }
152     HILOG_INFO("-- -- -- -- -- --MainAbility::InnerTaskExecuted end result:%{public}d", executed);
153     return executed;
154 }
155 
countSubstr(std::string str,std::string substr)156 int countSubstr(std::string str, std::string substr)
157 {
158     std::regex m(substr);
159     std::sregex_iterator itr(str.begin(), str.end(), m);
160     std::sregex_iterator end;
161     return std::distance(itr, end);
162 }
163 
countSubstrOverlap(std::string str,std::string substr)164 int countSubstrOverlap(std::string str, std::string substr)
165 {
166     int count = 0;
167     std::string::size_type pos = 0;
168     while ((pos = str.find(substr, pos)) != std::string::npos) {
169         pos++;
170         count++;
171     }
172     return count;
173 }
174 
applyExecuted(const TestSetting & outerSetting,const TestSetting & innerSetting)175 bool applyExecuted(const TestSetting &outerSetting, const TestSetting &innerSetting)
176 {
177     bool result = true;
178     bool isOuterApply = outerSetting.op == TestOperation::APPLY && outerSetting.apply > 0;
179     bool isInnerApply = innerSetting.op == TestOperation::APPLY && innerSetting.apply > 0;
180     if (!isOuterApply && !isInnerApply) {
181         return result;
182     }
183     if (isOuterApply) {
184         for (int i = 0; i < testTaskCount; i++) {
185             std::string taskId = delimiter + std::to_string(i) + delimiter;
186             result = result && countSubstrOverlap(task_execution_sequence, taskId) == outerSetting.apply;
187         }
188     }
189     int innerTimes = 0;
190     if (isInnerApply && isOuterApply) {
191         innerTimes = outerSetting.apply * innerSetting.apply;
192     } else if (isOuterApply) {
193         innerTimes = outerSetting.apply;
194     } else {
195         innerTimes = innerSetting.apply;
196     }
197 
198     for (int i = 0; i < testTaskCount; i++) {
199         for (int j = 0; j < testTaskCount; j++) {
200             std::string taskId = std::to_string(i) + innerDelimiter + std::to_string(j);
201             result = result && countSubstr(task_execution_sequence, taskId) == innerTimes;
202         }
203     }
204     return result;
205 }
OuterExecutedAfter(const std::string baseTaskId)206 bool OuterExecutedAfter(const std::string baseTaskId)
207 {
208     bool result = true;
209     string::size_type waitPos = task_execution_sequence.find(baseTaskId);
210     for (int i = 0; i < testTaskCount; i++) {
211         std::string taskId = delimiter + std::to_string(i) + delimiter;
212         result = result && waitPos > task_execution_sequence.find(taskId);
213     }
214     return result;
215 }
216 
InnerExecutedAfter(const std::string baseTaskId)217 bool InnerExecutedAfter(const std::string baseTaskId)
218 {
219     bool result = true;
220     for (int i = 0; i < testTaskCount; i++) {
221         std::string waitTaskId = delimiter + baseTaskId + std::to_string(i) + delimiter;
222         string::size_type waitPos = task_execution_sequence.find(waitTaskId);
223         for (int j = 0; j < testTaskCount; j++) {
224             std::string taskId = delimiter + std::to_string(i) + innerDelimiter + std::to_string(j) + delimiter;
225             result = result && waitPos > task_execution_sequence.find(taskId);
226         }
227     }
228     return result;
229 }
230 
setTaskIndex(std::string taskId,std::vector<size_t> & taskIndex)231 void setTaskIndex(std::string taskId, std::vector<size_t> &taskIndex)
232 {
233     std::size_t indx = task_execution_sequence.find(taskId);
234     if (indx != string::npos) {
235         taskIndex.push_back(indx);
236     }
237 }
238 
GetTaskIndex(std::vector<size_t> & outerTaskIndex,std::vector<std::vector<size_t>> & innerTaskIndex,const int outerCnt=testTaskCount,const int innerCnt=testTaskCount)239 void GetTaskIndex(std::vector<size_t> &outerTaskIndex, std::vector<std::vector<size_t>> &innerTaskIndex,
240     const int outerCnt = testTaskCount, const int innerCnt = testTaskCount)
241 {
242     std::string outerTaskId;
243     std::string innerTaskId;
244     outerTaskIndex.resize(outerCnt);
245     innerTaskIndex.resize(outerCnt);
246     for (auto &inner : innerTaskIndex) {
247         inner.resize(innerCnt);
248     }
249     for (int i = 0; i < outerCnt; i++) {
250         outerTaskId = delimiter + std::to_string(i) + delimiter;
251         outerTaskIndex[i] = task_execution_sequence.find(outerTaskId);
252         for (int j = 0; j < innerCnt; j++) {
253             innerTaskId = delimiter + std::to_string(i) + innerDelimiter + std::to_string(j) + delimiter;
254             innerTaskIndex[i][j] = task_execution_sequence.find(innerTaskId);
255         }
256         std::string taskId = innerSyncBarrierId + std::to_string(i);
257         setTaskIndex(taskId, innerTaskIndex[i]);
258         taskId = innerAsyncBarrierId + std::to_string(i);
259         setTaskIndex(taskId, innerTaskIndex[i]);
260         taskId = innerGroupNotifyId + std::to_string(i);
261         setTaskIndex(taskId, innerTaskIndex[i]);
262     }
263     setTaskIndex(outerSyncBarrierId, outerTaskIndex);
264     setTaskIndex(outerAsyncBarrierId, outerTaskIndex);
265     setTaskIndex(outerGroupNotifyId, outerTaskIndex);
266     HILOG_INFO("-- -- -- -- -- --MainAbility::GetTaskIndex end");
267 }
268 
Init(const std::shared_ptr<AbilityInfo> & abilityInfo,const std::shared_ptr<OHOSApplication> & application,std::shared_ptr<AbilityHandler> & handler,const sptr<IRemoteObject> & token)269 void MainAbility::Init(const std::shared_ptr<AbilityInfo> &abilityInfo,
270     const std::shared_ptr<OHOSApplication> &application, std::shared_ptr<AbilityHandler> &handler,
271     const sptr<IRemoteObject> &token)
272 {
273     HILOG_INFO("MainAbility::Init");
274     Ability::Init(abilityInfo, application, handler, token);
275 }
276 
~MainAbility()277 MainAbility::~MainAbility()
278 {
279     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
280 }
281 
OnStart(const Want & want)282 void MainAbility::OnStart(const Want &want)
283 {
284     HILOG_INFO("MainAbility::onStart");
285     SubscribeEvent();
286     Ability::OnStart(want);
287     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, Ability::GetState(), "onStart");
288 }
289 
OnStop()290 void MainAbility::OnStop()
291 {
292     HILOG_INFO("MainAbility::OnStop");
293     Ability::OnStop();
294     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
295     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, Ability::GetState(), "OnStop");
296 }
297 
OnActive()298 void MainAbility::OnActive()
299 {
300     HILOG_INFO("MainAbility::OnActive");
301     Ability::OnActive();
302     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, 0, "OnActive");
303 }
304 
OnInactive()305 void MainAbility::OnInactive()
306 {
307     HILOG_INFO("MainAbility::OnInactive");
308     Ability::OnInactive();
309     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, Ability::GetState(), "OnInactive");
310 }
311 
OnBackground()312 void MainAbility::OnBackground()
313 {
314     HILOG_INFO("MainAbility::OnBackground");
315     Ability::OnBackground();
316     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, Ability::GetState(), "OnBackground");
317 }
318 
OnForeground(const Want & want)319 void MainAbility::OnForeground(const Want &want)
320 {
321     HILOG_INFO("MainAbility::OnForeground");
322     Ability::OnForeground(want);
323     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, Ability::GetState(), "OnForeground");
324 }
325 
SubscribeEvent()326 void MainAbility::SubscribeEvent()
327 {
328     std::vector<std::string> eventList = {
329         g_EVENT_REQU_FIRST,
330     };
331     MatchingSkills matchingSkills;
332     for (const auto &e : eventList) {
333         matchingSkills.AddEvent(e);
334     }
335     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
336     subscribeInfo.SetPriority(1);
337     subscriber_ = std::make_shared<FirstEventSubscriber>(subscribeInfo);
338     subscriber_->mainAbility = this;
339     CommonEventManager::SubscribeCommonEvent(subscriber_);
340 }
341 
OnReceiveEvent(const CommonEventData & data)342 void FirstEventSubscriber::OnReceiveEvent(const CommonEventData &data)
343 {
344     auto eventName = data.GetWant().GetAction();
345     if (std::strcmp(eventName.c_str(), g_EVENT_REQU_FIRST.c_str()) == 0) {
346         auto target = data.GetData();
347         auto caseInfo = TestUtils::split(target, "_");
348         HILOG_INFO("FirstEventSubscriber::OnReceiveEvent:caseInfo.size()=%{public}zu", caseInfo.size());
349         if (caseInfo.size() < numThree) {
350             return;
351         }
352         if (mapTestFunc_.find(caseInfo[numZero]) != mapTestFunc_.end()) {
353             mapTestFunc_[caseInfo[numZero]](std::stoi(caseInfo[numOne]), std::stoi(caseInfo[numTwo]), data.GetCode());
354         } else {
355             HILOG_INFO("OnReceiveEvent: CommonEventData error(%{public}s)", target.c_str());
356         }
357     }
358 }
359 
TestDispatcher(int apiIndex,int caseIndex,int code)360 void MainAbility::TestDispatcher(int apiIndex, int caseIndex, int code)
361 {
362     if (mapCase_.find(apiIndex) != mapCase_.end()) {
363         if (caseIndex < (int)mapCase_[apiIndex].size()) {
364             mapCase_[apiIndex][caseIndex](code);
365         }
366     }
367 }
368 
SetInnerTask(TaskList & innerDispatcher,TestSetting innerSetting,std::string outerTaskId,int innerTaskSeq)369 void SetInnerTask(TaskList &innerDispatcher, TestSetting innerSetting, std::string outerTaskId, int innerTaskSeq)
370 {
371     std::string innerTaskId = outerTaskId + innerDelimiter + std::to_string(innerTaskSeq);
372     auto innerTask = std::make_shared<Runnable>([=]() { TestTask(innerTaskId); });
373     innerDispatcher.addOperation(innerSetting.op);
374     if (innerSetting.op == TestOperation::APPLY && innerSetting.apply > 0) {
375         innerDispatcher.addApply(innerSetting.apply);
376     }
377     if (innerSetting.op == TestOperation::DELAY && innerSetting.delay > 0) {
378         innerDispatcher.addDelay(innerSetting.delay);
379     }
380     innerDispatcher.addFunc(innerTask);
381 }
382 
SetInnerTaskOther(TaskList & innerDispatcher,TestSetting innerSetting,int outerTaskSeq)383 void SetInnerTaskOther(TaskList &innerDispatcher, TestSetting innerSetting, int outerTaskSeq)
384 {
385     if (innerSetting.sync_barrier) {
386         std::string taskId = innerSyncBarrierId + std::to_string(outerTaskSeq);
387         auto task = std::make_shared<Runnable>([=]() { TestTask(taskId); });
388         innerDispatcher.addOperation(TestOperation::SYNC_BARRIER).addFunc(task);
389     }
390     if (innerSetting.async_barrier) {
391         std::string taskId = innerAsyncBarrierId + std::to_string(outerTaskSeq);
392         auto task = std::make_shared<Runnable>([=]() { TestTask(taskId); });
393         innerDispatcher.addOperation(TestOperation::ASYNC_BARRIER).addFunc(task);
394     }
395     if (innerSetting.group_wait) {
396         innerDispatcher.addOperation(TestOperation::GROUP_WAIT).addWaitTime(innerSetting.group_timeout);
397     }
398     if (innerSetting.group_notify) {
399         std::string taskId = innerGroupNotifyId + std::to_string(outerTaskSeq);
400         auto task = std::make_shared<Runnable>([=]() { TestTask(taskId); });
401         innerDispatcher.addOperation(TestOperation::GROUP_NOTIFY).addFunc(task);
402     }
403 }
404 
SetOuterTaskOther(TaskList & outerDispatcher,TestSetting outerSetting)405 void SetOuterTaskOther(TaskList &outerDispatcher, TestSetting outerSetting)
406 {
407     if (outerSetting.sync_barrier) {
408         auto task = std::make_shared<Runnable>([=]() { TestTask(outerSyncBarrierId); });
409         outerDispatcher.addOperation(TestOperation::SYNC_BARRIER).addFunc(task);
410     }
411     if (outerSetting.async_barrier) {
412         auto task = std::make_shared<Runnable>([=]() { TestTask(outerAsyncBarrierId); });
413         outerDispatcher.addOperation(TestOperation::ASYNC_BARRIER).addFunc(task);
414     }
415     if (outerSetting.group_wait) {
416         outerDispatcher.addOperation(TestOperation::GROUP_WAIT).addWaitTime(outerSetting.group_timeout);
417     }
418     if (outerSetting.group_notify) {
419         auto task = std::make_shared<Runnable>([=]() { TestTask(outerGroupNotifyId); });
420         outerDispatcher.addOperation(TestOperation::GROUP_NOTIFY).addFunc(task);
421     }
422 }
423 
CountTask(TestSetting outerSetting,TestSetting innerSetting)424 int CountTask(TestSetting outerSetting, TestSetting innerSetting)
425 {
426     int taskCount = 0;
427     taskCount = (innerSetting.op == TestOperation::APPLY) ? (innerSetting.apply * testTaskCount) : testTaskCount;
428     if (innerSetting.sync_barrier) {
429         taskCount++;
430     }
431     if (innerSetting.async_barrier) {
432         taskCount++;
433     }
434     if (innerSetting.group_notify) {
435         taskCount++;
436     }
437     taskCount = (outerSetting.op == TestOperation::APPLY)
438                     ? (outerSetting.apply * testTaskCount + outerSetting.apply * testTaskCount * taskCount)
439                     : (testTaskCount + testTaskCount * taskCount);
440     if (outerSetting.sync_barrier) {
441         taskCount++;
442     }
443     if (outerSetting.async_barrier) {
444         taskCount++;
445     }
446     if (outerSetting.group_notify) {
447         taskCount++;
448     }
449     return taskCount;
450 }
451 
Dispatch(TestSetting outerSetting,TestSetting innerSetting)452 int MainAbility::Dispatch(TestSetting outerSetting, TestSetting innerSetting)
453 {
454     std::string outerName = "outerDispatcher";
455     std::string innerName = "innerDispatcher";
456     std::string outerTaskId;
457     auto context = GetContext();
458     TaskList outerDispatcher {outerSetting.dispatcher, context, outerName};
459     if (outerSetting.create_group) {
460         outerDispatcher.addOperation(TestOperation::CREATE_GROUP);
461     }
462     for (int i = 0; i < testTaskCount; i++) {
463         outerTaskId = std::to_string(i);
464         auto outerTask = std::make_shared<Runnable>([=]() {
465             auto context = this->GetContext();
466             TaskList innerDispatcher {innerSetting.dispatcher, context, innerName + std::to_string(i)};
467             if (innerSetting.create_group) {
468                 innerDispatcher.addOperation(TestOperation::CREATE_GROUP);
469             }
470             for (int j = 0; j < testTaskCount; j++) {
471                 SetInnerTask(innerDispatcher, innerSetting, outerTaskId, j);
472             }
473             SetInnerTaskOther(innerDispatcher, innerSetting, i);
474             innerDispatcher.executedTask();
475             {
476                 std::lock_guard<std::mutex> lock(dispatcher_mutex);
477                 allDispatchers.push_back(innerDispatcher.getDispatcher());
478             }
479             TestTask(outerTaskId);
480         });
481         outerDispatcher.addOperation(outerSetting.op);
482         if (outerSetting.op == TestOperation::APPLY && outerSetting.apply > 0) {
483             outerDispatcher.addApply(outerSetting.apply);
484         }
485         if (outerSetting.op == TestOperation::DELAY && outerSetting.delay > 0) {
486             outerDispatcher.addDelay(outerSetting.delay);
487         }
488         outerDispatcher.addFunc(outerTask);
489     }
490     SetOuterTaskOther(outerDispatcher, outerSetting);
491     outerDispatcher.executedTask();
492     {
493         std::lock_guard<std::mutex> lock(dispatcher_mutex);
494         allDispatchers.push_back(outerDispatcher.getDispatcher());
495     }
496     int taskCount = CountTask(outerSetting, innerSetting);
497     return taskCount;
498 }
499 
500 // level1:global, sync level2:parallel, sync
GlobalCase1(int code)501 void MainAbility::GlobalCase1(int code)
502 {
503     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
504     Reset();
505     TestSetting outerSetting;
506     TestSetting innerSetting;
507     outerSetting.dispatcher = TestDispatcher::GLOBAL;
508     innerSetting.dispatcher = TestDispatcher::PARALLEL;
509     outerSetting.op = TestOperation::SYNC;
510     innerSetting.op = TestOperation::SYNC;
511     int taskCount = Dispatch(outerSetting, innerSetting);
512     bool result = Wait(taskCount);
513     result = result && task_execution_sequence.size() > 1;
514     if (result) {
515         result = result && applyExecuted(outerSetting, innerSetting);
516         result = result && OuterTaskExecuted(outerSetting);
517         result = result && InnerTaskExecuted(innerSetting);
518         std::vector<size_t> outerTaskIndex;
519         std::vector<std::vector<size_t>> innerTaskIndex;
520         GetTaskIndex(outerTaskIndex, innerTaskIndex);
521         result = result && IsAscend(outerTaskIndex);
522         for (int i = 0; i < testTaskCount; i++) {
523             result = result && IsAscend(innerTaskIndex[i]);
524         }
525         result = result && applyExecuted(outerSetting, innerSetting);
526     }
527     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
528 }
529 
530 // level1:global, sync level2:parallel, async
GlobalCase2(int code)531 void MainAbility::GlobalCase2(int code)
532 {
533     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
534     Reset();
535     TestSetting outerSetting;
536     TestSetting innerSetting;
537     outerSetting.dispatcher = TestDispatcher::GLOBAL;
538     innerSetting.dispatcher = TestDispatcher::PARALLEL;
539     outerSetting.op = TestOperation::SYNC;
540     innerSetting.op = TestOperation::ASYNC;
541     int taskCount = Dispatch(outerSetting, innerSetting);
542     bool result = Wait(taskCount);
543     result = result && task_execution_sequence.size() > 1;
544     if (result) {
545         result = result && applyExecuted(outerSetting, innerSetting);
546         result = result && OuterTaskExecuted(outerSetting);
547         result = result && InnerTaskExecuted(innerSetting);
548         std::vector<size_t> outerTaskIndex;
549         std::vector<std::vector<size_t>> innerTaskIndex;
550         GetTaskIndex(outerTaskIndex, innerTaskIndex);
551         result = result && IsAscend(outerTaskIndex);
552     }
553     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
554 }
555 
556 // level1:global, sync level2:parallel, delay
GlobalCase3(int code)557 void MainAbility::GlobalCase3(int code)
558 {
559     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
560     Reset();
561     TestSetting outerSetting;
562     TestSetting innerSetting;
563     outerSetting.dispatcher = TestDispatcher::GLOBAL;
564     innerSetting.dispatcher = TestDispatcher::PARALLEL;
565     innerSetting.delay = delayMs;
566     outerSetting.op = TestOperation::SYNC;
567     innerSetting.op = TestOperation::DELAY;
568     int taskCount = Dispatch(outerSetting, innerSetting);
569     bool result = Wait(taskCount);
570     result = result && task_execution_sequence.size() > 1;
571     if (result) {
572         result = result && applyExecuted(outerSetting, innerSetting);
573         result = result && OuterTaskExecuted(outerSetting);
574         result = result && InnerTaskExecuted(innerSetting);
575         std::vector<size_t> outerTaskIndex;
576         std::vector<std::vector<size_t>> innerTaskIndex;
577         GetTaskIndex(outerTaskIndex, innerTaskIndex);
578         result = result && IsAscend(outerTaskIndex);
579     }
580     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
581 }
582 
583 // level1:global, sync level2:parallel, group
GlobalCase4(int code)584 void MainAbility::GlobalCase4(int code)
585 {
586     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
587     Reset();
588     TestSetting outerSetting;
589     TestSetting innerSetting;
590     outerSetting.dispatcher = TestDispatcher::GLOBAL;
591     innerSetting.dispatcher = TestDispatcher::PARALLEL;
592     innerSetting.create_group = true;
593     outerSetting.op = TestOperation::SYNC;
594     innerSetting.op = TestOperation::ASYNC_GROUP;
595     int taskCount = Dispatch(outerSetting, innerSetting);
596     bool result = Wait(taskCount);
597     result = result && task_execution_sequence.size() > 1;
598     if (result) {
599         result = result && applyExecuted(outerSetting, innerSetting);
600         result = result && OuterTaskExecuted(outerSetting);
601         result = result && InnerTaskExecuted(innerSetting);
602         std::vector<size_t> outerTaskIndex;
603         std::vector<std::vector<size_t>> innerTaskIndex;
604         GetTaskIndex(outerTaskIndex, innerTaskIndex);
605         result = result && IsAscend(outerTaskIndex);
606     }
607     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
608 }
609 
610 // level1:global, sync level2:parallel, group wait
GlobalCase5(int code)611 void MainAbility::GlobalCase5(int code)
612 {
613     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
614     Reset();
615     TestSetting outerSetting;
616     TestSetting innerSetting;
617     outerSetting.dispatcher = TestDispatcher::GLOBAL;
618     innerSetting.dispatcher = TestDispatcher::PARALLEL;
619     innerSetting.group_wait = true;
620     innerSetting.group_timeout = groupWait;
621     innerSetting.create_group = true;
622     outerSetting.op = TestOperation::SYNC;
623     innerSetting.op = TestOperation::ASYNC_GROUP;
624     int taskCount = Dispatch(outerSetting, innerSetting);
625     bool result = Wait(taskCount);
626     result = result && task_execution_sequence.size() > 1;
627     if (result) {
628         result = result && applyExecuted(outerSetting, innerSetting);
629         result = result && OuterTaskExecuted(outerSetting);
630         result = result && InnerTaskExecuted(innerSetting);
631         std::vector<size_t> outerTaskIndex;
632         std::vector<std::vector<size_t>> innerTaskIndex;
633         GetTaskIndex(outerTaskIndex, innerTaskIndex);
634         result = result && IsAscend(outerTaskIndex);
635     }
636     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
637 }
638 
639 // level1:global, sync level2:parallel, group notify
GlobalCase6(int code)640 void MainAbility::GlobalCase6(int code)
641 {
642     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
643     Reset();
644     TestSetting outerSetting;
645     TestSetting innerSetting;
646     outerSetting.dispatcher = TestDispatcher::GLOBAL;
647     innerSetting.dispatcher = TestDispatcher::PARALLEL;
648     innerSetting.create_group = true;
649     innerSetting.group_notify = true;
650     outerSetting.op = TestOperation::SYNC;
651     innerSetting.op = TestOperation::ASYNC_GROUP;
652     int taskCount = Dispatch(outerSetting, innerSetting);
653     bool result = Wait(taskCount);
654     result = result && task_execution_sequence.size() > 1;
655     if (result) {
656         result = result && applyExecuted(outerSetting, innerSetting);
657         result = result && OuterTaskExecuted(outerSetting);
658         result = result && InnerTaskExecuted(innerSetting);
659         std::vector<size_t> outerTaskIndex;
660         std::vector<std::vector<size_t>> innerTaskIndex;
661         GetTaskIndex(outerTaskIndex, innerTaskIndex);
662         result = result && IsAscend(outerTaskIndex);
663         result = result && InnerExecutedAfter(innerGroupNotifyId);
664     }
665     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
666 }
667 
668 // level1:global, sync level2:parallel, sync barrier
GlobalCase7(int code)669 void MainAbility::GlobalCase7(int code)
670 {
671     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
672     Reset();
673     TestSetting outerSetting;
674     TestSetting innerSetting;
675     outerSetting.dispatcher = TestDispatcher::GLOBAL;
676     innerSetting.dispatcher = TestDispatcher::PARALLEL;
677     innerSetting.sync_barrier = true;
678     innerSetting.create_group = true;
679     outerSetting.op = TestOperation::SYNC;
680     innerSetting.op = TestOperation::ASYNC_GROUP;
681     int taskCount = Dispatch(outerSetting, innerSetting);
682     bool result = Wait(taskCount);
683     result = result && task_execution_sequence.size() > 1;
684     if (result) {
685         result = result && applyExecuted(outerSetting, innerSetting);
686         result = result && OuterTaskExecuted(outerSetting);
687         result = result && InnerTaskExecuted(innerSetting);
688         std::vector<size_t> outerTaskIndex;
689         std::vector<std::vector<size_t>> innerTaskIndex;
690         GetTaskIndex(outerTaskIndex, innerTaskIndex);
691         result = result && IsAscend(outerTaskIndex);
692         result = result && InnerExecutedAfter(innerSyncBarrierId);
693     }
694     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
695 }
696 
697 // level1:global, sync level2:parallel, async barrier
GlobalCase8(int code)698 void MainAbility::GlobalCase8(int code)
699 {
700     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
701     Reset();
702     TestSetting outerSetting;
703     TestSetting innerSetting;
704     outerSetting.dispatcher = TestDispatcher::GLOBAL;
705     innerSetting.dispatcher = TestDispatcher::PARALLEL;
706     innerSetting.async_barrier = true;
707     innerSetting.create_group = true;
708     outerSetting.op = TestOperation::SYNC;
709     innerSetting.op = TestOperation::ASYNC_GROUP;
710     int taskCount = Dispatch(outerSetting, innerSetting);
711     bool result = Wait(taskCount);
712     result = result && task_execution_sequence.size() > 1;
713     if (result) {
714         result = result && applyExecuted(outerSetting, innerSetting);
715         result = result && OuterTaskExecuted(outerSetting);
716         result = result && InnerTaskExecuted(innerSetting);
717         std::vector<size_t> outerTaskIndex;
718         std::vector<std::vector<size_t>> innerTaskIndex;
719         GetTaskIndex(outerTaskIndex, innerTaskIndex);
720         result = result && IsAscend(outerTaskIndex);
721         result = result && InnerExecutedAfter(innerAsyncBarrierId);
722     }
723     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
724 }
725 
726 // level1:global, sync level2:parallel, apply
GlobalCase9(int code)727 void MainAbility::GlobalCase9(int code)
728 {
729     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
730     Reset();
731     TestSetting outerSetting;
732     TestSetting innerSetting;
733     outerSetting.dispatcher = TestDispatcher::GLOBAL;
734     innerSetting.dispatcher = TestDispatcher::PARALLEL;
735     innerSetting.apply = applyNum;
736     outerSetting.op = TestOperation::SYNC;
737     innerSetting.op = TestOperation::APPLY;
738     int taskCount = Dispatch(outerSetting, innerSetting);
739     bool result = Wait(taskCount);
740     result = result && task_execution_sequence.size() > 1;
741     if (result) {
742         result = result && applyExecuted(outerSetting, innerSetting);
743         result = result && OuterTaskExecuted(outerSetting);
744         result = result && InnerTaskExecuted(innerSetting);
745         std::vector<size_t> outerTaskIndex;
746         std::vector<std::vector<size_t>> innerTaskIndex;
747         GetTaskIndex(outerTaskIndex, innerTaskIndex);
748         result = result && IsAscend(outerTaskIndex);
749     }
750     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
751 }
752 
753 // level1:global, sync level2:serial, sync
GlobalCase10(int code)754 void MainAbility::GlobalCase10(int code)
755 {
756     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
757     Reset();
758     TestSetting outerSetting;
759     TestSetting innerSetting;
760     outerSetting.dispatcher = TestDispatcher::GLOBAL;
761     innerSetting.dispatcher = TestDispatcher::SERIAL;
762     outerSetting.op = TestOperation::SYNC;
763     innerSetting.op = TestOperation::SYNC;
764     int taskCount = Dispatch(outerSetting, innerSetting);
765     bool result = Wait(taskCount);
766     result = result && task_execution_sequence.size() > 1;
767     if (result) {
768         result = result && applyExecuted(outerSetting, innerSetting);
769         result = result && OuterTaskExecuted(outerSetting);
770         result = result && InnerTaskExecuted(innerSetting);
771         std::vector<size_t> outerTaskIndex;
772         std::vector<std::vector<size_t>> innerTaskIndex;
773         GetTaskIndex(outerTaskIndex, innerTaskIndex);
774         result = result && IsAscend(outerTaskIndex);
775         for (int i = 0; i < testTaskCount; i++) {
776             result = result && IsAscend(innerTaskIndex[i]);
777         }
778     }
779     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
780 }
781 
782 // level1:global, sync level2:serial, async
GlobalCase11(int code)783 void MainAbility::GlobalCase11(int code)
784 {
785     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
786     Reset();
787     TestSetting outerSetting;
788     TestSetting innerSetting;
789     outerSetting.dispatcher = TestDispatcher::GLOBAL;
790     innerSetting.dispatcher = TestDispatcher::SERIAL;
791     outerSetting.op = TestOperation::SYNC;
792     innerSetting.op = TestOperation::ASYNC;
793     int taskCount = Dispatch(outerSetting, innerSetting);
794     bool result = Wait(taskCount);
795     result = result && task_execution_sequence.size() > 1;
796     if (result) {
797         result = result && applyExecuted(outerSetting, innerSetting);
798         result = result && OuterTaskExecuted(outerSetting);
799         result = result && InnerTaskExecuted(innerSetting);
800         std::vector<size_t> outerTaskIndex;
801         std::vector<std::vector<size_t>> innerTaskIndex;
802         GetTaskIndex(outerTaskIndex, innerTaskIndex);
803         result = result && IsAscend(outerTaskIndex);
804         for (int i = 0; i < testTaskCount; i++) {
805             result = result && IsAscend(innerTaskIndex[i]);
806         }
807     }
808     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
809 }
810 
811 // level1:global, sync level2:serial, delay
GlobalCase12(int code)812 void MainAbility::GlobalCase12(int code)
813 {
814     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
815     Reset();
816     TestSetting outerSetting;
817     TestSetting innerSetting;
818     outerSetting.dispatcher = TestDispatcher::GLOBAL;
819     innerSetting.dispatcher = TestDispatcher::SERIAL;
820     innerSetting.delay = delayMs;
821     outerSetting.op = TestOperation::SYNC;
822     innerSetting.op = TestOperation::DELAY;
823     int taskCount = Dispatch(outerSetting, innerSetting);
824     bool result = Wait(taskCount);
825     result = result && task_execution_sequence.size() > 1;
826     if (result) {
827         result = result && applyExecuted(outerSetting, innerSetting);
828         result = result && OuterTaskExecuted(outerSetting);
829         result = result && InnerTaskExecuted(innerSetting);
830         std::vector<size_t> outerTaskIndex;
831         std::vector<std::vector<size_t>> innerTaskIndex;
832         GetTaskIndex(outerTaskIndex, innerTaskIndex);
833         result = result && IsAscend(outerTaskIndex);
834         for (int i = 0; i < testTaskCount; i++) {
835             result = result && IsAscend(innerTaskIndex[i]);
836         }
837     }
838     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
839 }
840 
841 // level1:global, sync level2:serial, apply
GlobalCase13(int code)842 void MainAbility::GlobalCase13(int code)
843 {
844     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
845     Reset();
846     TestSetting outerSetting;
847     TestSetting innerSetting;
848     outerSetting.dispatcher = TestDispatcher::GLOBAL;
849     innerSetting.dispatcher = TestDispatcher::SERIAL;
850     innerSetting.apply = applyNum;
851     outerSetting.op = TestOperation::SYNC;
852     innerSetting.op = TestOperation::APPLY;
853     int taskCount = Dispatch(outerSetting, innerSetting);
854     bool result = Wait(taskCount);
855     result = result && task_execution_sequence.size() > 1;
856     if (result) {
857         result = result && applyExecuted(outerSetting, innerSetting);
858         result = result && OuterTaskExecuted(outerSetting);
859         result = result && InnerTaskExecuted(innerSetting);
860         std::vector<size_t> outerTaskIndex;
861         std::vector<std::vector<size_t>> innerTaskIndex;
862         GetTaskIndex(outerTaskIndex, innerTaskIndex);
863         result = result && IsAscend(outerTaskIndex);
864     }
865     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
866 }
867 
868 // level1:global, async level2:parallel, sync
GlobalCase14(int code)869 void MainAbility::GlobalCase14(int code)
870 {
871     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
872     Reset();
873     TestSetting outerSetting;
874     TestSetting innerSetting;
875     outerSetting.dispatcher = TestDispatcher::GLOBAL;
876     innerSetting.dispatcher = TestDispatcher::PARALLEL;
877     outerSetting.op = TestOperation::ASYNC;
878     innerSetting.op = TestOperation::SYNC;
879     int taskCount = Dispatch(outerSetting, innerSetting);
880     bool result = Wait(taskCount);
881     result = result && task_execution_sequence.size() > 1;
882     if (result) {
883         result = result && applyExecuted(outerSetting, innerSetting);
884         result = result && OuterTaskExecuted(outerSetting);
885         result = result && InnerTaskExecuted(innerSetting);
886         std::vector<size_t> outerTaskIndex;
887         std::vector<std::vector<size_t>> innerTaskIndex;
888         GetTaskIndex(outerTaskIndex, innerTaskIndex);
889         for (int i = 0; i < testTaskCount; i++) {
890             result = result && IsAscend(innerTaskIndex[i]);
891         }
892     }
893     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
894 }
895 
896 // level1:global, async level2:parallel, async
GlobalCase15(int code)897 void MainAbility::GlobalCase15(int code)
898 {
899     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
900     Reset();
901     TestSetting outerSetting;
902     TestSetting innerSetting;
903     outerSetting.dispatcher = TestDispatcher::GLOBAL;
904     innerSetting.dispatcher = TestDispatcher::PARALLEL;
905     outerSetting.op = TestOperation::ASYNC;
906     innerSetting.op = TestOperation::ASYNC;
907     int taskCount = Dispatch(outerSetting, innerSetting);
908     bool result = Wait(taskCount);
909     result = result && task_execution_sequence.size() > 1;
910     if (result) {
911         result = result && applyExecuted(outerSetting, innerSetting);
912         result = result && OuterTaskExecuted(outerSetting);
913         result = result && InnerTaskExecuted(innerSetting);
914     }
915     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
916 }
917 
918 // level1:global, async level2:parallel, delay
GlobalCase16(int code)919 void MainAbility::GlobalCase16(int code)
920 {
921     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
922     Reset();
923     TestSetting outerSetting;
924     TestSetting innerSetting;
925     outerSetting.dispatcher = TestDispatcher::GLOBAL;
926     innerSetting.dispatcher = TestDispatcher::PARALLEL;
927     innerSetting.delay = delayMs;
928     outerSetting.op = TestOperation::ASYNC;
929     innerSetting.op = TestOperation::DELAY;
930     int taskCount = Dispatch(outerSetting, innerSetting);
931     bool result = Wait(taskCount);
932     result = result && task_execution_sequence.size() > 1;
933     if (result) {
934         result = result && applyExecuted(outerSetting, innerSetting);
935         result = result && OuterTaskExecuted(outerSetting);
936         result = result && InnerTaskExecuted(innerSetting);
937     }
938     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
939 }
940 
941 // level1:global, async level2:parallel, group
GlobalCase17(int code)942 void MainAbility::GlobalCase17(int code)
943 {
944     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
945     Reset();
946     TestSetting outerSetting;
947     TestSetting innerSetting;
948     outerSetting.dispatcher = TestDispatcher::GLOBAL;
949     innerSetting.dispatcher = TestDispatcher::PARALLEL;
950     innerSetting.create_group = true;
951     outerSetting.op = TestOperation::ASYNC;
952     innerSetting.op = TestOperation::ASYNC_GROUP;
953     int taskCount = Dispatch(outerSetting, innerSetting);
954     bool result = Wait(taskCount);
955     result = result && task_execution_sequence.size() > 1;
956     if (result) {
957         result = result && applyExecuted(outerSetting, innerSetting);
958         result = result && OuterTaskExecuted(outerSetting);
959         result = result && InnerTaskExecuted(innerSetting);
960     }
961     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
962 }
963 
964 // level1:global, async level2:parallel, group wait
GlobalCase18(int code)965 void MainAbility::GlobalCase18(int code)
966 {
967     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
968     Reset();
969     TestSetting outerSetting;
970     TestSetting innerSetting;
971     outerSetting.dispatcher = TestDispatcher::GLOBAL;
972     innerSetting.dispatcher = TestDispatcher::PARALLEL;
973     innerSetting.group_wait = true;
974     innerSetting.group_timeout = groupWait;
975     innerSetting.create_group = true;
976     outerSetting.op = TestOperation::ASYNC;
977     innerSetting.op = TestOperation::ASYNC_GROUP;
978     int taskCount = Dispatch(outerSetting, innerSetting);
979     bool result = Wait(taskCount);
980     result = result && task_execution_sequence.size() > 1;
981     if (result) {
982         result = result && applyExecuted(outerSetting, innerSetting);
983         result = result && OuterTaskExecuted(outerSetting);
984         result = result && InnerTaskExecuted(innerSetting);
985     }
986     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
987 }
988 
989 // level1:global, async level2:parallel, group notify
GlobalCase19(int code)990 void MainAbility::GlobalCase19(int code)
991 {
992     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
993     Reset();
994     TestSetting outerSetting;
995     TestSetting innerSetting;
996     outerSetting.dispatcher = TestDispatcher::GLOBAL;
997     innerSetting.dispatcher = TestDispatcher::PARALLEL;
998     innerSetting.create_group = true;
999     innerSetting.group_notify = true;
1000     outerSetting.op = TestOperation::ASYNC;
1001     innerSetting.op = TestOperation::ASYNC_GROUP;
1002     int taskCount = Dispatch(outerSetting, innerSetting);
1003     bool result = Wait(taskCount);
1004     result = result && task_execution_sequence.size() > 1;
1005     if (result) {
1006         result = result && applyExecuted(outerSetting, innerSetting);
1007         result = result && OuterTaskExecuted(outerSetting);
1008         result = result && InnerTaskExecuted(innerSetting);
1009         result = result && InnerExecutedAfter(innerGroupNotifyId);
1010     }
1011     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1012 }
1013 
1014 // level1:global, async level2:parallel, sync barrier
GlobalCase20(int code)1015 void MainAbility::GlobalCase20(int code)
1016 {
1017     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1018     Reset();
1019     TestSetting outerSetting;
1020     TestSetting innerSetting;
1021     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1022     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1023     innerSetting.sync_barrier = true;
1024     innerSetting.create_group = true;
1025     outerSetting.op = TestOperation::ASYNC;
1026     innerSetting.op = TestOperation::ASYNC_GROUP;
1027     int taskCount = Dispatch(outerSetting, innerSetting);
1028     bool result = Wait(taskCount);
1029     result = result && task_execution_sequence.size() > 1;
1030     if (result) {
1031         result = result && applyExecuted(outerSetting, innerSetting);
1032         result = result && OuterTaskExecuted(outerSetting);
1033         result = result && InnerTaskExecuted(innerSetting);
1034         result = result && InnerExecutedAfter(innerSyncBarrierId);
1035     }
1036     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1037 }
1038 
1039 // level1:global, async level2:parallel, async barrier
GlobalCase21(int code)1040 void MainAbility::GlobalCase21(int code)
1041 {
1042     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1043     Reset();
1044     TestSetting outerSetting;
1045     TestSetting innerSetting;
1046     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1047     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1048     innerSetting.async_barrier = true;
1049     innerSetting.create_group = true;
1050     outerSetting.op = TestOperation::ASYNC;
1051     innerSetting.op = TestOperation::ASYNC_GROUP;
1052     int taskCount = Dispatch(outerSetting, innerSetting);
1053     bool result = Wait(taskCount);
1054     result = result && task_execution_sequence.size() > 1;
1055     if (result) {
1056         result = result && applyExecuted(outerSetting, innerSetting);
1057         result = result && OuterTaskExecuted(outerSetting);
1058         result = result && InnerTaskExecuted(innerSetting);
1059         result = result && InnerExecutedAfter(innerAsyncBarrierId);
1060     }
1061     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1062 }
1063 
1064 // level1:global, async level2:parallel, apply
GlobalCase22(int code)1065 void MainAbility::GlobalCase22(int code)
1066 {
1067     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1068     Reset();
1069     TestSetting outerSetting;
1070     TestSetting innerSetting;
1071     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1072     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1073     innerSetting.apply = applyNum;
1074     outerSetting.op = TestOperation::ASYNC;
1075     innerSetting.op = TestOperation::APPLY;
1076     int taskCount = Dispatch(outerSetting, innerSetting);
1077     bool result = Wait(taskCount);
1078     result = result && task_execution_sequence.size() > 1;
1079     if (result) {
1080         result = result && applyExecuted(outerSetting, innerSetting);
1081         result = result && OuterTaskExecuted(outerSetting);
1082         result = result && InnerTaskExecuted(innerSetting);
1083     }
1084     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1085 }
1086 
1087 // level1:global, async level2:serial, sync
GlobalCase23(int code)1088 void MainAbility::GlobalCase23(int code)
1089 {
1090     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1091     Reset();
1092     TestSetting outerSetting;
1093     TestSetting innerSetting;
1094     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1095     innerSetting.dispatcher = TestDispatcher::SERIAL;
1096     outerSetting.op = TestOperation::ASYNC;
1097     innerSetting.op = TestOperation::SYNC;
1098     int taskCount = Dispatch(outerSetting, innerSetting);
1099     bool result = Wait(taskCount);
1100     result = result && task_execution_sequence.size() > 1;
1101     if (result) {
1102         result = result && applyExecuted(outerSetting, innerSetting);
1103         result = result && OuterTaskExecuted(outerSetting);
1104         result = result && InnerTaskExecuted(innerSetting);
1105         std::vector<size_t> outerTaskIndex;
1106         std::vector<std::vector<size_t>> innerTaskIndex;
1107         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1108         for (int i = 0; i < testTaskCount; i++) {
1109             result = result && IsAscend(innerTaskIndex[i]);
1110         }
1111     }
1112     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1113 }
1114 
1115 // level1:global, async level2:serial, async
GlobalCase24(int code)1116 void MainAbility::GlobalCase24(int code)
1117 {
1118     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1119     Reset();
1120     TestSetting outerSetting;
1121     TestSetting innerSetting;
1122     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1123     innerSetting.dispatcher = TestDispatcher::SERIAL;
1124     outerSetting.op = TestOperation::ASYNC;
1125     innerSetting.op = TestOperation::ASYNC;
1126     int taskCount = Dispatch(outerSetting, innerSetting);
1127     bool result = Wait(taskCount);
1128     result = result && task_execution_sequence.size() > 1;
1129     if (result) {
1130         result = result && applyExecuted(outerSetting, innerSetting);
1131         result = result && OuterTaskExecuted(outerSetting);
1132         result = result && InnerTaskExecuted(innerSetting);
1133         std::vector<size_t> outerTaskIndex;
1134         std::vector<std::vector<size_t>> innerTaskIndex;
1135         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1136         for (int i = 0; i < testTaskCount; i++) {
1137             result = result && IsAscend(innerTaskIndex[i]);
1138         }
1139     }
1140     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1141 }
1142 
1143 // level1:global, async level2:serial, delay
GlobalCase25(int code)1144 void MainAbility::GlobalCase25(int code)
1145 {
1146     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1147     Reset();
1148     TestSetting outerSetting;
1149     TestSetting innerSetting;
1150     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1151     innerSetting.dispatcher = TestDispatcher::SERIAL;
1152     innerSetting.delay = delayMs;
1153     outerSetting.op = TestOperation::ASYNC;
1154     innerSetting.op = TestOperation::DELAY;
1155     int taskCount = Dispatch(outerSetting, innerSetting);
1156     bool result = Wait(taskCount);
1157     result = result && task_execution_sequence.size() > 1;
1158     if (result) {
1159         result = result && applyExecuted(outerSetting, innerSetting);
1160         result = result && OuterTaskExecuted(outerSetting);
1161         result = result && InnerTaskExecuted(innerSetting);
1162         std::vector<size_t> outerTaskIndex;
1163         std::vector<std::vector<size_t>> innerTaskIndex;
1164         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1165         for (int i = 0; i < testTaskCount; i++) {
1166             result = result && IsAscend(innerTaskIndex[i]);
1167         }
1168     }
1169     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1170 }
1171 
1172 // level1:global, async level2:serial, apply
GlobalCase26(int code)1173 void MainAbility::GlobalCase26(int code)
1174 {
1175     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1176     Reset();
1177     TestSetting outerSetting;
1178     TestSetting innerSetting;
1179     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1180     innerSetting.dispatcher = TestDispatcher::SERIAL;
1181     innerSetting.apply = applyNum;
1182     outerSetting.op = TestOperation::ASYNC;
1183     innerSetting.op = TestOperation::APPLY;
1184     int taskCount = Dispatch(outerSetting, innerSetting);
1185     bool result = Wait(taskCount);
1186     result = result && task_execution_sequence.size() > 1;
1187     if (result) {
1188         result = result && applyExecuted(outerSetting, innerSetting);
1189         result = result && OuterTaskExecuted(outerSetting);
1190         result = result && InnerTaskExecuted(innerSetting);
1191     }
1192     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1193 }
1194 
1195 // level1:global, delay level2:parallel, sync
GlobalCase27(int code)1196 void MainAbility::GlobalCase27(int code)
1197 {
1198     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1199     Reset();
1200     TestSetting outerSetting;
1201     TestSetting innerSetting;
1202     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1203     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1204     outerSetting.delay = delayMs;
1205     outerSetting.op = TestOperation::DELAY;
1206     innerSetting.op = TestOperation::SYNC;
1207     int taskCount = Dispatch(outerSetting, innerSetting);
1208     bool result = Wait(taskCount);
1209     result = result && task_execution_sequence.size() > 1;
1210     if (result) {
1211         result = result && applyExecuted(outerSetting, innerSetting);
1212         result = result && OuterTaskExecuted(outerSetting);
1213         result = result && InnerTaskExecuted(innerSetting);
1214         std::vector<size_t> outerTaskIndex;
1215         std::vector<std::vector<size_t>> innerTaskIndex;
1216         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1217         for (int i = 0; i < testTaskCount; i++) {
1218             result = result && IsAscend(innerTaskIndex[i]);
1219         }
1220     }
1221     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1222 }
1223 
1224 // level1:global, delay level2:parallel, async
GlobalCase28(int code)1225 void MainAbility::GlobalCase28(int code)
1226 {
1227     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1228     Reset();
1229     TestSetting outerSetting;
1230     TestSetting innerSetting;
1231     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1232     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1233     outerSetting.delay = delayMs;
1234     outerSetting.op = TestOperation::DELAY;
1235     innerSetting.op = TestOperation::ASYNC;
1236     int taskCount = Dispatch(outerSetting, innerSetting);
1237     bool result = Wait(taskCount);
1238     result = result && task_execution_sequence.size() > 1;
1239     if (result) {
1240         result = result && applyExecuted(outerSetting, innerSetting);
1241         result = result && OuterTaskExecuted(outerSetting);
1242         result = result && InnerTaskExecuted(innerSetting);
1243     }
1244     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1245 }
1246 
1247 // level1:global, delay level2:parallel, delay
GlobalCase29(int code)1248 void MainAbility::GlobalCase29(int code)
1249 {
1250     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1251     Reset();
1252     TestSetting outerSetting;
1253     TestSetting innerSetting;
1254     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1255     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1256     outerSetting.delay = delayMs;
1257     innerSetting.delay = delayMs;
1258     outerSetting.op = TestOperation::DELAY;
1259     innerSetting.op = TestOperation::DELAY;
1260     int taskCount = Dispatch(outerSetting, innerSetting);
1261     bool result = Wait(taskCount);
1262     result = result && task_execution_sequence.size() > 1;
1263     if (result) {
1264         result = result && applyExecuted(outerSetting, innerSetting);
1265         result = result && OuterTaskExecuted(outerSetting);
1266         result = result && InnerTaskExecuted(innerSetting);
1267     }
1268     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1269 }
1270 
1271 // level1:global, delay level2:parallel, group
GlobalCase30(int code)1272 void MainAbility::GlobalCase30(int code)
1273 {
1274     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1275     Reset();
1276     TestSetting outerSetting;
1277     TestSetting innerSetting;
1278     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1279     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1280     outerSetting.delay = delayMs;
1281     innerSetting.create_group = true;
1282     outerSetting.op = TestOperation::DELAY;
1283     innerSetting.op = TestOperation::ASYNC_GROUP;
1284     int taskCount = Dispatch(outerSetting, innerSetting);
1285     bool result = Wait(taskCount);
1286     result = result && task_execution_sequence.size() > 1;
1287     if (result) {
1288         result = result && applyExecuted(outerSetting, innerSetting);
1289         result = result && OuterTaskExecuted(outerSetting);
1290         result = result && InnerTaskExecuted(innerSetting);
1291     }
1292     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1293 }
1294 
1295 // level1:global, delay level2:parallel, group wait
GlobalCase31(int code)1296 void MainAbility::GlobalCase31(int code)
1297 {
1298     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1299     Reset();
1300     TestSetting outerSetting;
1301     TestSetting innerSetting;
1302     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1303     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1304     innerSetting.group_wait = true;
1305     innerSetting.group_timeout = groupWait;
1306     outerSetting.delay = delayMs;
1307     innerSetting.create_group = true;
1308     outerSetting.op = TestOperation::DELAY;
1309     innerSetting.op = TestOperation::ASYNC_GROUP;
1310     int taskCount = Dispatch(outerSetting, innerSetting);
1311     bool result = Wait(taskCount);
1312     result = result && task_execution_sequence.size() > 1;
1313     if (result) {
1314         result = result && applyExecuted(outerSetting, innerSetting);
1315         result = result && OuterTaskExecuted(outerSetting);
1316         result = result && InnerTaskExecuted(innerSetting);
1317     }
1318     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1319 }
1320 
1321 // level1:global, delay level2:parallel, group notify
GlobalCase32(int code)1322 void MainAbility::GlobalCase32(int code)
1323 {
1324     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1325     Reset();
1326     TestSetting outerSetting;
1327     TestSetting innerSetting;
1328     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1329     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1330     outerSetting.delay = delayMs;
1331     innerSetting.create_group = true;
1332     innerSetting.group_notify = true;
1333     outerSetting.op = TestOperation::DELAY;
1334     innerSetting.op = TestOperation::ASYNC_GROUP;
1335     int taskCount = Dispatch(outerSetting, innerSetting);
1336     bool result = Wait(taskCount);
1337     result = result && task_execution_sequence.size() > 1;
1338     if (result) {
1339         result = result && applyExecuted(outerSetting, innerSetting);
1340         result = result && OuterTaskExecuted(outerSetting);
1341         result = result && InnerTaskExecuted(innerSetting);
1342         result = result && InnerExecutedAfter(innerGroupNotifyId);
1343     }
1344     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1345 }
1346 
1347 // level1:global, delay level2:parallel, sync barrier
GlobalCase33(int code)1348 void MainAbility::GlobalCase33(int code)
1349 {
1350     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1351     Reset();
1352     TestSetting outerSetting;
1353     TestSetting innerSetting;
1354     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1355     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1356     outerSetting.delay = delayMs;
1357     innerSetting.sync_barrier = true;
1358     innerSetting.create_group = true;
1359     outerSetting.op = TestOperation::DELAY;
1360     innerSetting.op = TestOperation::ASYNC_GROUP;
1361     int taskCount = Dispatch(outerSetting, innerSetting);
1362     bool result = Wait(taskCount);
1363     result = result && task_execution_sequence.size() > 1;
1364     if (result) {
1365         result = result && applyExecuted(outerSetting, innerSetting);
1366         result = result && OuterTaskExecuted(outerSetting);
1367         result = result && InnerTaskExecuted(innerSetting);
1368         result = result && InnerExecutedAfter(innerSyncBarrierId);
1369     }
1370     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1371 }
1372 
1373 // level1:global, delay level2:parallel, async barrier
GlobalCase34(int code)1374 void MainAbility::GlobalCase34(int code)
1375 {
1376     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1377     Reset();
1378     TestSetting outerSetting;
1379     TestSetting innerSetting;
1380     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1381     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1382     outerSetting.delay = delayMs;
1383     innerSetting.async_barrier = true;
1384     innerSetting.create_group = true;
1385     outerSetting.op = TestOperation::DELAY;
1386     innerSetting.op = TestOperation::ASYNC_GROUP;
1387     int taskCount = Dispatch(outerSetting, innerSetting);
1388     bool result = Wait(taskCount);
1389     result = result && task_execution_sequence.size() > 1;
1390     if (result) {
1391         result = result && applyExecuted(outerSetting, innerSetting);
1392         result = result && OuterTaskExecuted(outerSetting);
1393         result = result && InnerTaskExecuted(innerSetting);
1394         result = result && InnerExecutedAfter(innerAsyncBarrierId);
1395     }
1396     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1397 }
1398 
1399 // level1:global, delay level2:parallel, apply
GlobalCase35(int code)1400 void MainAbility::GlobalCase35(int code)
1401 {
1402     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1403     Reset();
1404     TestSetting outerSetting;
1405     TestSetting innerSetting;
1406     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1407     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1408     outerSetting.delay = delayMs;
1409     innerSetting.apply = applyNum;
1410     outerSetting.op = TestOperation::DELAY;
1411     innerSetting.op = TestOperation::APPLY;
1412     int taskCount = Dispatch(outerSetting, innerSetting);
1413     bool result = Wait(taskCount);
1414     result = result && task_execution_sequence.size() > 1;
1415     if (result) {
1416         result = result && applyExecuted(outerSetting, innerSetting);
1417         result = result && OuterTaskExecuted(outerSetting);
1418         result = result && InnerTaskExecuted(innerSetting);
1419     }
1420     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1421 }
1422 
1423 // level1:global, delay level2:serial, sync
GlobalCase36(int code)1424 void MainAbility::GlobalCase36(int code)
1425 {
1426     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1427     Reset();
1428     TestSetting outerSetting;
1429     TestSetting innerSetting;
1430     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1431     innerSetting.dispatcher = TestDispatcher::SERIAL;
1432     outerSetting.delay = delayMs;
1433     outerSetting.op = TestOperation::DELAY;
1434     innerSetting.op = TestOperation::SYNC;
1435     int taskCount = Dispatch(outerSetting, innerSetting);
1436     bool result = Wait(taskCount);
1437     result = result && task_execution_sequence.size() > 1;
1438     if (result) {
1439         result = result && applyExecuted(outerSetting, innerSetting);
1440         result = result && OuterTaskExecuted(outerSetting);
1441         result = result && InnerTaskExecuted(innerSetting);
1442         std::vector<size_t> outerTaskIndex;
1443         std::vector<std::vector<size_t>> innerTaskIndex;
1444         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1445         for (int i = 0; i < testTaskCount; i++) {
1446             result = result && IsAscend(innerTaskIndex[i]);
1447         }
1448     }
1449     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1450 }
1451 
1452 // level1:global, delay level2:serial, async
GlobalCase37(int code)1453 void MainAbility::GlobalCase37(int code)
1454 {
1455     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1456     Reset();
1457     TestSetting outerSetting;
1458     TestSetting innerSetting;
1459     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1460     innerSetting.dispatcher = TestDispatcher::SERIAL;
1461     outerSetting.delay = delayMs;
1462     outerSetting.op = TestOperation::DELAY;
1463     innerSetting.op = TestOperation::ASYNC;
1464     int taskCount = Dispatch(outerSetting, innerSetting);
1465     bool result = Wait(taskCount);
1466     result = result && task_execution_sequence.size() > 1;
1467     if (result) {
1468         result = result && applyExecuted(outerSetting, innerSetting);
1469         result = result && OuterTaskExecuted(outerSetting);
1470         result = result && InnerTaskExecuted(innerSetting);
1471         std::vector<size_t> outerTaskIndex;
1472         std::vector<std::vector<size_t>> innerTaskIndex;
1473         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1474         for (int i = 0; i < testTaskCount; i++) {
1475             result = result && IsAscend(innerTaskIndex[i]);
1476         }
1477     }
1478     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1479 }
1480 
1481 // level1:global, delay level2:serial, delay
GlobalCase38(int code)1482 void MainAbility::GlobalCase38(int code)
1483 {
1484     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1485     Reset();
1486     TestSetting outerSetting;
1487     TestSetting innerSetting;
1488     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1489     innerSetting.dispatcher = TestDispatcher::SERIAL;
1490     outerSetting.delay = delayMs;
1491     innerSetting.delay = delayMs;
1492     outerSetting.op = TestOperation::DELAY;
1493     innerSetting.op = TestOperation::DELAY;
1494     int taskCount = Dispatch(outerSetting, innerSetting);
1495     bool result = Wait(taskCount);
1496     result = result && task_execution_sequence.size() > 1;
1497     if (result) {
1498         result = result && applyExecuted(outerSetting, innerSetting);
1499         result = result && OuterTaskExecuted(outerSetting);
1500         result = result && InnerTaskExecuted(innerSetting);
1501         std::vector<size_t> outerTaskIndex;
1502         std::vector<std::vector<size_t>> innerTaskIndex;
1503         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1504         for (int i = 0; i < testTaskCount; i++) {
1505             result = result && IsAscend(innerTaskIndex[i]);
1506         }
1507     }
1508     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1509 }
1510 
1511 // level1:global, delay level2:serial, apply
GlobalCase39(int code)1512 void MainAbility::GlobalCase39(int code)
1513 {
1514     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1515     Reset();
1516     TestSetting outerSetting;
1517     TestSetting innerSetting;
1518     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1519     innerSetting.dispatcher = TestDispatcher::SERIAL;
1520     outerSetting.delay = delayMs;
1521     innerSetting.apply = applyNum;
1522     outerSetting.op = TestOperation::DELAY;
1523     innerSetting.op = TestOperation::APPLY;
1524     int taskCount = Dispatch(outerSetting, innerSetting);
1525     bool result = Wait(taskCount);
1526     result = result && task_execution_sequence.size() > 1;
1527     if (result) {
1528         result = result && applyExecuted(outerSetting, innerSetting);
1529         result = result && OuterTaskExecuted(outerSetting);
1530         result = result && InnerTaskExecuted(innerSetting);
1531     }
1532     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1533 }
1534 
1535 // level1:global, group level2:parallel, sync
GlobalCase40(int code)1536 void MainAbility::GlobalCase40(int code)
1537 {
1538     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1539     Reset();
1540     TestSetting outerSetting;
1541     TestSetting innerSetting;
1542     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1543     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1544     outerSetting.create_group = true;
1545     outerSetting.op = TestOperation::ASYNC_GROUP;
1546     innerSetting.op = TestOperation::SYNC;
1547     int taskCount = Dispatch(outerSetting, innerSetting);
1548     bool result = Wait(taskCount);
1549     result = result && task_execution_sequence.size() > 1;
1550     if (result) {
1551         result = result && applyExecuted(outerSetting, innerSetting);
1552         result = result && OuterTaskExecuted(outerSetting);
1553         result = result && InnerTaskExecuted(innerSetting);
1554         std::vector<size_t> outerTaskIndex;
1555         std::vector<std::vector<size_t>> innerTaskIndex;
1556         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1557         for (int i = 0; i < testTaskCount; i++) {
1558             result = result && IsAscend(innerTaskIndex[i]);
1559         }
1560     }
1561     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1562 }
1563 
1564 // level1:global, group level2:parallel, async
GlobalCase41(int code)1565 void MainAbility::GlobalCase41(int code)
1566 {
1567     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1568     Reset();
1569     TestSetting outerSetting;
1570     TestSetting innerSetting;
1571     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1572     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1573     outerSetting.create_group = true;
1574     outerSetting.op = TestOperation::ASYNC_GROUP;
1575     innerSetting.op = TestOperation::ASYNC;
1576     int taskCount = Dispatch(outerSetting, innerSetting);
1577     bool result = Wait(taskCount);
1578     result = result && task_execution_sequence.size() > 1;
1579     if (result) {
1580         result = result && applyExecuted(outerSetting, innerSetting);
1581         result = result && OuterTaskExecuted(outerSetting);
1582         result = result && InnerTaskExecuted(innerSetting);
1583     }
1584     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1585 }
1586 
1587 // level1:global, group level2:parallel, delay
GlobalCase42(int code)1588 void MainAbility::GlobalCase42(int code)
1589 {
1590     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1591     Reset();
1592     TestSetting outerSetting;
1593     TestSetting innerSetting;
1594     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1595     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1596     innerSetting.delay = delayMs;
1597     outerSetting.create_group = true;
1598     outerSetting.op = TestOperation::ASYNC_GROUP;
1599     innerSetting.op = TestOperation::DELAY;
1600     int taskCount = Dispatch(outerSetting, innerSetting);
1601     bool result = Wait(taskCount);
1602     result = result && task_execution_sequence.size() > 1;
1603     if (result) {
1604         result = result && applyExecuted(outerSetting, innerSetting);
1605         result = result && OuterTaskExecuted(outerSetting);
1606         result = result && InnerTaskExecuted(innerSetting);
1607     }
1608     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1609 }
1610 
1611 // level1:global, group level2:parallel, group
GlobalCase43(int code)1612 void MainAbility::GlobalCase43(int code)
1613 {
1614     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1615     Reset();
1616     TestSetting outerSetting;
1617     TestSetting innerSetting;
1618     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1619     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1620     innerSetting.create_group = true;
1621     outerSetting.create_group = true;
1622     outerSetting.op = TestOperation::ASYNC_GROUP;
1623     innerSetting.op = TestOperation::ASYNC_GROUP;
1624     int taskCount = Dispatch(outerSetting, innerSetting);
1625     bool result = Wait(taskCount);
1626     result = result && task_execution_sequence.size() > 1;
1627     if (result) {
1628         result = result && applyExecuted(outerSetting, innerSetting);
1629         result = result && OuterTaskExecuted(outerSetting);
1630         result = result && InnerTaskExecuted(innerSetting);
1631     }
1632     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1633 }
1634 
1635 // level1:global, group level2:parallel, group wait
GlobalCase44(int code)1636 void MainAbility::GlobalCase44(int code)
1637 {
1638     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1639     Reset();
1640     TestSetting outerSetting;
1641     TestSetting innerSetting;
1642     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1643     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1644     innerSetting.group_wait = true;
1645     innerSetting.group_timeout = groupWait;
1646     innerSetting.create_group = true;
1647     outerSetting.create_group = true;
1648     outerSetting.op = TestOperation::ASYNC_GROUP;
1649     innerSetting.op = TestOperation::ASYNC_GROUP;
1650     int taskCount = Dispatch(outerSetting, innerSetting);
1651     bool result = Wait(taskCount);
1652     result = result && task_execution_sequence.size() > 1;
1653     if (result) {
1654         result = result && applyExecuted(outerSetting, innerSetting);
1655         result = result && OuterTaskExecuted(outerSetting);
1656         result = result && InnerTaskExecuted(innerSetting);
1657     }
1658     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1659 }
1660 
1661 // level1:global, group level2:parallel, group notify
GlobalCase45(int code)1662 void MainAbility::GlobalCase45(int code)
1663 {
1664     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1665     Reset();
1666     TestSetting outerSetting;
1667     TestSetting innerSetting;
1668     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1669     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1670     innerSetting.create_group = true;
1671     innerSetting.group_notify = true;
1672     outerSetting.create_group = true;
1673     outerSetting.op = TestOperation::ASYNC_GROUP;
1674     innerSetting.op = TestOperation::ASYNC_GROUP;
1675     int taskCount = Dispatch(outerSetting, innerSetting);
1676     bool result = Wait(taskCount);
1677     result = result && task_execution_sequence.size() > 1;
1678     if (result) {
1679         result = result && applyExecuted(outerSetting, innerSetting);
1680         result = result && OuterTaskExecuted(outerSetting);
1681         result = result && InnerTaskExecuted(innerSetting);
1682         result = result && InnerExecutedAfter(innerGroupNotifyId);
1683     }
1684     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1685 }
1686 
1687 // level1:global, group level2:parallel, sync barrier
GlobalCase46(int code)1688 void MainAbility::GlobalCase46(int code)
1689 {
1690     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1691     Reset();
1692     TestSetting outerSetting;
1693     TestSetting innerSetting;
1694     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1695     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1696     innerSetting.sync_barrier = true;
1697     innerSetting.create_group = true;
1698     outerSetting.create_group = true;
1699     outerSetting.op = TestOperation::ASYNC_GROUP;
1700     innerSetting.op = TestOperation::ASYNC_GROUP;
1701     int taskCount = Dispatch(outerSetting, innerSetting);
1702     bool result = Wait(taskCount);
1703     result = result && task_execution_sequence.size() > 1;
1704     if (result) {
1705         result = result && applyExecuted(outerSetting, innerSetting);
1706         result = result && OuterTaskExecuted(outerSetting);
1707         result = result && InnerTaskExecuted(innerSetting);
1708         result = result && InnerExecutedAfter(innerSyncBarrierId);
1709     }
1710     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1711 }
1712 
1713 // level1:global, group level2:parallel, async barrier
GlobalCase47(int code)1714 void MainAbility::GlobalCase47(int code)
1715 {
1716     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1717     Reset();
1718     TestSetting outerSetting;
1719     TestSetting innerSetting;
1720     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1721     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1722     innerSetting.async_barrier = true;
1723     innerSetting.create_group = true;
1724     outerSetting.create_group = true;
1725     outerSetting.op = TestOperation::ASYNC_GROUP;
1726     innerSetting.op = TestOperation::ASYNC_GROUP;
1727     int taskCount = Dispatch(outerSetting, innerSetting);
1728     bool result = Wait(taskCount);
1729     result = result && task_execution_sequence.size() > 1;
1730     if (result) {
1731         result = result && applyExecuted(outerSetting, innerSetting);
1732         result = result && OuterTaskExecuted(outerSetting);
1733         result = result && InnerTaskExecuted(innerSetting);
1734         result = result && InnerExecutedAfter(innerAsyncBarrierId);
1735     }
1736     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1737 }
1738 
1739 // level1:global, group level2:parallel, apply
GlobalCase48(int code)1740 void MainAbility::GlobalCase48(int code)
1741 {
1742     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1743     Reset();
1744     TestSetting outerSetting;
1745     TestSetting innerSetting;
1746     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1747     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1748     innerSetting.apply = applyNum;
1749     outerSetting.create_group = true;
1750     outerSetting.op = TestOperation::ASYNC_GROUP;
1751     innerSetting.op = TestOperation::APPLY;
1752     int taskCount = Dispatch(outerSetting, innerSetting);
1753     bool result = Wait(taskCount);
1754     result = result && task_execution_sequence.size() > 1;
1755     if (result) {
1756         result = result && applyExecuted(outerSetting, innerSetting);
1757         result = result && OuterTaskExecuted(outerSetting);
1758         result = result && InnerTaskExecuted(innerSetting);
1759     }
1760     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1761 }
1762 
1763 // level1:global, group level2:serial, sync
GlobalCase49(int code)1764 void MainAbility::GlobalCase49(int code)
1765 {
1766     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1767     Reset();
1768     TestSetting outerSetting;
1769     TestSetting innerSetting;
1770     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1771     innerSetting.dispatcher = TestDispatcher::SERIAL;
1772     outerSetting.create_group = true;
1773     outerSetting.op = TestOperation::ASYNC_GROUP;
1774     innerSetting.op = TestOperation::SYNC;
1775     int taskCount = Dispatch(outerSetting, innerSetting);
1776     bool result = Wait(taskCount);
1777     result = result && task_execution_sequence.size() > 1;
1778     if (result) {
1779         result = result && applyExecuted(outerSetting, innerSetting);
1780         result = result && OuterTaskExecuted(outerSetting);
1781         result = result && InnerTaskExecuted(innerSetting);
1782         std::vector<size_t> outerTaskIndex;
1783         std::vector<std::vector<size_t>> innerTaskIndex;
1784         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1785         for (int i = 0; i < testTaskCount; i++) {
1786             result = result && IsAscend(innerTaskIndex[i]);
1787         }
1788     }
1789     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1790 }
1791 
1792 // level1:global, group level2:serial, async
GlobalCase50(int code)1793 void MainAbility::GlobalCase50(int code)
1794 {
1795     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1796     Reset();
1797     TestSetting outerSetting;
1798     TestSetting innerSetting;
1799     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1800     innerSetting.dispatcher = TestDispatcher::SERIAL;
1801     outerSetting.create_group = true;
1802     outerSetting.op = TestOperation::ASYNC_GROUP;
1803     innerSetting.op = TestOperation::ASYNC;
1804     int taskCount = Dispatch(outerSetting, innerSetting);
1805     bool result = Wait(taskCount);
1806     result = result && task_execution_sequence.size() > 1;
1807     if (result) {
1808         result = result && applyExecuted(outerSetting, innerSetting);
1809         result = result && OuterTaskExecuted(outerSetting);
1810         result = result && InnerTaskExecuted(innerSetting);
1811         std::vector<size_t> outerTaskIndex;
1812         std::vector<std::vector<size_t>> innerTaskIndex;
1813         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1814         for (int i = 0; i < testTaskCount; i++) {
1815             result = result && IsAscend(innerTaskIndex[i]);
1816         }
1817     }
1818     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1819 }
1820 
1821 // level1:global, group level2:serial, delay
GlobalCase51(int code)1822 void MainAbility::GlobalCase51(int code)
1823 {
1824     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1825     Reset();
1826     TestSetting outerSetting;
1827     TestSetting innerSetting;
1828     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1829     innerSetting.dispatcher = TestDispatcher::SERIAL;
1830     innerSetting.delay = delayMs;
1831     outerSetting.create_group = true;
1832     outerSetting.op = TestOperation::ASYNC_GROUP;
1833     innerSetting.op = TestOperation::DELAY;
1834     int taskCount = Dispatch(outerSetting, innerSetting);
1835     bool result = Wait(taskCount);
1836     result = result && task_execution_sequence.size() > 1;
1837     if (result) {
1838         result = result && applyExecuted(outerSetting, innerSetting);
1839         result = result && OuterTaskExecuted(outerSetting);
1840         result = result && InnerTaskExecuted(innerSetting);
1841         std::vector<size_t> outerTaskIndex;
1842         std::vector<std::vector<size_t>> innerTaskIndex;
1843         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1844         for (int i = 0; i < testTaskCount; i++) {
1845             result = result && IsAscend(innerTaskIndex[i]);
1846         }
1847     }
1848     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1849 }
1850 
1851 // level1:global, group level2:serial, apply
GlobalCase52(int code)1852 void MainAbility::GlobalCase52(int code)
1853 {
1854     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1855     Reset();
1856     TestSetting outerSetting;
1857     TestSetting innerSetting;
1858     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1859     innerSetting.dispatcher = TestDispatcher::SERIAL;
1860     innerSetting.apply = applyNum;
1861     outerSetting.create_group = true;
1862     outerSetting.op = TestOperation::ASYNC_GROUP;
1863     innerSetting.op = TestOperation::APPLY;
1864     int taskCount = Dispatch(outerSetting, innerSetting);
1865     bool result = Wait(taskCount);
1866     result = result && task_execution_sequence.size() > 1;
1867     if (result) {
1868         result = result && applyExecuted(outerSetting, innerSetting);
1869         result = result && OuterTaskExecuted(outerSetting);
1870         result = result && InnerTaskExecuted(innerSetting);
1871     }
1872     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1873 }
1874 
1875 // level1:global, group wait level2:parallel, sync
GlobalCase53(int code)1876 void MainAbility::GlobalCase53(int code)
1877 {
1878     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1879     Reset();
1880     TestSetting outerSetting;
1881     TestSetting innerSetting;
1882     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1883     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1884     outerSetting.group_wait = true;
1885     outerSetting.group_timeout = groupWait;
1886     outerSetting.create_group = true;
1887     outerSetting.op = TestOperation::ASYNC_GROUP;
1888     innerSetting.op = TestOperation::SYNC;
1889     int taskCount = Dispatch(outerSetting, innerSetting);
1890     bool result = Wait(taskCount);
1891     result = result && task_execution_sequence.size() > 1;
1892     if (result) {
1893         result = result && applyExecuted(outerSetting, innerSetting);
1894         result = result && OuterTaskExecuted(outerSetting);
1895         result = result && InnerTaskExecuted(innerSetting);
1896         std::vector<size_t> outerTaskIndex;
1897         std::vector<std::vector<size_t>> innerTaskIndex;
1898         GetTaskIndex(outerTaskIndex, innerTaskIndex);
1899         for (int i = 0; i < testTaskCount; i++) {
1900             result = result && IsAscend(innerTaskIndex[i]);
1901         }
1902     }
1903     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1904 }
1905 
1906 // level1:global, group wait level2:parallel, async
GlobalCase54(int code)1907 void MainAbility::GlobalCase54(int code)
1908 {
1909     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1910     Reset();
1911     TestSetting outerSetting;
1912     TestSetting innerSetting;
1913     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1914     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1915     outerSetting.group_wait = true;
1916     outerSetting.group_timeout = groupWait;
1917     outerSetting.create_group = true;
1918     outerSetting.op = TestOperation::ASYNC_GROUP;
1919     innerSetting.op = TestOperation::ASYNC;
1920     int taskCount = Dispatch(outerSetting, innerSetting);
1921     bool result = Wait(taskCount);
1922     result = result && task_execution_sequence.size() > 1;
1923     if (result) {
1924         result = result && applyExecuted(outerSetting, innerSetting);
1925         result = result && OuterTaskExecuted(outerSetting);
1926         result = result && InnerTaskExecuted(innerSetting);
1927     }
1928     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1929 }
1930 
1931 // level1:global, group wait level2:parallel, delay
GlobalCase55(int code)1932 void MainAbility::GlobalCase55(int code)
1933 {
1934     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1935     Reset();
1936     TestSetting outerSetting;
1937     TestSetting innerSetting;
1938     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1939     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1940     outerSetting.group_wait = true;
1941     outerSetting.group_timeout = groupWait;
1942     innerSetting.delay = delayMs;
1943     outerSetting.create_group = true;
1944     outerSetting.op = TestOperation::ASYNC_GROUP;
1945     innerSetting.op = TestOperation::DELAY;
1946     int taskCount = Dispatch(outerSetting, innerSetting);
1947     bool result = Wait(taskCount);
1948     result = result && task_execution_sequence.size() > 1;
1949     if (result) {
1950         result = result && applyExecuted(outerSetting, innerSetting);
1951         result = result && OuterTaskExecuted(outerSetting);
1952         result = result && InnerTaskExecuted(innerSetting);
1953     }
1954     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1955 }
1956 
1957 // level1:global, group wait level2:parallel, group
GlobalCase56(int code)1958 void MainAbility::GlobalCase56(int code)
1959 {
1960     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1961     Reset();
1962     TestSetting outerSetting;
1963     TestSetting innerSetting;
1964     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1965     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1966     outerSetting.group_wait = true;
1967     outerSetting.group_timeout = groupWait;
1968     innerSetting.create_group = true;
1969     outerSetting.create_group = true;
1970     outerSetting.op = TestOperation::ASYNC_GROUP;
1971     innerSetting.op = TestOperation::ASYNC_GROUP;
1972     int taskCount = Dispatch(outerSetting, innerSetting);
1973     bool result = Wait(taskCount);
1974     result = result && task_execution_sequence.size() > 1;
1975     if (result) {
1976         result = result && applyExecuted(outerSetting, innerSetting);
1977         result = result && OuterTaskExecuted(outerSetting);
1978         result = result && InnerTaskExecuted(innerSetting);
1979     }
1980     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
1981 }
1982 
1983 // level1:global, group wait level2:parallel, group wait
GlobalCase57(int code)1984 void MainAbility::GlobalCase57(int code)
1985 {
1986     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
1987     Reset();
1988     TestSetting outerSetting;
1989     TestSetting innerSetting;
1990     outerSetting.dispatcher = TestDispatcher::GLOBAL;
1991     innerSetting.dispatcher = TestDispatcher::PARALLEL;
1992     innerSetting.group_wait = true;
1993     innerSetting.group_timeout = groupWait;
1994     outerSetting.group_wait = true;
1995     outerSetting.group_timeout = groupWait;
1996     innerSetting.create_group = true;
1997     outerSetting.create_group = true;
1998     outerSetting.op = TestOperation::ASYNC_GROUP;
1999     innerSetting.op = TestOperation::ASYNC_GROUP;
2000     int taskCount = Dispatch(outerSetting, innerSetting);
2001     bool result = Wait(taskCount);
2002     result = result && task_execution_sequence.size() > 1;
2003     if (result) {
2004         result = result && applyExecuted(outerSetting, innerSetting);
2005         result = result && OuterTaskExecuted(outerSetting);
2006         result = result && InnerTaskExecuted(innerSetting);
2007     }
2008     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2009 }
2010 
2011 // level1:global, group wait level2:parallel, group notify
GlobalCase58(int code)2012 void MainAbility::GlobalCase58(int code)
2013 {
2014     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2015     Reset();
2016     TestSetting outerSetting;
2017     TestSetting innerSetting;
2018     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2019     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2020     outerSetting.group_wait = true;
2021     outerSetting.group_timeout = groupWait;
2022     innerSetting.create_group = true;
2023     innerSetting.group_notify = true;
2024     outerSetting.create_group = true;
2025     outerSetting.op = TestOperation::ASYNC_GROUP;
2026     innerSetting.op = TestOperation::ASYNC_GROUP;
2027     int taskCount = Dispatch(outerSetting, innerSetting);
2028     bool result = Wait(taskCount);
2029     result = result && task_execution_sequence.size() > 1;
2030     if (result) {
2031         result = result && applyExecuted(outerSetting, innerSetting);
2032         result = result && OuterTaskExecuted(outerSetting);
2033         result = result && InnerTaskExecuted(innerSetting);
2034         result = result && InnerExecutedAfter(innerGroupNotifyId);
2035     }
2036     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2037 }
2038 
2039 // level1:global, group wait level2:parallel, sync barrier
GlobalCase59(int code)2040 void MainAbility::GlobalCase59(int code)
2041 {
2042     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2043     Reset();
2044     TestSetting outerSetting;
2045     TestSetting innerSetting;
2046     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2047     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2048     outerSetting.group_wait = true;
2049     outerSetting.group_timeout = groupWait;
2050     innerSetting.sync_barrier = true;
2051     innerSetting.create_group = true;
2052     outerSetting.create_group = true;
2053     outerSetting.op = TestOperation::ASYNC_GROUP;
2054     innerSetting.op = TestOperation::ASYNC_GROUP;
2055     int taskCount = Dispatch(outerSetting, innerSetting);
2056     bool result = Wait(taskCount);
2057     result = result && task_execution_sequence.size() > 1;
2058     if (result) {
2059         result = result && applyExecuted(outerSetting, innerSetting);
2060         result = result && OuterTaskExecuted(outerSetting);
2061         result = result && InnerTaskExecuted(innerSetting);
2062         result = result && InnerExecutedAfter(innerSyncBarrierId);
2063     }
2064     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2065 }
2066 
2067 // level1:global, group wait level2:parallel, async barrier
GlobalCase60(int code)2068 void MainAbility::GlobalCase60(int code)
2069 {
2070     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2071     Reset();
2072     TestSetting outerSetting;
2073     TestSetting innerSetting;
2074     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2075     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2076     outerSetting.group_wait = true;
2077     outerSetting.group_timeout = groupWait;
2078     innerSetting.async_barrier = true;
2079     innerSetting.create_group = true;
2080     outerSetting.create_group = true;
2081     outerSetting.op = TestOperation::ASYNC_GROUP;
2082     innerSetting.op = TestOperation::ASYNC_GROUP;
2083     int taskCount = Dispatch(outerSetting, innerSetting);
2084     bool result = Wait(taskCount);
2085     result = result && task_execution_sequence.size() > 1;
2086     if (result) {
2087         result = result && applyExecuted(outerSetting, innerSetting);
2088         result = result && OuterTaskExecuted(outerSetting);
2089         result = result && InnerTaskExecuted(innerSetting);
2090         result = result && InnerExecutedAfter(innerAsyncBarrierId);
2091     }
2092     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2093 }
2094 
2095 // level1:global, group wait level2:parallel, apply
GlobalCase61(int code)2096 void MainAbility::GlobalCase61(int code)
2097 {
2098     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2099     Reset();
2100     TestSetting outerSetting;
2101     TestSetting innerSetting;
2102     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2103     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2104     outerSetting.group_wait = true;
2105     outerSetting.group_timeout = groupWait;
2106     innerSetting.apply = applyNum;
2107     outerSetting.create_group = true;
2108     outerSetting.op = TestOperation::ASYNC_GROUP;
2109     innerSetting.op = TestOperation::APPLY;
2110     int taskCount = Dispatch(outerSetting, innerSetting);
2111     bool result = Wait(taskCount);
2112     result = result && task_execution_sequence.size() > 1;
2113     if (result) {
2114         result = result && applyExecuted(outerSetting, innerSetting);
2115         result = result && OuterTaskExecuted(outerSetting);
2116         result = result && InnerTaskExecuted(innerSetting);
2117     }
2118     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2119 }
2120 
2121 // level1:global, group wait level2:serial, sync
GlobalCase62(int code)2122 void MainAbility::GlobalCase62(int code)
2123 {
2124     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2125     Reset();
2126     TestSetting outerSetting;
2127     TestSetting innerSetting;
2128     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2129     innerSetting.dispatcher = TestDispatcher::SERIAL;
2130     outerSetting.group_wait = true;
2131     outerSetting.group_timeout = groupWait;
2132     outerSetting.create_group = true;
2133     outerSetting.op = TestOperation::ASYNC_GROUP;
2134     innerSetting.op = TestOperation::SYNC;
2135     int taskCount = Dispatch(outerSetting, innerSetting);
2136     bool result = Wait(taskCount);
2137     result = result && task_execution_sequence.size() > 1;
2138     if (result) {
2139         result = result && applyExecuted(outerSetting, innerSetting);
2140         result = result && OuterTaskExecuted(outerSetting);
2141         result = result && InnerTaskExecuted(innerSetting);
2142         std::vector<size_t> outerTaskIndex;
2143         std::vector<std::vector<size_t>> innerTaskIndex;
2144         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2145         for (int i = 0; i < testTaskCount; i++) {
2146             result = result && IsAscend(innerTaskIndex[i]);
2147         }
2148     }
2149     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2150 }
2151 
2152 // level1:global, group wait level2:serial, async
GlobalCase63(int code)2153 void MainAbility::GlobalCase63(int code)
2154 {
2155     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2156     Reset();
2157     TestSetting outerSetting;
2158     TestSetting innerSetting;
2159     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2160     innerSetting.dispatcher = TestDispatcher::SERIAL;
2161     outerSetting.group_wait = true;
2162     outerSetting.group_timeout = groupWait;
2163     outerSetting.create_group = true;
2164     outerSetting.op = TestOperation::ASYNC_GROUP;
2165     innerSetting.op = TestOperation::ASYNC;
2166     int taskCount = Dispatch(outerSetting, innerSetting);
2167     bool result = Wait(taskCount);
2168     result = result && task_execution_sequence.size() > 1;
2169     if (result) {
2170         result = result && applyExecuted(outerSetting, innerSetting);
2171         result = result && OuterTaskExecuted(outerSetting);
2172         result = result && InnerTaskExecuted(innerSetting);
2173         std::vector<size_t> outerTaskIndex;
2174         std::vector<std::vector<size_t>> innerTaskIndex;
2175         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2176         for (int i = 0; i < testTaskCount; i++) {
2177             result = result && IsAscend(innerTaskIndex[i]);
2178         }
2179     }
2180     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2181 }
2182 
2183 // level1:global, group wait level2:serial, delay
GlobalCase64(int code)2184 void MainAbility::GlobalCase64(int code)
2185 {
2186     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2187     Reset();
2188     TestSetting outerSetting;
2189     TestSetting innerSetting;
2190     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2191     innerSetting.dispatcher = TestDispatcher::SERIAL;
2192     outerSetting.group_wait = true;
2193     outerSetting.group_timeout = groupWait;
2194     innerSetting.delay = delayMs;
2195     outerSetting.create_group = true;
2196     outerSetting.op = TestOperation::ASYNC_GROUP;
2197     innerSetting.op = TestOperation::DELAY;
2198     int taskCount = Dispatch(outerSetting, innerSetting);
2199     bool result = Wait(taskCount);
2200     result = result && task_execution_sequence.size() > 1;
2201     if (result) {
2202         result = result && applyExecuted(outerSetting, innerSetting);
2203         result = result && OuterTaskExecuted(outerSetting);
2204         result = result && InnerTaskExecuted(innerSetting);
2205         std::vector<size_t> outerTaskIndex;
2206         std::vector<std::vector<size_t>> innerTaskIndex;
2207         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2208         for (int i = 0; i < testTaskCount; i++) {
2209             result = result && IsAscend(innerTaskIndex[i]);
2210         }
2211     }
2212     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2213 }
2214 
2215 // level1:global, group wait level2:serial, apply
GlobalCase65(int code)2216 void MainAbility::GlobalCase65(int code)
2217 {
2218     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2219     Reset();
2220     TestSetting outerSetting;
2221     TestSetting innerSetting;
2222     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2223     innerSetting.dispatcher = TestDispatcher::SERIAL;
2224     outerSetting.group_wait = true;
2225     outerSetting.group_timeout = groupWait;
2226     innerSetting.apply = applyNum;
2227     outerSetting.create_group = true;
2228     outerSetting.op = TestOperation::ASYNC_GROUP;
2229     innerSetting.op = TestOperation::APPLY;
2230     int taskCount = Dispatch(outerSetting, innerSetting);
2231     bool result = Wait(taskCount);
2232     result = result && task_execution_sequence.size() > 1;
2233     if (result) {
2234         result = result && applyExecuted(outerSetting, innerSetting);
2235         result = result && OuterTaskExecuted(outerSetting);
2236         result = result && InnerTaskExecuted(innerSetting);
2237     }
2238     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2239 }
2240 
2241 // level1:global, group notify level2:parallel, sync
GlobalCase66(int code)2242 void MainAbility::GlobalCase66(int code)
2243 {
2244     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2245     Reset();
2246     TestSetting outerSetting;
2247     TestSetting innerSetting;
2248     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2249     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2250     outerSetting.create_group = true;
2251     outerSetting.group_notify = true;
2252     outerSetting.op = TestOperation::ASYNC_GROUP;
2253     innerSetting.op = TestOperation::SYNC;
2254     int taskCount = Dispatch(outerSetting, innerSetting);
2255     bool result = Wait(taskCount);
2256     result = result && task_execution_sequence.size() > 1;
2257     if (result) {
2258         result = result && applyExecuted(outerSetting, innerSetting);
2259         result = result && OuterTaskExecuted(outerSetting);
2260         result = result && InnerTaskExecuted(innerSetting);
2261         std::vector<size_t> outerTaskIndex;
2262         std::vector<std::vector<size_t>> innerTaskIndex;
2263         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2264         for (int i = 0; i < testTaskCount; i++) {
2265             result = result && IsAscend(innerTaskIndex[i]);
2266         }
2267         result = result && OuterExecutedAfter(outerGroupNotifyId);
2268     }
2269     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2270 }
2271 
2272 // level1:global, group notify level2:parallel, async
GlobalCase67(int code)2273 void MainAbility::GlobalCase67(int code)
2274 {
2275     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2276     Reset();
2277     TestSetting outerSetting;
2278     TestSetting innerSetting;
2279     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2280     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2281     outerSetting.create_group = true;
2282     outerSetting.group_notify = true;
2283     outerSetting.op = TestOperation::ASYNC_GROUP;
2284     innerSetting.op = TestOperation::ASYNC;
2285     int taskCount = Dispatch(outerSetting, innerSetting);
2286     bool result = Wait(taskCount);
2287     result = result && task_execution_sequence.size() > 1;
2288     if (result) {
2289         result = result && applyExecuted(outerSetting, innerSetting);
2290         result = result && OuterTaskExecuted(outerSetting);
2291         result = result && InnerTaskExecuted(innerSetting);
2292         result = result && OuterExecutedAfter(outerGroupNotifyId);
2293     }
2294     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2295 }
2296 
2297 // level1:global, group notify level2:parallel, delay
GlobalCase68(int code)2298 void MainAbility::GlobalCase68(int code)
2299 {
2300     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2301     Reset();
2302     TestSetting outerSetting;
2303     TestSetting innerSetting;
2304     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2305     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2306     innerSetting.delay = delayMs;
2307     outerSetting.create_group = true;
2308     outerSetting.group_notify = true;
2309     outerSetting.op = TestOperation::ASYNC_GROUP;
2310     innerSetting.op = TestOperation::DELAY;
2311     int taskCount = Dispatch(outerSetting, innerSetting);
2312     bool result = Wait(taskCount);
2313     result = result && task_execution_sequence.size() > 1;
2314     if (result) {
2315         result = result && applyExecuted(outerSetting, innerSetting);
2316         result = result && OuterTaskExecuted(outerSetting);
2317         result = result && InnerTaskExecuted(innerSetting);
2318         result = result && OuterExecutedAfter(outerGroupNotifyId);
2319     }
2320     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2321 }
2322 
2323 // level1:global, group notify level2:parallel, group
GlobalCase69(int code)2324 void MainAbility::GlobalCase69(int code)
2325 {
2326     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2327     Reset();
2328     TestSetting outerSetting;
2329     TestSetting innerSetting;
2330     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2331     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2332     innerSetting.create_group = true;
2333     outerSetting.create_group = true;
2334     outerSetting.group_notify = true;
2335     outerSetting.op = TestOperation::ASYNC_GROUP;
2336     innerSetting.op = TestOperation::ASYNC_GROUP;
2337     int taskCount = Dispatch(outerSetting, innerSetting);
2338     bool result = Wait(taskCount);
2339     result = result && task_execution_sequence.size() > 1;
2340     if (result) {
2341         result = result && applyExecuted(outerSetting, innerSetting);
2342         result = result && OuterTaskExecuted(outerSetting);
2343         result = result && InnerTaskExecuted(innerSetting);
2344         result = result && OuterExecutedAfter(outerGroupNotifyId);
2345     }
2346     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2347 }
2348 
2349 // level1:global, group notify level2:parallel, group wait
GlobalCase70(int code)2350 void MainAbility::GlobalCase70(int code)
2351 {
2352     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2353     Reset();
2354     TestSetting outerSetting;
2355     TestSetting innerSetting;
2356     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2357     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2358     innerSetting.group_wait = true;
2359     innerSetting.group_timeout = groupWait;
2360     innerSetting.create_group = true;
2361     outerSetting.create_group = true;
2362     outerSetting.group_notify = true;
2363     outerSetting.op = TestOperation::ASYNC_GROUP;
2364     innerSetting.op = TestOperation::ASYNC_GROUP;
2365     int taskCount = Dispatch(outerSetting, innerSetting);
2366     bool result = Wait(taskCount);
2367     result = result && task_execution_sequence.size() > 1;
2368     if (result) {
2369         result = result && applyExecuted(outerSetting, innerSetting);
2370         result = result && OuterTaskExecuted(outerSetting);
2371         result = result && InnerTaskExecuted(innerSetting);
2372         result = result && OuterExecutedAfter(outerGroupNotifyId);
2373     }
2374     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2375 }
2376 
2377 // level1:global, group notify level2:parallel, group notify
GlobalCase71(int code)2378 void MainAbility::GlobalCase71(int code)
2379 {
2380     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2381     Reset();
2382     TestSetting outerSetting;
2383     TestSetting innerSetting;
2384     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2385     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2386     innerSetting.create_group = true;
2387     innerSetting.group_notify = true;
2388     outerSetting.create_group = true;
2389     outerSetting.group_notify = true;
2390     outerSetting.op = TestOperation::ASYNC_GROUP;
2391     innerSetting.op = TestOperation::ASYNC_GROUP;
2392     int taskCount = Dispatch(outerSetting, innerSetting);
2393     bool result = Wait(taskCount);
2394     result = result && task_execution_sequence.size() > 1;
2395     if (result) {
2396         result = result && applyExecuted(outerSetting, innerSetting);
2397         result = result && OuterTaskExecuted(outerSetting);
2398         result = result && InnerTaskExecuted(innerSetting);
2399         result = result && OuterExecutedAfter(outerGroupNotifyId);
2400         result = result && InnerExecutedAfter(innerGroupNotifyId);
2401     }
2402     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2403 }
2404 
2405 // level1:global, group notify level2:parallel, sync barrier
GlobalCase72(int code)2406 void MainAbility::GlobalCase72(int code)
2407 {
2408     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2409     Reset();
2410     TestSetting outerSetting;
2411     TestSetting innerSetting;
2412     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2413     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2414     innerSetting.sync_barrier = true;
2415     innerSetting.create_group = true;
2416     outerSetting.create_group = true;
2417     outerSetting.group_notify = true;
2418     outerSetting.op = TestOperation::ASYNC_GROUP;
2419     innerSetting.op = TestOperation::ASYNC_GROUP;
2420     int taskCount = Dispatch(outerSetting, innerSetting);
2421     bool result = Wait(taskCount);
2422     result = result && task_execution_sequence.size() > 1;
2423     if (result) {
2424         result = result && applyExecuted(outerSetting, innerSetting);
2425         result = result && OuterTaskExecuted(outerSetting);
2426         result = result && InnerTaskExecuted(innerSetting);
2427         result = result && InnerExecutedAfter(innerSyncBarrierId);
2428         result = result && OuterExecutedAfter(outerGroupNotifyId);
2429     }
2430     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2431 }
2432 
2433 // level1:global, group notify level2:parallel, async barrier
GlobalCase73(int code)2434 void MainAbility::GlobalCase73(int code)
2435 {
2436     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2437     Reset();
2438     TestSetting outerSetting;
2439     TestSetting innerSetting;
2440     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2441     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2442     innerSetting.async_barrier = true;
2443     innerSetting.create_group = true;
2444     outerSetting.create_group = true;
2445     outerSetting.group_notify = true;
2446     outerSetting.op = TestOperation::ASYNC_GROUP;
2447     innerSetting.op = TestOperation::ASYNC_GROUP;
2448     int taskCount = Dispatch(outerSetting, innerSetting);
2449     bool result = Wait(taskCount);
2450     result = result && task_execution_sequence.size() > 1;
2451     if (result) {
2452         result = result && applyExecuted(outerSetting, innerSetting);
2453         result = result && OuterTaskExecuted(outerSetting);
2454         result = result && InnerTaskExecuted(innerSetting);
2455         result = result && InnerExecutedAfter(innerAsyncBarrierId);
2456         result = result && OuterExecutedAfter(outerGroupNotifyId);
2457     }
2458     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2459 }
2460 
2461 // level1:global, group notify level2:parallel, apply
GlobalCase74(int code)2462 void MainAbility::GlobalCase74(int code)
2463 {
2464     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2465     Reset();
2466     TestSetting outerSetting;
2467     TestSetting innerSetting;
2468     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2469     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2470     innerSetting.apply = applyNum;
2471     outerSetting.create_group = true;
2472     outerSetting.group_notify = true;
2473     outerSetting.op = TestOperation::ASYNC_GROUP;
2474     innerSetting.op = TestOperation::APPLY;
2475     int taskCount = Dispatch(outerSetting, innerSetting);
2476     bool result = Wait(taskCount);
2477     result = result && task_execution_sequence.size() > 1;
2478     if (result) {
2479         result = result && applyExecuted(outerSetting, innerSetting);
2480         result = result && OuterTaskExecuted(outerSetting);
2481         result = result && InnerTaskExecuted(innerSetting);
2482         result = result && OuterExecutedAfter(outerGroupNotifyId);
2483     }
2484     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2485 }
2486 
2487 // level1:global, group notify level2:serial, sync
GlobalCase75(int code)2488 void MainAbility::GlobalCase75(int code)
2489 {
2490     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2491     Reset();
2492     TestSetting outerSetting;
2493     TestSetting innerSetting;
2494     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2495     innerSetting.dispatcher = TestDispatcher::SERIAL;
2496     outerSetting.create_group = true;
2497     outerSetting.group_notify = true;
2498     outerSetting.op = TestOperation::ASYNC_GROUP;
2499     innerSetting.op = TestOperation::SYNC;
2500     int taskCount = Dispatch(outerSetting, innerSetting);
2501     bool result = Wait(taskCount);
2502     result = result && task_execution_sequence.size() > 1;
2503     if (result) {
2504         result = result && applyExecuted(outerSetting, innerSetting);
2505         result = result && OuterTaskExecuted(outerSetting);
2506         result = result && InnerTaskExecuted(innerSetting);
2507         std::vector<size_t> outerTaskIndex;
2508         std::vector<std::vector<size_t>> innerTaskIndex;
2509         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2510         for (int i = 0; i < testTaskCount; i++) {
2511             result = result && IsAscend(innerTaskIndex[i]);
2512         }
2513         result = result && OuterExecutedAfter(outerGroupNotifyId);
2514     }
2515     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2516 }
2517 
2518 // level1:global, group notify level2:serial, async
GlobalCase76(int code)2519 void MainAbility::GlobalCase76(int code)
2520 {
2521     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2522     Reset();
2523     TestSetting outerSetting;
2524     TestSetting innerSetting;
2525     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2526     innerSetting.dispatcher = TestDispatcher::SERIAL;
2527     outerSetting.create_group = true;
2528     outerSetting.group_notify = true;
2529     outerSetting.op = TestOperation::ASYNC_GROUP;
2530     innerSetting.op = TestOperation::ASYNC;
2531     int taskCount = Dispatch(outerSetting, innerSetting);
2532     bool result = Wait(taskCount);
2533     result = result && task_execution_sequence.size() > 1;
2534     if (result) {
2535         result = result && applyExecuted(outerSetting, innerSetting);
2536         result = result && OuterTaskExecuted(outerSetting);
2537         result = result && InnerTaskExecuted(innerSetting);
2538         std::vector<size_t> outerTaskIndex;
2539         std::vector<std::vector<size_t>> innerTaskIndex;
2540         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2541         for (int i = 0; i < testTaskCount; i++) {
2542             result = result && IsAscend(innerTaskIndex[i]);
2543         }
2544         result = result && OuterExecutedAfter(outerGroupNotifyId);
2545     }
2546     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2547 }
2548 
2549 // level1:global, group notify level2:serial, delay
GlobalCase77(int code)2550 void MainAbility::GlobalCase77(int code)
2551 {
2552     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2553     Reset();
2554     TestSetting outerSetting;
2555     TestSetting innerSetting;
2556     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2557     innerSetting.dispatcher = TestDispatcher::SERIAL;
2558     innerSetting.delay = delayMs;
2559     outerSetting.create_group = true;
2560     outerSetting.group_notify = true;
2561     outerSetting.op = TestOperation::ASYNC_GROUP;
2562     innerSetting.op = TestOperation::DELAY;
2563     int taskCount = Dispatch(outerSetting, innerSetting);
2564     bool result = Wait(taskCount);
2565     result = result && task_execution_sequence.size() > 1;
2566     if (result) {
2567         result = result && applyExecuted(outerSetting, innerSetting);
2568         result = result && OuterTaskExecuted(outerSetting);
2569         result = result && InnerTaskExecuted(innerSetting);
2570         std::vector<size_t> outerTaskIndex;
2571         std::vector<std::vector<size_t>> innerTaskIndex;
2572         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2573         for (int i = 0; i < testTaskCount; i++) {
2574             result = result && IsAscend(innerTaskIndex[i]);
2575         }
2576         result = result && OuterExecutedAfter(outerGroupNotifyId);
2577     }
2578     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2579 }
2580 
2581 // level1:global, group notify level2:serial, apply
GlobalCase78(int code)2582 void MainAbility::GlobalCase78(int code)
2583 {
2584     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2585     Reset();
2586     TestSetting outerSetting;
2587     TestSetting innerSetting;
2588     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2589     innerSetting.dispatcher = TestDispatcher::SERIAL;
2590     innerSetting.apply = applyNum;
2591     outerSetting.create_group = true;
2592     outerSetting.group_notify = true;
2593     outerSetting.op = TestOperation::ASYNC_GROUP;
2594     innerSetting.op = TestOperation::APPLY;
2595     int taskCount = Dispatch(outerSetting, innerSetting);
2596     bool result = Wait(taskCount);
2597     result = result && task_execution_sequence.size() > 1;
2598     if (result) {
2599         result = result && applyExecuted(outerSetting, innerSetting);
2600         result = result && OuterTaskExecuted(outerSetting);
2601         result = result && InnerTaskExecuted(innerSetting);
2602         result = result && OuterExecutedAfter(outerGroupNotifyId);
2603     }
2604     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2605 }
2606 
2607 // level1:global, apply level2:parallel, sync
GlobalCase79(int code)2608 void MainAbility::GlobalCase79(int code)
2609 {
2610     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2611     Reset();
2612     TestSetting outerSetting;
2613     TestSetting innerSetting;
2614     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2615     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2616     outerSetting.apply = applyNum;
2617     outerSetting.op = TestOperation::APPLY;
2618     innerSetting.op = TestOperation::SYNC;
2619     int taskCount = Dispatch(outerSetting, innerSetting);
2620     bool result = Wait(taskCount);
2621     result = result && task_execution_sequence.size() > 1;
2622     if (result) {
2623         result = result && applyExecuted(outerSetting, innerSetting);
2624         result = result && OuterTaskExecuted(outerSetting);
2625         result = result && InnerTaskExecuted(innerSetting);
2626         std::vector<size_t> outerTaskIndex;
2627         std::vector<std::vector<size_t>> innerTaskIndex;
2628         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2629         for (int i = 0; i < testTaskCount; i++) {
2630             result = result && IsAscend(innerTaskIndex[i]);
2631         }
2632     }
2633     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2634 }
2635 
2636 // level1:global, apply level2:parallel, async
GlobalCase80(int code)2637 void MainAbility::GlobalCase80(int code)
2638 {
2639     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2640     Reset();
2641     TestSetting outerSetting;
2642     TestSetting innerSetting;
2643     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2644     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2645     outerSetting.apply = applyNum;
2646     outerSetting.op = TestOperation::APPLY;
2647     innerSetting.op = TestOperation::ASYNC;
2648     int taskCount = Dispatch(outerSetting, innerSetting);
2649     bool result = Wait(taskCount);
2650     result = result && task_execution_sequence.size() > 1;
2651     if (result) {
2652         result = result && applyExecuted(outerSetting, innerSetting);
2653         result = result && OuterTaskExecuted(outerSetting);
2654         result = result && InnerTaskExecuted(innerSetting);
2655     }
2656     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2657 }
2658 
2659 // level1:global, apply level2:parallel, delay
GlobalCase81(int code)2660 void MainAbility::GlobalCase81(int code)
2661 {
2662     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2663     Reset();
2664     TestSetting outerSetting;
2665     TestSetting innerSetting;
2666     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2667     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2668     outerSetting.apply = applyNum;
2669     innerSetting.delay = delayMs;
2670     outerSetting.op = TestOperation::APPLY;
2671     innerSetting.op = TestOperation::DELAY;
2672     int taskCount = Dispatch(outerSetting, innerSetting);
2673     bool result = Wait(taskCount);
2674     result = result && task_execution_sequence.size() > 1;
2675     if (result) {
2676         result = result && applyExecuted(outerSetting, innerSetting);
2677         result = result && OuterTaskExecuted(outerSetting);
2678         result = result && InnerTaskExecuted(innerSetting);
2679     }
2680     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2681 }
2682 
2683 // level1:global, apply level2:parallel, group
GlobalCase82(int code)2684 void MainAbility::GlobalCase82(int code)
2685 {
2686     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2687     Reset();
2688     TestSetting outerSetting;
2689     TestSetting innerSetting;
2690     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2691     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2692     outerSetting.apply = applyNum;
2693     innerSetting.create_group = true;
2694     outerSetting.op = TestOperation::APPLY;
2695     innerSetting.op = TestOperation::ASYNC_GROUP;
2696     int taskCount = Dispatch(outerSetting, innerSetting);
2697     bool result = Wait(taskCount);
2698     result = result && task_execution_sequence.size() > 1;
2699     if (result) {
2700         result = result && applyExecuted(outerSetting, innerSetting);
2701         result = result && OuterTaskExecuted(outerSetting);
2702         result = result && InnerTaskExecuted(innerSetting);
2703     }
2704     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2705 }
2706 
2707 // level1:global, apply level2:parallel, group wait
GlobalCase83(int code)2708 void MainAbility::GlobalCase83(int code)
2709 {
2710     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2711     Reset();
2712     TestSetting outerSetting;
2713     TestSetting innerSetting;
2714     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2715     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2716     innerSetting.group_wait = true;
2717     innerSetting.group_timeout = groupWait;
2718     outerSetting.apply = applyNum;
2719     innerSetting.create_group = true;
2720     outerSetting.op = TestOperation::APPLY;
2721     innerSetting.op = TestOperation::ASYNC_GROUP;
2722     int taskCount = Dispatch(outerSetting, innerSetting);
2723     bool result = Wait(taskCount);
2724     result = result && task_execution_sequence.size() > 1;
2725     if (result) {
2726         result = result && applyExecuted(outerSetting, innerSetting);
2727         result = result && OuterTaskExecuted(outerSetting);
2728         result = result && InnerTaskExecuted(innerSetting);
2729     }
2730     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2731 }
2732 
2733 // level1:global, apply level2:parallel, group notify
GlobalCase84(int code)2734 void MainAbility::GlobalCase84(int code)
2735 {
2736     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2737     Reset();
2738     TestSetting outerSetting;
2739     TestSetting innerSetting;
2740     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2741     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2742     outerSetting.apply = applyNum;
2743     innerSetting.create_group = true;
2744     innerSetting.group_notify = true;
2745     outerSetting.op = TestOperation::APPLY;
2746     innerSetting.op = TestOperation::ASYNC_GROUP;
2747     int taskCount = Dispatch(outerSetting, innerSetting);
2748     bool result = Wait(taskCount);
2749     result = result && task_execution_sequence.size() > 1;
2750     if (result) {
2751         result = result && applyExecuted(outerSetting, innerSetting);
2752         result = result && OuterTaskExecuted(outerSetting);
2753         result = result && InnerTaskExecuted(innerSetting);
2754         result = result && InnerExecutedAfter(innerGroupNotifyId);
2755     }
2756     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2757 }
2758 
2759 // level1:global, apply level2:parallel, sync barrier
GlobalCase85(int code)2760 void MainAbility::GlobalCase85(int code)
2761 {
2762     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2763     Reset();
2764     TestSetting outerSetting;
2765     TestSetting innerSetting;
2766     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2767     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2768     outerSetting.apply = applyNum;
2769     innerSetting.sync_barrier = true;
2770     innerSetting.create_group = true;
2771     outerSetting.op = TestOperation::APPLY;
2772     innerSetting.op = TestOperation::ASYNC_GROUP;
2773     int taskCount = Dispatch(outerSetting, innerSetting);
2774     bool result = Wait(taskCount);
2775     result = result && task_execution_sequence.size() > 1;
2776     if (result) {
2777         result = result && applyExecuted(outerSetting, innerSetting);
2778         result = result && OuterTaskExecuted(outerSetting);
2779         result = result && InnerTaskExecuted(innerSetting);
2780         result = result && InnerExecutedAfter(innerSyncBarrierId);
2781     }
2782     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2783 }
2784 
2785 // level1:global, apply level2:parallel, async barrier
GlobalCase86(int code)2786 void MainAbility::GlobalCase86(int code)
2787 {
2788     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2789     Reset();
2790     TestSetting outerSetting;
2791     TestSetting innerSetting;
2792     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2793     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2794     outerSetting.apply = applyNum;
2795     innerSetting.async_barrier = true;
2796     innerSetting.create_group = true;
2797     outerSetting.op = TestOperation::APPLY;
2798     innerSetting.op = TestOperation::ASYNC_GROUP;
2799     int taskCount = Dispatch(outerSetting, innerSetting);
2800     bool result = Wait(taskCount);
2801     result = result && task_execution_sequence.size() > 1;
2802     if (result) {
2803         result = result && applyExecuted(outerSetting, innerSetting);
2804         result = result && OuterTaskExecuted(outerSetting);
2805         result = result && InnerTaskExecuted(innerSetting);
2806         result = result && InnerExecutedAfter(innerAsyncBarrierId);
2807     }
2808     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2809 }
2810 
2811 // level1:global, apply level2:parallel, apply
GlobalCase87(int code)2812 void MainAbility::GlobalCase87(int code)
2813 {
2814     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2815     Reset();
2816     TestSetting outerSetting;
2817     TestSetting innerSetting;
2818     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2819     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2820     outerSetting.apply = applyNum;
2821     innerSetting.apply = applyNum;
2822     outerSetting.op = TestOperation::APPLY;
2823     innerSetting.op = TestOperation::APPLY;
2824     int taskCount = Dispatch(outerSetting, innerSetting);
2825     bool result = Wait(taskCount);
2826     result = result && task_execution_sequence.size() > 1;
2827     if (result) {
2828         result = result && applyExecuted(outerSetting, innerSetting);
2829         result = result && OuterTaskExecuted(outerSetting);
2830         result = result && InnerTaskExecuted(innerSetting);
2831     }
2832     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2833 }
2834 
2835 // level1:global, apply level2:serial, sync
GlobalCase88(int code)2836 void MainAbility::GlobalCase88(int code)
2837 {
2838     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2839     Reset();
2840     TestSetting outerSetting;
2841     TestSetting innerSetting;
2842     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2843     innerSetting.dispatcher = TestDispatcher::SERIAL;
2844     outerSetting.apply = applyNum;
2845     outerSetting.op = TestOperation::APPLY;
2846     innerSetting.op = TestOperation::SYNC;
2847     int taskCount = Dispatch(outerSetting, innerSetting);
2848     bool result = Wait(taskCount);
2849     result = result && task_execution_sequence.size() > 1;
2850     if (result) {
2851         result = result && applyExecuted(outerSetting, innerSetting);
2852         result = result && OuterTaskExecuted(outerSetting);
2853         result = result && InnerTaskExecuted(innerSetting);
2854         std::vector<size_t> outerTaskIndex;
2855         std::vector<std::vector<size_t>> innerTaskIndex;
2856         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2857         for (int i = 0; i < testTaskCount; i++) {
2858             result = result && IsAscend(innerTaskIndex[i]);
2859         }
2860     }
2861     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2862 }
2863 
2864 // level1:global, apply level2:serial, async
GlobalCase89(int code)2865 void MainAbility::GlobalCase89(int code)
2866 {
2867     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2868     Reset();
2869     TestSetting outerSetting;
2870     TestSetting innerSetting;
2871     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2872     innerSetting.dispatcher = TestDispatcher::SERIAL;
2873     outerSetting.apply = applyNum;
2874     outerSetting.op = TestOperation::APPLY;
2875     innerSetting.op = TestOperation::ASYNC;
2876     int taskCount = Dispatch(outerSetting, innerSetting);
2877     bool result = Wait(taskCount);
2878     result = result && task_execution_sequence.size() > 1;
2879     if (result) {
2880         result = result && applyExecuted(outerSetting, innerSetting);
2881         result = result && OuterTaskExecuted(outerSetting);
2882         result = result && InnerTaskExecuted(innerSetting);
2883         std::vector<size_t> outerTaskIndex;
2884         std::vector<std::vector<size_t>> innerTaskIndex;
2885         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2886         for (int i = 0; i < testTaskCount; i++) {
2887             result = result && IsAscend(innerTaskIndex[i]);
2888         }
2889     }
2890     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2891 }
2892 
2893 // level1:global, apply level2:serial, delay
GlobalCase90(int code)2894 void MainAbility::GlobalCase90(int code)
2895 {
2896     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2897     Reset();
2898     TestSetting outerSetting;
2899     TestSetting innerSetting;
2900     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2901     innerSetting.dispatcher = TestDispatcher::SERIAL;
2902     outerSetting.apply = applyNum;
2903     innerSetting.delay = delayMs;
2904     outerSetting.op = TestOperation::APPLY;
2905     innerSetting.op = TestOperation::DELAY;
2906     int taskCount = Dispatch(outerSetting, innerSetting);
2907     bool result = Wait(taskCount);
2908     result = result && task_execution_sequence.size() > 1;
2909     if (result) {
2910         result = result && applyExecuted(outerSetting, innerSetting);
2911         result = result && OuterTaskExecuted(outerSetting);
2912         result = result && InnerTaskExecuted(innerSetting);
2913         std::vector<size_t> outerTaskIndex;
2914         std::vector<std::vector<size_t>> innerTaskIndex;
2915         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2916         for (int i = 0; i < testTaskCount; i++) {
2917             result = result && IsAscend(innerTaskIndex[i]);
2918         }
2919     }
2920     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2921 }
2922 
2923 // level1:global, apply level2:serial, apply
GlobalCase91(int code)2924 void MainAbility::GlobalCase91(int code)
2925 {
2926     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2927     Reset();
2928     TestSetting outerSetting;
2929     TestSetting innerSetting;
2930     outerSetting.dispatcher = TestDispatcher::GLOBAL;
2931     innerSetting.dispatcher = TestDispatcher::SERIAL;
2932     outerSetting.apply = applyNum;
2933     innerSetting.apply = applyNum;
2934     outerSetting.op = TestOperation::APPLY;
2935     innerSetting.op = TestOperation::APPLY;
2936     int taskCount = Dispatch(outerSetting, innerSetting);
2937     bool result = Wait(taskCount);
2938     result = result && task_execution_sequence.size() > 1;
2939     if (result) {
2940         result = result && applyExecuted(outerSetting, innerSetting);
2941         result = result && OuterTaskExecuted(outerSetting);
2942         result = result && InnerTaskExecuted(innerSetting);
2943     }
2944     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2945 }
2946 
2947 // level1:parallel, sync level2:parallel, sync
ParallelCase1(int code)2948 void MainAbility::ParallelCase1(int code)
2949 {
2950     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2951     Reset();
2952     TestSetting outerSetting;
2953     TestSetting innerSetting;
2954     outerSetting.dispatcher = TestDispatcher::PARALLEL;
2955     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2956     outerSetting.op = TestOperation::SYNC;
2957     innerSetting.op = TestOperation::SYNC;
2958     int taskCount = Dispatch(outerSetting, innerSetting);
2959     bool result = Wait(taskCount);
2960     result = result && task_execution_sequence.size() > 1;
2961     if (result) {
2962         result = result && applyExecuted(outerSetting, innerSetting);
2963         result = result && OuterTaskExecuted(outerSetting);
2964         result = result && InnerTaskExecuted(innerSetting);
2965         std::vector<size_t> outerTaskIndex;
2966         std::vector<std::vector<size_t>> innerTaskIndex;
2967         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2968         result = result && IsAscend(outerTaskIndex);
2969         for (int i = 0; i < testTaskCount; i++) {
2970             result = result && IsAscend(innerTaskIndex[i]);
2971         }
2972     }
2973     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
2974 }
2975 
2976 // level1:parallel, sync level2:parallel, async
ParallelCase2(int code)2977 void MainAbility::ParallelCase2(int code)
2978 {
2979     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
2980     Reset();
2981     TestSetting outerSetting;
2982     TestSetting innerSetting;
2983     outerSetting.dispatcher = TestDispatcher::PARALLEL;
2984     innerSetting.dispatcher = TestDispatcher::PARALLEL;
2985     outerSetting.op = TestOperation::SYNC;
2986     innerSetting.op = TestOperation::ASYNC;
2987     int taskCount = Dispatch(outerSetting, innerSetting);
2988     bool result = Wait(taskCount);
2989     result = result && task_execution_sequence.size() > 1;
2990     if (result) {
2991         result = result && applyExecuted(outerSetting, innerSetting);
2992         result = result && OuterTaskExecuted(outerSetting);
2993         result = result && InnerTaskExecuted(innerSetting);
2994         std::vector<size_t> outerTaskIndex;
2995         std::vector<std::vector<size_t>> innerTaskIndex;
2996         GetTaskIndex(outerTaskIndex, innerTaskIndex);
2997         result = result && IsAscend(outerTaskIndex);
2998     }
2999     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3000 }
3001 
3002 // level1:parallel, sync level2:parallel, delay
ParallelCase3(int code)3003 void MainAbility::ParallelCase3(int code)
3004 {
3005     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3006     Reset();
3007     TestSetting outerSetting;
3008     TestSetting innerSetting;
3009     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3010     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3011     innerSetting.delay = delayMs;
3012     outerSetting.op = TestOperation::SYNC;
3013     innerSetting.op = TestOperation::DELAY;
3014     int taskCount = Dispatch(outerSetting, innerSetting);
3015     bool result = Wait(taskCount);
3016     result = result && task_execution_sequence.size() > 1;
3017     if (result) {
3018         result = result && applyExecuted(outerSetting, innerSetting);
3019         result = result && OuterTaskExecuted(outerSetting);
3020         result = result && InnerTaskExecuted(innerSetting);
3021         std::vector<size_t> outerTaskIndex;
3022         std::vector<std::vector<size_t>> innerTaskIndex;
3023         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3024         result = result && IsAscend(outerTaskIndex);
3025     }
3026     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3027 }
3028 
3029 // level1:parallel, sync level2:parallel, group
ParallelCase4(int code)3030 void MainAbility::ParallelCase4(int code)
3031 {
3032     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3033     Reset();
3034     TestSetting outerSetting;
3035     TestSetting innerSetting;
3036     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3037     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3038     innerSetting.create_group = true;
3039     outerSetting.op = TestOperation::SYNC;
3040     innerSetting.op = TestOperation::ASYNC_GROUP;
3041     int taskCount = Dispatch(outerSetting, innerSetting);
3042     bool result = Wait(taskCount);
3043     result = result && task_execution_sequence.size() > 1;
3044     if (result) {
3045         result = result && applyExecuted(outerSetting, innerSetting);
3046         result = result && OuterTaskExecuted(outerSetting);
3047         result = result && InnerTaskExecuted(innerSetting);
3048         std::vector<size_t> outerTaskIndex;
3049         std::vector<std::vector<size_t>> innerTaskIndex;
3050         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3051         result = result && IsAscend(outerTaskIndex);
3052     }
3053     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3054 }
3055 
3056 // level1:parallel, sync level2:parallel, group wait
ParallelCase5(int code)3057 void MainAbility::ParallelCase5(int code)
3058 {
3059     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3060     Reset();
3061     TestSetting outerSetting;
3062     TestSetting innerSetting;
3063     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3064     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3065     innerSetting.group_wait = true;
3066     innerSetting.group_timeout = groupWait;
3067     innerSetting.create_group = true;
3068     outerSetting.op = TestOperation::SYNC;
3069     innerSetting.op = TestOperation::ASYNC_GROUP;
3070     int taskCount = Dispatch(outerSetting, innerSetting);
3071     bool result = Wait(taskCount);
3072     result = result && task_execution_sequence.size() > 1;
3073     if (result) {
3074         result = result && applyExecuted(outerSetting, innerSetting);
3075         result = result && OuterTaskExecuted(outerSetting);
3076         result = result && InnerTaskExecuted(innerSetting);
3077         std::vector<size_t> outerTaskIndex;
3078         std::vector<std::vector<size_t>> innerTaskIndex;
3079         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3080         result = result && IsAscend(outerTaskIndex);
3081     }
3082     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3083 }
3084 
3085 // level1:parallel, sync level2:parallel, group notify
ParallelCase6(int code)3086 void MainAbility::ParallelCase6(int code)
3087 {
3088     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3089     Reset();
3090     TestSetting outerSetting;
3091     TestSetting innerSetting;
3092     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3093     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3094     innerSetting.create_group = true;
3095     innerSetting.group_notify = true;
3096     outerSetting.op = TestOperation::SYNC;
3097     innerSetting.op = TestOperation::ASYNC_GROUP;
3098     int taskCount = Dispatch(outerSetting, innerSetting);
3099     bool result = Wait(taskCount);
3100     result = result && task_execution_sequence.size() > 1;
3101     if (result) {
3102         result = result && applyExecuted(outerSetting, innerSetting);
3103         result = result && OuterTaskExecuted(outerSetting);
3104         result = result && InnerTaskExecuted(innerSetting);
3105         std::vector<size_t> outerTaskIndex;
3106         std::vector<std::vector<size_t>> innerTaskIndex;
3107         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3108         result = result && IsAscend(outerTaskIndex);
3109         result = result && InnerExecutedAfter(innerGroupNotifyId);
3110     }
3111     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3112 }
3113 
3114 // level1:parallel, sync level2:parallel, sync barrier
ParallelCase7(int code)3115 void MainAbility::ParallelCase7(int code)
3116 {
3117     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3118     Reset();
3119     TestSetting outerSetting;
3120     TestSetting innerSetting;
3121     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3122     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3123     innerSetting.sync_barrier = true;
3124     innerSetting.create_group = true;
3125     outerSetting.op = TestOperation::SYNC;
3126     innerSetting.op = TestOperation::ASYNC_GROUP;
3127     int taskCount = Dispatch(outerSetting, innerSetting);
3128     bool result = Wait(taskCount);
3129     result = result && task_execution_sequence.size() > 1;
3130     if (result) {
3131         result = result && applyExecuted(outerSetting, innerSetting);
3132         result = result && OuterTaskExecuted(outerSetting);
3133         result = result && InnerTaskExecuted(innerSetting);
3134         std::vector<size_t> outerTaskIndex;
3135         std::vector<std::vector<size_t>> innerTaskIndex;
3136         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3137         result = result && IsAscend(outerTaskIndex);
3138         result = result && InnerExecutedAfter(innerSyncBarrierId);
3139     }
3140     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3141 }
3142 
3143 // level1:parallel, sync level2:parallel, async barrier
ParallelCase8(int code)3144 void MainAbility::ParallelCase8(int code)
3145 {
3146     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3147     Reset();
3148     TestSetting outerSetting;
3149     TestSetting innerSetting;
3150     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3151     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3152     innerSetting.async_barrier = true;
3153     innerSetting.create_group = true;
3154     outerSetting.op = TestOperation::SYNC;
3155     innerSetting.op = TestOperation::ASYNC_GROUP;
3156     int taskCount = Dispatch(outerSetting, innerSetting);
3157     bool result = Wait(taskCount);
3158     result = result && task_execution_sequence.size() > 1;
3159     if (result) {
3160         result = result && applyExecuted(outerSetting, innerSetting);
3161         result = result && OuterTaskExecuted(outerSetting);
3162         result = result && InnerTaskExecuted(innerSetting);
3163         std::vector<size_t> outerTaskIndex;
3164         std::vector<std::vector<size_t>> innerTaskIndex;
3165         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3166         result = result && IsAscend(outerTaskIndex);
3167         result = result && InnerExecutedAfter(innerAsyncBarrierId);
3168     }
3169     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3170 }
3171 
3172 // level1:parallel, sync level2:parallel, apply
ParallelCase9(int code)3173 void MainAbility::ParallelCase9(int code)
3174 {
3175     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3176     Reset();
3177     TestSetting outerSetting;
3178     TestSetting innerSetting;
3179     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3180     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3181     innerSetting.apply = applyNum;
3182     outerSetting.op = TestOperation::SYNC;
3183     innerSetting.op = TestOperation::APPLY;
3184     int taskCount = Dispatch(outerSetting, innerSetting);
3185     bool result = Wait(taskCount);
3186     result = result && task_execution_sequence.size() > 1;
3187     if (result) {
3188         result = result && applyExecuted(outerSetting, innerSetting);
3189         result = result && OuterTaskExecuted(outerSetting);
3190         result = result && InnerTaskExecuted(innerSetting);
3191         std::vector<size_t> outerTaskIndex;
3192         std::vector<std::vector<size_t>> innerTaskIndex;
3193         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3194         result = result && IsAscend(outerTaskIndex);
3195     }
3196     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3197 }
3198 
3199 // level1:parallel, sync level2:serial, sync
ParallelCase10(int code)3200 void MainAbility::ParallelCase10(int code)
3201 {
3202     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3203     Reset();
3204     TestSetting outerSetting;
3205     TestSetting innerSetting;
3206     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3207     innerSetting.dispatcher = TestDispatcher::SERIAL;
3208     outerSetting.op = TestOperation::SYNC;
3209     innerSetting.op = TestOperation::SYNC;
3210     int taskCount = Dispatch(outerSetting, innerSetting);
3211     bool result = Wait(taskCount);
3212     result = result && task_execution_sequence.size() > 1;
3213     if (result) {
3214         result = result && applyExecuted(outerSetting, innerSetting);
3215         result = result && OuterTaskExecuted(outerSetting);
3216         result = result && InnerTaskExecuted(innerSetting);
3217         std::vector<size_t> outerTaskIndex;
3218         std::vector<std::vector<size_t>> innerTaskIndex;
3219         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3220         result = result && IsAscend(outerTaskIndex);
3221         for (int i = 0; i < testTaskCount; i++) {
3222             result = result && IsAscend(innerTaskIndex[i]);
3223         }
3224     }
3225     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3226 }
3227 
3228 // level1:parallel, sync level2:serial, async
ParallelCase11(int code)3229 void MainAbility::ParallelCase11(int code)
3230 {
3231     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3232     Reset();
3233     TestSetting outerSetting;
3234     TestSetting innerSetting;
3235     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3236     innerSetting.dispatcher = TestDispatcher::SERIAL;
3237     outerSetting.op = TestOperation::SYNC;
3238     innerSetting.op = TestOperation::ASYNC;
3239     int taskCount = Dispatch(outerSetting, innerSetting);
3240     bool result = Wait(taskCount);
3241     result = result && task_execution_sequence.size() > 1;
3242     if (result) {
3243         result = result && applyExecuted(outerSetting, innerSetting);
3244         result = result && OuterTaskExecuted(outerSetting);
3245         result = result && InnerTaskExecuted(innerSetting);
3246         std::vector<size_t> outerTaskIndex;
3247         std::vector<std::vector<size_t>> innerTaskIndex;
3248         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3249         result = result && IsAscend(outerTaskIndex);
3250         for (int i = 0; i < testTaskCount; i++) {
3251             result = result && IsAscend(innerTaskIndex[i]);
3252         }
3253     }
3254     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3255 }
3256 
3257 // level1:parallel, sync level2:serial, delay
ParallelCase12(int code)3258 void MainAbility::ParallelCase12(int code)
3259 {
3260     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3261     Reset();
3262     TestSetting outerSetting;
3263     TestSetting innerSetting;
3264     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3265     innerSetting.dispatcher = TestDispatcher::SERIAL;
3266     innerSetting.delay = delayMs;
3267     outerSetting.op = TestOperation::SYNC;
3268     innerSetting.op = TestOperation::DELAY;
3269     int taskCount = Dispatch(outerSetting, innerSetting);
3270     bool result = Wait(taskCount);
3271     result = result && task_execution_sequence.size() > 1;
3272     if (result) {
3273         result = result && applyExecuted(outerSetting, innerSetting);
3274         result = result && OuterTaskExecuted(outerSetting);
3275         result = result && InnerTaskExecuted(innerSetting);
3276         std::vector<size_t> outerTaskIndex;
3277         std::vector<std::vector<size_t>> innerTaskIndex;
3278         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3279         result = result && IsAscend(outerTaskIndex);
3280         for (int i = 0; i < testTaskCount; i++) {
3281             result = result && IsAscend(innerTaskIndex[i]);
3282         }
3283     }
3284     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3285 }
3286 
3287 // level1:parallel, sync level2:serial, apply
ParallelCase13(int code)3288 void MainAbility::ParallelCase13(int code)
3289 {
3290     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3291     Reset();
3292     TestSetting outerSetting;
3293     TestSetting innerSetting;
3294     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3295     innerSetting.dispatcher = TestDispatcher::SERIAL;
3296     innerSetting.apply = applyNum;
3297     outerSetting.op = TestOperation::SYNC;
3298     innerSetting.op = TestOperation::APPLY;
3299     int taskCount = Dispatch(outerSetting, innerSetting);
3300     bool result = Wait(taskCount);
3301     result = result && task_execution_sequence.size() > 1;
3302     if (result) {
3303         result = result && applyExecuted(outerSetting, innerSetting);
3304         result = result && OuterTaskExecuted(outerSetting);
3305         result = result && InnerTaskExecuted(innerSetting);
3306         std::vector<size_t> outerTaskIndex;
3307         std::vector<std::vector<size_t>> innerTaskIndex;
3308         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3309         result = result && IsAscend(outerTaskIndex);
3310     }
3311     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3312 }
3313 
3314 // level1:parallel, async level2:parallel, sync
ParallelCase14(int code)3315 void MainAbility::ParallelCase14(int code)
3316 {
3317     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3318     Reset();
3319     TestSetting outerSetting;
3320     TestSetting innerSetting;
3321     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3322     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3323     outerSetting.op = TestOperation::ASYNC;
3324     innerSetting.op = TestOperation::SYNC;
3325     int taskCount = Dispatch(outerSetting, innerSetting);
3326     bool result = Wait(taskCount);
3327     result = result && task_execution_sequence.size() > 1;
3328     if (result) {
3329         result = result && applyExecuted(outerSetting, innerSetting);
3330         result = result && OuterTaskExecuted(outerSetting);
3331         result = result && InnerTaskExecuted(innerSetting);
3332         std::vector<size_t> outerTaskIndex;
3333         std::vector<std::vector<size_t>> innerTaskIndex;
3334         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3335         for (int i = 0; i < testTaskCount; i++) {
3336             result = result && IsAscend(innerTaskIndex[i]);
3337         }
3338     }
3339     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3340 }
3341 
3342 // level1:parallel, async level2:parallel, async
ParallelCase15(int code)3343 void MainAbility::ParallelCase15(int code)
3344 {
3345     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3346     Reset();
3347     TestSetting outerSetting;
3348     TestSetting innerSetting;
3349     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3350     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3351     outerSetting.op = TestOperation::ASYNC;
3352     innerSetting.op = TestOperation::ASYNC;
3353     int taskCount = Dispatch(outerSetting, innerSetting);
3354     bool result = Wait(taskCount);
3355     result = result && task_execution_sequence.size() > 1;
3356     if (result) {
3357         result = result && applyExecuted(outerSetting, innerSetting);
3358         result = result && OuterTaskExecuted(outerSetting);
3359         result = result && InnerTaskExecuted(innerSetting);
3360     }
3361     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3362 }
3363 
3364 // level1:parallel, async level2:parallel, delay
ParallelCase16(int code)3365 void MainAbility::ParallelCase16(int code)
3366 {
3367     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3368     Reset();
3369     TestSetting outerSetting;
3370     TestSetting innerSetting;
3371     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3372     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3373     innerSetting.delay = delayMs;
3374     outerSetting.op = TestOperation::ASYNC;
3375     innerSetting.op = TestOperation::DELAY;
3376     int taskCount = Dispatch(outerSetting, innerSetting);
3377     bool result = Wait(taskCount);
3378     result = result && task_execution_sequence.size() > 1;
3379     if (result) {
3380         result = result && applyExecuted(outerSetting, innerSetting);
3381         result = result && OuterTaskExecuted(outerSetting);
3382         result = result && InnerTaskExecuted(innerSetting);
3383     }
3384     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3385 }
3386 
3387 // level1:parallel, async level2:parallel, group
ParallelCase17(int code)3388 void MainAbility::ParallelCase17(int code)
3389 {
3390     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3391     Reset();
3392     TestSetting outerSetting;
3393     TestSetting innerSetting;
3394     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3395     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3396     innerSetting.create_group = true;
3397     outerSetting.op = TestOperation::ASYNC;
3398     innerSetting.op = TestOperation::ASYNC_GROUP;
3399     int taskCount = Dispatch(outerSetting, innerSetting);
3400     bool result = Wait(taskCount);
3401     result = result && task_execution_sequence.size() > 1;
3402     if (result) {
3403         result = result && applyExecuted(outerSetting, innerSetting);
3404         result = result && OuterTaskExecuted(outerSetting);
3405         result = result && InnerTaskExecuted(innerSetting);
3406     }
3407     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3408 }
3409 
3410 // level1:parallel, async level2:parallel, group wait
ParallelCase18(int code)3411 void MainAbility::ParallelCase18(int code)
3412 {
3413     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3414     Reset();
3415     TestSetting outerSetting;
3416     TestSetting innerSetting;
3417     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3418     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3419     innerSetting.group_wait = true;
3420     innerSetting.group_timeout = groupWait;
3421     innerSetting.create_group = true;
3422     outerSetting.op = TestOperation::ASYNC;
3423     innerSetting.op = TestOperation::ASYNC_GROUP;
3424     int taskCount = Dispatch(outerSetting, innerSetting);
3425     bool result = Wait(taskCount);
3426     result = result && task_execution_sequence.size() > 1;
3427     if (result) {
3428         result = result && applyExecuted(outerSetting, innerSetting);
3429         result = result && OuterTaskExecuted(outerSetting);
3430         result = result && InnerTaskExecuted(innerSetting);
3431     }
3432     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3433 }
3434 
3435 // level1:parallel, async level2:parallel, group notify
ParallelCase19(int code)3436 void MainAbility::ParallelCase19(int code)
3437 {
3438     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3439     Reset();
3440     TestSetting outerSetting;
3441     TestSetting innerSetting;
3442     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3443     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3444     innerSetting.create_group = true;
3445     innerSetting.group_notify = true;
3446     outerSetting.op = TestOperation::ASYNC;
3447     innerSetting.op = TestOperation::ASYNC_GROUP;
3448     int taskCount = Dispatch(outerSetting, innerSetting);
3449     bool result = Wait(taskCount);
3450     result = result && task_execution_sequence.size() > 1;
3451     if (result) {
3452         result = result && applyExecuted(outerSetting, innerSetting);
3453         result = result && OuterTaskExecuted(outerSetting);
3454         result = result && InnerTaskExecuted(innerSetting);
3455         result = result && InnerExecutedAfter(innerGroupNotifyId);
3456     }
3457     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3458 }
3459 
3460 // level1:parallel, async level2:parallel, sync barrier
ParallelCase20(int code)3461 void MainAbility::ParallelCase20(int code)
3462 {
3463     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3464     Reset();
3465     TestSetting outerSetting;
3466     TestSetting innerSetting;
3467     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3468     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3469     innerSetting.sync_barrier = true;
3470     innerSetting.create_group = true;
3471     outerSetting.op = TestOperation::ASYNC;
3472     innerSetting.op = TestOperation::ASYNC_GROUP;
3473     int taskCount = Dispatch(outerSetting, innerSetting);
3474     bool result = Wait(taskCount);
3475     result = result && task_execution_sequence.size() > 1;
3476     if (result) {
3477         result = result && applyExecuted(outerSetting, innerSetting);
3478         result = result && OuterTaskExecuted(outerSetting);
3479         result = result && InnerTaskExecuted(innerSetting);
3480         result = result && InnerExecutedAfter(innerSyncBarrierId);
3481     }
3482     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3483 }
3484 
3485 // level1:parallel, async level2:parallel, async barrier
ParallelCase21(int code)3486 void MainAbility::ParallelCase21(int code)
3487 {
3488     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3489     Reset();
3490     TestSetting outerSetting;
3491     TestSetting innerSetting;
3492     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3493     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3494     innerSetting.async_barrier = true;
3495     innerSetting.create_group = true;
3496     outerSetting.op = TestOperation::ASYNC;
3497     innerSetting.op = TestOperation::ASYNC_GROUP;
3498     int taskCount = Dispatch(outerSetting, innerSetting);
3499     bool result = Wait(taskCount);
3500     result = result && task_execution_sequence.size() > 1;
3501     if (result) {
3502         result = result && applyExecuted(outerSetting, innerSetting);
3503         result = result && OuterTaskExecuted(outerSetting);
3504         result = result && InnerTaskExecuted(innerSetting);
3505         result = result && InnerExecutedAfter(innerAsyncBarrierId);
3506     }
3507     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3508 }
3509 
3510 // level1:parallel, async level2:parallel, apply
ParallelCase22(int code)3511 void MainAbility::ParallelCase22(int code)
3512 {
3513     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3514     Reset();
3515     TestSetting outerSetting;
3516     TestSetting innerSetting;
3517     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3518     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3519     innerSetting.apply = applyNum;
3520     outerSetting.op = TestOperation::ASYNC;
3521     innerSetting.op = TestOperation::APPLY;
3522     int taskCount = Dispatch(outerSetting, innerSetting);
3523     bool result = Wait(taskCount);
3524     result = result && task_execution_sequence.size() > 1;
3525     if (result) {
3526         result = result && applyExecuted(outerSetting, innerSetting);
3527         result = result && OuterTaskExecuted(outerSetting);
3528         result = result && InnerTaskExecuted(innerSetting);
3529     }
3530     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3531 }
3532 
3533 // level1:parallel, async level2:serial, sync
ParallelCase23(int code)3534 void MainAbility::ParallelCase23(int code)
3535 {
3536     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3537     Reset();
3538     TestSetting outerSetting;
3539     TestSetting innerSetting;
3540     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3541     innerSetting.dispatcher = TestDispatcher::SERIAL;
3542     outerSetting.op = TestOperation::ASYNC;
3543     innerSetting.op = TestOperation::SYNC;
3544     int taskCount = Dispatch(outerSetting, innerSetting);
3545     bool result = Wait(taskCount);
3546     result = result && task_execution_sequence.size() > 1;
3547     if (result) {
3548         result = result && applyExecuted(outerSetting, innerSetting);
3549         result = result && OuterTaskExecuted(outerSetting);
3550         result = result && InnerTaskExecuted(innerSetting);
3551         std::vector<size_t> outerTaskIndex;
3552         std::vector<std::vector<size_t>> innerTaskIndex;
3553         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3554         for (int i = 0; i < testTaskCount; i++) {
3555             result = result && IsAscend(innerTaskIndex[i]);
3556         }
3557     }
3558     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3559 }
3560 
3561 // level1:parallel, async level2:serial, async
ParallelCase24(int code)3562 void MainAbility::ParallelCase24(int code)
3563 {
3564     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3565     Reset();
3566     TestSetting outerSetting;
3567     TestSetting innerSetting;
3568     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3569     innerSetting.dispatcher = TestDispatcher::SERIAL;
3570     outerSetting.op = TestOperation::ASYNC;
3571     innerSetting.op = TestOperation::ASYNC;
3572     int taskCount = Dispatch(outerSetting, innerSetting);
3573     bool result = Wait(taskCount);
3574     result = result && task_execution_sequence.size() > 1;
3575     if (result) {
3576         result = result && applyExecuted(outerSetting, innerSetting);
3577         result = result && OuterTaskExecuted(outerSetting);
3578         result = result && InnerTaskExecuted(innerSetting);
3579         std::vector<size_t> outerTaskIndex;
3580         std::vector<std::vector<size_t>> innerTaskIndex;
3581         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3582         for (int i = 0; i < testTaskCount; i++) {
3583             result = result && IsAscend(innerTaskIndex[i]);
3584         }
3585     }
3586     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3587 }
3588 
3589 // level1:parallel, async level2:serial, delay
ParallelCase25(int code)3590 void MainAbility::ParallelCase25(int code)
3591 {
3592     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3593     Reset();
3594     TestSetting outerSetting;
3595     TestSetting innerSetting;
3596     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3597     innerSetting.dispatcher = TestDispatcher::SERIAL;
3598     innerSetting.delay = delayMs;
3599     outerSetting.op = TestOperation::ASYNC;
3600     innerSetting.op = TestOperation::DELAY;
3601     int taskCount = Dispatch(outerSetting, innerSetting);
3602     bool result = Wait(taskCount);
3603     result = result && task_execution_sequence.size() > 1;
3604     if (result) {
3605         result = result && applyExecuted(outerSetting, innerSetting);
3606         result = result && OuterTaskExecuted(outerSetting);
3607         result = result && InnerTaskExecuted(innerSetting);
3608         std::vector<size_t> outerTaskIndex;
3609         std::vector<std::vector<size_t>> innerTaskIndex;
3610         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3611         for (int i = 0; i < testTaskCount; i++) {
3612             result = result && IsAscend(innerTaskIndex[i]);
3613         }
3614     }
3615     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3616 }
3617 
3618 // level1:parallel, async level2:serial, apply
ParallelCase26(int code)3619 void MainAbility::ParallelCase26(int code)
3620 {
3621     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3622     Reset();
3623     TestSetting outerSetting;
3624     TestSetting innerSetting;
3625     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3626     innerSetting.dispatcher = TestDispatcher::SERIAL;
3627     innerSetting.apply = applyNum;
3628     outerSetting.op = TestOperation::ASYNC;
3629     innerSetting.op = TestOperation::APPLY;
3630     int taskCount = Dispatch(outerSetting, innerSetting);
3631     bool result = Wait(taskCount);
3632     result = result && task_execution_sequence.size() > 1;
3633     if (result) {
3634         result = result && applyExecuted(outerSetting, innerSetting);
3635         result = result && OuterTaskExecuted(outerSetting);
3636         result = result && InnerTaskExecuted(innerSetting);
3637     }
3638     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3639 }
3640 
3641 // level1:parallel, delay level2:parallel, sync
ParallelCase27(int code)3642 void MainAbility::ParallelCase27(int code)
3643 {
3644     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3645     Reset();
3646     TestSetting outerSetting;
3647     TestSetting innerSetting;
3648     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3649     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3650     outerSetting.delay = delayMs;
3651     outerSetting.op = TestOperation::DELAY;
3652     innerSetting.op = TestOperation::SYNC;
3653     int taskCount = Dispatch(outerSetting, innerSetting);
3654     bool result = Wait(taskCount);
3655     result = result && task_execution_sequence.size() > 1;
3656     if (result) {
3657         result = result && applyExecuted(outerSetting, innerSetting);
3658         result = result && OuterTaskExecuted(outerSetting);
3659         result = result && InnerTaskExecuted(innerSetting);
3660         std::vector<size_t> outerTaskIndex;
3661         std::vector<std::vector<size_t>> innerTaskIndex;
3662         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3663         for (int i = 0; i < testTaskCount; i++) {
3664             result = result && IsAscend(innerTaskIndex[i]);
3665         }
3666     }
3667     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3668 }
3669 
3670 // level1:parallel, delay level2:parallel, async
ParallelCase28(int code)3671 void MainAbility::ParallelCase28(int code)
3672 {
3673     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3674     Reset();
3675     TestSetting outerSetting;
3676     TestSetting innerSetting;
3677     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3678     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3679     outerSetting.delay = delayMs;
3680     outerSetting.op = TestOperation::DELAY;
3681     innerSetting.op = TestOperation::ASYNC;
3682     int taskCount = Dispatch(outerSetting, innerSetting);
3683     bool result = Wait(taskCount);
3684     result = result && task_execution_sequence.size() > 1;
3685     if (result) {
3686         result = result && applyExecuted(outerSetting, innerSetting);
3687         result = result && OuterTaskExecuted(outerSetting);
3688         result = result && InnerTaskExecuted(innerSetting);
3689     }
3690     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3691 }
3692 
3693 // level1:parallel, delay level2:parallel, delay
ParallelCase29(int code)3694 void MainAbility::ParallelCase29(int code)
3695 {
3696     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3697     Reset();
3698     TestSetting outerSetting;
3699     TestSetting innerSetting;
3700     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3701     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3702     outerSetting.delay = delayMs;
3703     innerSetting.delay = delayMs;
3704     outerSetting.op = TestOperation::DELAY;
3705     innerSetting.op = TestOperation::DELAY;
3706     int taskCount = Dispatch(outerSetting, innerSetting);
3707     bool result = Wait(taskCount);
3708     result = result && task_execution_sequence.size() > 1;
3709     if (result) {
3710         result = result && applyExecuted(outerSetting, innerSetting);
3711         result = result && OuterTaskExecuted(outerSetting);
3712         result = result && InnerTaskExecuted(innerSetting);
3713     }
3714     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3715 }
3716 
3717 // level1:parallel, delay level2:parallel, group
ParallelCase30(int code)3718 void MainAbility::ParallelCase30(int code)
3719 {
3720     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3721     Reset();
3722     TestSetting outerSetting;
3723     TestSetting innerSetting;
3724     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3725     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3726     outerSetting.delay = delayMs;
3727     innerSetting.create_group = true;
3728     outerSetting.op = TestOperation::DELAY;
3729     innerSetting.op = TestOperation::ASYNC_GROUP;
3730     int taskCount = Dispatch(outerSetting, innerSetting);
3731     bool result = Wait(taskCount);
3732     result = result && task_execution_sequence.size() > 1;
3733     if (result) {
3734         result = result && applyExecuted(outerSetting, innerSetting);
3735         result = result && OuterTaskExecuted(outerSetting);
3736         result = result && InnerTaskExecuted(innerSetting);
3737     }
3738     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3739 }
3740 
3741 // level1:parallel, delay level2:parallel, group wait
ParallelCase31(int code)3742 void MainAbility::ParallelCase31(int code)
3743 {
3744     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3745     Reset();
3746     TestSetting outerSetting;
3747     TestSetting innerSetting;
3748     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3749     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3750     innerSetting.group_wait = true;
3751     innerSetting.group_timeout = groupWait;
3752     outerSetting.delay = delayMs;
3753     innerSetting.create_group = true;
3754     outerSetting.op = TestOperation::DELAY;
3755     innerSetting.op = TestOperation::ASYNC_GROUP;
3756     int taskCount = Dispatch(outerSetting, innerSetting);
3757     bool result = Wait(taskCount);
3758     result = result && task_execution_sequence.size() > 1;
3759     if (result) {
3760         result = result && applyExecuted(outerSetting, innerSetting);
3761         result = result && OuterTaskExecuted(outerSetting);
3762         result = result && InnerTaskExecuted(innerSetting);
3763     }
3764     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3765 }
3766 
3767 // level1:parallel, delay level2:parallel, group notify
ParallelCase32(int code)3768 void MainAbility::ParallelCase32(int code)
3769 {
3770     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3771     Reset();
3772     TestSetting outerSetting;
3773     TestSetting innerSetting;
3774     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3775     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3776     outerSetting.delay = delayMs;
3777     innerSetting.create_group = true;
3778     innerSetting.group_notify = true;
3779     outerSetting.op = TestOperation::DELAY;
3780     innerSetting.op = TestOperation::ASYNC_GROUP;
3781     int taskCount = Dispatch(outerSetting, innerSetting);
3782     bool result = Wait(taskCount);
3783     result = result && task_execution_sequence.size() > 1;
3784     if (result) {
3785         result = result && applyExecuted(outerSetting, innerSetting);
3786         result = result && OuterTaskExecuted(outerSetting);
3787         result = result && InnerTaskExecuted(innerSetting);
3788         result = result && InnerExecutedAfter(innerGroupNotifyId);
3789     }
3790     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3791 }
3792 
3793 // level1:parallel, delay level2:parallel, sync barrier
ParallelCase33(int code)3794 void MainAbility::ParallelCase33(int code)
3795 {
3796     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3797     Reset();
3798     TestSetting outerSetting;
3799     TestSetting innerSetting;
3800     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3801     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3802     outerSetting.delay = delayMs;
3803     innerSetting.sync_barrier = true;
3804     innerSetting.create_group = true;
3805     outerSetting.op = TestOperation::DELAY;
3806     innerSetting.op = TestOperation::ASYNC_GROUP;
3807     int taskCount = Dispatch(outerSetting, innerSetting);
3808     bool result = Wait(taskCount);
3809     result = result && task_execution_sequence.size() > 1;
3810     if (result) {
3811         result = result && applyExecuted(outerSetting, innerSetting);
3812         result = result && OuterTaskExecuted(outerSetting);
3813         result = result && InnerTaskExecuted(innerSetting);
3814         result = result && InnerExecutedAfter(innerSyncBarrierId);
3815     }
3816     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3817 }
3818 
3819 // level1:parallel, delay level2:parallel, async barrier
ParallelCase34(int code)3820 void MainAbility::ParallelCase34(int code)
3821 {
3822     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3823     Reset();
3824     TestSetting outerSetting;
3825     TestSetting innerSetting;
3826     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3827     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3828     outerSetting.delay = delayMs;
3829     innerSetting.async_barrier = true;
3830     innerSetting.create_group = true;
3831     outerSetting.op = TestOperation::DELAY;
3832     innerSetting.op = TestOperation::ASYNC_GROUP;
3833     int taskCount = Dispatch(outerSetting, innerSetting);
3834     bool result = Wait(taskCount);
3835     result = result && task_execution_sequence.size() > 1;
3836     if (result) {
3837         result = result && applyExecuted(outerSetting, innerSetting);
3838         result = result && OuterTaskExecuted(outerSetting);
3839         result = result && InnerTaskExecuted(innerSetting);
3840         result = result && InnerExecutedAfter(innerAsyncBarrierId);
3841     }
3842     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3843 }
3844 
3845 // level1:parallel, delay level2:parallel, apply
ParallelCase35(int code)3846 void MainAbility::ParallelCase35(int code)
3847 {
3848     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3849     Reset();
3850     TestSetting outerSetting;
3851     TestSetting innerSetting;
3852     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3853     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3854     outerSetting.delay = delayMs;
3855     innerSetting.apply = applyNum;
3856     outerSetting.op = TestOperation::DELAY;
3857     innerSetting.op = TestOperation::APPLY;
3858     int taskCount = Dispatch(outerSetting, innerSetting);
3859     bool result = Wait(taskCount);
3860     result = result && task_execution_sequence.size() > 1;
3861     if (result) {
3862         result = result && applyExecuted(outerSetting, innerSetting);
3863         result = result && OuterTaskExecuted(outerSetting);
3864         result = result && InnerTaskExecuted(innerSetting);
3865     }
3866     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3867 }
3868 
3869 // level1:parallel, delay level2:serial, sync
ParallelCase36(int code)3870 void MainAbility::ParallelCase36(int code)
3871 {
3872     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3873     Reset();
3874     TestSetting outerSetting;
3875     TestSetting innerSetting;
3876     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3877     innerSetting.dispatcher = TestDispatcher::SERIAL;
3878     outerSetting.delay = delayMs;
3879     outerSetting.op = TestOperation::DELAY;
3880     innerSetting.op = TestOperation::SYNC;
3881     int taskCount = Dispatch(outerSetting, innerSetting);
3882     bool result = Wait(taskCount);
3883     result = result && task_execution_sequence.size() > 1;
3884     if (result) {
3885         result = result && applyExecuted(outerSetting, innerSetting);
3886         result = result && OuterTaskExecuted(outerSetting);
3887         result = result && InnerTaskExecuted(innerSetting);
3888         std::vector<size_t> outerTaskIndex;
3889         std::vector<std::vector<size_t>> innerTaskIndex;
3890         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3891         for (int i = 0; i < testTaskCount; i++) {
3892             result = result && IsAscend(innerTaskIndex[i]);
3893         }
3894     }
3895     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3896 }
3897 
3898 // level1:parallel, delay level2:serial, async
ParallelCase37(int code)3899 void MainAbility::ParallelCase37(int code)
3900 {
3901     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3902     Reset();
3903     TestSetting outerSetting;
3904     TestSetting innerSetting;
3905     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3906     innerSetting.dispatcher = TestDispatcher::SERIAL;
3907     outerSetting.delay = delayMs;
3908     outerSetting.op = TestOperation::DELAY;
3909     innerSetting.op = TestOperation::ASYNC;
3910     int taskCount = Dispatch(outerSetting, innerSetting);
3911     bool result = Wait(taskCount);
3912     result = result && task_execution_sequence.size() > 1;
3913     if (result) {
3914         result = result && applyExecuted(outerSetting, innerSetting);
3915         result = result && OuterTaskExecuted(outerSetting);
3916         result = result && InnerTaskExecuted(innerSetting);
3917         std::vector<size_t> outerTaskIndex;
3918         std::vector<std::vector<size_t>> innerTaskIndex;
3919         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3920         for (int i = 0; i < testTaskCount; i++) {
3921             result = result && IsAscend(innerTaskIndex[i]);
3922         }
3923     }
3924     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3925 }
3926 
3927 // level1:parallel, delay level2:serial, delay
ParallelCase38(int code)3928 void MainAbility::ParallelCase38(int code)
3929 {
3930     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3931     Reset();
3932     TestSetting outerSetting;
3933     TestSetting innerSetting;
3934     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3935     innerSetting.dispatcher = TestDispatcher::SERIAL;
3936     outerSetting.delay = delayMs;
3937     innerSetting.delay = delayMs;
3938     outerSetting.op = TestOperation::DELAY;
3939     innerSetting.op = TestOperation::DELAY;
3940     int taskCount = Dispatch(outerSetting, innerSetting);
3941     bool result = Wait(taskCount);
3942     result = result && task_execution_sequence.size() > 1;
3943     if (result) {
3944         result = result && applyExecuted(outerSetting, innerSetting);
3945         result = result && OuterTaskExecuted(outerSetting);
3946         result = result && InnerTaskExecuted(innerSetting);
3947         std::vector<size_t> outerTaskIndex;
3948         std::vector<std::vector<size_t>> innerTaskIndex;
3949         GetTaskIndex(outerTaskIndex, innerTaskIndex);
3950         for (int i = 0; i < testTaskCount; i++) {
3951             result = result && IsAscend(innerTaskIndex[i]);
3952         }
3953     }
3954     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3955 }
3956 
3957 // level1:parallel, delay level2:serial, apply
ParallelCase39(int code)3958 void MainAbility::ParallelCase39(int code)
3959 {
3960     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3961     Reset();
3962     TestSetting outerSetting;
3963     TestSetting innerSetting;
3964     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3965     innerSetting.dispatcher = TestDispatcher::SERIAL;
3966     outerSetting.delay = delayMs;
3967     innerSetting.apply = applyNum;
3968     outerSetting.op = TestOperation::DELAY;
3969     innerSetting.op = TestOperation::APPLY;
3970     int taskCount = Dispatch(outerSetting, innerSetting);
3971     bool result = Wait(taskCount);
3972     result = result && task_execution_sequence.size() > 1;
3973     if (result) {
3974         result = result && applyExecuted(outerSetting, innerSetting);
3975         result = result && OuterTaskExecuted(outerSetting);
3976         result = result && InnerTaskExecuted(innerSetting);
3977     }
3978     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
3979 }
3980 
3981 // level1:parallel, group level2:parallel, sync
ParallelCase40(int code)3982 void MainAbility::ParallelCase40(int code)
3983 {
3984     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
3985     Reset();
3986     TestSetting outerSetting;
3987     TestSetting innerSetting;
3988     outerSetting.dispatcher = TestDispatcher::PARALLEL;
3989     innerSetting.dispatcher = TestDispatcher::PARALLEL;
3990     outerSetting.create_group = true;
3991     outerSetting.op = TestOperation::ASYNC_GROUP;
3992     innerSetting.op = TestOperation::SYNC;
3993     int taskCount = Dispatch(outerSetting, innerSetting);
3994     bool result = Wait(taskCount);
3995     result = result && task_execution_sequence.size() > 1;
3996     if (result) {
3997         result = result && applyExecuted(outerSetting, innerSetting);
3998         result = result && OuterTaskExecuted(outerSetting);
3999         result = result && InnerTaskExecuted(innerSetting);
4000         std::vector<size_t> outerTaskIndex;
4001         std::vector<std::vector<size_t>> innerTaskIndex;
4002         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4003         for (int i = 0; i < testTaskCount; i++) {
4004             result = result && IsAscend(innerTaskIndex[i]);
4005         }
4006     }
4007     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4008 }
4009 
4010 // level1:parallel, group level2:parallel, async
ParallelCase41(int code)4011 void MainAbility::ParallelCase41(int code)
4012 {
4013     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4014     Reset();
4015     TestSetting outerSetting;
4016     TestSetting innerSetting;
4017     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4018     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4019     outerSetting.create_group = true;
4020     outerSetting.op = TestOperation::ASYNC_GROUP;
4021     innerSetting.op = TestOperation::ASYNC;
4022     int taskCount = Dispatch(outerSetting, innerSetting);
4023     bool result = Wait(taskCount);
4024     result = result && task_execution_sequence.size() > 1;
4025     if (result) {
4026         result = result && applyExecuted(outerSetting, innerSetting);
4027         result = result && OuterTaskExecuted(outerSetting);
4028         result = result && InnerTaskExecuted(innerSetting);
4029     }
4030     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4031 }
4032 
4033 // level1:parallel, group level2:parallel, delay
ParallelCase42(int code)4034 void MainAbility::ParallelCase42(int code)
4035 {
4036     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4037     Reset();
4038     TestSetting outerSetting;
4039     TestSetting innerSetting;
4040     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4041     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4042     innerSetting.delay = delayMs;
4043     outerSetting.create_group = true;
4044     outerSetting.op = TestOperation::ASYNC_GROUP;
4045     innerSetting.op = TestOperation::DELAY;
4046     int taskCount = Dispatch(outerSetting, innerSetting);
4047     bool result = Wait(taskCount);
4048     result = result && task_execution_sequence.size() > 1;
4049     if (result) {
4050         result = result && applyExecuted(outerSetting, innerSetting);
4051         result = result && OuterTaskExecuted(outerSetting);
4052         result = result && InnerTaskExecuted(innerSetting);
4053     }
4054     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4055 }
4056 
4057 // level1:parallel, group level2:parallel, group
ParallelCase43(int code)4058 void MainAbility::ParallelCase43(int code)
4059 {
4060     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4061     Reset();
4062     TestSetting outerSetting;
4063     TestSetting innerSetting;
4064     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4065     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4066     innerSetting.create_group = true;
4067     outerSetting.create_group = true;
4068     outerSetting.op = TestOperation::ASYNC_GROUP;
4069     innerSetting.op = TestOperation::ASYNC_GROUP;
4070     int taskCount = Dispatch(outerSetting, innerSetting);
4071     bool result = Wait(taskCount);
4072     result = result && task_execution_sequence.size() > 1;
4073     if (result) {
4074         result = result && applyExecuted(outerSetting, innerSetting);
4075         result = result && OuterTaskExecuted(outerSetting);
4076         result = result && InnerTaskExecuted(innerSetting);
4077     }
4078     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4079 }
4080 
4081 // level1:parallel, group level2:parallel, group wait
ParallelCase44(int code)4082 void MainAbility::ParallelCase44(int code)
4083 {
4084     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4085     Reset();
4086     TestSetting outerSetting;
4087     TestSetting innerSetting;
4088     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4089     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4090     innerSetting.group_wait = true;
4091     innerSetting.group_timeout = groupWait;
4092     innerSetting.create_group = true;
4093     outerSetting.create_group = true;
4094     outerSetting.op = TestOperation::ASYNC_GROUP;
4095     innerSetting.op = TestOperation::ASYNC_GROUP;
4096     int taskCount = Dispatch(outerSetting, innerSetting);
4097     bool result = Wait(taskCount);
4098     result = result && task_execution_sequence.size() > 1;
4099     if (result) {
4100         result = result && applyExecuted(outerSetting, innerSetting);
4101         result = result && OuterTaskExecuted(outerSetting);
4102         result = result && InnerTaskExecuted(innerSetting);
4103     }
4104     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4105 }
4106 
4107 // level1:parallel, group level2:parallel, group notify
ParallelCase45(int code)4108 void MainAbility::ParallelCase45(int code)
4109 {
4110     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4111     Reset();
4112     TestSetting outerSetting;
4113     TestSetting innerSetting;
4114     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4115     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4116     innerSetting.create_group = true;
4117     innerSetting.group_notify = true;
4118     outerSetting.create_group = true;
4119     outerSetting.op = TestOperation::ASYNC_GROUP;
4120     innerSetting.op = TestOperation::ASYNC_GROUP;
4121     int taskCount = Dispatch(outerSetting, innerSetting);
4122     bool result = Wait(taskCount);
4123     result = result && task_execution_sequence.size() > 1;
4124     if (result) {
4125         result = result && applyExecuted(outerSetting, innerSetting);
4126         result = result && OuterTaskExecuted(outerSetting);
4127         result = result && InnerTaskExecuted(innerSetting);
4128         result = result && InnerExecutedAfter(innerGroupNotifyId);
4129     }
4130     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4131 }
4132 
4133 // level1:parallel, group level2:parallel, sync barrier
ParallelCase46(int code)4134 void MainAbility::ParallelCase46(int code)
4135 {
4136     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4137     Reset();
4138     TestSetting outerSetting;
4139     TestSetting innerSetting;
4140     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4141     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4142     innerSetting.sync_barrier = true;
4143     innerSetting.create_group = true;
4144     outerSetting.create_group = true;
4145     outerSetting.op = TestOperation::ASYNC_GROUP;
4146     innerSetting.op = TestOperation::ASYNC_GROUP;
4147     int taskCount = Dispatch(outerSetting, innerSetting);
4148     bool result = Wait(taskCount);
4149     result = result && task_execution_sequence.size() > 1;
4150     if (result) {
4151         result = result && applyExecuted(outerSetting, innerSetting);
4152         result = result && OuterTaskExecuted(outerSetting);
4153         result = result && InnerTaskExecuted(innerSetting);
4154         result = result && InnerExecutedAfter(innerSyncBarrierId);
4155     }
4156     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4157 }
4158 
4159 // level1:parallel, group level2:parallel, async barrier
ParallelCase47(int code)4160 void MainAbility::ParallelCase47(int code)
4161 {
4162     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4163     Reset();
4164     TestSetting outerSetting;
4165     TestSetting innerSetting;
4166     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4167     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4168     innerSetting.async_barrier = true;
4169     innerSetting.create_group = true;
4170     outerSetting.create_group = true;
4171     outerSetting.op = TestOperation::ASYNC_GROUP;
4172     innerSetting.op = TestOperation::ASYNC_GROUP;
4173     int taskCount = Dispatch(outerSetting, innerSetting);
4174     bool result = Wait(taskCount);
4175     result = result && task_execution_sequence.size() > 1;
4176     if (result) {
4177         result = result && applyExecuted(outerSetting, innerSetting);
4178         result = result && OuterTaskExecuted(outerSetting);
4179         result = result && InnerTaskExecuted(innerSetting);
4180         result = result && InnerExecutedAfter(innerAsyncBarrierId);
4181     }
4182     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4183 }
4184 
4185 // level1:parallel, group level2:parallel, apply
ParallelCase48(int code)4186 void MainAbility::ParallelCase48(int code)
4187 {
4188     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4189     Reset();
4190     TestSetting outerSetting;
4191     TestSetting innerSetting;
4192     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4193     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4194     innerSetting.apply = applyNum;
4195     outerSetting.create_group = true;
4196     outerSetting.op = TestOperation::ASYNC_GROUP;
4197     innerSetting.op = TestOperation::APPLY;
4198     int taskCount = Dispatch(outerSetting, innerSetting);
4199     bool result = Wait(taskCount);
4200     result = result && task_execution_sequence.size() > 1;
4201     if (result) {
4202         result = result && applyExecuted(outerSetting, innerSetting);
4203         result = result && OuterTaskExecuted(outerSetting);
4204         result = result && InnerTaskExecuted(innerSetting);
4205     }
4206     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4207 }
4208 
4209 // level1:parallel, group level2:serial, sync
ParallelCase49(int code)4210 void MainAbility::ParallelCase49(int code)
4211 {
4212     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4213     Reset();
4214     TestSetting outerSetting;
4215     TestSetting innerSetting;
4216     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4217     innerSetting.dispatcher = TestDispatcher::SERIAL;
4218     outerSetting.create_group = true;
4219     outerSetting.op = TestOperation::ASYNC_GROUP;
4220     innerSetting.op = TestOperation::SYNC;
4221     int taskCount = Dispatch(outerSetting, innerSetting);
4222     bool result = Wait(taskCount);
4223     result = result && task_execution_sequence.size() > 1;
4224     if (result) {
4225         result = result && applyExecuted(outerSetting, innerSetting);
4226         result = result && OuterTaskExecuted(outerSetting);
4227         result = result && InnerTaskExecuted(innerSetting);
4228         std::vector<size_t> outerTaskIndex;
4229         std::vector<std::vector<size_t>> innerTaskIndex;
4230         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4231         for (int i = 0; i < testTaskCount; i++) {
4232             result = result && IsAscend(innerTaskIndex[i]);
4233         }
4234     }
4235     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4236 }
4237 
4238 // level1:parallel, group level2:serial, async
ParallelCase50(int code)4239 void MainAbility::ParallelCase50(int code)
4240 {
4241     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4242     Reset();
4243     TestSetting outerSetting;
4244     TestSetting innerSetting;
4245     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4246     innerSetting.dispatcher = TestDispatcher::SERIAL;
4247     outerSetting.create_group = true;
4248     outerSetting.op = TestOperation::ASYNC_GROUP;
4249     innerSetting.op = TestOperation::ASYNC;
4250     int taskCount = Dispatch(outerSetting, innerSetting);
4251     bool result = Wait(taskCount);
4252     result = result && task_execution_sequence.size() > 1;
4253     if (result) {
4254         result = result && applyExecuted(outerSetting, innerSetting);
4255         result = result && OuterTaskExecuted(outerSetting);
4256         result = result && InnerTaskExecuted(innerSetting);
4257         std::vector<size_t> outerTaskIndex;
4258         std::vector<std::vector<size_t>> innerTaskIndex;
4259         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4260         for (int i = 0; i < testTaskCount; i++) {
4261             result = result && IsAscend(innerTaskIndex[i]);
4262         }
4263     }
4264     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4265 }
4266 
4267 // level1:parallel, group level2:serial, delay
ParallelCase51(int code)4268 void MainAbility::ParallelCase51(int code)
4269 {
4270     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4271     Reset();
4272     TestSetting outerSetting;
4273     TestSetting innerSetting;
4274     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4275     innerSetting.dispatcher = TestDispatcher::SERIAL;
4276     innerSetting.delay = delayMs;
4277     outerSetting.create_group = true;
4278     outerSetting.op = TestOperation::ASYNC_GROUP;
4279     innerSetting.op = TestOperation::DELAY;
4280     int taskCount = Dispatch(outerSetting, innerSetting);
4281     bool result = Wait(taskCount);
4282     result = result && task_execution_sequence.size() > 1;
4283     if (result) {
4284         result = result && applyExecuted(outerSetting, innerSetting);
4285         result = result && OuterTaskExecuted(outerSetting);
4286         result = result && InnerTaskExecuted(innerSetting);
4287         std::vector<size_t> outerTaskIndex;
4288         std::vector<std::vector<size_t>> innerTaskIndex;
4289         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4290         for (int i = 0; i < testTaskCount; i++) {
4291             result = result && IsAscend(innerTaskIndex[i]);
4292         }
4293     }
4294     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4295 }
4296 
4297 // level1:parallel, group level2:serial, apply
ParallelCase52(int code)4298 void MainAbility::ParallelCase52(int code)
4299 {
4300     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4301     Reset();
4302     TestSetting outerSetting;
4303     TestSetting innerSetting;
4304     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4305     innerSetting.dispatcher = TestDispatcher::SERIAL;
4306     innerSetting.apply = applyNum;
4307     outerSetting.create_group = true;
4308     outerSetting.op = TestOperation::ASYNC_GROUP;
4309     innerSetting.op = TestOperation::APPLY;
4310     int taskCount = Dispatch(outerSetting, innerSetting);
4311     bool result = Wait(taskCount);
4312     result = result && task_execution_sequence.size() > 1;
4313     if (result) {
4314         result = result && applyExecuted(outerSetting, innerSetting);
4315         result = result && OuterTaskExecuted(outerSetting);
4316         result = result && InnerTaskExecuted(innerSetting);
4317     }
4318     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4319 }
4320 
4321 // level1:parallel, group wait level2:parallel, sync
ParallelCase53(int code)4322 void MainAbility::ParallelCase53(int code)
4323 {
4324     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4325     Reset();
4326     TestSetting outerSetting;
4327     TestSetting innerSetting;
4328     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4329     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4330     outerSetting.group_wait = true;
4331     outerSetting.group_timeout = groupWait;
4332     outerSetting.create_group = true;
4333     outerSetting.op = TestOperation::ASYNC_GROUP;
4334     innerSetting.op = TestOperation::SYNC;
4335     int taskCount = Dispatch(outerSetting, innerSetting);
4336     bool result = Wait(taskCount);
4337     result = result && task_execution_sequence.size() > 1;
4338     if (result) {
4339         result = result && applyExecuted(outerSetting, innerSetting);
4340         result = result && OuterTaskExecuted(outerSetting);
4341         result = result && InnerTaskExecuted(innerSetting);
4342         std::vector<size_t> outerTaskIndex;
4343         std::vector<std::vector<size_t>> innerTaskIndex;
4344         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4345         for (int i = 0; i < testTaskCount; i++) {
4346             result = result && IsAscend(innerTaskIndex[i]);
4347         }
4348     }
4349     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4350 }
4351 
4352 // level1:parallel, group wait level2:parallel, async
ParallelCase54(int code)4353 void MainAbility::ParallelCase54(int code)
4354 {
4355     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4356     Reset();
4357     TestSetting outerSetting;
4358     TestSetting innerSetting;
4359     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4360     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4361     outerSetting.group_wait = true;
4362     outerSetting.group_timeout = groupWait;
4363     outerSetting.create_group = true;
4364     outerSetting.op = TestOperation::ASYNC_GROUP;
4365     innerSetting.op = TestOperation::ASYNC;
4366     int taskCount = Dispatch(outerSetting, innerSetting);
4367     bool result = Wait(taskCount);
4368     result = result && task_execution_sequence.size() > 1;
4369     if (result) {
4370         result = result && applyExecuted(outerSetting, innerSetting);
4371         result = result && OuterTaskExecuted(outerSetting);
4372         result = result && InnerTaskExecuted(innerSetting);
4373     }
4374     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4375 }
4376 
4377 // level1:parallel, group wait level2:parallel, delay
ParallelCase55(int code)4378 void MainAbility::ParallelCase55(int code)
4379 {
4380     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4381     Reset();
4382     TestSetting outerSetting;
4383     TestSetting innerSetting;
4384     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4385     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4386     outerSetting.group_wait = true;
4387     outerSetting.group_timeout = groupWait;
4388     innerSetting.delay = delayMs;
4389     outerSetting.create_group = true;
4390     outerSetting.op = TestOperation::ASYNC_GROUP;
4391     innerSetting.op = TestOperation::DELAY;
4392     int taskCount = Dispatch(outerSetting, innerSetting);
4393     bool result = Wait(taskCount);
4394     result = result && task_execution_sequence.size() > 1;
4395     if (result) {
4396         result = result && applyExecuted(outerSetting, innerSetting);
4397         result = result && OuterTaskExecuted(outerSetting);
4398         result = result && InnerTaskExecuted(innerSetting);
4399     }
4400     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4401 }
4402 
4403 // level1:parallel, group wait level2:parallel, group
ParallelCase56(int code)4404 void MainAbility::ParallelCase56(int code)
4405 {
4406     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4407     Reset();
4408     TestSetting outerSetting;
4409     TestSetting innerSetting;
4410     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4411     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4412     outerSetting.group_wait = true;
4413     outerSetting.group_timeout = groupWait;
4414     innerSetting.create_group = true;
4415     outerSetting.create_group = true;
4416     outerSetting.op = TestOperation::ASYNC_GROUP;
4417     innerSetting.op = TestOperation::ASYNC_GROUP;
4418     int taskCount = Dispatch(outerSetting, innerSetting);
4419     bool result = Wait(taskCount);
4420     result = result && task_execution_sequence.size() > 1;
4421     if (result) {
4422         result = result && applyExecuted(outerSetting, innerSetting);
4423         result = result && OuterTaskExecuted(outerSetting);
4424         result = result && InnerTaskExecuted(innerSetting);
4425     }
4426     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4427 }
4428 
4429 // level1:parallel, group wait level2:parallel, group wait
ParallelCase57(int code)4430 void MainAbility::ParallelCase57(int code)
4431 {
4432     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4433     Reset();
4434     TestSetting outerSetting;
4435     TestSetting innerSetting;
4436     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4437     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4438     innerSetting.group_wait = true;
4439     innerSetting.group_timeout = groupWait;
4440     outerSetting.group_wait = true;
4441     outerSetting.group_timeout = groupWait;
4442     innerSetting.create_group = true;
4443     outerSetting.create_group = true;
4444     outerSetting.op = TestOperation::ASYNC_GROUP;
4445     innerSetting.op = TestOperation::ASYNC_GROUP;
4446     int taskCount = Dispatch(outerSetting, innerSetting);
4447     bool result = Wait(taskCount);
4448     result = result && task_execution_sequence.size() > 1;
4449     if (result) {
4450         result = result && applyExecuted(outerSetting, innerSetting);
4451         result = result && OuterTaskExecuted(outerSetting);
4452         result = result && InnerTaskExecuted(innerSetting);
4453     }
4454     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4455 }
4456 
4457 // level1:parallel, group wait level2:parallel, group notify
ParallelCase58(int code)4458 void MainAbility::ParallelCase58(int code)
4459 {
4460     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4461     Reset();
4462     TestSetting outerSetting;
4463     TestSetting innerSetting;
4464     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4465     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4466     outerSetting.group_wait = true;
4467     outerSetting.group_timeout = groupWait;
4468     innerSetting.create_group = true;
4469     innerSetting.group_notify = true;
4470     outerSetting.create_group = true;
4471     outerSetting.op = TestOperation::ASYNC_GROUP;
4472     innerSetting.op = TestOperation::ASYNC_GROUP;
4473     int taskCount = Dispatch(outerSetting, innerSetting);
4474     bool result = Wait(taskCount);
4475     result = result && task_execution_sequence.size() > 1;
4476     if (result) {
4477         result = result && applyExecuted(outerSetting, innerSetting);
4478         result = result && OuterTaskExecuted(outerSetting);
4479         result = result && InnerTaskExecuted(innerSetting);
4480         result = result && InnerExecutedAfter(innerGroupNotifyId);
4481     }
4482     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4483 }
4484 
4485 // level1:parallel, group wait level2:parallel, sync barrier
ParallelCase59(int code)4486 void MainAbility::ParallelCase59(int code)
4487 {
4488     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4489     Reset();
4490     TestSetting outerSetting;
4491     TestSetting innerSetting;
4492     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4493     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4494     outerSetting.group_wait = true;
4495     outerSetting.group_timeout = groupWait;
4496     innerSetting.sync_barrier = true;
4497     innerSetting.create_group = true;
4498     outerSetting.create_group = true;
4499     outerSetting.op = TestOperation::ASYNC_GROUP;
4500     innerSetting.op = TestOperation::ASYNC_GROUP;
4501     int taskCount = Dispatch(outerSetting, innerSetting);
4502     bool result = Wait(taskCount);
4503     result = result && task_execution_sequence.size() > 1;
4504     if (result) {
4505         result = result && applyExecuted(outerSetting, innerSetting);
4506         result = result && OuterTaskExecuted(outerSetting);
4507         result = result && InnerTaskExecuted(innerSetting);
4508         result = result && InnerExecutedAfter(innerSyncBarrierId);
4509     }
4510     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4511 }
4512 
4513 // level1:parallel, group wait level2:parallel, async barrier
ParallelCase60(int code)4514 void MainAbility::ParallelCase60(int code)
4515 {
4516     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4517     Reset();
4518     TestSetting outerSetting;
4519     TestSetting innerSetting;
4520     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4521     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4522     outerSetting.group_wait = true;
4523     outerSetting.group_timeout = groupWait;
4524     innerSetting.async_barrier = true;
4525     innerSetting.create_group = true;
4526     outerSetting.create_group = true;
4527     outerSetting.op = TestOperation::ASYNC_GROUP;
4528     innerSetting.op = TestOperation::ASYNC_GROUP;
4529     int taskCount = Dispatch(outerSetting, innerSetting);
4530     bool result = Wait(taskCount);
4531     result = result && task_execution_sequence.size() > 1;
4532     if (result) {
4533         result = result && applyExecuted(outerSetting, innerSetting);
4534         result = result && OuterTaskExecuted(outerSetting);
4535         result = result && InnerTaskExecuted(innerSetting);
4536         result = result && InnerExecutedAfter(innerAsyncBarrierId);
4537     }
4538     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4539 }
4540 
4541 // level1:parallel, group wait level2:parallel, apply
ParallelCase61(int code)4542 void MainAbility::ParallelCase61(int code)
4543 {
4544     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4545     Reset();
4546     TestSetting outerSetting;
4547     TestSetting innerSetting;
4548     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4549     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4550     outerSetting.group_wait = true;
4551     outerSetting.group_timeout = groupWait;
4552     innerSetting.apply = applyNum;
4553     outerSetting.create_group = true;
4554     outerSetting.op = TestOperation::ASYNC_GROUP;
4555     innerSetting.op = TestOperation::APPLY;
4556     int taskCount = Dispatch(outerSetting, innerSetting);
4557     bool result = Wait(taskCount);
4558     result = result && task_execution_sequence.size() > 1;
4559     if (result) {
4560         result = result && applyExecuted(outerSetting, innerSetting);
4561         result = result && OuterTaskExecuted(outerSetting);
4562         result = result && InnerTaskExecuted(innerSetting);
4563     }
4564     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4565 }
4566 
4567 // level1:parallel, group wait level2:serial, sync
ParallelCase62(int code)4568 void MainAbility::ParallelCase62(int code)
4569 {
4570     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4571     Reset();
4572     TestSetting outerSetting;
4573     TestSetting innerSetting;
4574     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4575     innerSetting.dispatcher = TestDispatcher::SERIAL;
4576     outerSetting.group_wait = true;
4577     outerSetting.group_timeout = groupWait;
4578     outerSetting.create_group = true;
4579     outerSetting.op = TestOperation::ASYNC_GROUP;
4580     innerSetting.op = TestOperation::SYNC;
4581     int taskCount = Dispatch(outerSetting, innerSetting);
4582     bool result = Wait(taskCount);
4583     result = result && task_execution_sequence.size() > 1;
4584     if (result) {
4585         result = result && applyExecuted(outerSetting, innerSetting);
4586         result = result && OuterTaskExecuted(outerSetting);
4587         result = result && InnerTaskExecuted(innerSetting);
4588         std::vector<size_t> outerTaskIndex;
4589         std::vector<std::vector<size_t>> innerTaskIndex;
4590         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4591         for (int i = 0; i < testTaskCount; i++) {
4592             result = result && IsAscend(innerTaskIndex[i]);
4593         }
4594     }
4595     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4596 }
4597 
4598 // level1:parallel, group wait level2:serial, async
ParallelCase63(int code)4599 void MainAbility::ParallelCase63(int code)
4600 {
4601     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4602     Reset();
4603     TestSetting outerSetting;
4604     TestSetting innerSetting;
4605     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4606     innerSetting.dispatcher = TestDispatcher::SERIAL;
4607     outerSetting.group_wait = true;
4608     outerSetting.group_timeout = groupWait;
4609     outerSetting.create_group = true;
4610     outerSetting.op = TestOperation::ASYNC_GROUP;
4611     innerSetting.op = TestOperation::ASYNC;
4612     int taskCount = Dispatch(outerSetting, innerSetting);
4613     bool result = Wait(taskCount);
4614     result = result && task_execution_sequence.size() > 1;
4615     if (result) {
4616         result = result && applyExecuted(outerSetting, innerSetting);
4617         result = result && OuterTaskExecuted(outerSetting);
4618         result = result && InnerTaskExecuted(innerSetting);
4619         std::vector<size_t> outerTaskIndex;
4620         std::vector<std::vector<size_t>> innerTaskIndex;
4621         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4622         for (int i = 0; i < testTaskCount; i++) {
4623             result = result && IsAscend(innerTaskIndex[i]);
4624         }
4625     }
4626     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4627 }
4628 
4629 // level1:parallel, group wait level2:serial, delay
ParallelCase64(int code)4630 void MainAbility::ParallelCase64(int code)
4631 {
4632     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4633     Reset();
4634     TestSetting outerSetting;
4635     TestSetting innerSetting;
4636     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4637     innerSetting.dispatcher = TestDispatcher::SERIAL;
4638     outerSetting.group_wait = true;
4639     outerSetting.group_timeout = groupWait;
4640     innerSetting.delay = delayMs;
4641     outerSetting.create_group = true;
4642     outerSetting.op = TestOperation::ASYNC_GROUP;
4643     innerSetting.op = TestOperation::DELAY;
4644     int taskCount = Dispatch(outerSetting, innerSetting);
4645     bool result = Wait(taskCount);
4646     result = result && task_execution_sequence.size() > 1;
4647     if (result) {
4648         result = result && applyExecuted(outerSetting, innerSetting);
4649         result = result && OuterTaskExecuted(outerSetting);
4650         result = result && InnerTaskExecuted(innerSetting);
4651         std::vector<size_t> outerTaskIndex;
4652         std::vector<std::vector<size_t>> innerTaskIndex;
4653         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4654         for (int i = 0; i < testTaskCount; i++) {
4655             result = result && IsAscend(innerTaskIndex[i]);
4656         }
4657     }
4658     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4659 }
4660 
4661 // level1:parallel, group wait level2:serial, apply
ParallelCase65(int code)4662 void MainAbility::ParallelCase65(int code)
4663 {
4664     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4665     Reset();
4666     TestSetting outerSetting;
4667     TestSetting innerSetting;
4668     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4669     innerSetting.dispatcher = TestDispatcher::SERIAL;
4670     outerSetting.group_wait = true;
4671     outerSetting.group_timeout = groupWait;
4672     innerSetting.apply = applyNum;
4673     outerSetting.create_group = true;
4674     outerSetting.op = TestOperation::ASYNC_GROUP;
4675     innerSetting.op = TestOperation::APPLY;
4676     int taskCount = Dispatch(outerSetting, innerSetting);
4677     bool result = Wait(taskCount);
4678     result = result && task_execution_sequence.size() > 1;
4679     if (result) {
4680         result = result && applyExecuted(outerSetting, innerSetting);
4681         result = result && OuterTaskExecuted(outerSetting);
4682         result = result && InnerTaskExecuted(innerSetting);
4683     }
4684     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4685 }
4686 
4687 // level1:parallel, group notify level2:parallel, sync
ParallelCase66(int code)4688 void MainAbility::ParallelCase66(int code)
4689 {
4690     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4691     Reset();
4692     TestSetting outerSetting;
4693     TestSetting innerSetting;
4694     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4695     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4696     outerSetting.create_group = true;
4697     outerSetting.group_notify = true;
4698     outerSetting.op = TestOperation::ASYNC_GROUP;
4699     innerSetting.op = TestOperation::SYNC;
4700     int taskCount = Dispatch(outerSetting, innerSetting);
4701     bool result = Wait(taskCount);
4702     result = result && task_execution_sequence.size() > 1;
4703     if (result) {
4704         result = result && applyExecuted(outerSetting, innerSetting);
4705         result = result && OuterTaskExecuted(outerSetting);
4706         result = result && InnerTaskExecuted(innerSetting);
4707         std::vector<size_t> outerTaskIndex;
4708         std::vector<std::vector<size_t>> innerTaskIndex;
4709         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4710         for (int i = 0; i < testTaskCount; i++) {
4711             result = result && IsAscend(innerTaskIndex[i]);
4712         }
4713         result = result && OuterExecutedAfter(outerGroupNotifyId);
4714     }
4715     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4716 }
4717 
4718 // level1:parallel, group notify level2:parallel, async
ParallelCase67(int code)4719 void MainAbility::ParallelCase67(int code)
4720 {
4721     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4722     Reset();
4723     TestSetting outerSetting;
4724     TestSetting innerSetting;
4725     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4726     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4727     outerSetting.create_group = true;
4728     outerSetting.group_notify = true;
4729     outerSetting.op = TestOperation::ASYNC_GROUP;
4730     innerSetting.op = TestOperation::ASYNC;
4731     int taskCount = Dispatch(outerSetting, innerSetting);
4732     bool result = Wait(taskCount);
4733     result = result && task_execution_sequence.size() > 1;
4734     if (result) {
4735         result = result && applyExecuted(outerSetting, innerSetting);
4736         result = result && OuterTaskExecuted(outerSetting);
4737         result = result && InnerTaskExecuted(innerSetting);
4738         result = result && OuterExecutedAfter(outerGroupNotifyId);
4739     }
4740     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4741 }
4742 
4743 // level1:parallel, group notify level2:parallel, delay
ParallelCase68(int code)4744 void MainAbility::ParallelCase68(int code)
4745 {
4746     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4747     Reset();
4748     TestSetting outerSetting;
4749     TestSetting innerSetting;
4750     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4751     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4752     innerSetting.delay = delayMs;
4753     outerSetting.create_group = true;
4754     outerSetting.group_notify = true;
4755     outerSetting.op = TestOperation::ASYNC_GROUP;
4756     innerSetting.op = TestOperation::DELAY;
4757     int taskCount = Dispatch(outerSetting, innerSetting);
4758     bool result = Wait(taskCount);
4759     result = result && task_execution_sequence.size() > 1;
4760     if (result) {
4761         result = result && applyExecuted(outerSetting, innerSetting);
4762         result = result && OuterTaskExecuted(outerSetting);
4763         result = result && InnerTaskExecuted(innerSetting);
4764         result = result && OuterExecutedAfter(outerGroupNotifyId);
4765     }
4766     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4767 }
4768 
4769 // level1:parallel, group notify level2:parallel, group
ParallelCase69(int code)4770 void MainAbility::ParallelCase69(int code)
4771 {
4772     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4773     Reset();
4774     TestSetting outerSetting;
4775     TestSetting innerSetting;
4776     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4777     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4778     innerSetting.create_group = true;
4779     outerSetting.create_group = true;
4780     outerSetting.group_notify = true;
4781     outerSetting.op = TestOperation::ASYNC_GROUP;
4782     innerSetting.op = TestOperation::ASYNC_GROUP;
4783     int taskCount = Dispatch(outerSetting, innerSetting);
4784     bool result = Wait(taskCount);
4785     result = result && task_execution_sequence.size() > 1;
4786     if (result) {
4787         result = result && applyExecuted(outerSetting, innerSetting);
4788         result = result && OuterTaskExecuted(outerSetting);
4789         result = result && InnerTaskExecuted(innerSetting);
4790         result = result && OuterExecutedAfter(outerGroupNotifyId);
4791     }
4792     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4793 }
4794 
4795 // level1:parallel, group notify level2:parallel, group wait
ParallelCase70(int code)4796 void MainAbility::ParallelCase70(int code)
4797 {
4798     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4799     Reset();
4800     TestSetting outerSetting;
4801     TestSetting innerSetting;
4802     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4803     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4804     innerSetting.group_wait = true;
4805     innerSetting.group_timeout = groupWait;
4806     innerSetting.create_group = true;
4807     outerSetting.create_group = true;
4808     outerSetting.group_notify = true;
4809     outerSetting.op = TestOperation::ASYNC_GROUP;
4810     innerSetting.op = TestOperation::ASYNC_GROUP;
4811     int taskCount = Dispatch(outerSetting, innerSetting);
4812     bool result = Wait(taskCount);
4813     result = result && task_execution_sequence.size() > 1;
4814     if (result) {
4815         result = result && applyExecuted(outerSetting, innerSetting);
4816         result = result && OuterTaskExecuted(outerSetting);
4817         result = result && InnerTaskExecuted(innerSetting);
4818         result = result && OuterExecutedAfter(outerGroupNotifyId);
4819     }
4820     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4821 }
4822 
4823 // level1:parallel, group notify level2:parallel, group notify
ParallelCase71(int code)4824 void MainAbility::ParallelCase71(int code)
4825 {
4826     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4827     Reset();
4828     TestSetting outerSetting;
4829     TestSetting innerSetting;
4830     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4831     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4832     innerSetting.create_group = true;
4833     innerSetting.group_notify = true;
4834     outerSetting.create_group = true;
4835     outerSetting.group_notify = true;
4836     outerSetting.op = TestOperation::ASYNC_GROUP;
4837     innerSetting.op = TestOperation::ASYNC_GROUP;
4838     int taskCount = Dispatch(outerSetting, innerSetting);
4839     bool result = Wait(taskCount);
4840     result = result && task_execution_sequence.size() > 1;
4841     if (result) {
4842         result = result && applyExecuted(outerSetting, innerSetting);
4843         result = result && OuterTaskExecuted(outerSetting);
4844         result = result && InnerTaskExecuted(innerSetting);
4845         result = result && OuterExecutedAfter(outerGroupNotifyId);
4846         result = result && InnerExecutedAfter(innerGroupNotifyId);
4847     }
4848     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4849 }
4850 
4851 // level1:parallel, group notify level2:parallel, sync barrier
ParallelCase72(int code)4852 void MainAbility::ParallelCase72(int code)
4853 {
4854     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4855     Reset();
4856     TestSetting outerSetting;
4857     TestSetting innerSetting;
4858     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4859     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4860     innerSetting.sync_barrier = true;
4861     innerSetting.create_group = true;
4862     outerSetting.create_group = true;
4863     outerSetting.group_notify = true;
4864     outerSetting.op = TestOperation::ASYNC_GROUP;
4865     innerSetting.op = TestOperation::ASYNC_GROUP;
4866     int taskCount = Dispatch(outerSetting, innerSetting);
4867     bool result = Wait(taskCount);
4868     result = result && task_execution_sequence.size() > 1;
4869     if (result) {
4870         result = result && applyExecuted(outerSetting, innerSetting);
4871         result = result && OuterTaskExecuted(outerSetting);
4872         result = result && InnerTaskExecuted(innerSetting);
4873         result = result && InnerExecutedAfter(innerSyncBarrierId);
4874         result = result && OuterExecutedAfter(outerGroupNotifyId);
4875     }
4876     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4877 }
4878 
4879 // level1:parallel, group notify level2:parallel, async barrier
ParallelCase73(int code)4880 void MainAbility::ParallelCase73(int code)
4881 {
4882     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4883     Reset();
4884     TestSetting outerSetting;
4885     TestSetting innerSetting;
4886     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4887     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4888     innerSetting.async_barrier = true;
4889     innerSetting.create_group = true;
4890     outerSetting.create_group = true;
4891     outerSetting.group_notify = true;
4892     outerSetting.op = TestOperation::ASYNC_GROUP;
4893     innerSetting.op = TestOperation::ASYNC_GROUP;
4894     int taskCount = Dispatch(outerSetting, innerSetting);
4895     bool result = Wait(taskCount);
4896     result = result && task_execution_sequence.size() > 1;
4897     if (result) {
4898         result = result && applyExecuted(outerSetting, innerSetting);
4899         result = result && OuterTaskExecuted(outerSetting);
4900         result = result && InnerTaskExecuted(innerSetting);
4901         result = result && InnerExecutedAfter(innerAsyncBarrierId);
4902         result = result && OuterExecutedAfter(outerGroupNotifyId);
4903     }
4904     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4905 }
4906 
4907 // level1:parallel, group notify level2:parallel, apply
ParallelCase74(int code)4908 void MainAbility::ParallelCase74(int code)
4909 {
4910     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4911     Reset();
4912     TestSetting outerSetting;
4913     TestSetting innerSetting;
4914     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4915     innerSetting.dispatcher = TestDispatcher::PARALLEL;
4916     innerSetting.apply = applyNum;
4917     outerSetting.create_group = true;
4918     outerSetting.group_notify = true;
4919     outerSetting.op = TestOperation::ASYNC_GROUP;
4920     innerSetting.op = TestOperation::APPLY;
4921     int taskCount = Dispatch(outerSetting, innerSetting);
4922     bool result = Wait(taskCount);
4923     result = result && task_execution_sequence.size() > 1;
4924     if (result) {
4925         result = result && applyExecuted(outerSetting, innerSetting);
4926         result = result && OuterTaskExecuted(outerSetting);
4927         result = result && InnerTaskExecuted(innerSetting);
4928         result = result && OuterExecutedAfter(outerGroupNotifyId);
4929     }
4930     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4931 }
4932 
4933 // level1:parallel, group notify level2:serial, sync
ParallelCase75(int code)4934 void MainAbility::ParallelCase75(int code)
4935 {
4936     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4937     Reset();
4938     TestSetting outerSetting;
4939     TestSetting innerSetting;
4940     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4941     innerSetting.dispatcher = TestDispatcher::SERIAL;
4942     outerSetting.create_group = true;
4943     outerSetting.group_notify = true;
4944     outerSetting.op = TestOperation::ASYNC_GROUP;
4945     innerSetting.op = TestOperation::SYNC;
4946     int taskCount = Dispatch(outerSetting, innerSetting);
4947     bool result = Wait(taskCount);
4948     result = result && task_execution_sequence.size() > 1;
4949     if (result) {
4950         result = result && applyExecuted(outerSetting, innerSetting);
4951         result = result && OuterTaskExecuted(outerSetting);
4952         result = result && InnerTaskExecuted(innerSetting);
4953         std::vector<size_t> outerTaskIndex;
4954         std::vector<std::vector<size_t>> innerTaskIndex;
4955         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4956         for (int i = 0; i < testTaskCount; i++) {
4957             result = result && IsAscend(innerTaskIndex[i]);
4958         }
4959         result = result && OuterExecutedAfter(outerGroupNotifyId);
4960     }
4961     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4962 }
4963 
4964 // level1:parallel, group notify level2:serial, async
ParallelCase76(int code)4965 void MainAbility::ParallelCase76(int code)
4966 {
4967     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4968     Reset();
4969     TestSetting outerSetting;
4970     TestSetting innerSetting;
4971     outerSetting.dispatcher = TestDispatcher::PARALLEL;
4972     innerSetting.dispatcher = TestDispatcher::SERIAL;
4973     outerSetting.create_group = true;
4974     outerSetting.group_notify = true;
4975     outerSetting.op = TestOperation::ASYNC_GROUP;
4976     innerSetting.op = TestOperation::ASYNC;
4977     int taskCount = Dispatch(outerSetting, innerSetting);
4978     bool result = Wait(taskCount);
4979     result = result && task_execution_sequence.size() > 1;
4980     if (result) {
4981         result = result && applyExecuted(outerSetting, innerSetting);
4982         result = result && OuterTaskExecuted(outerSetting);
4983         result = result && InnerTaskExecuted(innerSetting);
4984         std::vector<size_t> outerTaskIndex;
4985         std::vector<std::vector<size_t>> innerTaskIndex;
4986         GetTaskIndex(outerTaskIndex, innerTaskIndex);
4987         for (int i = 0; i < testTaskCount; i++) {
4988             result = result && IsAscend(innerTaskIndex[i]);
4989         }
4990         result = result && OuterExecutedAfter(outerGroupNotifyId);
4991     }
4992     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
4993 }
4994 
4995 // level1:parallel, group notify level2:serial, delay
ParallelCase77(int code)4996 void MainAbility::ParallelCase77(int code)
4997 {
4998     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
4999     Reset();
5000     TestSetting outerSetting;
5001     TestSetting innerSetting;
5002     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5003     innerSetting.dispatcher = TestDispatcher::SERIAL;
5004     innerSetting.delay = delayMs;
5005     outerSetting.create_group = true;
5006     outerSetting.group_notify = true;
5007     outerSetting.op = TestOperation::ASYNC_GROUP;
5008     innerSetting.op = TestOperation::DELAY;
5009     int taskCount = Dispatch(outerSetting, innerSetting);
5010     bool result = Wait(taskCount);
5011     result = result && task_execution_sequence.size() > 1;
5012     if (result) {
5013         result = result && applyExecuted(outerSetting, innerSetting);
5014         result = result && OuterTaskExecuted(outerSetting);
5015         result = result && InnerTaskExecuted(innerSetting);
5016         std::vector<size_t> outerTaskIndex;
5017         std::vector<std::vector<size_t>> innerTaskIndex;
5018         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5019         for (int i = 0; i < testTaskCount; i++) {
5020             result = result && IsAscend(innerTaskIndex[i]);
5021         }
5022         result = result && OuterExecutedAfter(outerGroupNotifyId);
5023     }
5024     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5025 }
5026 
5027 // level1:parallel, group notify level2:serial, apply
ParallelCase78(int code)5028 void MainAbility::ParallelCase78(int code)
5029 {
5030     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5031     Reset();
5032     TestSetting outerSetting;
5033     TestSetting innerSetting;
5034     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5035     innerSetting.dispatcher = TestDispatcher::SERIAL;
5036     innerSetting.apply = applyNum;
5037     outerSetting.create_group = true;
5038     outerSetting.group_notify = true;
5039     outerSetting.op = TestOperation::ASYNC_GROUP;
5040     innerSetting.op = TestOperation::APPLY;
5041     int taskCount = Dispatch(outerSetting, innerSetting);
5042     bool result = Wait(taskCount);
5043     result = result && task_execution_sequence.size() > 1;
5044     if (result) {
5045         result = result && applyExecuted(outerSetting, innerSetting);
5046         result = result && OuterTaskExecuted(outerSetting);
5047         result = result && InnerTaskExecuted(innerSetting);
5048         result = result && OuterExecutedAfter(outerGroupNotifyId);
5049     }
5050     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5051 }
5052 
5053 // level1:parallel, sync barrier level2:parallel, sync
ParallelCase79(int code)5054 void MainAbility::ParallelCase79(int code)
5055 {
5056     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5057     Reset();
5058     TestSetting outerSetting;
5059     TestSetting innerSetting;
5060     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5061     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5062     outerSetting.sync_barrier = true;
5063     outerSetting.create_group = true;
5064     outerSetting.op = TestOperation::ASYNC_GROUP;
5065     innerSetting.op = TestOperation::SYNC;
5066     int taskCount = Dispatch(outerSetting, innerSetting);
5067     bool result = Wait(taskCount);
5068     result = result && task_execution_sequence.size() > 1;
5069     if (result) {
5070         result = result && applyExecuted(outerSetting, innerSetting);
5071         result = result && OuterTaskExecuted(outerSetting);
5072         result = result && InnerTaskExecuted(innerSetting);
5073         std::vector<size_t> outerTaskIndex;
5074         std::vector<std::vector<size_t>> innerTaskIndex;
5075         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5076         for (int i = 0; i < testTaskCount; i++) {
5077             result = result && IsAscend(innerTaskIndex[i]);
5078         }
5079         result = result && OuterExecutedAfter(outerSyncBarrierId);
5080     }
5081     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5082 }
5083 
5084 // level1:parallel, sync barrier level2:parallel, async
ParallelCase80(int code)5085 void MainAbility::ParallelCase80(int code)
5086 {
5087     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5088     Reset();
5089     TestSetting outerSetting;
5090     TestSetting innerSetting;
5091     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5092     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5093     outerSetting.sync_barrier = true;
5094     outerSetting.create_group = true;
5095     outerSetting.op = TestOperation::ASYNC_GROUP;
5096     innerSetting.op = TestOperation::ASYNC;
5097     int taskCount = Dispatch(outerSetting, innerSetting);
5098     bool result = Wait(taskCount);
5099     result = result && task_execution_sequence.size() > 1;
5100     if (result) {
5101         result = result && applyExecuted(outerSetting, innerSetting);
5102         result = result && OuterTaskExecuted(outerSetting);
5103         result = result && InnerTaskExecuted(innerSetting);
5104         result = result && OuterExecutedAfter(outerSyncBarrierId);
5105     }
5106     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5107 }
5108 
5109 // level1:parallel, sync barrier level2:parallel, delay
ParallelCase81(int code)5110 void MainAbility::ParallelCase81(int code)
5111 {
5112     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5113     Reset();
5114     TestSetting outerSetting;
5115     TestSetting innerSetting;
5116     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5117     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5118     innerSetting.delay = delayMs;
5119     outerSetting.sync_barrier = true;
5120     outerSetting.create_group = true;
5121     outerSetting.op = TestOperation::ASYNC_GROUP;
5122     innerSetting.op = TestOperation::DELAY;
5123     int taskCount = Dispatch(outerSetting, innerSetting);
5124     bool result = Wait(taskCount);
5125     result = result && task_execution_sequence.size() > 1;
5126     if (result) {
5127         result = result && applyExecuted(outerSetting, innerSetting);
5128         result = result && OuterTaskExecuted(outerSetting);
5129         result = result && InnerTaskExecuted(innerSetting);
5130         result = result && OuterExecutedAfter(outerSyncBarrierId);
5131     }
5132     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5133 }
5134 
5135 // level1:parallel, sync barrier level2:parallel, group
ParallelCase82(int code)5136 void MainAbility::ParallelCase82(int code)
5137 {
5138     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5139     Reset();
5140     TestSetting outerSetting;
5141     TestSetting innerSetting;
5142     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5143     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5144     innerSetting.create_group = true;
5145     outerSetting.sync_barrier = true;
5146     outerSetting.create_group = true;
5147     outerSetting.op = TestOperation::ASYNC_GROUP;
5148     innerSetting.op = TestOperation::ASYNC_GROUP;
5149     int taskCount = Dispatch(outerSetting, innerSetting);
5150     bool result = Wait(taskCount);
5151     result = result && task_execution_sequence.size() > 1;
5152     if (result) {
5153         result = result && applyExecuted(outerSetting, innerSetting);
5154         result = result && OuterTaskExecuted(outerSetting);
5155         result = result && InnerTaskExecuted(innerSetting);
5156         result = result && OuterExecutedAfter(outerSyncBarrierId);
5157     }
5158     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5159 }
5160 
5161 // level1:parallel, sync barrier level2:parallel, group wait
ParallelCase83(int code)5162 void MainAbility::ParallelCase83(int code)
5163 {
5164     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5165     Reset();
5166     TestSetting outerSetting;
5167     TestSetting innerSetting;
5168     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5169     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5170     innerSetting.group_wait = true;
5171     innerSetting.group_timeout = groupWait;
5172     innerSetting.create_group = true;
5173     outerSetting.sync_barrier = true;
5174     outerSetting.create_group = true;
5175     outerSetting.op = TestOperation::ASYNC_GROUP;
5176     innerSetting.op = TestOperation::ASYNC_GROUP;
5177     int taskCount = Dispatch(outerSetting, innerSetting);
5178     bool result = Wait(taskCount);
5179     result = result && task_execution_sequence.size() > 1;
5180     if (result) {
5181         result = result && applyExecuted(outerSetting, innerSetting);
5182         result = result && OuterTaskExecuted(outerSetting);
5183         result = result && InnerTaskExecuted(innerSetting);
5184         result = result && OuterExecutedAfter(outerSyncBarrierId);
5185     }
5186     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5187 }
5188 
5189 // level1:parallel, sync barrier level2:parallel, group notify
ParallelCase84(int code)5190 void MainAbility::ParallelCase84(int code)
5191 {
5192     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5193     Reset();
5194     TestSetting outerSetting;
5195     TestSetting innerSetting;
5196     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5197     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5198     innerSetting.create_group = true;
5199     innerSetting.group_notify = true;
5200     outerSetting.sync_barrier = true;
5201     outerSetting.create_group = true;
5202     outerSetting.op = TestOperation::ASYNC_GROUP;
5203     innerSetting.op = TestOperation::ASYNC_GROUP;
5204     int taskCount = Dispatch(outerSetting, innerSetting);
5205     bool result = Wait(taskCount);
5206     result = result && task_execution_sequence.size() > 1;
5207     if (result) {
5208         result = result && applyExecuted(outerSetting, innerSetting);
5209         result = result && OuterTaskExecuted(outerSetting);
5210         result = result && InnerTaskExecuted(innerSetting);
5211         result = result && OuterExecutedAfter(outerSyncBarrierId);
5212         result = result && InnerExecutedAfter(innerGroupNotifyId);
5213     }
5214     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5215 }
5216 
5217 // level1:parallel, sync barrier level2:parallel, sync barrier
ParallelCase85(int code)5218 void MainAbility::ParallelCase85(int code)
5219 {
5220     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5221     Reset();
5222     TestSetting outerSetting;
5223     TestSetting innerSetting;
5224     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5225     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5226     innerSetting.sync_barrier = true;
5227     innerSetting.create_group = true;
5228     outerSetting.sync_barrier = true;
5229     outerSetting.create_group = true;
5230     outerSetting.op = TestOperation::ASYNC_GROUP;
5231     innerSetting.op = TestOperation::ASYNC_GROUP;
5232     int taskCount = Dispatch(outerSetting, innerSetting);
5233     bool result = Wait(taskCount);
5234     result = result && task_execution_sequence.size() > 1;
5235     if (result) {
5236         result = result && applyExecuted(outerSetting, innerSetting);
5237         result = result && OuterTaskExecuted(outerSetting);
5238         result = result && InnerTaskExecuted(innerSetting);
5239         result = result && OuterExecutedAfter(outerSyncBarrierId);
5240         result = result && InnerExecutedAfter(innerSyncBarrierId);
5241     }
5242     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5243 }
5244 
5245 // level1:parallel, sync barrier level2:parallel, async barrier
ParallelCase86(int code)5246 void MainAbility::ParallelCase86(int code)
5247 {
5248     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5249     Reset();
5250     TestSetting outerSetting;
5251     TestSetting innerSetting;
5252     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5253     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5254     innerSetting.async_barrier = true;
5255     innerSetting.create_group = true;
5256     outerSetting.sync_barrier = true;
5257     outerSetting.create_group = true;
5258     outerSetting.op = TestOperation::ASYNC_GROUP;
5259     innerSetting.op = TestOperation::ASYNC_GROUP;
5260     int taskCount = Dispatch(outerSetting, innerSetting);
5261     bool result = Wait(taskCount);
5262     result = result && task_execution_sequence.size() > 1;
5263     if (result) {
5264         result = result && applyExecuted(outerSetting, innerSetting);
5265         result = result && OuterTaskExecuted(outerSetting);
5266         result = result && InnerTaskExecuted(innerSetting);
5267         result = result && OuterExecutedAfter(outerSyncBarrierId);
5268         result = result && InnerExecutedAfter(innerAsyncBarrierId);
5269     }
5270     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5271 }
5272 
5273 // level1:parallel, sync barrier level2:parallel, apply
ParallelCase87(int code)5274 void MainAbility::ParallelCase87(int code)
5275 {
5276     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5277     Reset();
5278     TestSetting outerSetting;
5279     TestSetting innerSetting;
5280     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5281     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5282     innerSetting.apply = applyNum;
5283     outerSetting.sync_barrier = true;
5284     outerSetting.create_group = true;
5285     outerSetting.op = TestOperation::ASYNC_GROUP;
5286     innerSetting.op = TestOperation::APPLY;
5287     int taskCount = Dispatch(outerSetting, innerSetting);
5288     bool result = Wait(taskCount);
5289     result = result && task_execution_sequence.size() > 1;
5290     if (result) {
5291         result = result && applyExecuted(outerSetting, innerSetting);
5292         result = result && OuterTaskExecuted(outerSetting);
5293         result = result && InnerTaskExecuted(innerSetting);
5294         result = result && OuterExecutedAfter(outerSyncBarrierId);
5295     }
5296     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5297 }
5298 
5299 // level1:parallel, sync barrier level2:serial, sync
ParallelCase88(int code)5300 void MainAbility::ParallelCase88(int code)
5301 {
5302     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5303     Reset();
5304     TestSetting outerSetting;
5305     TestSetting innerSetting;
5306     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5307     innerSetting.dispatcher = TestDispatcher::SERIAL;
5308     outerSetting.sync_barrier = true;
5309     outerSetting.create_group = true;
5310     outerSetting.op = TestOperation::ASYNC_GROUP;
5311     innerSetting.op = TestOperation::SYNC;
5312     int taskCount = Dispatch(outerSetting, innerSetting);
5313     bool result = Wait(taskCount);
5314     result = result && task_execution_sequence.size() > 1;
5315     if (result) {
5316         result = result && applyExecuted(outerSetting, innerSetting);
5317         result = result && OuterTaskExecuted(outerSetting);
5318         result = result && InnerTaskExecuted(innerSetting);
5319         std::vector<size_t> outerTaskIndex;
5320         std::vector<std::vector<size_t>> innerTaskIndex;
5321         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5322         for (int i = 0; i < testTaskCount; i++) {
5323             result = result && IsAscend(innerTaskIndex[i]);
5324         }
5325         result = result && OuterExecutedAfter(outerSyncBarrierId);
5326     }
5327     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5328 }
5329 
5330 // level1:parallel, sync barrier level2:serial, async
ParallelCase89(int code)5331 void MainAbility::ParallelCase89(int code)
5332 {
5333     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5334     Reset();
5335     TestSetting outerSetting;
5336     TestSetting innerSetting;
5337     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5338     innerSetting.dispatcher = TestDispatcher::SERIAL;
5339     outerSetting.sync_barrier = true;
5340     outerSetting.create_group = true;
5341     outerSetting.op = TestOperation::ASYNC_GROUP;
5342     innerSetting.op = TestOperation::ASYNC;
5343     int taskCount = Dispatch(outerSetting, innerSetting);
5344     bool result = Wait(taskCount);
5345     result = result && task_execution_sequence.size() > 1;
5346     if (result) {
5347         result = result && applyExecuted(outerSetting, innerSetting);
5348         result = result && OuterTaskExecuted(outerSetting);
5349         result = result && InnerTaskExecuted(innerSetting);
5350         std::vector<size_t> outerTaskIndex;
5351         std::vector<std::vector<size_t>> innerTaskIndex;
5352         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5353         for (int i = 0; i < testTaskCount; i++) {
5354             result = result && IsAscend(innerTaskIndex[i]);
5355         }
5356         result = result && OuterExecutedAfter(outerSyncBarrierId);
5357     }
5358     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5359 }
5360 
5361 // level1:parallel, sync barrier level2:serial, delay
ParallelCase90(int code)5362 void MainAbility::ParallelCase90(int code)
5363 {
5364     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5365     Reset();
5366     TestSetting outerSetting;
5367     TestSetting innerSetting;
5368     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5369     innerSetting.dispatcher = TestDispatcher::SERIAL;
5370     innerSetting.delay = delayMs;
5371     outerSetting.sync_barrier = true;
5372     outerSetting.create_group = true;
5373     outerSetting.op = TestOperation::ASYNC_GROUP;
5374     innerSetting.op = TestOperation::DELAY;
5375     int taskCount = Dispatch(outerSetting, innerSetting);
5376     bool result = Wait(taskCount);
5377     result = result && task_execution_sequence.size() > 1;
5378     if (result) {
5379         result = result && applyExecuted(outerSetting, innerSetting);
5380         result = result && OuterTaskExecuted(outerSetting);
5381         result = result && InnerTaskExecuted(innerSetting);
5382         std::vector<size_t> outerTaskIndex;
5383         std::vector<std::vector<size_t>> innerTaskIndex;
5384         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5385         for (int i = 0; i < testTaskCount; i++) {
5386             result = result && IsAscend(innerTaskIndex[i]);
5387         }
5388         result = result && OuterExecutedAfter(outerSyncBarrierId);
5389     }
5390     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5391 }
5392 
5393 // level1:parallel, sync barrier level2:serial, apply
ParallelCase91(int code)5394 void MainAbility::ParallelCase91(int code)
5395 {
5396     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5397     Reset();
5398     TestSetting outerSetting;
5399     TestSetting innerSetting;
5400     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5401     innerSetting.dispatcher = TestDispatcher::SERIAL;
5402     innerSetting.apply = applyNum;
5403     outerSetting.sync_barrier = true;
5404     outerSetting.create_group = true;
5405     outerSetting.op = TestOperation::ASYNC_GROUP;
5406     innerSetting.op = TestOperation::APPLY;
5407     int taskCount = Dispatch(outerSetting, innerSetting);
5408     bool result = Wait(taskCount);
5409     result = result && task_execution_sequence.size() > 1;
5410     if (result) {
5411         result = result && applyExecuted(outerSetting, innerSetting);
5412         result = result && OuterTaskExecuted(outerSetting);
5413         result = result && InnerTaskExecuted(innerSetting);
5414         result = result && OuterExecutedAfter(outerSyncBarrierId);
5415     }
5416     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5417 }
5418 
5419 // level1:parallel, async barrier level2:parallel, sync
ParallelCase92(int code)5420 void MainAbility::ParallelCase92(int code)
5421 {
5422     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5423     Reset();
5424     TestSetting outerSetting;
5425     TestSetting innerSetting;
5426     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5427     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5428     outerSetting.async_barrier = true;
5429     outerSetting.create_group = true;
5430     outerSetting.op = TestOperation::ASYNC_GROUP;
5431     innerSetting.op = TestOperation::SYNC;
5432     int taskCount = Dispatch(outerSetting, innerSetting);
5433     bool result = Wait(taskCount);
5434     result = result && task_execution_sequence.size() > 1;
5435     if (result) {
5436         result = result && applyExecuted(outerSetting, innerSetting);
5437         result = result && OuterTaskExecuted(outerSetting);
5438         result = result && InnerTaskExecuted(innerSetting);
5439         std::vector<size_t> outerTaskIndex;
5440         std::vector<std::vector<size_t>> innerTaskIndex;
5441         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5442         for (int i = 0; i < testTaskCount; i++) {
5443             result = result && IsAscend(innerTaskIndex[i]);
5444         }
5445         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5446     }
5447     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5448 }
5449 
5450 // level1:parallel, async barrier level2:parallel, async
ParallelCase93(int code)5451 void MainAbility::ParallelCase93(int code)
5452 {
5453     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5454     Reset();
5455     TestSetting outerSetting;
5456     TestSetting innerSetting;
5457     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5458     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5459     outerSetting.async_barrier = true;
5460     outerSetting.create_group = true;
5461     outerSetting.op = TestOperation::ASYNC_GROUP;
5462     innerSetting.op = TestOperation::ASYNC;
5463     int taskCount = Dispatch(outerSetting, innerSetting);
5464     bool result = Wait(taskCount);
5465     result = result && task_execution_sequence.size() > 1;
5466     if (result) {
5467         result = result && applyExecuted(outerSetting, innerSetting);
5468         result = result && OuterTaskExecuted(outerSetting);
5469         result = result && InnerTaskExecuted(innerSetting);
5470         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5471     }
5472     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5473 }
5474 
5475 // level1:parallel, async barrier level2:parallel, delay
ParallelCase94(int code)5476 void MainAbility::ParallelCase94(int code)
5477 {
5478     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5479     Reset();
5480     TestSetting outerSetting;
5481     TestSetting innerSetting;
5482     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5483     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5484     innerSetting.delay = delayMs;
5485     outerSetting.async_barrier = true;
5486     outerSetting.create_group = true;
5487     outerSetting.op = TestOperation::ASYNC_GROUP;
5488     innerSetting.op = TestOperation::DELAY;
5489     int taskCount = Dispatch(outerSetting, innerSetting);
5490     bool result = Wait(taskCount);
5491     result = result && task_execution_sequence.size() > 1;
5492     if (result) {
5493         result = result && applyExecuted(outerSetting, innerSetting);
5494         result = result && OuterTaskExecuted(outerSetting);
5495         result = result && InnerTaskExecuted(innerSetting);
5496         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5497     }
5498     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5499 }
5500 
5501 // level1:parallel, async barrier level2:parallel, group
ParallelCase95(int code)5502 void MainAbility::ParallelCase95(int code)
5503 {
5504     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5505     Reset();
5506     TestSetting outerSetting;
5507     TestSetting innerSetting;
5508     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5509     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5510     innerSetting.create_group = true;
5511     outerSetting.async_barrier = true;
5512     outerSetting.create_group = true;
5513     outerSetting.op = TestOperation::ASYNC_GROUP;
5514     innerSetting.op = TestOperation::ASYNC_GROUP;
5515     int taskCount = Dispatch(outerSetting, innerSetting);
5516     bool result = Wait(taskCount);
5517     result = result && task_execution_sequence.size() > 1;
5518     if (result) {
5519         result = result && applyExecuted(outerSetting, innerSetting);
5520         result = result && OuterTaskExecuted(outerSetting);
5521         result = result && InnerTaskExecuted(innerSetting);
5522         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5523     }
5524     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5525 }
5526 
5527 // level1:parallel, async barrier level2:parallel, group wait
ParallelCase96(int code)5528 void MainAbility::ParallelCase96(int code)
5529 {
5530     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5531     Reset();
5532     TestSetting outerSetting;
5533     TestSetting innerSetting;
5534     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5535     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5536     innerSetting.group_wait = true;
5537     innerSetting.group_timeout = groupWait;
5538     innerSetting.create_group = true;
5539     outerSetting.async_barrier = true;
5540     outerSetting.create_group = true;
5541     outerSetting.op = TestOperation::ASYNC_GROUP;
5542     innerSetting.op = TestOperation::ASYNC_GROUP;
5543     int taskCount = Dispatch(outerSetting, innerSetting);
5544     bool result = Wait(taskCount);
5545     result = result && task_execution_sequence.size() > 1;
5546     if (result) {
5547         result = result && applyExecuted(outerSetting, innerSetting);
5548         result = result && OuterTaskExecuted(outerSetting);
5549         result = result && InnerTaskExecuted(innerSetting);
5550         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5551     }
5552     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5553 }
5554 
5555 // level1:parallel, async barrier level2:parallel, group notify
ParallelCase97(int code)5556 void MainAbility::ParallelCase97(int code)
5557 {
5558     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5559     Reset();
5560     TestSetting outerSetting;
5561     TestSetting innerSetting;
5562     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5563     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5564     innerSetting.create_group = true;
5565     innerSetting.group_notify = true;
5566     outerSetting.async_barrier = true;
5567     outerSetting.create_group = true;
5568     outerSetting.op = TestOperation::ASYNC_GROUP;
5569     innerSetting.op = TestOperation::ASYNC_GROUP;
5570     int taskCount = Dispatch(outerSetting, innerSetting);
5571     bool result = Wait(taskCount);
5572     result = result && task_execution_sequence.size() > 1;
5573     if (result) {
5574         result = result && applyExecuted(outerSetting, innerSetting);
5575         result = result && OuterTaskExecuted(outerSetting);
5576         result = result && InnerTaskExecuted(innerSetting);
5577         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5578         result = result && InnerExecutedAfter(innerGroupNotifyId);
5579     }
5580     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5581 }
5582 
5583 // level1:parallel, async barrier level2:parallel, sync barrier
ParallelCase98(int code)5584 void MainAbility::ParallelCase98(int code)
5585 {
5586     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5587     Reset();
5588     TestSetting outerSetting;
5589     TestSetting innerSetting;
5590     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5591     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5592     innerSetting.sync_barrier = true;
5593     innerSetting.create_group = true;
5594     outerSetting.async_barrier = true;
5595     outerSetting.create_group = true;
5596     outerSetting.op = TestOperation::ASYNC_GROUP;
5597     innerSetting.op = TestOperation::ASYNC_GROUP;
5598     int taskCount = Dispatch(outerSetting, innerSetting);
5599     bool result = Wait(taskCount);
5600     result = result && task_execution_sequence.size() > 1;
5601     if (result) {
5602         result = result && applyExecuted(outerSetting, innerSetting);
5603         result = result && OuterTaskExecuted(outerSetting);
5604         result = result && InnerTaskExecuted(innerSetting);
5605         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5606         result = result && InnerExecutedAfter(innerSyncBarrierId);
5607     }
5608     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5609 }
5610 
5611 // level1:parallel, async barrier level2:parallel, async barrier
ParallelCase99(int code)5612 void MainAbility::ParallelCase99(int code)
5613 {
5614     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5615     Reset();
5616     TestSetting outerSetting;
5617     TestSetting innerSetting;
5618     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5619     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5620     innerSetting.async_barrier = true;
5621     innerSetting.create_group = true;
5622     outerSetting.async_barrier = true;
5623     outerSetting.create_group = true;
5624     outerSetting.op = TestOperation::ASYNC_GROUP;
5625     innerSetting.op = TestOperation::ASYNC_GROUP;
5626     int taskCount = Dispatch(outerSetting, innerSetting);
5627     bool result = Wait(taskCount);
5628     result = result && task_execution_sequence.size() > 1;
5629     if (result) {
5630         result = result && applyExecuted(outerSetting, innerSetting);
5631         result = result && OuterTaskExecuted(outerSetting);
5632         result = result && InnerTaskExecuted(innerSetting);
5633         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5634         result = result && InnerExecutedAfter(innerAsyncBarrierId);
5635     }
5636     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5637 }
5638 
5639 // level1:parallel, async barrier level2:parallel, apply
ParallelCase100(int code)5640 void MainAbility::ParallelCase100(int code)
5641 {
5642     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5643     Reset();
5644     TestSetting outerSetting;
5645     TestSetting innerSetting;
5646     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5647     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5648     innerSetting.apply = applyNum;
5649     outerSetting.async_barrier = true;
5650     outerSetting.create_group = true;
5651     outerSetting.op = TestOperation::ASYNC_GROUP;
5652     innerSetting.op = TestOperation::APPLY;
5653     int taskCount = Dispatch(outerSetting, innerSetting);
5654     bool result = Wait(taskCount);
5655     result = result && task_execution_sequence.size() > 1;
5656     if (result) {
5657         result = result && applyExecuted(outerSetting, innerSetting);
5658         result = result && OuterTaskExecuted(outerSetting);
5659         result = result && InnerTaskExecuted(innerSetting);
5660         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5661     }
5662     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5663 }
5664 
5665 // level1:parallel, async barrier level2:serial, sync
ParallelCase101(int code)5666 void MainAbility::ParallelCase101(int code)
5667 {
5668     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5669     Reset();
5670     TestSetting outerSetting;
5671     TestSetting innerSetting;
5672     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5673     innerSetting.dispatcher = TestDispatcher::SERIAL;
5674     outerSetting.async_barrier = true;
5675     outerSetting.create_group = true;
5676     outerSetting.op = TestOperation::ASYNC_GROUP;
5677     innerSetting.op = TestOperation::SYNC;
5678     int taskCount = Dispatch(outerSetting, innerSetting);
5679     bool result = Wait(taskCount);
5680     result = result && task_execution_sequence.size() > 1;
5681     if (result) {
5682         result = result && applyExecuted(outerSetting, innerSetting);
5683         result = result && OuterTaskExecuted(outerSetting);
5684         result = result && InnerTaskExecuted(innerSetting);
5685         std::vector<size_t> outerTaskIndex;
5686         std::vector<std::vector<size_t>> innerTaskIndex;
5687         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5688         for (int i = 0; i < testTaskCount; i++) {
5689             result = result && IsAscend(innerTaskIndex[i]);
5690         }
5691         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5692     }
5693     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5694 }
5695 
5696 // level1:parallel, async barrier level2:serial, async
ParallelCase102(int code)5697 void MainAbility::ParallelCase102(int code)
5698 {
5699     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5700     Reset();
5701     TestSetting outerSetting;
5702     TestSetting innerSetting;
5703     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5704     innerSetting.dispatcher = TestDispatcher::SERIAL;
5705     outerSetting.async_barrier = true;
5706     outerSetting.create_group = true;
5707     outerSetting.op = TestOperation::ASYNC_GROUP;
5708     innerSetting.op = TestOperation::ASYNC;
5709     int taskCount = Dispatch(outerSetting, innerSetting);
5710     bool result = Wait(taskCount);
5711     result = result && task_execution_sequence.size() > 1;
5712     if (result) {
5713         result = result && applyExecuted(outerSetting, innerSetting);
5714         result = result && OuterTaskExecuted(outerSetting);
5715         result = result && InnerTaskExecuted(innerSetting);
5716         std::vector<size_t> outerTaskIndex;
5717         std::vector<std::vector<size_t>> innerTaskIndex;
5718         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5719         for (int i = 0; i < testTaskCount; i++) {
5720             result = result && IsAscend(innerTaskIndex[i]);
5721         }
5722         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5723     }
5724     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5725 }
5726 
5727 // level1:parallel, async barrier level2:serial, delay
ParallelCase103(int code)5728 void MainAbility::ParallelCase103(int code)
5729 {
5730     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5731     Reset();
5732     TestSetting outerSetting;
5733     TestSetting innerSetting;
5734     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5735     innerSetting.dispatcher = TestDispatcher::SERIAL;
5736     innerSetting.delay = delayMs;
5737     outerSetting.async_barrier = true;
5738     outerSetting.create_group = true;
5739     outerSetting.op = TestOperation::ASYNC_GROUP;
5740     innerSetting.op = TestOperation::DELAY;
5741     int taskCount = Dispatch(outerSetting, innerSetting);
5742     bool result = Wait(taskCount);
5743     result = result && task_execution_sequence.size() > 1;
5744     if (result) {
5745         result = result && applyExecuted(outerSetting, innerSetting);
5746         result = result && OuterTaskExecuted(outerSetting);
5747         result = result && InnerTaskExecuted(innerSetting);
5748         std::vector<size_t> outerTaskIndex;
5749         std::vector<std::vector<size_t>> innerTaskIndex;
5750         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5751         for (int i = 0; i < testTaskCount; i++) {
5752             result = result && IsAscend(innerTaskIndex[i]);
5753         }
5754         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5755     }
5756     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5757 }
5758 
5759 // level1:parallel, async barrier level2:serial, apply
ParallelCase104(int code)5760 void MainAbility::ParallelCase104(int code)
5761 {
5762     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5763     Reset();
5764     TestSetting outerSetting;
5765     TestSetting innerSetting;
5766     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5767     innerSetting.dispatcher = TestDispatcher::SERIAL;
5768     innerSetting.apply = applyNum;
5769     outerSetting.async_barrier = true;
5770     outerSetting.create_group = true;
5771     outerSetting.op = TestOperation::ASYNC_GROUP;
5772     innerSetting.op = TestOperation::APPLY;
5773     int taskCount = Dispatch(outerSetting, innerSetting);
5774     bool result = Wait(taskCount);
5775     result = result && task_execution_sequence.size() > 1;
5776     if (result) {
5777         result = result && applyExecuted(outerSetting, innerSetting);
5778         result = result && OuterTaskExecuted(outerSetting);
5779         result = result && InnerTaskExecuted(innerSetting);
5780         result = result && OuterExecutedAfter(outerAsyncBarrierId);
5781     }
5782     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5783 }
5784 
5785 // level1:parallel, apply level2:parallel, sync
ParallelCase105(int code)5786 void MainAbility::ParallelCase105(int code)
5787 {
5788     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5789     Reset();
5790     TestSetting outerSetting;
5791     TestSetting innerSetting;
5792     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5793     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5794     outerSetting.apply = applyNum;
5795     outerSetting.op = TestOperation::APPLY;
5796     innerSetting.op = TestOperation::SYNC;
5797     int taskCount = Dispatch(outerSetting, innerSetting);
5798     bool result = Wait(taskCount);
5799     result = result && task_execution_sequence.size() > 1;
5800     if (result) {
5801         result = result && applyExecuted(outerSetting, innerSetting);
5802         result = result && OuterTaskExecuted(outerSetting);
5803         result = result && InnerTaskExecuted(innerSetting);
5804         std::vector<size_t> outerTaskIndex;
5805         std::vector<std::vector<size_t>> innerTaskIndex;
5806         GetTaskIndex(outerTaskIndex, innerTaskIndex);
5807         for (int i = 0; i < testTaskCount; i++) {
5808             result = result && IsAscend(innerTaskIndex[i]);
5809         }
5810     }
5811     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5812 }
5813 
5814 // level1:parallel, apply level2:parallel, async
ParallelCase106(int code)5815 void MainAbility::ParallelCase106(int code)
5816 {
5817     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5818     Reset();
5819     TestSetting outerSetting;
5820     TestSetting innerSetting;
5821     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5822     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5823     outerSetting.apply = applyNum;
5824     outerSetting.op = TestOperation::APPLY;
5825     innerSetting.op = TestOperation::ASYNC;
5826     int taskCount = Dispatch(outerSetting, innerSetting);
5827     bool result = Wait(taskCount);
5828     result = result && task_execution_sequence.size() > 1;
5829     if (result) {
5830         result = result && applyExecuted(outerSetting, innerSetting);
5831         result = result && OuterTaskExecuted(outerSetting);
5832         result = result && InnerTaskExecuted(innerSetting);
5833     }
5834     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5835 }
5836 
5837 // level1:parallel, apply level2:parallel, delay
ParallelCase107(int code)5838 void MainAbility::ParallelCase107(int code)
5839 {
5840     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5841     Reset();
5842     TestSetting outerSetting;
5843     TestSetting innerSetting;
5844     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5845     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5846     outerSetting.apply = applyNum;
5847     innerSetting.delay = delayMs;
5848     outerSetting.op = TestOperation::APPLY;
5849     innerSetting.op = TestOperation::DELAY;
5850     int taskCount = Dispatch(outerSetting, innerSetting);
5851     bool result = Wait(taskCount);
5852     result = result && task_execution_sequence.size() > 1;
5853     if (result) {
5854         result = result && applyExecuted(outerSetting, innerSetting);
5855         result = result && OuterTaskExecuted(outerSetting);
5856         result = result && InnerTaskExecuted(innerSetting);
5857     }
5858     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5859 }
5860 
5861 // level1:parallel, apply level2:parallel, group
ParallelCase108(int code)5862 void MainAbility::ParallelCase108(int code)
5863 {
5864     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5865     Reset();
5866     TestSetting outerSetting;
5867     TestSetting innerSetting;
5868     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5869     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5870     outerSetting.apply = applyNum;
5871     innerSetting.create_group = true;
5872     outerSetting.op = TestOperation::APPLY;
5873     innerSetting.op = TestOperation::ASYNC_GROUP;
5874     int taskCount = Dispatch(outerSetting, innerSetting);
5875     bool result = Wait(taskCount);
5876     result = result && task_execution_sequence.size() > 1;
5877     if (result) {
5878         result = result && applyExecuted(outerSetting, innerSetting);
5879         result = result && OuterTaskExecuted(outerSetting);
5880         result = result && InnerTaskExecuted(innerSetting);
5881     }
5882     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5883 }
5884 
5885 // level1:parallel, apply level2:parallel, group wait
ParallelCase109(int code)5886 void MainAbility::ParallelCase109(int code)
5887 {
5888     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5889     Reset();
5890     TestSetting outerSetting;
5891     TestSetting innerSetting;
5892     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5893     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5894     innerSetting.group_wait = true;
5895     innerSetting.group_timeout = groupWait;
5896     outerSetting.apply = applyNum;
5897     innerSetting.create_group = true;
5898     outerSetting.op = TestOperation::APPLY;
5899     innerSetting.op = TestOperation::ASYNC_GROUP;
5900     int taskCount = Dispatch(outerSetting, innerSetting);
5901     bool result = Wait(taskCount);
5902     result = result && task_execution_sequence.size() > 1;
5903     if (result) {
5904         result = result && applyExecuted(outerSetting, innerSetting);
5905         result = result && OuterTaskExecuted(outerSetting);
5906         result = result && InnerTaskExecuted(innerSetting);
5907     }
5908     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5909 }
5910 
5911 // level1:parallel, apply level2:parallel, group notify
ParallelCase110(int code)5912 void MainAbility::ParallelCase110(int code)
5913 {
5914     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5915     Reset();
5916     TestSetting outerSetting;
5917     TestSetting innerSetting;
5918     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5919     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5920     outerSetting.apply = applyNum;
5921     innerSetting.create_group = true;
5922     innerSetting.group_notify = true;
5923     outerSetting.op = TestOperation::APPLY;
5924     innerSetting.op = TestOperation::ASYNC_GROUP;
5925     int taskCount = Dispatch(outerSetting, innerSetting);
5926     bool result = Wait(taskCount);
5927     result = result && task_execution_sequence.size() > 1;
5928     if (result) {
5929         result = result && applyExecuted(outerSetting, innerSetting);
5930         result = result && OuterTaskExecuted(outerSetting);
5931         result = result && InnerTaskExecuted(innerSetting);
5932         result = result && InnerExecutedAfter(innerGroupNotifyId);
5933     }
5934     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5935 }
5936 
5937 // level1:parallel, apply level2:parallel, sync barrier
ParallelCase111(int code)5938 void MainAbility::ParallelCase111(int code)
5939 {
5940     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5941     Reset();
5942     TestSetting outerSetting;
5943     TestSetting innerSetting;
5944     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5945     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5946     outerSetting.apply = applyNum;
5947     innerSetting.sync_barrier = true;
5948     innerSetting.create_group = true;
5949     outerSetting.op = TestOperation::APPLY;
5950     innerSetting.op = TestOperation::ASYNC_GROUP;
5951     int taskCount = Dispatch(outerSetting, innerSetting);
5952     bool result = Wait(taskCount);
5953     result = result && task_execution_sequence.size() > 1;
5954     if (result) {
5955         result = result && applyExecuted(outerSetting, innerSetting);
5956         result = result && OuterTaskExecuted(outerSetting);
5957         result = result && InnerTaskExecuted(innerSetting);
5958         result = result && InnerExecutedAfter(innerSyncBarrierId);
5959     }
5960     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5961 }
5962 
5963 // level1:parallel, apply level2:parallel, async barrier
ParallelCase112(int code)5964 void MainAbility::ParallelCase112(int code)
5965 {
5966     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5967     Reset();
5968     TestSetting outerSetting;
5969     TestSetting innerSetting;
5970     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5971     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5972     outerSetting.apply = applyNum;
5973     innerSetting.async_barrier = true;
5974     innerSetting.create_group = true;
5975     outerSetting.op = TestOperation::APPLY;
5976     innerSetting.op = TestOperation::ASYNC_GROUP;
5977     int taskCount = Dispatch(outerSetting, innerSetting);
5978     bool result = Wait(taskCount);
5979     result = result && task_execution_sequence.size() > 1;
5980     if (result) {
5981         result = result && applyExecuted(outerSetting, innerSetting);
5982         result = result && OuterTaskExecuted(outerSetting);
5983         result = result && InnerTaskExecuted(innerSetting);
5984         result = result && InnerExecutedAfter(innerAsyncBarrierId);
5985     }
5986     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
5987 }
5988 
5989 // level1:parallel, apply level2:parallel, apply
ParallelCase113(int code)5990 void MainAbility::ParallelCase113(int code)
5991 {
5992     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
5993     Reset();
5994     TestSetting outerSetting;
5995     TestSetting innerSetting;
5996     outerSetting.dispatcher = TestDispatcher::PARALLEL;
5997     innerSetting.dispatcher = TestDispatcher::PARALLEL;
5998     outerSetting.apply = applyNum;
5999     innerSetting.apply = applyNum;
6000     outerSetting.op = TestOperation::APPLY;
6001     innerSetting.op = TestOperation::APPLY;
6002     int taskCount = Dispatch(outerSetting, innerSetting);
6003     bool result = Wait(taskCount);
6004     result = result && task_execution_sequence.size() > 1;
6005     if (result) {
6006         result = result && applyExecuted(outerSetting, innerSetting);
6007         result = result && OuterTaskExecuted(outerSetting);
6008         result = result && InnerTaskExecuted(innerSetting);
6009     }
6010     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6011 }
6012 
6013 // level1:parallel, apply level2:serial, sync
ParallelCase114(int code)6014 void MainAbility::ParallelCase114(int code)
6015 {
6016     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6017     Reset();
6018     TestSetting outerSetting;
6019     TestSetting innerSetting;
6020     outerSetting.dispatcher = TestDispatcher::PARALLEL;
6021     innerSetting.dispatcher = TestDispatcher::SERIAL;
6022     outerSetting.apply = applyNum;
6023     outerSetting.op = TestOperation::APPLY;
6024     innerSetting.op = TestOperation::SYNC;
6025     int taskCount = Dispatch(outerSetting, innerSetting);
6026     bool result = Wait(taskCount);
6027     result = result && task_execution_sequence.size() > 1;
6028     if (result) {
6029         result = result && applyExecuted(outerSetting, innerSetting);
6030         result = result && OuterTaskExecuted(outerSetting);
6031         result = result && InnerTaskExecuted(innerSetting);
6032         std::vector<size_t> outerTaskIndex;
6033         std::vector<std::vector<size_t>> innerTaskIndex;
6034         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6035         for (int i = 0; i < testTaskCount; i++) {
6036             result = result && IsAscend(innerTaskIndex[i]);
6037         }
6038     }
6039     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6040 }
6041 
6042 // level1:parallel, apply level2:serial, async
ParallelCase115(int code)6043 void MainAbility::ParallelCase115(int code)
6044 {
6045     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6046     Reset();
6047     TestSetting outerSetting;
6048     TestSetting innerSetting;
6049     outerSetting.dispatcher = TestDispatcher::PARALLEL;
6050     innerSetting.dispatcher = TestDispatcher::SERIAL;
6051     outerSetting.apply = applyNum;
6052     outerSetting.op = TestOperation::APPLY;
6053     innerSetting.op = TestOperation::ASYNC;
6054     int taskCount = Dispatch(outerSetting, innerSetting);
6055     bool result = Wait(taskCount);
6056     result = result && task_execution_sequence.size() > 1;
6057     if (result) {
6058         result = result && applyExecuted(outerSetting, innerSetting);
6059         result = result && OuterTaskExecuted(outerSetting);
6060         result = result && InnerTaskExecuted(innerSetting);
6061         std::vector<size_t> outerTaskIndex;
6062         std::vector<std::vector<size_t>> innerTaskIndex;
6063         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6064         for (int i = 0; i < testTaskCount; i++) {
6065             result = result && IsAscend(innerTaskIndex[i]);
6066         }
6067     }
6068     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6069 }
6070 
6071 // level1:parallel, apply level2:serial, delay
ParallelCase116(int code)6072 void MainAbility::ParallelCase116(int code)
6073 {
6074     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6075     Reset();
6076     TestSetting outerSetting;
6077     TestSetting innerSetting;
6078     outerSetting.dispatcher = TestDispatcher::PARALLEL;
6079     innerSetting.dispatcher = TestDispatcher::SERIAL;
6080     outerSetting.apply = applyNum;
6081     innerSetting.delay = delayMs;
6082     outerSetting.op = TestOperation::APPLY;
6083     innerSetting.op = TestOperation::DELAY;
6084     int taskCount = Dispatch(outerSetting, innerSetting);
6085     bool result = Wait(taskCount);
6086     result = result && task_execution_sequence.size() > 1;
6087     if (result) {
6088         result = result && applyExecuted(outerSetting, innerSetting);
6089         result = result && OuterTaskExecuted(outerSetting);
6090         result = result && InnerTaskExecuted(innerSetting);
6091         std::vector<size_t> outerTaskIndex;
6092         std::vector<std::vector<size_t>> innerTaskIndex;
6093         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6094         for (int i = 0; i < testTaskCount; i++) {
6095             result = result && IsAscend(innerTaskIndex[i]);
6096         }
6097     }
6098     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6099 }
6100 
6101 // level1:parallel, apply level2:serial, apply
ParallelCase117(int code)6102 void MainAbility::ParallelCase117(int code)
6103 {
6104     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6105     Reset();
6106     TestSetting outerSetting;
6107     TestSetting innerSetting;
6108     outerSetting.dispatcher = TestDispatcher::PARALLEL;
6109     innerSetting.dispatcher = TestDispatcher::SERIAL;
6110     outerSetting.apply = applyNum;
6111     innerSetting.apply = applyNum;
6112     outerSetting.op = TestOperation::APPLY;
6113     innerSetting.op = TestOperation::APPLY;
6114     int taskCount = Dispatch(outerSetting, innerSetting);
6115     bool result = Wait(taskCount);
6116     result = result && task_execution_sequence.size() > 1;
6117     if (result) {
6118         result = result && applyExecuted(outerSetting, innerSetting);
6119         result = result && OuterTaskExecuted(outerSetting);
6120         result = result && InnerTaskExecuted(innerSetting);
6121     }
6122     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6123 }
6124 
6125 // level1:serial, sync level2:parallel, sync
SerialCase1(int code)6126 void MainAbility::SerialCase1(int code)
6127 {
6128     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6129     Reset();
6130     TestSetting outerSetting;
6131     TestSetting innerSetting;
6132     outerSetting.dispatcher = TestDispatcher::SERIAL;
6133     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6134     outerSetting.op = TestOperation::SYNC;
6135     innerSetting.op = TestOperation::SYNC;
6136     int taskCount = Dispatch(outerSetting, innerSetting);
6137     bool result = Wait(taskCount);
6138     result = result && task_execution_sequence.size() > 1;
6139     if (result) {
6140         result = result && applyExecuted(outerSetting, innerSetting);
6141         result = result && OuterTaskExecuted(outerSetting);
6142         result = result && InnerTaskExecuted(innerSetting);
6143         std::vector<size_t> outerTaskIndex;
6144         std::vector<std::vector<size_t>> innerTaskIndex;
6145         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6146         result = result && IsAscend(outerTaskIndex);
6147         for (int i = 0; i < testTaskCount; i++) {
6148             result = result && IsAscend(innerTaskIndex[i]);
6149         }
6150     }
6151     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6152 }
6153 
6154 // level1:serial, sync level2:parallel, async
SerialCase2(int code)6155 void MainAbility::SerialCase2(int code)
6156 {
6157     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6158     Reset();
6159     TestSetting outerSetting;
6160     TestSetting innerSetting;
6161     outerSetting.dispatcher = TestDispatcher::SERIAL;
6162     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6163     outerSetting.op = TestOperation::SYNC;
6164     innerSetting.op = TestOperation::ASYNC;
6165     int taskCount = Dispatch(outerSetting, innerSetting);
6166     bool result = Wait(taskCount);
6167     result = result && task_execution_sequence.size() > 1;
6168     if (result) {
6169         result = result && applyExecuted(outerSetting, innerSetting);
6170         result = result && OuterTaskExecuted(outerSetting);
6171         result = result && InnerTaskExecuted(innerSetting);
6172         std::vector<size_t> outerTaskIndex;
6173         std::vector<std::vector<size_t>> innerTaskIndex;
6174         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6175         result = result && IsAscend(outerTaskIndex);
6176     }
6177     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6178 }
6179 
6180 // level1:serial, sync level2:parallel, delay
SerialCase3(int code)6181 void MainAbility::SerialCase3(int code)
6182 {
6183     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6184     Reset();
6185     TestSetting outerSetting;
6186     TestSetting innerSetting;
6187     outerSetting.dispatcher = TestDispatcher::SERIAL;
6188     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6189     innerSetting.delay = delayMs;
6190     outerSetting.op = TestOperation::SYNC;
6191     innerSetting.op = TestOperation::DELAY;
6192     int taskCount = Dispatch(outerSetting, innerSetting);
6193     bool result = Wait(taskCount);
6194     result = result && task_execution_sequence.size() > 1;
6195     if (result) {
6196         result = result && applyExecuted(outerSetting, innerSetting);
6197         result = result && OuterTaskExecuted(outerSetting);
6198         result = result && InnerTaskExecuted(innerSetting);
6199         std::vector<size_t> outerTaskIndex;
6200         std::vector<std::vector<size_t>> innerTaskIndex;
6201         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6202         result = result && IsAscend(outerTaskIndex);
6203     }
6204     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6205 }
6206 
6207 // level1:serial, sync level2:parallel, group
SerialCase4(int code)6208 void MainAbility::SerialCase4(int code)
6209 {
6210     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6211     Reset();
6212     TestSetting outerSetting;
6213     TestSetting innerSetting;
6214     outerSetting.dispatcher = TestDispatcher::SERIAL;
6215     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6216     innerSetting.create_group = true;
6217     outerSetting.op = TestOperation::SYNC;
6218     innerSetting.op = TestOperation::ASYNC_GROUP;
6219     int taskCount = Dispatch(outerSetting, innerSetting);
6220     bool result = Wait(taskCount);
6221     result = result && task_execution_sequence.size() > 1;
6222     if (result) {
6223         result = result && applyExecuted(outerSetting, innerSetting);
6224         result = result && OuterTaskExecuted(outerSetting);
6225         result = result && InnerTaskExecuted(innerSetting);
6226         std::vector<size_t> outerTaskIndex;
6227         std::vector<std::vector<size_t>> innerTaskIndex;
6228         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6229         result = result && IsAscend(outerTaskIndex);
6230     }
6231     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6232 }
6233 
6234 // level1:serial, sync level2:parallel, group wait
SerialCase5(int code)6235 void MainAbility::SerialCase5(int code)
6236 {
6237     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6238     Reset();
6239     TestSetting outerSetting;
6240     TestSetting innerSetting;
6241     outerSetting.dispatcher = TestDispatcher::SERIAL;
6242     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6243     innerSetting.group_wait = true;
6244     innerSetting.group_timeout = groupWait;
6245     innerSetting.create_group = true;
6246     outerSetting.op = TestOperation::SYNC;
6247     innerSetting.op = TestOperation::ASYNC_GROUP;
6248     int taskCount = Dispatch(outerSetting, innerSetting);
6249     bool result = Wait(taskCount);
6250     result = result && task_execution_sequence.size() > 1;
6251     if (result) {
6252         result = result && applyExecuted(outerSetting, innerSetting);
6253         result = result && OuterTaskExecuted(outerSetting);
6254         result = result && InnerTaskExecuted(innerSetting);
6255         std::vector<size_t> outerTaskIndex;
6256         std::vector<std::vector<size_t>> innerTaskIndex;
6257         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6258         result = result && IsAscend(outerTaskIndex);
6259     }
6260     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6261 }
6262 
6263 // level1:serial, sync level2:parallel, group notify
SerialCase6(int code)6264 void MainAbility::SerialCase6(int code)
6265 {
6266     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6267     Reset();
6268     TestSetting outerSetting;
6269     TestSetting innerSetting;
6270     outerSetting.dispatcher = TestDispatcher::SERIAL;
6271     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6272     innerSetting.create_group = true;
6273     innerSetting.group_notify = true;
6274     outerSetting.op = TestOperation::SYNC;
6275     innerSetting.op = TestOperation::ASYNC_GROUP;
6276     int taskCount = Dispatch(outerSetting, innerSetting);
6277     bool result = Wait(taskCount);
6278     result = result && task_execution_sequence.size() > 1;
6279     if (result) {
6280         result = result && applyExecuted(outerSetting, innerSetting);
6281         result = result && OuterTaskExecuted(outerSetting);
6282         result = result && InnerTaskExecuted(innerSetting);
6283         std::vector<size_t> outerTaskIndex;
6284         std::vector<std::vector<size_t>> innerTaskIndex;
6285         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6286         result = result && IsAscend(outerTaskIndex);
6287         result = result && InnerExecutedAfter(innerGroupNotifyId);
6288     }
6289     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6290 }
6291 
6292 // level1:serial, sync level2:parallel, sync barrier
SerialCase7(int code)6293 void MainAbility::SerialCase7(int code)
6294 {
6295     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6296     Reset();
6297     TestSetting outerSetting;
6298     TestSetting innerSetting;
6299     outerSetting.dispatcher = TestDispatcher::SERIAL;
6300     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6301     innerSetting.sync_barrier = true;
6302     innerSetting.create_group = true;
6303     outerSetting.op = TestOperation::SYNC;
6304     innerSetting.op = TestOperation::ASYNC_GROUP;
6305     int taskCount = Dispatch(outerSetting, innerSetting);
6306     bool result = Wait(taskCount);
6307     result = result && task_execution_sequence.size() > 1;
6308     if (result) {
6309         result = result && applyExecuted(outerSetting, innerSetting);
6310         result = result && OuterTaskExecuted(outerSetting);
6311         result = result && InnerTaskExecuted(innerSetting);
6312         std::vector<size_t> outerTaskIndex;
6313         std::vector<std::vector<size_t>> innerTaskIndex;
6314         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6315         result = result && IsAscend(outerTaskIndex);
6316         result = result && InnerExecutedAfter(innerSyncBarrierId);
6317     }
6318     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6319 }
6320 
6321 // level1:serial, sync level2:parallel, async barrier
SerialCase8(int code)6322 void MainAbility::SerialCase8(int code)
6323 {
6324     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6325     Reset();
6326     TestSetting outerSetting;
6327     TestSetting innerSetting;
6328     outerSetting.dispatcher = TestDispatcher::SERIAL;
6329     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6330     innerSetting.async_barrier = true;
6331     innerSetting.create_group = true;
6332     outerSetting.op = TestOperation::SYNC;
6333     innerSetting.op = TestOperation::ASYNC_GROUP;
6334     int taskCount = Dispatch(outerSetting, innerSetting);
6335     bool result = Wait(taskCount);
6336     result = result && task_execution_sequence.size() > 1;
6337     if (result) {
6338         result = result && applyExecuted(outerSetting, innerSetting);
6339         result = result && OuterTaskExecuted(outerSetting);
6340         result = result && InnerTaskExecuted(innerSetting);
6341         std::vector<size_t> outerTaskIndex;
6342         std::vector<std::vector<size_t>> innerTaskIndex;
6343         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6344         result = result && IsAscend(outerTaskIndex);
6345         result = result && InnerExecutedAfter(innerAsyncBarrierId);
6346     }
6347     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6348 }
6349 
6350 // level1:serial, sync level2:parallel, apply
SerialCase9(int code)6351 void MainAbility::SerialCase9(int code)
6352 {
6353     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6354     Reset();
6355     TestSetting outerSetting;
6356     TestSetting innerSetting;
6357     outerSetting.dispatcher = TestDispatcher::SERIAL;
6358     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6359     innerSetting.apply = applyNum;
6360     outerSetting.op = TestOperation::SYNC;
6361     innerSetting.op = TestOperation::APPLY;
6362     int taskCount = Dispatch(outerSetting, innerSetting);
6363     bool result = Wait(taskCount);
6364     result = result && task_execution_sequence.size() > 1;
6365     if (result) {
6366         result = result && applyExecuted(outerSetting, innerSetting);
6367         result = result && OuterTaskExecuted(outerSetting);
6368         result = result && InnerTaskExecuted(innerSetting);
6369         std::vector<size_t> outerTaskIndex;
6370         std::vector<std::vector<size_t>> innerTaskIndex;
6371         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6372         result = result && IsAscend(outerTaskIndex);
6373     }
6374     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6375 }
6376 
6377 // level1:serial, sync level2:serial, sync
SerialCase10(int code)6378 void MainAbility::SerialCase10(int code)
6379 {
6380     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6381     Reset();
6382     TestSetting outerSetting;
6383     TestSetting innerSetting;
6384     outerSetting.dispatcher = TestDispatcher::SERIAL;
6385     innerSetting.dispatcher = TestDispatcher::SERIAL;
6386     outerSetting.op = TestOperation::SYNC;
6387     innerSetting.op = TestOperation::SYNC;
6388     int taskCount = Dispatch(outerSetting, innerSetting);
6389     bool result = Wait(taskCount);
6390     result = result && task_execution_sequence.size() > 1;
6391     if (result) {
6392         result = result && applyExecuted(outerSetting, innerSetting);
6393         result = result && OuterTaskExecuted(outerSetting);
6394         result = result && InnerTaskExecuted(innerSetting);
6395         std::vector<size_t> outerTaskIndex;
6396         std::vector<std::vector<size_t>> innerTaskIndex;
6397         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6398         result = result && IsAscend(outerTaskIndex);
6399         for (int i = 0; i < testTaskCount; i++) {
6400             result = result && IsAscend(innerTaskIndex[i]);
6401         }
6402     }
6403     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6404 }
6405 
6406 // level1:serial, sync level2:serial, async
SerialCase11(int code)6407 void MainAbility::SerialCase11(int code)
6408 {
6409     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6410     Reset();
6411     TestSetting outerSetting;
6412     TestSetting innerSetting;
6413     outerSetting.dispatcher = TestDispatcher::SERIAL;
6414     innerSetting.dispatcher = TestDispatcher::SERIAL;
6415     outerSetting.op = TestOperation::SYNC;
6416     innerSetting.op = TestOperation::ASYNC;
6417     int taskCount = Dispatch(outerSetting, innerSetting);
6418     bool result = Wait(taskCount);
6419     result = result && task_execution_sequence.size() > 1;
6420     if (result) {
6421         result = result && applyExecuted(outerSetting, innerSetting);
6422         result = result && OuterTaskExecuted(outerSetting);
6423         result = result && InnerTaskExecuted(innerSetting);
6424         std::vector<size_t> outerTaskIndex;
6425         std::vector<std::vector<size_t>> innerTaskIndex;
6426         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6427         result = result && IsAscend(outerTaskIndex);
6428         for (int i = 0; i < testTaskCount; i++) {
6429             result = result && IsAscend(innerTaskIndex[i]);
6430         }
6431     }
6432     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6433 }
6434 
6435 // level1:serial, sync level2:serial, delay
SerialCase12(int code)6436 void MainAbility::SerialCase12(int code)
6437 {
6438     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6439     Reset();
6440     TestSetting outerSetting;
6441     TestSetting innerSetting;
6442     outerSetting.dispatcher = TestDispatcher::SERIAL;
6443     innerSetting.dispatcher = TestDispatcher::SERIAL;
6444     innerSetting.delay = delayMs;
6445     outerSetting.op = TestOperation::SYNC;
6446     innerSetting.op = TestOperation::DELAY;
6447     int taskCount = Dispatch(outerSetting, innerSetting);
6448     bool result = Wait(taskCount);
6449     result = result && task_execution_sequence.size() > 1;
6450     if (result) {
6451         result = result && applyExecuted(outerSetting, innerSetting);
6452         result = result && OuterTaskExecuted(outerSetting);
6453         result = result && InnerTaskExecuted(innerSetting);
6454         std::vector<size_t> outerTaskIndex;
6455         std::vector<std::vector<size_t>> innerTaskIndex;
6456         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6457         result = result && IsAscend(outerTaskIndex);
6458         for (int i = 0; i < testTaskCount; i++) {
6459             result = result && IsAscend(innerTaskIndex[i]);
6460         }
6461     }
6462     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6463 }
6464 
6465 // level1:serial, sync level2:serial, apply
SerialCase13(int code)6466 void MainAbility::SerialCase13(int code)
6467 {
6468     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6469     Reset();
6470     TestSetting outerSetting;
6471     TestSetting innerSetting;
6472     outerSetting.dispatcher = TestDispatcher::SERIAL;
6473     innerSetting.dispatcher = TestDispatcher::SERIAL;
6474     innerSetting.apply = applyNum;
6475     outerSetting.op = TestOperation::SYNC;
6476     innerSetting.op = TestOperation::APPLY;
6477     int taskCount = Dispatch(outerSetting, innerSetting);
6478     bool result = Wait(taskCount);
6479     result = result && task_execution_sequence.size() > 1;
6480     if (result) {
6481         result = result && applyExecuted(outerSetting, innerSetting);
6482         result = result && OuterTaskExecuted(outerSetting);
6483         result = result && InnerTaskExecuted(innerSetting);
6484         std::vector<size_t> outerTaskIndex;
6485         std::vector<std::vector<size_t>> innerTaskIndex;
6486         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6487         result = result && IsAscend(outerTaskIndex);
6488     }
6489     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6490 }
6491 
6492 // level1:serial, async level2:parallel, sync
SerialCase14(int code)6493 void MainAbility::SerialCase14(int code)
6494 {
6495     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6496     Reset();
6497     TestSetting outerSetting;
6498     TestSetting innerSetting;
6499     outerSetting.dispatcher = TestDispatcher::SERIAL;
6500     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6501     outerSetting.op = TestOperation::ASYNC;
6502     innerSetting.op = TestOperation::SYNC;
6503     int taskCount = Dispatch(outerSetting, innerSetting);
6504     bool result = Wait(taskCount);
6505     result = result && task_execution_sequence.size() > 1;
6506     if (result) {
6507         result = result && applyExecuted(outerSetting, innerSetting);
6508         result = result && OuterTaskExecuted(outerSetting);
6509         result = result && InnerTaskExecuted(innerSetting);
6510         std::vector<size_t> outerTaskIndex;
6511         std::vector<std::vector<size_t>> innerTaskIndex;
6512         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6513         result = result && IsAscend(outerTaskIndex);
6514         for (int i = 0; i < testTaskCount; i++) {
6515             result = result && IsAscend(innerTaskIndex[i]);
6516         }
6517     }
6518     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6519 }
6520 
6521 // level1:serial, async level2:parallel, async
SerialCase15(int code)6522 void MainAbility::SerialCase15(int code)
6523 {
6524     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6525     Reset();
6526     TestSetting outerSetting;
6527     TestSetting innerSetting;
6528     outerSetting.dispatcher = TestDispatcher::SERIAL;
6529     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6530     outerSetting.op = TestOperation::ASYNC;
6531     innerSetting.op = TestOperation::ASYNC;
6532     int taskCount = Dispatch(outerSetting, innerSetting);
6533     bool result = Wait(taskCount);
6534     result = result && task_execution_sequence.size() > 1;
6535     if (result) {
6536         result = result && applyExecuted(outerSetting, innerSetting);
6537         result = result && OuterTaskExecuted(outerSetting);
6538         result = result && InnerTaskExecuted(innerSetting);
6539         std::vector<size_t> outerTaskIndex;
6540         std::vector<std::vector<size_t>> innerTaskIndex;
6541         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6542         result = result && IsAscend(outerTaskIndex);
6543     }
6544     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6545 }
6546 
6547 // level1:serial, async level2:parallel, delay
SerialCase16(int code)6548 void MainAbility::SerialCase16(int code)
6549 {
6550     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6551     Reset();
6552     TestSetting outerSetting;
6553     TestSetting innerSetting;
6554     outerSetting.dispatcher = TestDispatcher::SERIAL;
6555     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6556     innerSetting.delay = delayMs;
6557     outerSetting.op = TestOperation::ASYNC;
6558     innerSetting.op = TestOperation::DELAY;
6559     int taskCount = Dispatch(outerSetting, innerSetting);
6560     bool result = Wait(taskCount);
6561     result = result && task_execution_sequence.size() > 1;
6562     if (result) {
6563         result = result && applyExecuted(outerSetting, innerSetting);
6564         result = result && OuterTaskExecuted(outerSetting);
6565         result = result && InnerTaskExecuted(innerSetting);
6566         std::vector<size_t> outerTaskIndex;
6567         std::vector<std::vector<size_t>> innerTaskIndex;
6568         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6569         result = result && IsAscend(outerTaskIndex);
6570     }
6571     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6572 }
6573 
6574 // level1:serial, async level2:parallel, group
SerialCase17(int code)6575 void MainAbility::SerialCase17(int code)
6576 {
6577     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6578     Reset();
6579     TestSetting outerSetting;
6580     TestSetting innerSetting;
6581     outerSetting.dispatcher = TestDispatcher::SERIAL;
6582     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6583     innerSetting.create_group = true;
6584     outerSetting.op = TestOperation::ASYNC;
6585     innerSetting.op = TestOperation::ASYNC_GROUP;
6586     int taskCount = Dispatch(outerSetting, innerSetting);
6587     bool result = Wait(taskCount);
6588     result = result && task_execution_sequence.size() > 1;
6589     if (result) {
6590         result = result && applyExecuted(outerSetting, innerSetting);
6591         result = result && OuterTaskExecuted(outerSetting);
6592         result = result && InnerTaskExecuted(innerSetting);
6593         std::vector<size_t> outerTaskIndex;
6594         std::vector<std::vector<size_t>> innerTaskIndex;
6595         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6596         result = result && IsAscend(outerTaskIndex);
6597     }
6598     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6599 }
6600 
6601 // level1:serial, async level2:parallel, group wait
SerialCase18(int code)6602 void MainAbility::SerialCase18(int code)
6603 {
6604     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6605     Reset();
6606     TestSetting outerSetting;
6607     TestSetting innerSetting;
6608     outerSetting.dispatcher = TestDispatcher::SERIAL;
6609     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6610     innerSetting.group_wait = true;
6611     innerSetting.group_timeout = groupWait;
6612     innerSetting.create_group = true;
6613     outerSetting.op = TestOperation::ASYNC;
6614     innerSetting.op = TestOperation::ASYNC_GROUP;
6615     int taskCount = Dispatch(outerSetting, innerSetting);
6616     bool result = Wait(taskCount);
6617     result = result && task_execution_sequence.size() > 1;
6618     if (result) {
6619         result = result && applyExecuted(outerSetting, innerSetting);
6620         result = result && OuterTaskExecuted(outerSetting);
6621         result = result && InnerTaskExecuted(innerSetting);
6622         std::vector<size_t> outerTaskIndex;
6623         std::vector<std::vector<size_t>> innerTaskIndex;
6624         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6625         result = result && IsAscend(outerTaskIndex);
6626     }
6627     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6628 }
6629 
6630 // level1:serial, async level2:parallel, group notify
SerialCase19(int code)6631 void MainAbility::SerialCase19(int code)
6632 {
6633     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6634     Reset();
6635     TestSetting outerSetting;
6636     TestSetting innerSetting;
6637     outerSetting.dispatcher = TestDispatcher::SERIAL;
6638     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6639     innerSetting.create_group = true;
6640     innerSetting.group_notify = true;
6641     outerSetting.op = TestOperation::ASYNC;
6642     innerSetting.op = TestOperation::ASYNC_GROUP;
6643     int taskCount = Dispatch(outerSetting, innerSetting);
6644     bool result = Wait(taskCount);
6645     result = result && task_execution_sequence.size() > 1;
6646     if (result) {
6647         result = result && applyExecuted(outerSetting, innerSetting);
6648         result = result && OuterTaskExecuted(outerSetting);
6649         result = result && InnerTaskExecuted(innerSetting);
6650         std::vector<size_t> outerTaskIndex;
6651         std::vector<std::vector<size_t>> innerTaskIndex;
6652         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6653         result = result && IsAscend(outerTaskIndex);
6654         result = result && InnerExecutedAfter(innerGroupNotifyId);
6655     }
6656     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6657 }
6658 
6659 // level1:serial, async level2:parallel, sync barrier
SerialCase20(int code)6660 void MainAbility::SerialCase20(int code)
6661 {
6662     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6663     Reset();
6664     TestSetting outerSetting;
6665     TestSetting innerSetting;
6666     outerSetting.dispatcher = TestDispatcher::SERIAL;
6667     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6668     innerSetting.sync_barrier = true;
6669     innerSetting.create_group = true;
6670     outerSetting.op = TestOperation::ASYNC;
6671     innerSetting.op = TestOperation::ASYNC_GROUP;
6672     int taskCount = Dispatch(outerSetting, innerSetting);
6673     bool result = Wait(taskCount);
6674     result = result && task_execution_sequence.size() > 1;
6675     if (result) {
6676         result = result && applyExecuted(outerSetting, innerSetting);
6677         result = result && OuterTaskExecuted(outerSetting);
6678         result = result && InnerTaskExecuted(innerSetting);
6679         std::vector<size_t> outerTaskIndex;
6680         std::vector<std::vector<size_t>> innerTaskIndex;
6681         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6682         result = result && IsAscend(outerTaskIndex);
6683         result = result && InnerExecutedAfter(innerSyncBarrierId);
6684     }
6685     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6686 }
6687 
6688 // level1:serial, async level2:parallel, async barrier
SerialCase21(int code)6689 void MainAbility::SerialCase21(int code)
6690 {
6691     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6692     Reset();
6693     TestSetting outerSetting;
6694     TestSetting innerSetting;
6695     outerSetting.dispatcher = TestDispatcher::SERIAL;
6696     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6697     innerSetting.async_barrier = true;
6698     innerSetting.create_group = true;
6699     outerSetting.op = TestOperation::ASYNC;
6700     innerSetting.op = TestOperation::ASYNC_GROUP;
6701     int taskCount = Dispatch(outerSetting, innerSetting);
6702     bool result = Wait(taskCount);
6703     result = result && task_execution_sequence.size() > 1;
6704     if (result) {
6705         result = result && applyExecuted(outerSetting, innerSetting);
6706         result = result && OuterTaskExecuted(outerSetting);
6707         result = result && InnerTaskExecuted(innerSetting);
6708         std::vector<size_t> outerTaskIndex;
6709         std::vector<std::vector<size_t>> innerTaskIndex;
6710         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6711         result = result && IsAscend(outerTaskIndex);
6712         result = result && InnerExecutedAfter(innerAsyncBarrierId);
6713     }
6714     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6715 }
6716 
6717 // level1:serial, async level2:parallel, apply
SerialCase22(int code)6718 void MainAbility::SerialCase22(int code)
6719 {
6720     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6721     Reset();
6722     TestSetting outerSetting;
6723     TestSetting innerSetting;
6724     outerSetting.dispatcher = TestDispatcher::SERIAL;
6725     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6726     innerSetting.apply = applyNum;
6727     outerSetting.op = TestOperation::ASYNC;
6728     innerSetting.op = TestOperation::APPLY;
6729     int taskCount = Dispatch(outerSetting, innerSetting);
6730     bool result = Wait(taskCount);
6731     result = result && task_execution_sequence.size() > 1;
6732     if (result) {
6733         result = result && applyExecuted(outerSetting, innerSetting);
6734         result = result && OuterTaskExecuted(outerSetting);
6735         result = result && InnerTaskExecuted(innerSetting);
6736         std::vector<size_t> outerTaskIndex;
6737         std::vector<std::vector<size_t>> innerTaskIndex;
6738         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6739         result = result && IsAscend(outerTaskIndex);
6740     }
6741     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6742 }
6743 
6744 // level1:serial, async level2:serial, sync
SerialCase23(int code)6745 void MainAbility::SerialCase23(int code)
6746 {
6747     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6748     Reset();
6749     TestSetting outerSetting;
6750     TestSetting innerSetting;
6751     outerSetting.dispatcher = TestDispatcher::SERIAL;
6752     innerSetting.dispatcher = TestDispatcher::SERIAL;
6753     outerSetting.op = TestOperation::ASYNC;
6754     innerSetting.op = TestOperation::SYNC;
6755     int taskCount = Dispatch(outerSetting, innerSetting);
6756     bool result = Wait(taskCount);
6757     result = result && task_execution_sequence.size() > 1;
6758     if (result) {
6759         result = result && applyExecuted(outerSetting, innerSetting);
6760         result = result && OuterTaskExecuted(outerSetting);
6761         result = result && InnerTaskExecuted(innerSetting);
6762         std::vector<size_t> outerTaskIndex;
6763         std::vector<std::vector<size_t>> innerTaskIndex;
6764         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6765         result = result && IsAscend(outerTaskIndex);
6766         for (int i = 0; i < testTaskCount; i++) {
6767             result = result && IsAscend(innerTaskIndex[i]);
6768         }
6769     }
6770     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6771 }
6772 
6773 // level1:serial, async level2:serial, async
SerialCase24(int code)6774 void MainAbility::SerialCase24(int code)
6775 {
6776     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6777     Reset();
6778     TestSetting outerSetting;
6779     TestSetting innerSetting;
6780     outerSetting.dispatcher = TestDispatcher::SERIAL;
6781     innerSetting.dispatcher = TestDispatcher::SERIAL;
6782     outerSetting.op = TestOperation::ASYNC;
6783     innerSetting.op = TestOperation::ASYNC;
6784     int taskCount = Dispatch(outerSetting, innerSetting);
6785     bool result = Wait(taskCount);
6786     result = result && task_execution_sequence.size() > 1;
6787     if (result) {
6788         result = result && applyExecuted(outerSetting, innerSetting);
6789         result = result && OuterTaskExecuted(outerSetting);
6790         result = result && InnerTaskExecuted(innerSetting);
6791         std::vector<size_t> outerTaskIndex;
6792         std::vector<std::vector<size_t>> innerTaskIndex;
6793         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6794         result = result && IsAscend(outerTaskIndex);
6795         for (int i = 0; i < testTaskCount; i++) {
6796             result = result && IsAscend(innerTaskIndex[i]);
6797         }
6798     }
6799     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6800 }
6801 
6802 // level1:serial, async level2:serial, delay
SerialCase25(int code)6803 void MainAbility::SerialCase25(int code)
6804 {
6805     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6806     Reset();
6807     TestSetting outerSetting;
6808     TestSetting innerSetting;
6809     outerSetting.dispatcher = TestDispatcher::SERIAL;
6810     innerSetting.dispatcher = TestDispatcher::SERIAL;
6811     innerSetting.delay = delayMs;
6812     outerSetting.op = TestOperation::ASYNC;
6813     innerSetting.op = TestOperation::DELAY;
6814     int taskCount = Dispatch(outerSetting, innerSetting);
6815     bool result = Wait(taskCount);
6816     result = result && task_execution_sequence.size() > 1;
6817     if (result) {
6818         result = result && applyExecuted(outerSetting, innerSetting);
6819         result = result && OuterTaskExecuted(outerSetting);
6820         result = result && InnerTaskExecuted(innerSetting);
6821         std::vector<size_t> outerTaskIndex;
6822         std::vector<std::vector<size_t>> innerTaskIndex;
6823         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6824         result = result && IsAscend(outerTaskIndex);
6825         for (int i = 0; i < testTaskCount; i++) {
6826             result = result && IsAscend(innerTaskIndex[i]);
6827         }
6828     }
6829     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6830 }
6831 
6832 // level1:serial, async level2:serial, apply
SerialCase26(int code)6833 void MainAbility::SerialCase26(int code)
6834 {
6835     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6836     Reset();
6837     TestSetting outerSetting;
6838     TestSetting innerSetting;
6839     outerSetting.dispatcher = TestDispatcher::SERIAL;
6840     innerSetting.dispatcher = TestDispatcher::SERIAL;
6841     innerSetting.apply = applyNum;
6842     outerSetting.op = TestOperation::ASYNC;
6843     innerSetting.op = TestOperation::APPLY;
6844     int taskCount = Dispatch(outerSetting, innerSetting);
6845     bool result = Wait(taskCount);
6846     result = result && task_execution_sequence.size() > 1;
6847     if (result) {
6848         result = result && applyExecuted(outerSetting, innerSetting);
6849         result = result && OuterTaskExecuted(outerSetting);
6850         result = result && InnerTaskExecuted(innerSetting);
6851         std::vector<size_t> outerTaskIndex;
6852         std::vector<std::vector<size_t>> innerTaskIndex;
6853         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6854         result = result && IsAscend(outerTaskIndex);
6855     }
6856     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6857 }
6858 
6859 // level1:serial, delay level2:parallel, sync
SerialCase27(int code)6860 void MainAbility::SerialCase27(int code)
6861 {
6862     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6863     Reset();
6864     TestSetting outerSetting;
6865     TestSetting innerSetting;
6866     outerSetting.dispatcher = TestDispatcher::SERIAL;
6867     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6868     outerSetting.delay = delayMs;
6869     outerSetting.op = TestOperation::DELAY;
6870     innerSetting.op = TestOperation::SYNC;
6871     int taskCount = Dispatch(outerSetting, innerSetting);
6872     bool result = Wait(taskCount);
6873     result = result && task_execution_sequence.size() > 1;
6874     if (result) {
6875         result = result && applyExecuted(outerSetting, innerSetting);
6876         result = result && OuterTaskExecuted(outerSetting);
6877         result = result && InnerTaskExecuted(innerSetting);
6878         std::vector<size_t> outerTaskIndex;
6879         std::vector<std::vector<size_t>> innerTaskIndex;
6880         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6881         result = result && IsAscend(outerTaskIndex);
6882         for (int i = 0; i < testTaskCount; i++) {
6883             result = result && IsAscend(innerTaskIndex[i]);
6884         }
6885     }
6886     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6887 }
6888 
6889 // level1:serial, delay level2:parallel, async
SerialCase28(int code)6890 void MainAbility::SerialCase28(int code)
6891 {
6892     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6893     Reset();
6894     TestSetting outerSetting;
6895     TestSetting innerSetting;
6896     outerSetting.dispatcher = TestDispatcher::SERIAL;
6897     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6898     outerSetting.delay = delayMs;
6899     outerSetting.op = TestOperation::DELAY;
6900     innerSetting.op = TestOperation::ASYNC;
6901     int taskCount = Dispatch(outerSetting, innerSetting);
6902     bool result = Wait(taskCount);
6903     result = result && task_execution_sequence.size() > 1;
6904     if (result) {
6905         result = result && applyExecuted(outerSetting, innerSetting);
6906         result = result && OuterTaskExecuted(outerSetting);
6907         result = result && InnerTaskExecuted(innerSetting);
6908         std::vector<size_t> outerTaskIndex;
6909         std::vector<std::vector<size_t>> innerTaskIndex;
6910         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6911         result = result && IsAscend(outerTaskIndex);
6912     }
6913     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6914 }
6915 
6916 // level1:serial, delay level2:parallel, delay
SerialCase29(int code)6917 void MainAbility::SerialCase29(int code)
6918 {
6919     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6920     Reset();
6921     TestSetting outerSetting;
6922     TestSetting innerSetting;
6923     outerSetting.dispatcher = TestDispatcher::SERIAL;
6924     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6925     outerSetting.delay = delayMs;
6926     innerSetting.delay = delayMs;
6927     outerSetting.op = TestOperation::DELAY;
6928     innerSetting.op = TestOperation::DELAY;
6929     int taskCount = Dispatch(outerSetting, innerSetting);
6930     bool result = Wait(taskCount);
6931     result = result && task_execution_sequence.size() > 1;
6932     if (result) {
6933         result = result && applyExecuted(outerSetting, innerSetting);
6934         result = result && OuterTaskExecuted(outerSetting);
6935         result = result && InnerTaskExecuted(innerSetting);
6936         std::vector<size_t> outerTaskIndex;
6937         std::vector<std::vector<size_t>> innerTaskIndex;
6938         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6939         result = result && IsAscend(outerTaskIndex);
6940     }
6941     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6942 }
6943 
6944 // level1:serial, delay level2:parallel, group
SerialCase30(int code)6945 void MainAbility::SerialCase30(int code)
6946 {
6947     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6948     Reset();
6949     TestSetting outerSetting;
6950     TestSetting innerSetting;
6951     outerSetting.dispatcher = TestDispatcher::SERIAL;
6952     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6953     outerSetting.delay = delayMs;
6954     innerSetting.create_group = true;
6955     outerSetting.op = TestOperation::DELAY;
6956     innerSetting.op = TestOperation::ASYNC_GROUP;
6957     int taskCount = Dispatch(outerSetting, innerSetting);
6958     bool result = Wait(taskCount);
6959     result = result && task_execution_sequence.size() > 1;
6960     if (result) {
6961         result = result && applyExecuted(outerSetting, innerSetting);
6962         result = result && OuterTaskExecuted(outerSetting);
6963         result = result && InnerTaskExecuted(innerSetting);
6964         std::vector<size_t> outerTaskIndex;
6965         std::vector<std::vector<size_t>> innerTaskIndex;
6966         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6967         result = result && IsAscend(outerTaskIndex);
6968     }
6969     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
6970 }
6971 
6972 // level1:serial, delay level2:parallel, group wait
SerialCase31(int code)6973 void MainAbility::SerialCase31(int code)
6974 {
6975     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
6976     Reset();
6977     TestSetting outerSetting;
6978     TestSetting innerSetting;
6979     outerSetting.dispatcher = TestDispatcher::SERIAL;
6980     innerSetting.dispatcher = TestDispatcher::PARALLEL;
6981     innerSetting.group_wait = true;
6982     innerSetting.group_timeout = groupWait;
6983     outerSetting.delay = delayMs;
6984     innerSetting.create_group = true;
6985     outerSetting.op = TestOperation::DELAY;
6986     innerSetting.op = TestOperation::ASYNC_GROUP;
6987     int taskCount = Dispatch(outerSetting, innerSetting);
6988     bool result = Wait(taskCount);
6989     result = result && task_execution_sequence.size() > 1;
6990     if (result) {
6991         result = result && applyExecuted(outerSetting, innerSetting);
6992         result = result && OuterTaskExecuted(outerSetting);
6993         result = result && InnerTaskExecuted(innerSetting);
6994         std::vector<size_t> outerTaskIndex;
6995         std::vector<std::vector<size_t>> innerTaskIndex;
6996         GetTaskIndex(outerTaskIndex, innerTaskIndex);
6997         result = result && IsAscend(outerTaskIndex);
6998     }
6999     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7000 }
7001 
7002 // level1:serial, delay level2:parallel, group notify
SerialCase32(int code)7003 void MainAbility::SerialCase32(int code)
7004 {
7005     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7006     Reset();
7007     TestSetting outerSetting;
7008     TestSetting innerSetting;
7009     outerSetting.dispatcher = TestDispatcher::SERIAL;
7010     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7011     outerSetting.delay = delayMs;
7012     innerSetting.create_group = true;
7013     innerSetting.group_notify = true;
7014     outerSetting.op = TestOperation::DELAY;
7015     innerSetting.op = TestOperation::ASYNC_GROUP;
7016     int taskCount = Dispatch(outerSetting, innerSetting);
7017     bool result = Wait(taskCount);
7018     result = result && task_execution_sequence.size() > 1;
7019     if (result) {
7020         result = result && applyExecuted(outerSetting, innerSetting);
7021         result = result && OuterTaskExecuted(outerSetting);
7022         result = result && InnerTaskExecuted(innerSetting);
7023         std::vector<size_t> outerTaskIndex;
7024         std::vector<std::vector<size_t>> innerTaskIndex;
7025         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7026         result = result && IsAscend(outerTaskIndex);
7027         result = result && InnerExecutedAfter(innerGroupNotifyId);
7028     }
7029     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7030 }
7031 
7032 // level1:serial, delay level2:parallel, sync barrier
SerialCase33(int code)7033 void MainAbility::SerialCase33(int code)
7034 {
7035     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7036     Reset();
7037     TestSetting outerSetting;
7038     TestSetting innerSetting;
7039     outerSetting.dispatcher = TestDispatcher::SERIAL;
7040     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7041     outerSetting.delay = delayMs;
7042     innerSetting.sync_barrier = true;
7043     innerSetting.create_group = true;
7044     outerSetting.op = TestOperation::DELAY;
7045     innerSetting.op = TestOperation::ASYNC_GROUP;
7046     int taskCount = Dispatch(outerSetting, innerSetting);
7047     bool result = Wait(taskCount);
7048     result = result && task_execution_sequence.size() > 1;
7049     if (result) {
7050         result = result && applyExecuted(outerSetting, innerSetting);
7051         result = result && OuterTaskExecuted(outerSetting);
7052         result = result && InnerTaskExecuted(innerSetting);
7053         std::vector<size_t> outerTaskIndex;
7054         std::vector<std::vector<size_t>> innerTaskIndex;
7055         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7056         result = result && IsAscend(outerTaskIndex);
7057         result = result && InnerExecutedAfter(innerSyncBarrierId);
7058     }
7059     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7060 }
7061 
7062 // level1:serial, delay level2:parallel, async barrier
SerialCase34(int code)7063 void MainAbility::SerialCase34(int code)
7064 {
7065     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7066     Reset();
7067     TestSetting outerSetting;
7068     TestSetting innerSetting;
7069     outerSetting.dispatcher = TestDispatcher::SERIAL;
7070     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7071     outerSetting.delay = delayMs;
7072     innerSetting.async_barrier = true;
7073     innerSetting.create_group = true;
7074     outerSetting.op = TestOperation::DELAY;
7075     innerSetting.op = TestOperation::ASYNC_GROUP;
7076     int taskCount = Dispatch(outerSetting, innerSetting);
7077     bool result = Wait(taskCount);
7078     result = result && task_execution_sequence.size() > 1;
7079     if (result) {
7080         result = result && applyExecuted(outerSetting, innerSetting);
7081         result = result && OuterTaskExecuted(outerSetting);
7082         result = result && InnerTaskExecuted(innerSetting);
7083         std::vector<size_t> outerTaskIndex;
7084         std::vector<std::vector<size_t>> innerTaskIndex;
7085         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7086         result = result && IsAscend(outerTaskIndex);
7087         result = result && InnerExecutedAfter(innerAsyncBarrierId);
7088     }
7089     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7090 }
7091 
7092 // level1:serial, delay level2:parallel, apply
SerialCase35(int code)7093 void MainAbility::SerialCase35(int code)
7094 {
7095     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7096     Reset();
7097     TestSetting outerSetting;
7098     TestSetting innerSetting;
7099     outerSetting.dispatcher = TestDispatcher::SERIAL;
7100     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7101     outerSetting.delay = delayMs;
7102     innerSetting.apply = applyNum;
7103     outerSetting.op = TestOperation::DELAY;
7104     innerSetting.op = TestOperation::APPLY;
7105     int taskCount = Dispatch(outerSetting, innerSetting);
7106     bool result = Wait(taskCount);
7107     result = result && task_execution_sequence.size() > 1;
7108     if (result) {
7109         result = result && applyExecuted(outerSetting, innerSetting);
7110         result = result && OuterTaskExecuted(outerSetting);
7111         result = result && InnerTaskExecuted(innerSetting);
7112         std::vector<size_t> outerTaskIndex;
7113         std::vector<std::vector<size_t>> innerTaskIndex;
7114         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7115         result = result && IsAscend(outerTaskIndex);
7116     }
7117     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7118 }
7119 
7120 // level1:serial, delay level2:serial, sync
SerialCase36(int code)7121 void MainAbility::SerialCase36(int code)
7122 {
7123     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7124     Reset();
7125     TestSetting outerSetting;
7126     TestSetting innerSetting;
7127     outerSetting.dispatcher = TestDispatcher::SERIAL;
7128     innerSetting.dispatcher = TestDispatcher::SERIAL;
7129     outerSetting.delay = delayMs;
7130     outerSetting.op = TestOperation::DELAY;
7131     innerSetting.op = TestOperation::SYNC;
7132     int taskCount = Dispatch(outerSetting, innerSetting);
7133     bool result = Wait(taskCount);
7134     result = result && task_execution_sequence.size() > 1;
7135     if (result) {
7136         result = result && applyExecuted(outerSetting, innerSetting);
7137         result = result && OuterTaskExecuted(outerSetting);
7138         result = result && InnerTaskExecuted(innerSetting);
7139         std::vector<size_t> outerTaskIndex;
7140         std::vector<std::vector<size_t>> innerTaskIndex;
7141         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7142         result = result && IsAscend(outerTaskIndex);
7143         for (int i = 0; i < testTaskCount; i++) {
7144             result = result && IsAscend(innerTaskIndex[i]);
7145         }
7146     }
7147     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7148 }
7149 
7150 // level1:serial, delay level2:serial, async
SerialCase37(int code)7151 void MainAbility::SerialCase37(int code)
7152 {
7153     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7154     Reset();
7155     TestSetting outerSetting;
7156     TestSetting innerSetting;
7157     outerSetting.dispatcher = TestDispatcher::SERIAL;
7158     innerSetting.dispatcher = TestDispatcher::SERIAL;
7159     outerSetting.delay = delayMs;
7160     outerSetting.op = TestOperation::DELAY;
7161     innerSetting.op = TestOperation::ASYNC;
7162     int taskCount = Dispatch(outerSetting, innerSetting);
7163     bool result = Wait(taskCount);
7164     result = result && task_execution_sequence.size() > 1;
7165     if (result) {
7166         result = result && applyExecuted(outerSetting, innerSetting);
7167         result = result && OuterTaskExecuted(outerSetting);
7168         result = result && InnerTaskExecuted(innerSetting);
7169         std::vector<size_t> outerTaskIndex;
7170         std::vector<std::vector<size_t>> innerTaskIndex;
7171         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7172         result = result && IsAscend(outerTaskIndex);
7173         for (int i = 0; i < testTaskCount; i++) {
7174             result = result && IsAscend(innerTaskIndex[i]);
7175         }
7176     }
7177     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7178 }
7179 
7180 // level1:serial, delay level2:serial, delay
SerialCase38(int code)7181 void MainAbility::SerialCase38(int code)
7182 {
7183     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7184     Reset();
7185     TestSetting outerSetting;
7186     TestSetting innerSetting;
7187     outerSetting.dispatcher = TestDispatcher::SERIAL;
7188     innerSetting.dispatcher = TestDispatcher::SERIAL;
7189     outerSetting.delay = delayMs;
7190     innerSetting.delay = delayMs;
7191     outerSetting.op = TestOperation::DELAY;
7192     innerSetting.op = TestOperation::DELAY;
7193     int taskCount = Dispatch(outerSetting, innerSetting);
7194     bool result = Wait(taskCount);
7195     result = result && task_execution_sequence.size() > 1;
7196     if (result) {
7197         result = result && applyExecuted(outerSetting, innerSetting);
7198         result = result && OuterTaskExecuted(outerSetting);
7199         result = result && InnerTaskExecuted(innerSetting);
7200         std::vector<size_t> outerTaskIndex;
7201         std::vector<std::vector<size_t>> innerTaskIndex;
7202         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7203         result = result && IsAscend(outerTaskIndex);
7204         for (int i = 0; i < testTaskCount; i++) {
7205             result = result && IsAscend(innerTaskIndex[i]);
7206         }
7207     }
7208     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7209 }
7210 
7211 // level1:serial, delay level2:serial, apply
SerialCase39(int code)7212 void MainAbility::SerialCase39(int code)
7213 {
7214     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7215     Reset();
7216     TestSetting outerSetting;
7217     TestSetting innerSetting;
7218     outerSetting.dispatcher = TestDispatcher::SERIAL;
7219     innerSetting.dispatcher = TestDispatcher::SERIAL;
7220     outerSetting.delay = delayMs;
7221     innerSetting.apply = applyNum;
7222     outerSetting.op = TestOperation::DELAY;
7223     innerSetting.op = TestOperation::APPLY;
7224     int taskCount = Dispatch(outerSetting, innerSetting);
7225     bool result = Wait(taskCount);
7226     result = result && task_execution_sequence.size() > 1;
7227     if (result) {
7228         result = result && applyExecuted(outerSetting, innerSetting);
7229         result = result && OuterTaskExecuted(outerSetting);
7230         result = result && InnerTaskExecuted(innerSetting);
7231         std::vector<size_t> outerTaskIndex;
7232         std::vector<std::vector<size_t>> innerTaskIndex;
7233         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7234         result = result && IsAscend(outerTaskIndex);
7235     }
7236     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7237 }
7238 
7239 // level1:serial, apply level2:parallel, sync
SerialCase40(int code)7240 void MainAbility::SerialCase40(int code)
7241 {
7242     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7243     Reset();
7244     TestSetting outerSetting;
7245     TestSetting innerSetting;
7246     outerSetting.dispatcher = TestDispatcher::SERIAL;
7247     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7248     outerSetting.apply = applyNum;
7249     outerSetting.op = TestOperation::APPLY;
7250     innerSetting.op = TestOperation::SYNC;
7251     int taskCount = Dispatch(outerSetting, innerSetting);
7252     bool result = Wait(taskCount);
7253     result = result && task_execution_sequence.size() > 1;
7254     if (result) {
7255         result = result && applyExecuted(outerSetting, innerSetting);
7256         result = result && OuterTaskExecuted(outerSetting);
7257         result = result && InnerTaskExecuted(innerSetting);
7258         std::vector<size_t> outerTaskIndex;
7259         std::vector<std::vector<size_t>> innerTaskIndex;
7260         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7261         for (int i = 0; i < testTaskCount; i++) {
7262             result = result && IsAscend(innerTaskIndex[i]);
7263         }
7264     }
7265     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7266 }
7267 
7268 // level1:serial, apply level2:parallel, async
SerialCase41(int code)7269 void MainAbility::SerialCase41(int code)
7270 {
7271     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7272     Reset();
7273     TestSetting outerSetting;
7274     TestSetting innerSetting;
7275     outerSetting.dispatcher = TestDispatcher::SERIAL;
7276     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7277     outerSetting.apply = applyNum;
7278     outerSetting.op = TestOperation::APPLY;
7279     innerSetting.op = TestOperation::ASYNC;
7280     int taskCount = Dispatch(outerSetting, innerSetting);
7281     bool result = Wait(taskCount);
7282     result = result && task_execution_sequence.size() > 1;
7283     if (result) {
7284         result = result && applyExecuted(outerSetting, innerSetting);
7285         result = result && OuterTaskExecuted(outerSetting);
7286         result = result && InnerTaskExecuted(innerSetting);
7287     }
7288     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7289 }
7290 
7291 // level1:serial, apply level2:parallel, delay
SerialCase42(int code)7292 void MainAbility::SerialCase42(int code)
7293 {
7294     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7295     Reset();
7296     TestSetting outerSetting;
7297     TestSetting innerSetting;
7298     outerSetting.dispatcher = TestDispatcher::SERIAL;
7299     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7300     outerSetting.apply = applyNum;
7301     innerSetting.delay = delayMs;
7302     outerSetting.op = TestOperation::APPLY;
7303     innerSetting.op = TestOperation::DELAY;
7304     int taskCount = Dispatch(outerSetting, innerSetting);
7305     bool result = Wait(taskCount);
7306     result = result && task_execution_sequence.size() > 1;
7307     if (result) {
7308         result = result && applyExecuted(outerSetting, innerSetting);
7309         result = result && OuterTaskExecuted(outerSetting);
7310         result = result && InnerTaskExecuted(innerSetting);
7311     }
7312     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7313 }
7314 
7315 // level1:serial, apply level2:parallel, group
SerialCase43(int code)7316 void MainAbility::SerialCase43(int code)
7317 {
7318     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7319     Reset();
7320     TestSetting outerSetting;
7321     TestSetting innerSetting;
7322     outerSetting.dispatcher = TestDispatcher::SERIAL;
7323     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7324     outerSetting.apply = applyNum;
7325     innerSetting.create_group = true;
7326     outerSetting.op = TestOperation::APPLY;
7327     innerSetting.op = TestOperation::ASYNC_GROUP;
7328     int taskCount = Dispatch(outerSetting, innerSetting);
7329     bool result = Wait(taskCount);
7330     result = result && task_execution_sequence.size() > 1;
7331     if (result) {
7332         result = result && applyExecuted(outerSetting, innerSetting);
7333         result = result && OuterTaskExecuted(outerSetting);
7334         result = result && InnerTaskExecuted(innerSetting);
7335     }
7336     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7337 }
7338 
7339 // level1:serial, apply level2:parallel, group wait
SerialCase44(int code)7340 void MainAbility::SerialCase44(int code)
7341 {
7342     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7343     Reset();
7344     TestSetting outerSetting;
7345     TestSetting innerSetting;
7346     outerSetting.dispatcher = TestDispatcher::SERIAL;
7347     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7348     innerSetting.group_wait = true;
7349     innerSetting.group_timeout = groupWait;
7350     outerSetting.apply = applyNum;
7351     innerSetting.create_group = true;
7352     outerSetting.op = TestOperation::APPLY;
7353     innerSetting.op = TestOperation::ASYNC_GROUP;
7354     int taskCount = Dispatch(outerSetting, innerSetting);
7355     bool result = Wait(taskCount);
7356     result = result && task_execution_sequence.size() > 1;
7357     if (result) {
7358         result = result && applyExecuted(outerSetting, innerSetting);
7359         result = result && OuterTaskExecuted(outerSetting);
7360         result = result && InnerTaskExecuted(innerSetting);
7361     }
7362     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7363 }
7364 
7365 // level1:serial, apply level2:parallel, group notify
SerialCase45(int code)7366 void MainAbility::SerialCase45(int code)
7367 {
7368     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7369     Reset();
7370     TestSetting outerSetting;
7371     TestSetting innerSetting;
7372     outerSetting.dispatcher = TestDispatcher::SERIAL;
7373     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7374     outerSetting.apply = applyNum;
7375     innerSetting.create_group = true;
7376     innerSetting.group_notify = true;
7377     outerSetting.op = TestOperation::APPLY;
7378     innerSetting.op = TestOperation::ASYNC_GROUP;
7379     int taskCount = Dispatch(outerSetting, innerSetting);
7380     bool result = Wait(taskCount);
7381     result = result && task_execution_sequence.size() > 1;
7382     if (result) {
7383         result = result && applyExecuted(outerSetting, innerSetting);
7384         result = result && OuterTaskExecuted(outerSetting);
7385         result = result && InnerTaskExecuted(innerSetting);
7386         result = result && InnerExecutedAfter(innerGroupNotifyId);
7387     }
7388     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7389 }
7390 
7391 // level1:serial, apply level2:parallel, sync barrier
SerialCase46(int code)7392 void MainAbility::SerialCase46(int code)
7393 {
7394     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7395     Reset();
7396     TestSetting outerSetting;
7397     TestSetting innerSetting;
7398     outerSetting.dispatcher = TestDispatcher::SERIAL;
7399     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7400     outerSetting.apply = applyNum;
7401     innerSetting.sync_barrier = true;
7402     innerSetting.create_group = true;
7403     outerSetting.op = TestOperation::APPLY;
7404     innerSetting.op = TestOperation::ASYNC_GROUP;
7405     int taskCount = Dispatch(outerSetting, innerSetting);
7406     bool result = Wait(taskCount);
7407     result = result && task_execution_sequence.size() > 1;
7408     if (result) {
7409         result = result && applyExecuted(outerSetting, innerSetting);
7410         result = result && OuterTaskExecuted(outerSetting);
7411         result = result && InnerTaskExecuted(innerSetting);
7412         result = result && InnerExecutedAfter(innerSyncBarrierId);
7413     }
7414     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7415 }
7416 
7417 // level1:serial, apply level2:parallel, async barrier
SerialCase47(int code)7418 void MainAbility::SerialCase47(int code)
7419 {
7420     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7421     Reset();
7422     TestSetting outerSetting;
7423     TestSetting innerSetting;
7424     outerSetting.dispatcher = TestDispatcher::SERIAL;
7425     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7426     outerSetting.apply = applyNum;
7427     innerSetting.async_barrier = true;
7428     innerSetting.create_group = true;
7429     outerSetting.op = TestOperation::APPLY;
7430     innerSetting.op = TestOperation::ASYNC_GROUP;
7431     int taskCount = Dispatch(outerSetting, innerSetting);
7432     bool result = Wait(taskCount);
7433     result = result && task_execution_sequence.size() > 1;
7434     if (result) {
7435         result = result && applyExecuted(outerSetting, innerSetting);
7436         result = result && OuterTaskExecuted(outerSetting);
7437         result = result && InnerTaskExecuted(innerSetting);
7438         result = result && InnerExecutedAfter(innerAsyncBarrierId);
7439     }
7440     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7441 }
7442 
7443 // level1:serial, apply level2:parallel, apply
SerialCase48(int code)7444 void MainAbility::SerialCase48(int code)
7445 {
7446     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7447     Reset();
7448     TestSetting outerSetting;
7449     TestSetting innerSetting;
7450     outerSetting.dispatcher = TestDispatcher::SERIAL;
7451     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7452     outerSetting.apply = applyNum;
7453     innerSetting.apply = applyNum;
7454     outerSetting.op = TestOperation::APPLY;
7455     innerSetting.op = TestOperation::APPLY;
7456     int taskCount = Dispatch(outerSetting, innerSetting);
7457     bool result = Wait(taskCount);
7458     result = result && task_execution_sequence.size() > 1;
7459     if (result) {
7460         result = result && applyExecuted(outerSetting, innerSetting);
7461         result = result && OuterTaskExecuted(outerSetting);
7462         result = result && InnerTaskExecuted(innerSetting);
7463     }
7464     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7465 }
7466 
7467 // level1:serial, apply level2:serial, sync
SerialCase49(int code)7468 void MainAbility::SerialCase49(int code)
7469 {
7470     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7471     Reset();
7472     TestSetting outerSetting;
7473     TestSetting innerSetting;
7474     outerSetting.dispatcher = TestDispatcher::SERIAL;
7475     innerSetting.dispatcher = TestDispatcher::SERIAL;
7476     outerSetting.apply = applyNum;
7477     outerSetting.op = TestOperation::APPLY;
7478     innerSetting.op = TestOperation::SYNC;
7479     int taskCount = Dispatch(outerSetting, innerSetting);
7480     bool result = Wait(taskCount);
7481     result = result && task_execution_sequence.size() > 1;
7482     if (result) {
7483         result = result && applyExecuted(outerSetting, innerSetting);
7484         result = result && OuterTaskExecuted(outerSetting);
7485         result = result && InnerTaskExecuted(innerSetting);
7486         std::vector<size_t> outerTaskIndex;
7487         std::vector<std::vector<size_t>> innerTaskIndex;
7488         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7489         for (int i = 0; i < testTaskCount; i++) {
7490             result = result && IsAscend(innerTaskIndex[i]);
7491         }
7492     }
7493     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7494 }
7495 
7496 // level1:serial, apply level2:serial, async
SerialCase50(int code)7497 void MainAbility::SerialCase50(int code)
7498 {
7499     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7500     Reset();
7501     TestSetting outerSetting;
7502     TestSetting innerSetting;
7503     outerSetting.dispatcher = TestDispatcher::SERIAL;
7504     innerSetting.dispatcher = TestDispatcher::SERIAL;
7505     outerSetting.apply = applyNum;
7506     outerSetting.op = TestOperation::APPLY;
7507     innerSetting.op = TestOperation::ASYNC;
7508     int taskCount = Dispatch(outerSetting, innerSetting);
7509     bool result = Wait(taskCount);
7510     result = result && task_execution_sequence.size() > 1;
7511     if (result) {
7512         result = result && applyExecuted(outerSetting, innerSetting);
7513         result = result && OuterTaskExecuted(outerSetting);
7514         result = result && InnerTaskExecuted(innerSetting);
7515         std::vector<size_t> outerTaskIndex;
7516         std::vector<std::vector<size_t>> innerTaskIndex;
7517         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7518         for (int i = 0; i < testTaskCount; i++) {
7519             result = result && IsAscend(innerTaskIndex[i]);
7520         }
7521     }
7522     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7523 }
7524 
7525 // level1:serial, apply level2:serial, delay
SerialCase51(int code)7526 void MainAbility::SerialCase51(int code)
7527 {
7528     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7529     Reset();
7530     TestSetting outerSetting;
7531     TestSetting innerSetting;
7532     outerSetting.dispatcher = TestDispatcher::SERIAL;
7533     innerSetting.dispatcher = TestDispatcher::SERIAL;
7534     outerSetting.apply = applyNum;
7535     innerSetting.delay = delayMs;
7536     outerSetting.op = TestOperation::APPLY;
7537     innerSetting.op = TestOperation::DELAY;
7538     int taskCount = Dispatch(outerSetting, innerSetting);
7539     bool result = Wait(taskCount);
7540     result = result && task_execution_sequence.size() > 1;
7541     if (result) {
7542         result = result && applyExecuted(outerSetting, innerSetting);
7543         result = result && OuterTaskExecuted(outerSetting);
7544         result = result && InnerTaskExecuted(innerSetting);
7545         std::vector<size_t> outerTaskIndex;
7546         std::vector<std::vector<size_t>> innerTaskIndex;
7547         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7548         for (int i = 0; i < testTaskCount; i++) {
7549             result = result && IsAscend(innerTaskIndex[i]);
7550         }
7551     }
7552     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7553 }
7554 
7555 // level1:serial, apply level2:serial, apply
SerialCase52(int code)7556 void MainAbility::SerialCase52(int code)
7557 {
7558     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7559     Reset();
7560     TestSetting outerSetting;
7561     TestSetting innerSetting;
7562     outerSetting.dispatcher = TestDispatcher::SERIAL;
7563     innerSetting.dispatcher = TestDispatcher::SERIAL;
7564     outerSetting.apply = applyNum;
7565     innerSetting.apply = applyNum;
7566     outerSetting.op = TestOperation::APPLY;
7567     innerSetting.op = TestOperation::APPLY;
7568     int taskCount = Dispatch(outerSetting, innerSetting);
7569     bool result = Wait(taskCount);
7570     result = result && task_execution_sequence.size() > 1;
7571     if (result) {
7572         result = result && applyExecuted(outerSetting, innerSetting);
7573         result = result && OuterTaskExecuted(outerSetting);
7574         result = result && InnerTaskExecuted(innerSetting);
7575     }
7576     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7577 }
7578 
7579 // level1:spec, sync level2:parallel, sync
SpecCase1(int code)7580 void MainAbility::SpecCase1(int code)
7581 {
7582     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7583     Reset();
7584     TestSetting outerSetting;
7585     TestSetting innerSetting;
7586     outerSetting.dispatcher = TestDispatcher::MAIN;
7587     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7588     outerSetting.op = TestOperation::SYNC;
7589     innerSetting.op = TestOperation::SYNC;
7590     int taskCount = Dispatch(outerSetting, innerSetting);
7591     bool result = Wait(taskCount);
7592     result = result && task_execution_sequence.size() > 1;
7593     if (result) {
7594         result = result && applyExecuted(outerSetting, innerSetting);
7595         result = result && OuterTaskExecuted(outerSetting);
7596         result = result && InnerTaskExecuted(innerSetting);
7597         std::vector<size_t> outerTaskIndex;
7598         std::vector<std::vector<size_t>> innerTaskIndex;
7599         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7600         result = result && IsAscend(outerTaskIndex);
7601         for (int i = 0; i < testTaskCount; i++) {
7602             result = result && IsAscend(innerTaskIndex[i]);
7603         }
7604     }
7605     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7606 }
7607 
7608 // level1:spec, sync level2:parallel, async
SpecCase2(int code)7609 void MainAbility::SpecCase2(int code)
7610 {
7611     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7612     Reset();
7613     TestSetting outerSetting;
7614     TestSetting innerSetting;
7615     outerSetting.dispatcher = TestDispatcher::MAIN;
7616     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7617     outerSetting.op = TestOperation::SYNC;
7618     innerSetting.op = TestOperation::ASYNC;
7619     int taskCount = Dispatch(outerSetting, innerSetting);
7620     bool result = Wait(taskCount);
7621     result = result && task_execution_sequence.size() > 1;
7622     if (result) {
7623         result = result && applyExecuted(outerSetting, innerSetting);
7624         result = result && OuterTaskExecuted(outerSetting);
7625         result = result && InnerTaskExecuted(innerSetting);
7626         std::vector<size_t> outerTaskIndex;
7627         std::vector<std::vector<size_t>> innerTaskIndex;
7628         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7629         result = result && IsAscend(outerTaskIndex);
7630     }
7631     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7632 }
7633 
7634 // level1:spec, sync level2:parallel, delay
SpecCase3(int code)7635 void MainAbility::SpecCase3(int code)
7636 {
7637     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7638     Reset();
7639     TestSetting outerSetting;
7640     TestSetting innerSetting;
7641     outerSetting.dispatcher = TestDispatcher::MAIN;
7642     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7643     innerSetting.delay = delayMs;
7644     outerSetting.op = TestOperation::SYNC;
7645     innerSetting.op = TestOperation::DELAY;
7646     int taskCount = Dispatch(outerSetting, innerSetting);
7647     bool result = Wait(taskCount);
7648     result = result && task_execution_sequence.size() > 1;
7649     if (result) {
7650         result = result && applyExecuted(outerSetting, innerSetting);
7651         result = result && OuterTaskExecuted(outerSetting);
7652         result = result && InnerTaskExecuted(innerSetting);
7653         std::vector<size_t> outerTaskIndex;
7654         std::vector<std::vector<size_t>> innerTaskIndex;
7655         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7656         result = result && IsAscend(outerTaskIndex);
7657     }
7658     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7659 }
7660 
7661 // level1:spec, sync level2:parallel, group
SpecCase4(int code)7662 void MainAbility::SpecCase4(int code)
7663 {
7664     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7665     Reset();
7666     TestSetting outerSetting;
7667     TestSetting innerSetting;
7668     outerSetting.dispatcher = TestDispatcher::MAIN;
7669     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7670     innerSetting.create_group = true;
7671     outerSetting.op = TestOperation::SYNC;
7672     innerSetting.op = TestOperation::ASYNC_GROUP;
7673     int taskCount = Dispatch(outerSetting, innerSetting);
7674     bool result = Wait(taskCount);
7675     result = result && task_execution_sequence.size() > 1;
7676     if (result) {
7677         result = result && applyExecuted(outerSetting, innerSetting);
7678         result = result && OuterTaskExecuted(outerSetting);
7679         result = result && InnerTaskExecuted(innerSetting);
7680         std::vector<size_t> outerTaskIndex;
7681         std::vector<std::vector<size_t>> innerTaskIndex;
7682         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7683         result = result && IsAscend(outerTaskIndex);
7684     }
7685     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7686 }
7687 
7688 // level1:spec, sync level2:parallel, group wait
SpecCase5(int code)7689 void MainAbility::SpecCase5(int code)
7690 {
7691     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7692     Reset();
7693     TestSetting outerSetting;
7694     TestSetting innerSetting;
7695     outerSetting.dispatcher = TestDispatcher::MAIN;
7696     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7697     innerSetting.group_wait = true;
7698     innerSetting.group_timeout = groupWait;
7699     innerSetting.create_group = true;
7700     outerSetting.op = TestOperation::SYNC;
7701     innerSetting.op = TestOperation::ASYNC_GROUP;
7702     int taskCount = Dispatch(outerSetting, innerSetting);
7703     bool result = Wait(taskCount);
7704     result = result && task_execution_sequence.size() > 1;
7705     if (result) {
7706         result = result && applyExecuted(outerSetting, innerSetting);
7707         result = result && OuterTaskExecuted(outerSetting);
7708         result = result && InnerTaskExecuted(innerSetting);
7709         std::vector<size_t> outerTaskIndex;
7710         std::vector<std::vector<size_t>> innerTaskIndex;
7711         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7712         result = result && IsAscend(outerTaskIndex);
7713     }
7714     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7715 }
7716 
7717 // level1:spec, sync level2:parallel, group notify
SpecCase6(int code)7718 void MainAbility::SpecCase6(int code)
7719 {
7720     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7721     Reset();
7722     TestSetting outerSetting;
7723     TestSetting innerSetting;
7724     outerSetting.dispatcher = TestDispatcher::MAIN;
7725     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7726     innerSetting.create_group = true;
7727     innerSetting.group_notify = true;
7728     outerSetting.op = TestOperation::SYNC;
7729     innerSetting.op = TestOperation::ASYNC_GROUP;
7730     int taskCount = Dispatch(outerSetting, innerSetting);
7731     bool result = Wait(taskCount);
7732     result = result && task_execution_sequence.size() > 1;
7733     if (result) {
7734         result = result && applyExecuted(outerSetting, innerSetting);
7735         result = result && OuterTaskExecuted(outerSetting);
7736         result = result && InnerTaskExecuted(innerSetting);
7737         std::vector<size_t> outerTaskIndex;
7738         std::vector<std::vector<size_t>> innerTaskIndex;
7739         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7740         result = result && IsAscend(outerTaskIndex);
7741         result = result && InnerExecutedAfter(innerGroupNotifyId);
7742     }
7743     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7744 }
7745 
7746 // level1:spec, sync level2:parallel, sync barrier
SpecCase7(int code)7747 void MainAbility::SpecCase7(int code)
7748 {
7749     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7750     Reset();
7751     TestSetting outerSetting;
7752     TestSetting innerSetting;
7753     outerSetting.dispatcher = TestDispatcher::MAIN;
7754     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7755     innerSetting.sync_barrier = true;
7756     innerSetting.create_group = true;
7757     outerSetting.op = TestOperation::SYNC;
7758     innerSetting.op = TestOperation::ASYNC_GROUP;
7759     int taskCount = Dispatch(outerSetting, innerSetting);
7760     bool result = Wait(taskCount);
7761     result = result && task_execution_sequence.size() > 1;
7762     if (result) {
7763         result = result && applyExecuted(outerSetting, innerSetting);
7764         result = result && OuterTaskExecuted(outerSetting);
7765         result = result && InnerTaskExecuted(innerSetting);
7766         std::vector<size_t> outerTaskIndex;
7767         std::vector<std::vector<size_t>> innerTaskIndex;
7768         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7769         result = result && IsAscend(outerTaskIndex);
7770         result = result && InnerExecutedAfter(innerSyncBarrierId);
7771     }
7772     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7773 }
7774 
7775 // level1:spec, sync level2:parallel, async barrier
SpecCase8(int code)7776 void MainAbility::SpecCase8(int code)
7777 {
7778     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7779     Reset();
7780     TestSetting outerSetting;
7781     TestSetting innerSetting;
7782     outerSetting.dispatcher = TestDispatcher::MAIN;
7783     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7784     innerSetting.async_barrier = true;
7785     innerSetting.create_group = true;
7786     outerSetting.op = TestOperation::SYNC;
7787     innerSetting.op = TestOperation::ASYNC_GROUP;
7788     int taskCount = Dispatch(outerSetting, innerSetting);
7789     bool result = Wait(taskCount);
7790     result = result && task_execution_sequence.size() > 1;
7791     if (result) {
7792         result = result && applyExecuted(outerSetting, innerSetting);
7793         result = result && OuterTaskExecuted(outerSetting);
7794         result = result && InnerTaskExecuted(innerSetting);
7795         std::vector<size_t> outerTaskIndex;
7796         std::vector<std::vector<size_t>> innerTaskIndex;
7797         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7798         result = result && IsAscend(outerTaskIndex);
7799         result = result && InnerExecutedAfter(innerAsyncBarrierId);
7800     }
7801     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7802 }
7803 
7804 // level1:spec, sync level2:parallel, apply
SpecCase9(int code)7805 void MainAbility::SpecCase9(int code)
7806 {
7807     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7808     Reset();
7809     TestSetting outerSetting;
7810     TestSetting innerSetting;
7811     outerSetting.dispatcher = TestDispatcher::MAIN;
7812     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7813     innerSetting.apply = applyNum;
7814     outerSetting.op = TestOperation::SYNC;
7815     innerSetting.op = TestOperation::APPLY;
7816     int taskCount = Dispatch(outerSetting, innerSetting);
7817     bool result = Wait(taskCount);
7818     result = result && task_execution_sequence.size() > 1;
7819     if (result) {
7820         result = result && applyExecuted(outerSetting, innerSetting);
7821         result = result && OuterTaskExecuted(outerSetting);
7822         result = result && InnerTaskExecuted(innerSetting);
7823         std::vector<size_t> outerTaskIndex;
7824         std::vector<std::vector<size_t>> innerTaskIndex;
7825         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7826         result = result && IsAscend(outerTaskIndex);
7827     }
7828     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7829 }
7830 
7831 // level1:spec, sync level2:serial, sync
SpecCase10(int code)7832 void MainAbility::SpecCase10(int code)
7833 {
7834     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7835     Reset();
7836     TestSetting outerSetting;
7837     TestSetting innerSetting;
7838     outerSetting.dispatcher = TestDispatcher::MAIN;
7839     innerSetting.dispatcher = TestDispatcher::SERIAL;
7840     outerSetting.op = TestOperation::SYNC;
7841     innerSetting.op = TestOperation::SYNC;
7842     int taskCount = Dispatch(outerSetting, innerSetting);
7843     bool result = Wait(taskCount);
7844     result = result && task_execution_sequence.size() > 1;
7845     if (result) {
7846         result = result && applyExecuted(outerSetting, innerSetting);
7847         result = result && OuterTaskExecuted(outerSetting);
7848         result = result && InnerTaskExecuted(innerSetting);
7849         std::vector<size_t> outerTaskIndex;
7850         std::vector<std::vector<size_t>> innerTaskIndex;
7851         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7852         result = result && IsAscend(outerTaskIndex);
7853         for (int i = 0; i < testTaskCount; i++) {
7854             result = result && IsAscend(innerTaskIndex[i]);
7855         }
7856     }
7857     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7858 }
7859 
7860 // level1:spec, sync level2:serial, async
SpecCase11(int code)7861 void MainAbility::SpecCase11(int code)
7862 {
7863     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7864     Reset();
7865     TestSetting outerSetting;
7866     TestSetting innerSetting;
7867     outerSetting.dispatcher = TestDispatcher::MAIN;
7868     innerSetting.dispatcher = TestDispatcher::SERIAL;
7869     outerSetting.op = TestOperation::SYNC;
7870     innerSetting.op = TestOperation::ASYNC;
7871     int taskCount = Dispatch(outerSetting, innerSetting);
7872     bool result = Wait(taskCount);
7873     result = result && task_execution_sequence.size() > 1;
7874     if (result) {
7875         result = result && applyExecuted(outerSetting, innerSetting);
7876         result = result && OuterTaskExecuted(outerSetting);
7877         result = result && InnerTaskExecuted(innerSetting);
7878         std::vector<size_t> outerTaskIndex;
7879         std::vector<std::vector<size_t>> innerTaskIndex;
7880         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7881         result = result && IsAscend(outerTaskIndex);
7882         for (int i = 0; i < testTaskCount; i++) {
7883             result = result && IsAscend(innerTaskIndex[i]);
7884         }
7885     }
7886     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7887 }
7888 
7889 // level1:spec, sync level2:serial, delay
SpecCase12(int code)7890 void MainAbility::SpecCase12(int code)
7891 {
7892     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7893     Reset();
7894     TestSetting outerSetting;
7895     TestSetting innerSetting;
7896     outerSetting.dispatcher = TestDispatcher::MAIN;
7897     innerSetting.dispatcher = TestDispatcher::SERIAL;
7898     innerSetting.delay = delayMs;
7899     outerSetting.op = TestOperation::SYNC;
7900     innerSetting.op = TestOperation::DELAY;
7901     int taskCount = Dispatch(outerSetting, innerSetting);
7902     bool result = Wait(taskCount);
7903     result = result && task_execution_sequence.size() > 1;
7904     if (result) {
7905         result = result && applyExecuted(outerSetting, innerSetting);
7906         result = result && OuterTaskExecuted(outerSetting);
7907         result = result && InnerTaskExecuted(innerSetting);
7908         std::vector<size_t> outerTaskIndex;
7909         std::vector<std::vector<size_t>> innerTaskIndex;
7910         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7911         result = result && IsAscend(outerTaskIndex);
7912         for (int i = 0; i < testTaskCount; i++) {
7913             result = result && IsAscend(innerTaskIndex[i]);
7914         }
7915     }
7916     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7917 }
7918 
7919 // level1:spec, sync level2:serial, apply
SpecCase13(int code)7920 void MainAbility::SpecCase13(int code)
7921 {
7922     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7923     Reset();
7924     TestSetting outerSetting;
7925     TestSetting innerSetting;
7926     outerSetting.dispatcher = TestDispatcher::MAIN;
7927     innerSetting.dispatcher = TestDispatcher::SERIAL;
7928     innerSetting.apply = applyNum;
7929     outerSetting.op = TestOperation::SYNC;
7930     innerSetting.op = TestOperation::APPLY;
7931     int taskCount = Dispatch(outerSetting, innerSetting);
7932     bool result = Wait(taskCount);
7933     result = result && task_execution_sequence.size() > 1;
7934     if (result) {
7935         result = result && applyExecuted(outerSetting, innerSetting);
7936         result = result && OuterTaskExecuted(outerSetting);
7937         result = result && InnerTaskExecuted(innerSetting);
7938         std::vector<size_t> outerTaskIndex;
7939         std::vector<std::vector<size_t>> innerTaskIndex;
7940         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7941         result = result && IsAscend(outerTaskIndex);
7942     }
7943     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7944 }
7945 
7946 // level1:spec, async level2:parallel, sync
SpecCase14(int code)7947 void MainAbility::SpecCase14(int code)
7948 {
7949     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7950     Reset();
7951     TestSetting outerSetting;
7952     TestSetting innerSetting;
7953     outerSetting.dispatcher = TestDispatcher::MAIN;
7954     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7955     outerSetting.op = TestOperation::ASYNC;
7956     innerSetting.op = TestOperation::SYNC;
7957     int taskCount = Dispatch(outerSetting, innerSetting);
7958     bool result = Wait(taskCount);
7959     result = result && task_execution_sequence.size() > 1;
7960     if (result) {
7961         result = result && applyExecuted(outerSetting, innerSetting);
7962         result = result && OuterTaskExecuted(outerSetting);
7963         result = result && InnerTaskExecuted(innerSetting);
7964         std::vector<size_t> outerTaskIndex;
7965         std::vector<std::vector<size_t>> innerTaskIndex;
7966         GetTaskIndex(outerTaskIndex, innerTaskIndex);
7967         for (int i = 0; i < testTaskCount; i++) {
7968             result = result && IsAscend(innerTaskIndex[i]);
7969         }
7970     }
7971     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7972 }
7973 
7974 // level1:spec, async level2:parallel, async
SpecCase15(int code)7975 void MainAbility::SpecCase15(int code)
7976 {
7977     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
7978     Reset();
7979     TestSetting outerSetting;
7980     TestSetting innerSetting;
7981     outerSetting.dispatcher = TestDispatcher::MAIN;
7982     innerSetting.dispatcher = TestDispatcher::PARALLEL;
7983     outerSetting.op = TestOperation::ASYNC;
7984     innerSetting.op = TestOperation::ASYNC;
7985     int taskCount = Dispatch(outerSetting, innerSetting);
7986     bool result = Wait(taskCount);
7987     result = result && task_execution_sequence.size() > 1;
7988     if (result) {
7989         result = result && applyExecuted(outerSetting, innerSetting);
7990         result = result && OuterTaskExecuted(outerSetting);
7991         result = result && InnerTaskExecuted(innerSetting);
7992     }
7993     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
7994 }
7995 
7996 // level1:spec, async level2:parallel, delay
SpecCase16(int code)7997 void MainAbility::SpecCase16(int code)
7998 {
7999     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8000     Reset();
8001     TestSetting outerSetting;
8002     TestSetting innerSetting;
8003     outerSetting.dispatcher = TestDispatcher::MAIN;
8004     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8005     innerSetting.delay = delayMs;
8006     outerSetting.op = TestOperation::ASYNC;
8007     innerSetting.op = TestOperation::DELAY;
8008     int taskCount = Dispatch(outerSetting, innerSetting);
8009     bool result = Wait(taskCount);
8010     result = result && task_execution_sequence.size() > 1;
8011     if (result) {
8012         result = result && applyExecuted(outerSetting, innerSetting);
8013         result = result && OuterTaskExecuted(outerSetting);
8014         result = result && InnerTaskExecuted(innerSetting);
8015     }
8016     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8017 }
8018 
8019 // level1:spec, async level2:parallel, group
SpecCase17(int code)8020 void MainAbility::SpecCase17(int code)
8021 {
8022     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8023     Reset();
8024     TestSetting outerSetting;
8025     TestSetting innerSetting;
8026     outerSetting.dispatcher = TestDispatcher::MAIN;
8027     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8028     innerSetting.create_group = true;
8029     outerSetting.op = TestOperation::ASYNC;
8030     innerSetting.op = TestOperation::ASYNC_GROUP;
8031     int taskCount = Dispatch(outerSetting, innerSetting);
8032     bool result = Wait(taskCount);
8033     result = result && task_execution_sequence.size() > 1;
8034     if (result) {
8035         result = result && applyExecuted(outerSetting, innerSetting);
8036         result = result && OuterTaskExecuted(outerSetting);
8037         result = result && InnerTaskExecuted(innerSetting);
8038     }
8039     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8040 }
8041 
8042 // level1:spec, async level2:parallel, group wait
SpecCase18(int code)8043 void MainAbility::SpecCase18(int code)
8044 {
8045     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8046     Reset();
8047     TestSetting outerSetting;
8048     TestSetting innerSetting;
8049     outerSetting.dispatcher = TestDispatcher::MAIN;
8050     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8051     innerSetting.group_wait = true;
8052     innerSetting.group_timeout = groupWait;
8053     innerSetting.create_group = true;
8054     outerSetting.op = TestOperation::ASYNC;
8055     innerSetting.op = TestOperation::ASYNC_GROUP;
8056     int taskCount = Dispatch(outerSetting, innerSetting);
8057     bool result = Wait(taskCount);
8058     result = result && task_execution_sequence.size() > 1;
8059     if (result) {
8060         result = result && applyExecuted(outerSetting, innerSetting);
8061         result = result && OuterTaskExecuted(outerSetting);
8062         result = result && InnerTaskExecuted(innerSetting);
8063     }
8064     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8065 }
8066 
8067 // level1:spec, async level2:parallel, group notify
SpecCase19(int code)8068 void MainAbility::SpecCase19(int code)
8069 {
8070     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8071     Reset();
8072     TestSetting outerSetting;
8073     TestSetting innerSetting;
8074     outerSetting.dispatcher = TestDispatcher::MAIN;
8075     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8076     innerSetting.create_group = true;
8077     innerSetting.group_notify = true;
8078     outerSetting.op = TestOperation::ASYNC;
8079     innerSetting.op = TestOperation::ASYNC_GROUP;
8080     int taskCount = Dispatch(outerSetting, innerSetting);
8081     bool result = Wait(taskCount);
8082     result = result && task_execution_sequence.size() > 1;
8083     if (result) {
8084         result = result && applyExecuted(outerSetting, innerSetting);
8085         result = result && OuterTaskExecuted(outerSetting);
8086         result = result && InnerTaskExecuted(innerSetting);
8087         result = result && InnerExecutedAfter(innerGroupNotifyId);
8088     }
8089     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8090 }
8091 
8092 // level1:spec, async level2:parallel, sync barrier
SpecCase20(int code)8093 void MainAbility::SpecCase20(int code)
8094 {
8095     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8096     Reset();
8097     TestSetting outerSetting;
8098     TestSetting innerSetting;
8099     outerSetting.dispatcher = TestDispatcher::MAIN;
8100     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8101     innerSetting.sync_barrier = true;
8102     innerSetting.create_group = true;
8103     outerSetting.op = TestOperation::ASYNC;
8104     innerSetting.op = TestOperation::ASYNC_GROUP;
8105     int taskCount = Dispatch(outerSetting, innerSetting);
8106     bool result = Wait(taskCount);
8107     result = result && task_execution_sequence.size() > 1;
8108     if (result) {
8109         result = result && applyExecuted(outerSetting, innerSetting);
8110         result = result && OuterTaskExecuted(outerSetting);
8111         result = result && InnerTaskExecuted(innerSetting);
8112         result = result && InnerExecutedAfter(innerSyncBarrierId);
8113     }
8114     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8115 }
8116 
8117 // level1:spec, async level2:parallel, async barrier
SpecCase21(int code)8118 void MainAbility::SpecCase21(int code)
8119 {
8120     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8121     Reset();
8122     TestSetting outerSetting;
8123     TestSetting innerSetting;
8124     outerSetting.dispatcher = TestDispatcher::MAIN;
8125     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8126     innerSetting.async_barrier = true;
8127     innerSetting.create_group = true;
8128     outerSetting.op = TestOperation::ASYNC;
8129     innerSetting.op = TestOperation::ASYNC_GROUP;
8130     int taskCount = Dispatch(outerSetting, innerSetting);
8131     bool result = Wait(taskCount);
8132     result = result && task_execution_sequence.size() > 1;
8133     if (result) {
8134         result = result && applyExecuted(outerSetting, innerSetting);
8135         result = result && OuterTaskExecuted(outerSetting);
8136         result = result && InnerTaskExecuted(innerSetting);
8137         result = result && InnerExecutedAfter(innerAsyncBarrierId);
8138     }
8139     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8140 }
8141 
8142 // level1:spec, async level2:parallel, apply
SpecCase22(int code)8143 void MainAbility::SpecCase22(int code)
8144 {
8145     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8146     Reset();
8147     TestSetting outerSetting;
8148     TestSetting innerSetting;
8149     outerSetting.dispatcher = TestDispatcher::MAIN;
8150     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8151     innerSetting.apply = applyNum;
8152     outerSetting.op = TestOperation::ASYNC;
8153     innerSetting.op = TestOperation::APPLY;
8154     int taskCount = Dispatch(outerSetting, innerSetting);
8155     bool result = Wait(taskCount);
8156     result = result && task_execution_sequence.size() > 1;
8157     if (result) {
8158         result = result && applyExecuted(outerSetting, innerSetting);
8159         result = result && OuterTaskExecuted(outerSetting);
8160         result = result && InnerTaskExecuted(innerSetting);
8161     }
8162     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8163 }
8164 
8165 // level1:spec, async level2:serial, sync
SpecCase23(int code)8166 void MainAbility::SpecCase23(int code)
8167 {
8168     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8169     Reset();
8170     TestSetting outerSetting;
8171     TestSetting innerSetting;
8172     outerSetting.dispatcher = TestDispatcher::MAIN;
8173     innerSetting.dispatcher = TestDispatcher::SERIAL;
8174     outerSetting.op = TestOperation::ASYNC;
8175     innerSetting.op = TestOperation::SYNC;
8176     int taskCount = Dispatch(outerSetting, innerSetting);
8177     bool result = Wait(taskCount);
8178     result = result && task_execution_sequence.size() > 1;
8179     if (result) {
8180         result = result && applyExecuted(outerSetting, innerSetting);
8181         result = result && OuterTaskExecuted(outerSetting);
8182         result = result && InnerTaskExecuted(innerSetting);
8183         std::vector<size_t> outerTaskIndex;
8184         std::vector<std::vector<size_t>> innerTaskIndex;
8185         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8186         for (int i = 0; i < testTaskCount; i++) {
8187             result = result && IsAscend(innerTaskIndex[i]);
8188         }
8189     }
8190     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8191 }
8192 
8193 // level1:spec, async level2:serial, async
SpecCase24(int code)8194 void MainAbility::SpecCase24(int code)
8195 {
8196     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8197     Reset();
8198     TestSetting outerSetting;
8199     TestSetting innerSetting;
8200     outerSetting.dispatcher = TestDispatcher::MAIN;
8201     innerSetting.dispatcher = TestDispatcher::SERIAL;
8202     outerSetting.op = TestOperation::ASYNC;
8203     innerSetting.op = TestOperation::ASYNC;
8204     int taskCount = Dispatch(outerSetting, innerSetting);
8205     bool result = Wait(taskCount);
8206     result = result && task_execution_sequence.size() > 1;
8207     if (result) {
8208         result = result && applyExecuted(outerSetting, innerSetting);
8209         result = result && OuterTaskExecuted(outerSetting);
8210         result = result && InnerTaskExecuted(innerSetting);
8211         std::vector<size_t> outerTaskIndex;
8212         std::vector<std::vector<size_t>> innerTaskIndex;
8213         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8214         for (int i = 0; i < testTaskCount; i++) {
8215             result = result && IsAscend(innerTaskIndex[i]);
8216         }
8217     }
8218     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8219 }
8220 
8221 // level1:spec, async level2:serial, delay
SpecCase25(int code)8222 void MainAbility::SpecCase25(int code)
8223 {
8224     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8225     Reset();
8226     TestSetting outerSetting;
8227     TestSetting innerSetting;
8228     outerSetting.dispatcher = TestDispatcher::MAIN;
8229     innerSetting.dispatcher = TestDispatcher::SERIAL;
8230     innerSetting.delay = delayMs;
8231     outerSetting.op = TestOperation::ASYNC;
8232     innerSetting.op = TestOperation::DELAY;
8233     int taskCount = Dispatch(outerSetting, innerSetting);
8234     bool result = Wait(taskCount);
8235     result = result && task_execution_sequence.size() > 1;
8236     if (result) {
8237         result = result && applyExecuted(outerSetting, innerSetting);
8238         result = result && OuterTaskExecuted(outerSetting);
8239         result = result && InnerTaskExecuted(innerSetting);
8240         std::vector<size_t> outerTaskIndex;
8241         std::vector<std::vector<size_t>> innerTaskIndex;
8242         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8243         for (int i = 0; i < testTaskCount; i++) {
8244             result = result && IsAscend(innerTaskIndex[i]);
8245         }
8246     }
8247     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8248 }
8249 
8250 // level1:spec, async level2:serial, apply
SpecCase26(int code)8251 void MainAbility::SpecCase26(int code)
8252 {
8253     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8254     Reset();
8255     TestSetting outerSetting;
8256     TestSetting innerSetting;
8257     outerSetting.dispatcher = TestDispatcher::MAIN;
8258     innerSetting.dispatcher = TestDispatcher::SERIAL;
8259     innerSetting.apply = applyNum;
8260     outerSetting.op = TestOperation::ASYNC;
8261     innerSetting.op = TestOperation::APPLY;
8262     int taskCount = Dispatch(outerSetting, innerSetting);
8263     bool result = Wait(taskCount);
8264     result = result && task_execution_sequence.size() > 1;
8265     if (result) {
8266         result = result && applyExecuted(outerSetting, innerSetting);
8267         result = result && OuterTaskExecuted(outerSetting);
8268         result = result && InnerTaskExecuted(innerSetting);
8269     }
8270     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8271 }
8272 
8273 // level1:spec, delay level2:parallel, sync
SpecCase27(int code)8274 void MainAbility::SpecCase27(int code)
8275 {
8276     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8277     Reset();
8278     TestSetting outerSetting;
8279     TestSetting innerSetting;
8280     outerSetting.dispatcher = TestDispatcher::MAIN;
8281     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8282     outerSetting.delay = delayMs;
8283     outerSetting.op = TestOperation::DELAY;
8284     innerSetting.op = TestOperation::SYNC;
8285     int taskCount = Dispatch(outerSetting, innerSetting);
8286     bool result = Wait(taskCount);
8287     result = result && task_execution_sequence.size() > 1;
8288     if (result) {
8289         result = result && applyExecuted(outerSetting, innerSetting);
8290         result = result && OuterTaskExecuted(outerSetting);
8291         result = result && InnerTaskExecuted(innerSetting);
8292         std::vector<size_t> outerTaskIndex;
8293         std::vector<std::vector<size_t>> innerTaskIndex;
8294         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8295         for (int i = 0; i < testTaskCount; i++) {
8296             result = result && IsAscend(innerTaskIndex[i]);
8297         }
8298     }
8299     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8300 }
8301 
8302 // level1:spec, delay level2:parallel, async
SpecCase28(int code)8303 void MainAbility::SpecCase28(int code)
8304 {
8305     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8306     Reset();
8307     TestSetting outerSetting;
8308     TestSetting innerSetting;
8309     outerSetting.dispatcher = TestDispatcher::MAIN;
8310     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8311     outerSetting.delay = delayMs;
8312     outerSetting.op = TestOperation::DELAY;
8313     innerSetting.op = TestOperation::ASYNC;
8314     int taskCount = Dispatch(outerSetting, innerSetting);
8315     bool result = Wait(taskCount);
8316     result = result && task_execution_sequence.size() > 1;
8317     if (result) {
8318         result = result && applyExecuted(outerSetting, innerSetting);
8319         result = result && OuterTaskExecuted(outerSetting);
8320         result = result && InnerTaskExecuted(innerSetting);
8321     }
8322     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8323 }
8324 
8325 // level1:spec, delay level2:parallel, delay
SpecCase29(int code)8326 void MainAbility::SpecCase29(int code)
8327 {
8328     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8329     Reset();
8330     TestSetting outerSetting;
8331     TestSetting innerSetting;
8332     outerSetting.dispatcher = TestDispatcher::MAIN;
8333     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8334     outerSetting.delay = delayMs;
8335     innerSetting.delay = delayMs;
8336     outerSetting.op = TestOperation::DELAY;
8337     innerSetting.op = TestOperation::DELAY;
8338     int taskCount = Dispatch(outerSetting, innerSetting);
8339     bool result = Wait(taskCount);
8340     result = result && task_execution_sequence.size() > 1;
8341     if (result) {
8342         result = result && applyExecuted(outerSetting, innerSetting);
8343         result = result && OuterTaskExecuted(outerSetting);
8344         result = result && InnerTaskExecuted(innerSetting);
8345     }
8346     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8347 }
8348 
8349 // level1:spec, delay level2:parallel, group
SpecCase30(int code)8350 void MainAbility::SpecCase30(int code)
8351 {
8352     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8353     Reset();
8354     TestSetting outerSetting;
8355     TestSetting innerSetting;
8356     outerSetting.dispatcher = TestDispatcher::MAIN;
8357     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8358     outerSetting.delay = delayMs;
8359     innerSetting.create_group = true;
8360     outerSetting.op = TestOperation::DELAY;
8361     innerSetting.op = TestOperation::ASYNC_GROUP;
8362     int taskCount = Dispatch(outerSetting, innerSetting);
8363     bool result = Wait(taskCount);
8364     result = result && task_execution_sequence.size() > 1;
8365     if (result) {
8366         result = result && applyExecuted(outerSetting, innerSetting);
8367         result = result && OuterTaskExecuted(outerSetting);
8368         result = result && InnerTaskExecuted(innerSetting);
8369     }
8370     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8371 }
8372 
8373 // level1:spec, delay level2:parallel, group wait
SpecCase31(int code)8374 void MainAbility::SpecCase31(int code)
8375 {
8376     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8377     Reset();
8378     TestSetting outerSetting;
8379     TestSetting innerSetting;
8380     outerSetting.dispatcher = TestDispatcher::MAIN;
8381     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8382     innerSetting.group_wait = true;
8383     innerSetting.group_timeout = groupWait;
8384     outerSetting.delay = delayMs;
8385     innerSetting.create_group = true;
8386     outerSetting.op = TestOperation::DELAY;
8387     innerSetting.op = TestOperation::ASYNC_GROUP;
8388     int taskCount = Dispatch(outerSetting, innerSetting);
8389     bool result = Wait(taskCount);
8390     result = result && task_execution_sequence.size() > 1;
8391     if (result) {
8392         result = result && applyExecuted(outerSetting, innerSetting);
8393         result = result && OuterTaskExecuted(outerSetting);
8394         result = result && InnerTaskExecuted(innerSetting);
8395     }
8396     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8397 }
8398 
8399 // level1:spec, delay level2:parallel, group notify
SpecCase32(int code)8400 void MainAbility::SpecCase32(int code)
8401 {
8402     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8403     Reset();
8404     TestSetting outerSetting;
8405     TestSetting innerSetting;
8406     outerSetting.dispatcher = TestDispatcher::MAIN;
8407     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8408     outerSetting.delay = delayMs;
8409     innerSetting.create_group = true;
8410     innerSetting.group_notify = true;
8411     outerSetting.op = TestOperation::DELAY;
8412     innerSetting.op = TestOperation::ASYNC_GROUP;
8413     int taskCount = Dispatch(outerSetting, innerSetting);
8414     bool result = Wait(taskCount);
8415     result = result && task_execution_sequence.size() > 1;
8416     if (result) {
8417         result = result && applyExecuted(outerSetting, innerSetting);
8418         result = result && OuterTaskExecuted(outerSetting);
8419         result = result && InnerTaskExecuted(innerSetting);
8420         result = result && InnerExecutedAfter(innerGroupNotifyId);
8421     }
8422     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8423 }
8424 
8425 // level1:spec, delay level2:parallel, sync barrier
SpecCase33(int code)8426 void MainAbility::SpecCase33(int code)
8427 {
8428     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8429     Reset();
8430     TestSetting outerSetting;
8431     TestSetting innerSetting;
8432     outerSetting.dispatcher = TestDispatcher::MAIN;
8433     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8434     outerSetting.delay = delayMs;
8435     innerSetting.sync_barrier = true;
8436     innerSetting.create_group = true;
8437     outerSetting.op = TestOperation::DELAY;
8438     innerSetting.op = TestOperation::ASYNC_GROUP;
8439     int taskCount = Dispatch(outerSetting, innerSetting);
8440     bool result = Wait(taskCount);
8441     result = result && task_execution_sequence.size() > 1;
8442     if (result) {
8443         result = result && applyExecuted(outerSetting, innerSetting);
8444         result = result && OuterTaskExecuted(outerSetting);
8445         result = result && InnerTaskExecuted(innerSetting);
8446         result = result && InnerExecutedAfter(innerSyncBarrierId);
8447     }
8448     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8449 }
8450 
8451 // level1:spec, delay level2:parallel, async barrier
SpecCase34(int code)8452 void MainAbility::SpecCase34(int code)
8453 {
8454     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8455     Reset();
8456     TestSetting outerSetting;
8457     TestSetting innerSetting;
8458     outerSetting.dispatcher = TestDispatcher::MAIN;
8459     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8460     outerSetting.delay = delayMs;
8461     innerSetting.async_barrier = true;
8462     innerSetting.create_group = true;
8463     outerSetting.op = TestOperation::DELAY;
8464     innerSetting.op = TestOperation::ASYNC_GROUP;
8465     int taskCount = Dispatch(outerSetting, innerSetting);
8466     bool result = Wait(taskCount);
8467     result = result && task_execution_sequence.size() > 1;
8468     if (result) {
8469         result = result && applyExecuted(outerSetting, innerSetting);
8470         result = result && OuterTaskExecuted(outerSetting);
8471         result = result && InnerTaskExecuted(innerSetting);
8472         result = result && InnerExecutedAfter(innerAsyncBarrierId);
8473     }
8474     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8475 }
8476 
8477 // level1:spec, delay level2:parallel, apply
SpecCase35(int code)8478 void MainAbility::SpecCase35(int code)
8479 {
8480     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8481     Reset();
8482     TestSetting outerSetting;
8483     TestSetting innerSetting;
8484     outerSetting.dispatcher = TestDispatcher::MAIN;
8485     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8486     outerSetting.delay = delayMs;
8487     innerSetting.apply = applyNum;
8488     outerSetting.op = TestOperation::DELAY;
8489     innerSetting.op = TestOperation::APPLY;
8490     int taskCount = Dispatch(outerSetting, innerSetting);
8491     bool result = Wait(taskCount);
8492     result = result && task_execution_sequence.size() > 1;
8493     if (result) {
8494         result = result && applyExecuted(outerSetting, innerSetting);
8495         result = result && OuterTaskExecuted(outerSetting);
8496         result = result && InnerTaskExecuted(innerSetting);
8497     }
8498     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8499 }
8500 
8501 // level1:spec, delay level2:serial, sync
SpecCase36(int code)8502 void MainAbility::SpecCase36(int code)
8503 {
8504     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8505     Reset();
8506     TestSetting outerSetting;
8507     TestSetting innerSetting;
8508     outerSetting.dispatcher = TestDispatcher::MAIN;
8509     innerSetting.dispatcher = TestDispatcher::SERIAL;
8510     outerSetting.delay = delayMs;
8511     outerSetting.op = TestOperation::DELAY;
8512     innerSetting.op = TestOperation::SYNC;
8513     int taskCount = Dispatch(outerSetting, innerSetting);
8514     bool result = Wait(taskCount);
8515     result = result && task_execution_sequence.size() > 1;
8516     if (result) {
8517         result = result && applyExecuted(outerSetting, innerSetting);
8518         result = result && OuterTaskExecuted(outerSetting);
8519         result = result && InnerTaskExecuted(innerSetting);
8520         std::vector<size_t> outerTaskIndex;
8521         std::vector<std::vector<size_t>> innerTaskIndex;
8522         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8523         for (int i = 0; i < testTaskCount; i++) {
8524             result = result && IsAscend(innerTaskIndex[i]);
8525         }
8526     }
8527     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8528 }
8529 
8530 // level1:spec, delay level2:serial, async
SpecCase37(int code)8531 void MainAbility::SpecCase37(int code)
8532 {
8533     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8534     Reset();
8535     TestSetting outerSetting;
8536     TestSetting innerSetting;
8537     outerSetting.dispatcher = TestDispatcher::MAIN;
8538     innerSetting.dispatcher = TestDispatcher::SERIAL;
8539     outerSetting.delay = delayMs;
8540     outerSetting.op = TestOperation::DELAY;
8541     innerSetting.op = TestOperation::ASYNC;
8542     int taskCount = Dispatch(outerSetting, innerSetting);
8543     bool result = Wait(taskCount);
8544     result = result && task_execution_sequence.size() > 1;
8545     if (result) {
8546         result = result && applyExecuted(outerSetting, innerSetting);
8547         result = result && OuterTaskExecuted(outerSetting);
8548         result = result && InnerTaskExecuted(innerSetting);
8549         std::vector<size_t> outerTaskIndex;
8550         std::vector<std::vector<size_t>> innerTaskIndex;
8551         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8552         for (int i = 0; i < testTaskCount; i++) {
8553             result = result && IsAscend(innerTaskIndex[i]);
8554         }
8555     }
8556     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8557 }
8558 
8559 // level1:spec, delay level2:serial, delay
SpecCase38(int code)8560 void MainAbility::SpecCase38(int code)
8561 {
8562     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8563     Reset();
8564     TestSetting outerSetting;
8565     TestSetting innerSetting;
8566     outerSetting.dispatcher = TestDispatcher::MAIN;
8567     innerSetting.dispatcher = TestDispatcher::SERIAL;
8568     outerSetting.delay = delayMs;
8569     innerSetting.delay = delayMs;
8570     outerSetting.op = TestOperation::DELAY;
8571     innerSetting.op = TestOperation::DELAY;
8572     int taskCount = Dispatch(outerSetting, innerSetting);
8573     bool result = Wait(taskCount);
8574     result = result && task_execution_sequence.size() > 1;
8575     if (result) {
8576         result = result && applyExecuted(outerSetting, innerSetting);
8577         result = result && OuterTaskExecuted(outerSetting);
8578         result = result && InnerTaskExecuted(innerSetting);
8579         std::vector<size_t> outerTaskIndex;
8580         std::vector<std::vector<size_t>> innerTaskIndex;
8581         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8582         for (int i = 0; i < testTaskCount; i++) {
8583             result = result && IsAscend(innerTaskIndex[i]);
8584         }
8585     }
8586     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8587 }
8588 
8589 // level1:spec, delay level2:serial, apply
SpecCase39(int code)8590 void MainAbility::SpecCase39(int code)
8591 {
8592     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8593     Reset();
8594     TestSetting outerSetting;
8595     TestSetting innerSetting;
8596     outerSetting.dispatcher = TestDispatcher::MAIN;
8597     innerSetting.dispatcher = TestDispatcher::SERIAL;
8598     outerSetting.delay = delayMs;
8599     innerSetting.apply = applyNum;
8600     outerSetting.op = TestOperation::DELAY;
8601     innerSetting.op = TestOperation::APPLY;
8602     int taskCount = Dispatch(outerSetting, innerSetting);
8603     bool result = Wait(taskCount);
8604     result = result && task_execution_sequence.size() > 1;
8605     if (result) {
8606         result = result && applyExecuted(outerSetting, innerSetting);
8607         result = result && OuterTaskExecuted(outerSetting);
8608         result = result && InnerTaskExecuted(innerSetting);
8609     }
8610     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8611 }
8612 
8613 // level1:spec, apply level2:parallel, sync
SpecCase40(int code)8614 void MainAbility::SpecCase40(int code)
8615 {
8616     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8617     Reset();
8618     TestSetting outerSetting;
8619     TestSetting innerSetting;
8620     outerSetting.dispatcher = TestDispatcher::MAIN;
8621     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8622     outerSetting.apply = applyNum;
8623     outerSetting.op = TestOperation::APPLY;
8624     innerSetting.op = TestOperation::SYNC;
8625     int taskCount = Dispatch(outerSetting, innerSetting);
8626     bool result = Wait(taskCount);
8627     result = result && task_execution_sequence.size() > 1;
8628     if (result) {
8629         result = result && applyExecuted(outerSetting, innerSetting);
8630         result = result && OuterTaskExecuted(outerSetting);
8631         result = result && InnerTaskExecuted(innerSetting);
8632         std::vector<size_t> outerTaskIndex;
8633         std::vector<std::vector<size_t>> innerTaskIndex;
8634         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8635         for (int i = 0; i < testTaskCount; i++) {
8636             result = result && IsAscend(innerTaskIndex[i]);
8637         }
8638     }
8639     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8640 }
8641 
8642 // level1:spec, apply level2:parallel, async
SpecCase41(int code)8643 void MainAbility::SpecCase41(int code)
8644 {
8645     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8646     Reset();
8647     TestSetting outerSetting;
8648     TestSetting innerSetting;
8649     outerSetting.dispatcher = TestDispatcher::MAIN;
8650     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8651     outerSetting.apply = applyNum;
8652     outerSetting.op = TestOperation::APPLY;
8653     innerSetting.op = TestOperation::ASYNC;
8654     int taskCount = Dispatch(outerSetting, innerSetting);
8655     bool result = Wait(taskCount);
8656     result = result && task_execution_sequence.size() > 1;
8657     if (result) {
8658         result = result && applyExecuted(outerSetting, innerSetting);
8659         result = result && OuterTaskExecuted(outerSetting);
8660         result = result && InnerTaskExecuted(innerSetting);
8661     }
8662     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8663 }
8664 
8665 // level1:spec, apply level2:parallel, delay
SpecCase42(int code)8666 void MainAbility::SpecCase42(int code)
8667 {
8668     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8669     Reset();
8670     TestSetting outerSetting;
8671     TestSetting innerSetting;
8672     outerSetting.dispatcher = TestDispatcher::MAIN;
8673     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8674     outerSetting.apply = applyNum;
8675     innerSetting.delay = delayMs;
8676     outerSetting.op = TestOperation::APPLY;
8677     innerSetting.op = TestOperation::DELAY;
8678     int taskCount = Dispatch(outerSetting, innerSetting);
8679     bool result = Wait(taskCount);
8680     result = result && task_execution_sequence.size() > 1;
8681     if (result) {
8682         result = result && applyExecuted(outerSetting, innerSetting);
8683         result = result && OuterTaskExecuted(outerSetting);
8684         result = result && InnerTaskExecuted(innerSetting);
8685     }
8686     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8687 }
8688 
8689 // level1:spec, apply level2:parallel, group
SpecCase43(int code)8690 void MainAbility::SpecCase43(int code)
8691 {
8692     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8693     Reset();
8694     TestSetting outerSetting;
8695     TestSetting innerSetting;
8696     outerSetting.dispatcher = TestDispatcher::MAIN;
8697     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8698     outerSetting.apply = applyNum;
8699     innerSetting.create_group = true;
8700     outerSetting.op = TestOperation::APPLY;
8701     innerSetting.op = TestOperation::ASYNC_GROUP;
8702     int taskCount = Dispatch(outerSetting, innerSetting);
8703     bool result = Wait(taskCount);
8704     result = result && task_execution_sequence.size() > 1;
8705     if (result) {
8706         result = result && applyExecuted(outerSetting, innerSetting);
8707         result = result && OuterTaskExecuted(outerSetting);
8708         result = result && InnerTaskExecuted(innerSetting);
8709     }
8710     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8711 }
8712 
8713 // level1:spec, apply level2:parallel, group wait
SpecCase44(int code)8714 void MainAbility::SpecCase44(int code)
8715 {
8716     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8717     Reset();
8718     TestSetting outerSetting;
8719     TestSetting innerSetting;
8720     outerSetting.dispatcher = TestDispatcher::MAIN;
8721     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8722     innerSetting.group_wait = true;
8723     innerSetting.group_timeout = groupWait;
8724     outerSetting.apply = applyNum;
8725     innerSetting.create_group = true;
8726     outerSetting.op = TestOperation::APPLY;
8727     innerSetting.op = TestOperation::ASYNC_GROUP;
8728     int taskCount = Dispatch(outerSetting, innerSetting);
8729     bool result = Wait(taskCount);
8730     result = result && task_execution_sequence.size() > 1;
8731     if (result) {
8732         result = result && applyExecuted(outerSetting, innerSetting);
8733         result = result && OuterTaskExecuted(outerSetting);
8734         result = result && InnerTaskExecuted(innerSetting);
8735     }
8736     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8737 }
8738 
8739 // level1:spec, apply level2:parallel, group notify
SpecCase45(int code)8740 void MainAbility::SpecCase45(int code)
8741 {
8742     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8743     Reset();
8744     TestSetting outerSetting;
8745     TestSetting innerSetting;
8746     outerSetting.dispatcher = TestDispatcher::MAIN;
8747     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8748     outerSetting.apply = applyNum;
8749     innerSetting.create_group = true;
8750     innerSetting.group_notify = true;
8751     outerSetting.op = TestOperation::APPLY;
8752     innerSetting.op = TestOperation::ASYNC_GROUP;
8753     int taskCount = Dispatch(outerSetting, innerSetting);
8754     bool result = Wait(taskCount);
8755     result = result && task_execution_sequence.size() > 1;
8756     if (result) {
8757         result = result && applyExecuted(outerSetting, innerSetting);
8758         result = result && OuterTaskExecuted(outerSetting);
8759         result = result && InnerTaskExecuted(innerSetting);
8760         result = result && InnerExecutedAfter(innerGroupNotifyId);
8761     }
8762     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8763 }
8764 
8765 // level1:spec, apply level2:parallel, sync barrier
SpecCase46(int code)8766 void MainAbility::SpecCase46(int code)
8767 {
8768     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8769     Reset();
8770     TestSetting outerSetting;
8771     TestSetting innerSetting;
8772     outerSetting.dispatcher = TestDispatcher::MAIN;
8773     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8774     outerSetting.apply = applyNum;
8775     innerSetting.sync_barrier = true;
8776     innerSetting.create_group = true;
8777     outerSetting.op = TestOperation::APPLY;
8778     innerSetting.op = TestOperation::ASYNC_GROUP;
8779     int taskCount = Dispatch(outerSetting, innerSetting);
8780     bool result = Wait(taskCount);
8781     result = result && task_execution_sequence.size() > 1;
8782     if (result) {
8783         result = result && applyExecuted(outerSetting, innerSetting);
8784         result = result && OuterTaskExecuted(outerSetting);
8785         result = result && InnerTaskExecuted(innerSetting);
8786         result = result && InnerExecutedAfter(innerSyncBarrierId);
8787     }
8788     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8789 }
8790 
8791 // level1:spec, apply level2:parallel, async barrier
SpecCase47(int code)8792 void MainAbility::SpecCase47(int code)
8793 {
8794     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8795     Reset();
8796     TestSetting outerSetting;
8797     TestSetting innerSetting;
8798     outerSetting.dispatcher = TestDispatcher::MAIN;
8799     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8800     outerSetting.apply = applyNum;
8801     innerSetting.async_barrier = true;
8802     innerSetting.create_group = true;
8803     outerSetting.op = TestOperation::APPLY;
8804     innerSetting.op = TestOperation::ASYNC_GROUP;
8805     int taskCount = Dispatch(outerSetting, innerSetting);
8806     bool result = Wait(taskCount);
8807     result = result && task_execution_sequence.size() > 1;
8808     if (result) {
8809         result = result && applyExecuted(outerSetting, innerSetting);
8810         result = result && OuterTaskExecuted(outerSetting);
8811         result = result && InnerTaskExecuted(innerSetting);
8812         result = result && InnerExecutedAfter(innerAsyncBarrierId);
8813     }
8814     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8815 }
8816 
8817 // level1:spec, apply level2:parallel, apply
SpecCase48(int code)8818 void MainAbility::SpecCase48(int code)
8819 {
8820     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8821     Reset();
8822     TestSetting outerSetting;
8823     TestSetting innerSetting;
8824     outerSetting.dispatcher = TestDispatcher::MAIN;
8825     innerSetting.dispatcher = TestDispatcher::PARALLEL;
8826     outerSetting.apply = applyNum;
8827     innerSetting.apply = applyNum;
8828     outerSetting.op = TestOperation::APPLY;
8829     innerSetting.op = TestOperation::APPLY;
8830     int taskCount = Dispatch(outerSetting, innerSetting);
8831     bool result = Wait(taskCount);
8832     result = result && task_execution_sequence.size() > 1;
8833     if (result) {
8834         result = result && applyExecuted(outerSetting, innerSetting);
8835         result = result && OuterTaskExecuted(outerSetting);
8836         result = result && InnerTaskExecuted(innerSetting);
8837     }
8838     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8839 }
8840 
8841 // level1:spec, apply level2:serial, sync
SpecCase49(int code)8842 void MainAbility::SpecCase49(int code)
8843 {
8844     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8845     Reset();
8846     TestSetting outerSetting;
8847     TestSetting innerSetting;
8848     outerSetting.dispatcher = TestDispatcher::MAIN;
8849     innerSetting.dispatcher = TestDispatcher::SERIAL;
8850     outerSetting.apply = applyNum;
8851     outerSetting.op = TestOperation::APPLY;
8852     innerSetting.op = TestOperation::SYNC;
8853     int taskCount = Dispatch(outerSetting, innerSetting);
8854     bool result = Wait(taskCount);
8855     result = result && task_execution_sequence.size() > 1;
8856     if (result) {
8857         result = result && applyExecuted(outerSetting, innerSetting);
8858         result = result && OuterTaskExecuted(outerSetting);
8859         result = result && InnerTaskExecuted(innerSetting);
8860         std::vector<size_t> outerTaskIndex;
8861         std::vector<std::vector<size_t>> innerTaskIndex;
8862         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8863         for (int i = 0; i < testTaskCount; i++) {
8864             result = result && IsAscend(innerTaskIndex[i]);
8865         }
8866     }
8867     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8868 }
8869 
8870 // level1:spec, apply level2:serial, async
SpecCase50(int code)8871 void MainAbility::SpecCase50(int code)
8872 {
8873     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8874     Reset();
8875     TestSetting outerSetting;
8876     TestSetting innerSetting;
8877     outerSetting.dispatcher = TestDispatcher::MAIN;
8878     innerSetting.dispatcher = TestDispatcher::SERIAL;
8879     outerSetting.apply = applyNum;
8880     outerSetting.op = TestOperation::APPLY;
8881     innerSetting.op = TestOperation::ASYNC;
8882     int taskCount = Dispatch(outerSetting, innerSetting);
8883     bool result = Wait(taskCount);
8884     result = result && task_execution_sequence.size() > 1;
8885     if (result) {
8886         result = result && applyExecuted(outerSetting, innerSetting);
8887         result = result && OuterTaskExecuted(outerSetting);
8888         result = result && InnerTaskExecuted(innerSetting);
8889         std::vector<size_t> outerTaskIndex;
8890         std::vector<std::vector<size_t>> innerTaskIndex;
8891         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8892         for (int i = 0; i < testTaskCount; i++) {
8893             result = result && IsAscend(innerTaskIndex[i]);
8894         }
8895     }
8896     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8897 }
8898 
8899 // level1:spec, apply level2:serial, delay
SpecCase51(int code)8900 void MainAbility::SpecCase51(int code)
8901 {
8902     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8903     Reset();
8904     TestSetting outerSetting;
8905     TestSetting innerSetting;
8906     outerSetting.dispatcher = TestDispatcher::MAIN;
8907     innerSetting.dispatcher = TestDispatcher::SERIAL;
8908     outerSetting.apply = applyNum;
8909     innerSetting.delay = delayMs;
8910     outerSetting.op = TestOperation::APPLY;
8911     innerSetting.op = TestOperation::DELAY;
8912     int taskCount = Dispatch(outerSetting, innerSetting);
8913     bool result = Wait(taskCount);
8914     result = result && task_execution_sequence.size() > 1;
8915     if (result) {
8916         result = result && applyExecuted(outerSetting, innerSetting);
8917         result = result && OuterTaskExecuted(outerSetting);
8918         result = result && InnerTaskExecuted(innerSetting);
8919         std::vector<size_t> outerTaskIndex;
8920         std::vector<std::vector<size_t>> innerTaskIndex;
8921         GetTaskIndex(outerTaskIndex, innerTaskIndex);
8922         for (int i = 0; i < testTaskCount; i++) {
8923             result = result && IsAscend(innerTaskIndex[i]);
8924         }
8925     }
8926     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8927 }
8928 
8929 // level1:spec, apply level2:serial, apply
SpecCase52(int code)8930 void MainAbility::SpecCase52(int code)
8931 {
8932     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8933     Reset();
8934     TestSetting outerSetting;
8935     TestSetting innerSetting;
8936     outerSetting.dispatcher = TestDispatcher::MAIN;
8937     innerSetting.dispatcher = TestDispatcher::SERIAL;
8938     outerSetting.apply = applyNum;
8939     innerSetting.apply = applyNum;
8940     outerSetting.op = TestOperation::APPLY;
8941     innerSetting.op = TestOperation::APPLY;
8942     int taskCount = Dispatch(outerSetting, innerSetting);
8943     bool result = Wait(taskCount);
8944     result = result && task_execution_sequence.size() > 1;
8945     if (result) {
8946         result = result && applyExecuted(outerSetting, innerSetting);
8947         result = result && OuterTaskExecuted(outerSetting);
8948         result = result && InnerTaskExecuted(innerSetting);
8949     }
8950     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
8951 }
8952 
addTaskFromList(TaskList & dispatcher,const std::vector<TestOperation> & operationList,int & taskId,const int apply=0,const long delay=0)8953 static void addTaskFromList(TaskList &dispatcher, const std::vector<TestOperation> &operationList, int &taskId,
8954     const int apply = 0, const long delay = 0)
8955 {
8956     for (auto op : operationList) {
8957         if (op == TestOperation::CREATE_GROUP) {
8958             dispatcher.addOperation(op);
8959             continue;
8960         }
8961         if (op == TestOperation::APPLY) {
8962             dispatcher.addApply(apply);
8963         }
8964         if (op == TestOperation::DELAY) {
8965             dispatcher.addDelay(delay);
8966         }
8967         dispatcher.addOperation(op).addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }));
8968         taskId++;
8969     }
8970 }
HybridCase1(int code)8971 void MainAbility::HybridCase1(int code)
8972 {
8973     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
8974     Reset();
8975     auto context = GetContext();
8976     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
8977     std::vector<TestOperation> operationList = {
8978         TestOperation::SYNC,
8979         TestOperation::ASYNC,
8980         TestOperation::DELAY,
8981         TestOperation::CREATE_GROUP,
8982         TestOperation::ASYNC_GROUP,
8983         TestOperation::GROUP_NOTIFY,
8984         TestOperation::APPLY,
8985     };
8986     int taskId = 0;
8987     const int apply = 2;
8988     const int delay = 10;
8989     addTaskFromList(globalDispatcher, operationList, taskId, apply, delay);
8990     globalDispatcher.executedTask();
8991     Wait(taskId + apply - 1);
8992     bool result = task_execution_sequence.size() > 1;
8993     std::vector<size_t> outerTaskIndex;
8994     std::vector<std::vector<size_t>> innerTaskIndex;
8995     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
8996     for (auto index : outerTaskIndex) {
8997         result = result && (index != std::string::npos);
8998     }
8999     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9000 };
HybridCase2(int code)9001 void MainAbility::HybridCase2(int code)
9002 {
9003     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9004     Reset();
9005     auto context = GetContext();
9006     TaskList parallelDispatcher = TaskList {TestDispatcher::PARALLEL, context, "parallel"};
9007     std::vector<TestOperation> operationList = {
9008         TestOperation::SYNC,
9009         TestOperation::ASYNC,
9010         TestOperation::DELAY,
9011         TestOperation::CREATE_GROUP,
9012         TestOperation::ASYNC_GROUP,
9013         TestOperation::SYNC_BARRIER,
9014         TestOperation::CREATE_GROUP,
9015         TestOperation::ASYNC_GROUP,
9016         TestOperation::GROUP_NOTIFY,
9017         TestOperation::ASYNC_BARRIER,
9018         TestOperation::APPLY,
9019     };
9020     int taskId = 0;
9021     const int apply = 2;
9022     const int delay = 10;
9023     addTaskFromList(parallelDispatcher, operationList, taskId, apply, delay);
9024     parallelDispatcher.executedTask();
9025     Wait(taskId + apply - 1);
9026     bool result = task_execution_sequence.size() > 1;
9027     std::vector<size_t> outerTaskIndex;
9028     std::vector<std::vector<size_t>> innerTaskIndex;
9029     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9030     for (auto index : outerTaskIndex) {
9031         result = result && (index != std::string::npos);
9032     }
9033     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9034 };
HybridCase3(int code)9035 void MainAbility::HybridCase3(int code)
9036 {
9037     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9038     Reset();
9039     auto context = GetContext();
9040     TaskList serialDispatcher = TaskList {TestDispatcher::SERIAL, context, "serial"};
9041     std::vector<TestOperation> operationList = {
9042         TestOperation::SYNC,
9043         TestOperation::ASYNC,
9044         TestOperation::DELAY,
9045         TestOperation::APPLY,
9046     };
9047     int taskId = 0;
9048     const int apply = 2;
9049     const int delay = 10;
9050     addTaskFromList(serialDispatcher, operationList, taskId, apply, delay);
9051     serialDispatcher.executedTask();
9052     Wait(taskId + apply - 1);
9053     bool result = task_execution_sequence.size() > 1;
9054     std::vector<size_t> outerTaskIndex;
9055     std::vector<std::vector<size_t>> innerTaskIndex;
9056     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9057     for (auto index : outerTaskIndex) {
9058         result = result && (index != std::string::npos);
9059     }
9060     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9061 };
HybridCase4(int code)9062 void MainAbility::HybridCase4(int code)
9063 {
9064     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9065     Reset();
9066     auto context = GetContext();
9067     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9068     std::vector<TestOperation> operationList = {
9069         TestOperation::SYNC,
9070         TestOperation::ASYNC,
9071         TestOperation::DELAY,
9072         TestOperation::APPLY,
9073     };
9074     int taskId = 0;
9075     const int apply = 2;
9076     const int delay = 10;
9077     addTaskFromList(mainDispatcher, operationList, taskId, apply, delay);
9078     mainDispatcher.executedTask();
9079     Wait(taskId + apply - 1);
9080     bool result = task_execution_sequence.size() > 1;
9081     std::vector<size_t> outerTaskIndex;
9082     std::vector<std::vector<size_t>> innerTaskIndex;
9083     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9084     for (auto index : outerTaskIndex) {
9085         result = result && (index != std::string::npos);
9086     }
9087     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9088 };
HybridCase5(int code)9089 void MainAbility::HybridCase5(int code)
9090 {
9091     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9092     Reset();
9093     auto context = GetContext();
9094     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9095     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9096     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9097     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9098     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9099     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9100     int taskId = 0;
9101     globalDispatcher.addOperation(TestOperation::SYNC)
9102         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9103         .executedTask();
9104     taskId++;
9105     parallelDispatcher1.addOperation(TestOperation::SYNC)
9106         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9107         .executedTask();
9108     taskId++;
9109     parallelDispatcher2.addOperation(TestOperation::SYNC)
9110         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9111         .executedTask();
9112     taskId++;
9113     serialDispatcher1.addOperation(TestOperation::SYNC)
9114         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9115         .executedTask();
9116     taskId++;
9117     serialDispatcher2.addOperation(TestOperation::SYNC)
9118         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9119         .executedTask();
9120     taskId++;
9121     mainDispatcher.addOperation(TestOperation::SYNC)
9122         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9123         .executedTask();
9124     taskId++;
9125     Wait(taskId);
9126     bool result = task_execution_sequence.size() > 1;
9127     std::vector<size_t> outerTaskIndex;
9128     std::vector<std::vector<size_t>> innerTaskIndex;
9129     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9130     for (auto index : outerTaskIndex) {
9131         result = result && (index != std::string::npos);
9132     }
9133     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9134 };
HybridCase6(int code)9135 void MainAbility::HybridCase6(int code)
9136 {
9137     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9138     Reset();
9139     auto context = GetContext();
9140     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9141     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9142     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9143     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9144     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9145     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9146     int taskId = 0;
9147     globalDispatcher.addOperation(TestOperation::ASYNC)
9148         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9149         .executedTask();
9150     taskId++;
9151     parallelDispatcher1.addOperation(TestOperation::ASYNC)
9152         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9153         .executedTask();
9154     taskId++;
9155     parallelDispatcher2.addOperation(TestOperation::ASYNC)
9156         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9157         .executedTask();
9158     taskId++;
9159     serialDispatcher1.addOperation(TestOperation::ASYNC)
9160         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9161         .executedTask();
9162     taskId++;
9163     serialDispatcher2.addOperation(TestOperation::ASYNC)
9164         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9165         .executedTask();
9166     taskId++;
9167     mainDispatcher.addOperation(TestOperation::ASYNC)
9168         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9169         .executedTask();
9170     taskId++;
9171     Wait(taskId);
9172     bool result = task_execution_sequence.size() > 1;
9173     std::vector<size_t> outerTaskIndex;
9174     std::vector<std::vector<size_t>> innerTaskIndex;
9175     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9176     for (auto index : outerTaskIndex) {
9177         result = result && (index != std::string::npos);
9178     }
9179     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9180 };
HybridCase7(int code)9181 void MainAbility::HybridCase7(int code)
9182 {
9183     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9184     Reset();
9185     auto context = GetContext();
9186     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9187     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9188     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9189     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9190     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9191     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9192     int taskId = 0;
9193     const long delay = 10;
9194     globalDispatcher.addOperation(TestOperation::DELAY)
9195         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9196         .addDelay(delay)
9197         .executedTask();
9198     taskId++;
9199     parallelDispatcher1.addOperation(TestOperation::DELAY)
9200         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9201         .addDelay(delay)
9202         .executedTask();
9203     taskId++;
9204     parallelDispatcher2.addOperation(TestOperation::DELAY)
9205         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9206         .addDelay(delay)
9207         .executedTask();
9208     taskId++;
9209     serialDispatcher1.addOperation(TestOperation::DELAY)
9210         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9211         .addDelay(delay)
9212         .executedTask();
9213     taskId++;
9214     serialDispatcher2.addOperation(TestOperation::DELAY)
9215         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9216         .addDelay(delay)
9217         .executedTask();
9218     taskId++;
9219     mainDispatcher.addOperation(TestOperation::DELAY)
9220         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9221         .addDelay(delay)
9222         .executedTask();
9223     taskId++;
9224     Wait(taskId);
9225     bool result = task_execution_sequence.size() > 1;
9226     std::vector<size_t> outerTaskIndex;
9227     std::vector<std::vector<size_t>> innerTaskIndex;
9228     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9229     for (auto index : outerTaskIndex) {
9230         result = result && (index != std::string::npos);
9231     }
9232     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9233 };
HybridCase8(int code)9234 void MainAbility::HybridCase8(int code)
9235 {
9236     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9237     Reset();
9238     auto context = GetContext();
9239     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9240     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9241     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9242     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9243     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9244     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9245     int taskId = 0;
9246     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9247         .addOperation(TestOperation::ASYNC_GROUP)
9248         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9249         .executedTask();
9250     taskId++;
9251     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
9252         .addOperation(TestOperation::ASYNC_GROUP)
9253         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9254         .executedTask();
9255     taskId++;
9256     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9257         .addOperation(TestOperation::ASYNC_GROUP)
9258         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9259         .executedTask();
9260     taskId++;
9261     serialDispatcher1.addOperation(TestOperation::SYNC)
9262         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9263         .executedTask();
9264     taskId++;
9265     serialDispatcher2.addOperation(TestOperation::SYNC)
9266         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9267         .executedTask();
9268     taskId++;
9269     mainDispatcher.addOperation(TestOperation::SYNC)
9270         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9271         .executedTask();
9272     taskId++;
9273     Wait(taskId);
9274     bool result = task_execution_sequence.size() > 1;
9275     std::vector<size_t> outerTaskIndex;
9276     std::vector<std::vector<size_t>> innerTaskIndex;
9277     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9278     for (auto index : outerTaskIndex) {
9279         result = result && (index != std::string::npos);
9280     }
9281     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9282 };
HybridCase9(int code)9283 void MainAbility::HybridCase9(int code)
9284 {
9285     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9286     Reset();
9287     auto context = GetContext();
9288     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9289     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9290     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9291     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9292     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9293     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9294     int taskId = 0;
9295     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9296         .addOperation(TestOperation::ASYNC_GROUP)
9297         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9298         .executedTask();
9299     taskId++;
9300     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
9301         .addOperation(TestOperation::ASYNC_GROUP)
9302         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9303         .executedTask();
9304     taskId++;
9305     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9306         .addOperation(TestOperation::ASYNC_GROUP)
9307         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9308         .executedTask();
9309     taskId++;
9310     serialDispatcher1.addOperation(TestOperation::ASYNC)
9311         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9312         .executedTask();
9313     taskId++;
9314     serialDispatcher2.addOperation(TestOperation::ASYNC)
9315         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9316         .executedTask();
9317     taskId++;
9318     mainDispatcher.addOperation(TestOperation::ASYNC)
9319         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9320         .executedTask();
9321     taskId++;
9322     Wait(taskId);
9323     bool result = task_execution_sequence.size() > 1;
9324     std::vector<size_t> outerTaskIndex;
9325     std::vector<std::vector<size_t>> innerTaskIndex;
9326     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9327     for (auto index : outerTaskIndex) {
9328         result = result && (index != std::string::npos);
9329     }
9330     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9331 };
HybridCase10(int code)9332 void MainAbility::HybridCase10(int code)
9333 {
9334     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9335     Reset();
9336     auto context = GetContext();
9337     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9338     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9339     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9340     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9341     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9342     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9343     int taskId = 0;
9344     const long delay = 10;
9345     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9346         .addOperation(TestOperation::ASYNC_GROUP)
9347         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9348         .executedTask();
9349     taskId++;
9350     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
9351         .addOperation(TestOperation::ASYNC_GROUP)
9352         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9353         .executedTask();
9354     taskId++;
9355     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9356         .addOperation(TestOperation::ASYNC_GROUP)
9357         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9358         .executedTask();
9359     taskId++;
9360     serialDispatcher1.addOperation(TestOperation::DELAY)
9361         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9362         .addDelay(delay)
9363         .executedTask();
9364     taskId++;
9365     serialDispatcher2.addOperation(TestOperation::DELAY)
9366         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9367         .addDelay(delay)
9368         .executedTask();
9369     taskId++;
9370     mainDispatcher.addOperation(TestOperation::DELAY)
9371         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9372         .addDelay(delay)
9373         .executedTask();
9374     taskId++;
9375     Wait(taskId);
9376     bool result = task_execution_sequence.size() > 1;
9377     std::vector<size_t> outerTaskIndex;
9378     std::vector<std::vector<size_t>> innerTaskIndex;
9379     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9380     for (auto index : outerTaskIndex) {
9381         result = result && (index != std::string::npos);
9382     }
9383     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9384 };
HybridCase11(int code)9385 void MainAbility::HybridCase11(int code)
9386 {
9387     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9388     Reset();
9389     auto context = GetContext();
9390     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9391     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9392     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9393     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9394     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9395     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9396     int taskId = 0;
9397     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9398         .addOperation(TestOperation::ASYNC_GROUP)
9399         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9400         .addOperation(TestOperation::GROUP_NOTIFY)
9401         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9402         .executedTask();
9403     taskId += numTwo;
9404     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
9405         .addOperation(TestOperation::ASYNC_GROUP)
9406         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9407         .addOperation(TestOperation::GROUP_NOTIFY)
9408         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9409         .executedTask();
9410     taskId += numTwo;
9411     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9412         .addOperation(TestOperation::ASYNC_GROUP)
9413         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9414         .addOperation(TestOperation::GROUP_NOTIFY)
9415         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9416         .executedTask();
9417     taskId += numTwo;
9418     serialDispatcher1.addOperation(TestOperation::ASYNC)
9419         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9420         .executedTask();
9421     taskId++;
9422     serialDispatcher2.addOperation(TestOperation::ASYNC)
9423         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9424         .executedTask();
9425     taskId++;
9426     mainDispatcher.addOperation(TestOperation::ASYNC)
9427         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9428         .executedTask();
9429     taskId++;
9430     Wait(taskId);
9431     bool result = task_execution_sequence.size() > 1;
9432     std::vector<size_t> outerTaskIndex;
9433     std::vector<std::vector<size_t>> innerTaskIndex;
9434     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9435     for (auto index : outerTaskIndex) {
9436         result = result && (index != std::string::npos);
9437     }
9438     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9439 };
HybridCase12(int code)9440 void MainAbility::HybridCase12(int code)
9441 {
9442     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9443     Reset();
9444     auto context = GetContext();
9445     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9446     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9447     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9448     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9449     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9450     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9451     int taskId = 0;
9452     int taskCount = 0;
9453     const int apply = 2;
9454     globalDispatcher.addOperation(TestOperation::APPLY)
9455         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9456         .addApply(apply)
9457         .executedTask();
9458     taskId++;
9459     taskCount += apply;
9460     parallelDispatcher1.addOperation(TestOperation::APPLY)
9461         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9462         .addApply(apply)
9463         .executedTask();
9464     taskId++;
9465     taskCount += apply;
9466     parallelDispatcher2.addOperation(TestOperation::APPLY)
9467         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9468         .addApply(apply)
9469         .executedTask();
9470     taskId++;
9471     taskCount += apply;
9472     serialDispatcher1.addOperation(TestOperation::APPLY)
9473         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9474         .addApply(apply)
9475         .executedTask();
9476     taskId++;
9477     taskCount += apply;
9478     serialDispatcher2.addOperation(TestOperation::APPLY)
9479         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9480         .addApply(apply)
9481         .executedTask();
9482     taskId++;
9483     taskCount += apply;
9484     mainDispatcher.addOperation(TestOperation::APPLY)
9485         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9486         .addApply(apply)
9487         .executedTask();
9488     taskId++;
9489     taskCount += apply;
9490     Wait(taskCount);
9491     bool result = task_execution_sequence.size() > 1;
9492     std::vector<size_t> outerTaskIndex;
9493     std::vector<std::vector<size_t>> innerTaskIndex;
9494     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9495     for (auto index : outerTaskIndex) {
9496         result = result && (index != std::string::npos);
9497     }
9498     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9499 };
HybridCase13(int code)9500 void MainAbility::HybridCase13(int code)
9501 {
9502     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9503     Reset();
9504     auto context = GetContext();
9505     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9506     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9507     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9508     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9509     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9510     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9511     int taskId = 0;
9512     int taskCount = 0;
9513     const int apply = 1;
9514     const int delay = 10;
9515     globalDispatcher.addOperation(TestOperation::DELAY)
9516         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9517         .addDelay(delay)
9518         .executedTask();
9519     taskId++;
9520     taskCount += apply;
9521     parallelDispatcher1.addOperation(TestOperation::SYNC)
9522         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9523         .executedTask();
9524     taskId++;
9525     taskCount += apply;
9526     parallelDispatcher2.addOperation(TestOperation::ASYNC)
9527         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9528         .executedTask();
9529     taskId++;
9530     taskCount += apply;
9531     serialDispatcher1.addOperation(TestOperation::DELAY)
9532         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9533         .addDelay(delay)
9534         .executedTask();
9535     taskId++;
9536     taskCount += apply;
9537     serialDispatcher2.addOperation(TestOperation::ASYNC)
9538         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9539         .executedTask();
9540     taskId++;
9541     taskCount += apply;
9542     mainDispatcher.addOperation(TestOperation::SYNC)
9543         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9544         .executedTask();
9545     taskId++;
9546     taskCount += apply;
9547     Wait(taskCount);
9548     bool result = task_execution_sequence.size() > 1;
9549     std::vector<size_t> outerTaskIndex;
9550     std::vector<std::vector<size_t>> innerTaskIndex;
9551     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9552     for (auto index : outerTaskIndex) {
9553         result = result && (index != std::string::npos);
9554     }
9555     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9556 };
HybridCase14(int code)9557 void MainAbility::HybridCase14(int code)
9558 {
9559     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9560     Reset();
9561     auto context = GetContext();
9562     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9563     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9564     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9565     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9566     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9567     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9568     int taskId = 0;
9569     int taskCount = 0;
9570     const int apply = 2;
9571     const int delay = 10;
9572     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9573         .addOperation(TestOperation::ASYNC_GROUP)
9574         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9575         .executedTask();
9576     taskId++;
9577     taskCount++;
9578     parallelDispatcher1.addOperation(TestOperation::SYNC)
9579         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9580         .executedTask();
9581     taskId++;
9582     taskCount++;
9583     parallelDispatcher2.addOperation(TestOperation::DELAY)
9584         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9585         .addDelay(delay)
9586         .executedTask();
9587     taskId++;
9588     taskCount++;
9589     serialDispatcher1.addOperation(TestOperation::APPLY)
9590         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9591         .addApply(apply)
9592         .executedTask();
9593     taskId++;
9594     taskCount += apply;
9595     serialDispatcher2.addOperation(TestOperation::DELAY)
9596         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9597         .addDelay(delay)
9598         .executedTask();
9599     taskId++;
9600     taskCount++;
9601     mainDispatcher.addOperation(TestOperation::ASYNC)
9602         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9603         .executedTask();
9604     taskId++;
9605     taskCount++;
9606     Wait(taskCount);
9607     bool result = task_execution_sequence.size() > 1;
9608     std::vector<size_t> outerTaskIndex;
9609     std::vector<std::vector<size_t>> innerTaskIndex;
9610     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9611     for (auto index : outerTaskIndex) {
9612         result = result && (index != std::string::npos);
9613     }
9614     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9615 };
HybridCase15(int code)9616 void MainAbility::HybridCase15(int code)
9617 {
9618     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9619     Reset();
9620     auto context = GetContext();
9621     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9622     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9623     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9624     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9625     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9626     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9627     int taskId = 0;
9628     int taskCount = 0;
9629     const int apply = 2;
9630     const int delay = 10;
9631     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9632         .addOperation(TestOperation::ASYNC_GROUP)
9633         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9634         .addOperation(TestOperation::GROUP_NOTIFY)
9635         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9636         .executedTask();
9637     taskId++;
9638     taskCount += numTwo;
9639     parallelDispatcher1.addOperation(TestOperation::SYNC)
9640         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9641         .executedTask();
9642     taskId++;
9643     taskCount++;
9644     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9645         .addOperation(TestOperation::ASYNC_GROUP)
9646         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9647         .executedTask();
9648     taskId++;
9649     taskCount++;
9650     serialDispatcher1.addOperation(TestOperation::ASYNC)
9651         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9652         .executedTask();
9653     taskId++;
9654     taskCount++;
9655     serialDispatcher2.addOperation(TestOperation::APPLY)
9656         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9657         .addApply(apply)
9658         .executedTask();
9659     taskId++;
9660     taskCount += apply;
9661     mainDispatcher.addOperation(TestOperation::DELAY)
9662         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9663         .addDelay(delay)
9664         .executedTask();
9665     taskId++;
9666     taskCount++;
9667     Wait(taskCount);
9668     bool result = task_execution_sequence.size() > 1;
9669     std::vector<size_t> outerTaskIndex;
9670     std::vector<std::vector<size_t>> innerTaskIndex;
9671     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9672     for (auto index : outerTaskIndex) {
9673         result = result && (index != std::string::npos);
9674     }
9675     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9676 };
HybridCase16(int code)9677 void MainAbility::HybridCase16(int code)
9678 {
9679     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9680     Reset();
9681     auto context = GetContext();
9682     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9683     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9684     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9685     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9686     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9687     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9688     int taskId = 0;
9689     int taskCount = 0;
9690     const int apply = 2;
9691     const int delay = 10;
9692     globalDispatcher.addOperation(TestOperation::APPLY)
9693         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9694         .addApply(apply)
9695         .executedTask();
9696     taskId++;
9697     taskCount += apply;
9698     parallelDispatcher1.addOperation(TestOperation::SYNC)
9699         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9700         .executedTask();
9701     taskId++;
9702     taskCount++;
9703     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9704         .addOperation(TestOperation::ASYNC_GROUP)
9705         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9706         .addOperation(TestOperation::GROUP_NOTIFY)
9707         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9708         .executedTask();
9709     taskId++;
9710     taskCount += numTwo;
9711     serialDispatcher1.addOperation(TestOperation::ASYNC)
9712         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9713         .executedTask();
9714     taskId++;
9715     taskCount++;
9716     serialDispatcher2.addOperation(TestOperation::DELAY)
9717         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9718         .addDelay(delay)
9719         .executedTask();
9720     taskId++;
9721     taskCount++;
9722     mainDispatcher.addOperation(TestOperation::APPLY)
9723         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9724         .addApply(apply)
9725         .executedTask();
9726     taskId++;
9727     taskCount += apply;
9728     Wait(taskCount);
9729     bool result = task_execution_sequence.size() > 1;
9730     std::vector<size_t> outerTaskIndex;
9731     std::vector<std::vector<size_t>> innerTaskIndex;
9732     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9733     for (auto index : outerTaskIndex) {
9734         result = result && (index != std::string::npos);
9735     }
9736     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9737 };
HybridCase17(int code)9738 void MainAbility::HybridCase17(int code)
9739 {
9740     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9741     Reset();
9742     auto context = GetContext();
9743     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9744     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9745     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9746     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9747     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9748     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9749     int taskId = 0;
9750     int taskCount = 0;
9751     const int apply = 2;
9752     globalDispatcher.addOperation(TestOperation::ASYNC)
9753         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9754         .executedTask();
9755     taskId++;
9756     taskCount++;
9757     parallelDispatcher1.addOperation(TestOperation::SYNC)
9758         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9759         .executedTask();
9760     taskId++;
9761     taskCount++;
9762     parallelDispatcher2.addOperation(TestOperation::APPLY)
9763         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9764         .addApply(apply)
9765         .executedTask();
9766     taskId++;
9767     taskCount += apply;
9768     serialDispatcher1.addOperation(TestOperation::ASYNC)
9769         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9770         .executedTask();
9771     taskId++;
9772     taskCount++;
9773     serialDispatcher2.addOperation(TestOperation::ASYNC)
9774         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9775         .executedTask();
9776     taskId++;
9777     taskCount++;
9778     mainDispatcher.addOperation(TestOperation::SYNC)
9779         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9780         .executedTask();
9781     taskId++;
9782     taskCount++;
9783     Wait(taskCount);
9784     bool result = task_execution_sequence.size() > 1;
9785     std::vector<size_t> outerTaskIndex;
9786     std::vector<std::vector<size_t>> innerTaskIndex;
9787     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9788     for (auto index : outerTaskIndex) {
9789         result = result && (index != std::string::npos);
9790     }
9791     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9792 };
HybridCase18(int code)9793 void MainAbility::HybridCase18(int code)
9794 {
9795     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9796     Reset();
9797     auto context = GetContext();
9798     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9799     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9800     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9801     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9802     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9803     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9804     int taskId = 0;
9805     int taskCount = 0;
9806     const int apply = 2;
9807     const int delay = 10;
9808     globalDispatcher.addOperation(TestOperation::SYNC)
9809         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9810         .executedTask();
9811     taskId++;
9812     taskCount++;
9813     parallelDispatcher1.addOperation(TestOperation::ASYNC)
9814         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9815         .executedTask();
9816     taskId++;
9817     taskCount++;
9818     parallelDispatcher2.addOperation(TestOperation::DELAY)
9819         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9820         .addDelay(delay)
9821         .executedTask();
9822     taskId++;
9823     taskCount++;
9824     serialDispatcher1.addOperation(TestOperation::APPLY)
9825         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9826         .addApply(apply)
9827         .executedTask();
9828     taskId++;
9829     taskCount += apply;
9830     serialDispatcher2.addOperation(TestOperation::ASYNC)
9831         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9832         .executedTask();
9833     taskId++;
9834     taskCount++;
9835     mainDispatcher.addOperation(TestOperation::ASYNC)
9836         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9837         .executedTask();
9838     taskId++;
9839     taskCount++;
9840     Wait(taskCount);
9841     bool result = task_execution_sequence.size() > 1;
9842     std::vector<size_t> outerTaskIndex;
9843     std::vector<std::vector<size_t>> innerTaskIndex;
9844     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9845     for (auto index : outerTaskIndex) {
9846         result = result && (index != std::string::npos);
9847     }
9848     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9849 };
HybridCase19(int code)9850 void MainAbility::HybridCase19(int code)
9851 {
9852     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9853     Reset();
9854     auto context = GetContext();
9855     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9856     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9857     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9858     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9859     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9860     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9861     int taskId = 0;
9862     int taskCount = 0;
9863     const int apply = 2;
9864     const int delay = 10;
9865     globalDispatcher.addOperation(TestOperation::DELAY)
9866         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9867         .addDelay(delay)
9868         .executedTask();
9869     taskId++;
9870     taskCount++;
9871     parallelDispatcher1.addOperation(TestOperation::ASYNC)
9872         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9873         .executedTask();
9874     taskId++;
9875     taskCount++;
9876     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9877         .addOperation(TestOperation::ASYNC_GROUP)
9878         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9879         .executedTask();
9880     taskId++;
9881     taskCount++;
9882     serialDispatcher1.addOperation(TestOperation::SYNC)
9883         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9884         .executedTask();
9885     taskId++;
9886     taskCount += apply;
9887     serialDispatcher2.addOperation(TestOperation::ASYNC)
9888         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9889         .executedTask();
9890     taskId++;
9891     taskCount++;
9892     mainDispatcher.addOperation(TestOperation::DELAY)
9893         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9894         .addDelay(delay)
9895         .executedTask();
9896     taskId++;
9897     taskCount++;
9898     Wait(taskCount);
9899     bool result = task_execution_sequence.size() > 1;
9900     std::vector<size_t> outerTaskIndex;
9901     std::vector<std::vector<size_t>> innerTaskIndex;
9902     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9903     for (auto index : outerTaskIndex) {
9904         result = result && (index != std::string::npos);
9905     }
9906     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9907 };
HybridCase20(int code)9908 void MainAbility::HybridCase20(int code)
9909 {
9910     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9911     Reset();
9912     auto context = GetContext();
9913     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9914     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9915     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9916     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9917     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9918     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9919     int taskId = 0;
9920     int taskCount = 0;
9921     const int apply = 2;
9922     const int delay = 10;
9923     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9924         .addOperation(TestOperation::ASYNC_GROUP)
9925         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9926         .executedTask();
9927     taskId++;
9928     taskCount++;
9929     parallelDispatcher1.addOperation(TestOperation::ASYNC)
9930         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9931         .executedTask();
9932     taskId++;
9933     taskCount++;
9934     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
9935         .addOperation(TestOperation::ASYNC_GROUP)
9936         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9937         .addOperation(TestOperation::GROUP_NOTIFY)
9938         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9939         .executedTask();
9940     taskId++;
9941     taskCount += numTwo;
9942     serialDispatcher1.addOperation(TestOperation::DELAY)
9943         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9944         .addDelay(delay)
9945         .executedTask();
9946     taskId++;
9947     taskCount++;
9948     serialDispatcher2.addOperation(TestOperation::SYNC)
9949         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9950         .executedTask();
9951     taskId++;
9952     taskCount++;
9953     mainDispatcher.addOperation(TestOperation::APPLY)
9954         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9955         .addApply(apply)
9956         .executedTask();
9957     taskId++;
9958     taskCount += apply;
9959     Wait(taskCount);
9960     bool result = task_execution_sequence.size() > 1;
9961     std::vector<size_t> outerTaskIndex;
9962     std::vector<std::vector<size_t>> innerTaskIndex;
9963     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
9964     for (auto index : outerTaskIndex) {
9965         result = result && (index != std::string::npos);
9966     }
9967     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
9968 };
HybridCase21(int code)9969 void MainAbility::HybridCase21(int code)
9970 {
9971     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
9972     Reset();
9973     auto context = GetContext();
9974     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
9975     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
9976     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
9977     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
9978     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
9979     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
9980     int taskId = 0;
9981     int taskCount = 0;
9982     const int apply = 2;
9983     const int delay = 10;
9984     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
9985         .addOperation(TestOperation::ASYNC_GROUP)
9986         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9987         .addOperation(TestOperation::GROUP_NOTIFY)
9988         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
9989         .executedTask();
9990     taskId++;
9991     taskCount += numTwo;
9992     parallelDispatcher1.addOperation(TestOperation::ASYNC)
9993         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9994         .executedTask();
9995     taskId++;
9996     taskCount++;
9997     parallelDispatcher2.addOperation(TestOperation::APPLY)
9998         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
9999         .addApply(apply)
10000         .executedTask();
10001     taskId++;
10002     taskCount += apply;
10003     serialDispatcher1.addOperation(TestOperation::DELAY)
10004         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10005         .addDelay(delay)
10006         .executedTask();
10007     taskId++;
10008     taskCount++;
10009     serialDispatcher2.addOperation(TestOperation::ASYNC)
10010         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10011         .executedTask();
10012     taskId++;
10013     taskCount++;
10014     mainDispatcher.addOperation(TestOperation::SYNC)
10015         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10016         .executedTask();
10017     taskId++;
10018     taskCount++;
10019     Wait(taskCount);
10020     bool result = task_execution_sequence.size() > 1;
10021     std::vector<size_t> outerTaskIndex;
10022     std::vector<std::vector<size_t>> innerTaskIndex;
10023     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10024     for (auto index : outerTaskIndex) {
10025         result = result && (index != std::string::npos);
10026     }
10027     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10028 };
HybridCase22(int code)10029 void MainAbility::HybridCase22(int code)
10030 {
10031     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10032     Reset();
10033     auto context = GetContext();
10034     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10035     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10036     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10037     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10038     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10039     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10040     int taskId = 0;
10041     int taskCount = 0;
10042     const int apply = 2;
10043     const int delay = 10;
10044     globalDispatcher.addOperation(TestOperation::APPLY)
10045         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10046         .addApply(apply)
10047         .executedTask();
10048     taskId++;
10049     taskCount += apply;
10050     parallelDispatcher1.addOperation(TestOperation::DELAY)
10051         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10052         .addDelay(delay)
10053         .executedTask();
10054     taskId++;
10055     taskCount++;
10056     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
10057         .addOperation(TestOperation::ASYNC_GROUP)
10058         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10059         .addApply(apply)
10060         .executedTask();
10061     taskId++;
10062     taskCount++;
10063     serialDispatcher1.addOperation(TestOperation::SYNC)
10064         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10065         .executedTask();
10066     taskId++;
10067     taskCount++;
10068     serialDispatcher2.addOperation(TestOperation::ASYNC)
10069         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10070         .executedTask();
10071     taskId++;
10072     taskCount++;
10073     mainDispatcher.addOperation(TestOperation::DELAY)
10074         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10075         .addDelay(delay)
10076         .executedTask();
10077     taskId++;
10078     taskCount++;
10079     Wait(taskCount);
10080     bool result = task_execution_sequence.size() > 1;
10081     std::vector<size_t> outerTaskIndex;
10082     std::vector<std::vector<size_t>> innerTaskIndex;
10083     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10084     for (auto index : outerTaskIndex) {
10085         result = result && (index != std::string::npos);
10086     }
10087     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10088 };
HybridCase23(int code)10089 void MainAbility::HybridCase23(int code)
10090 {
10091     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10092     Reset();
10093     auto context = GetContext();
10094     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10095     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10096     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10097     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10098     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10099     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10100     int taskId = 0;
10101     int taskCount = 0;
10102     const int apply = 2;
10103     const int delay = 10;
10104     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
10105         .addOperation(TestOperation::ASYNC_GROUP)
10106         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10107         .executedTask();
10108     taskId++;
10109     taskCount++;
10110     parallelDispatcher1.addOperation(TestOperation::DELAY)
10111         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10112         .addDelay(delay)
10113         .executedTask();
10114     taskId++;
10115     taskCount++;
10116     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
10117         .addOperation(TestOperation::ASYNC_GROUP)
10118         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10119         .addOperation(TestOperation::GROUP_NOTIFY)
10120         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
10121         .executedTask();
10122     taskId++;
10123     taskCount += numTwo;
10124     serialDispatcher1.addOperation(TestOperation::APPLY)
10125         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10126         .executedTask();
10127     taskId++;
10128     taskCount += apply;
10129     serialDispatcher2.addOperation(TestOperation::DELAY)
10130         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10131         .addDelay(delay)
10132         .executedTask();
10133     taskId++;
10134     taskCount++;
10135     mainDispatcher.addOperation(TestOperation::DELAY)
10136         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10137         .addDelay(delay)
10138         .executedTask();
10139     taskId++;
10140     taskCount++;
10141     Wait(taskCount);
10142     bool result = task_execution_sequence.size() > 1;
10143     std::vector<size_t> outerTaskIndex;
10144     std::vector<std::vector<size_t>> innerTaskIndex;
10145     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10146     for (auto index : outerTaskIndex) {
10147         result = result && (index != std::string::npos);
10148     }
10149     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10150 };
HybridCase24(int code)10151 void MainAbility::HybridCase24(int code)
10152 {
10153     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10154     Reset();
10155     auto context = GetContext();
10156     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10157     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10158     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10159     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10160     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10161     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10162     int taskId = 0;
10163     int taskCount = 0;
10164     const long apply = 2;
10165     const long delay = 10;
10166     globalDispatcher.addOperation(TestOperation::CREATE_GROUP)
10167         .addOperation(TestOperation::ASYNC_GROUP)
10168         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10169         .addOperation(TestOperation::GROUP_NOTIFY)
10170         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
10171         .executedTask();
10172     taskId += numTwo;
10173     taskCount += numTwo;
10174     parallelDispatcher1.addOperation(TestOperation::DELAY)
10175         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10176         .addDelay(delay)
10177         .executedTask();
10178     taskId++;
10179     taskCount++;
10180     parallelDispatcher2.addOperation(TestOperation::APPLY)
10181         .addApply(apply)
10182         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10183         .executedTask();
10184     taskId++;
10185     taskCount += apply;
10186     serialDispatcher1.addOperation(TestOperation::SYNC)
10187         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10188         .executedTask();
10189     taskId++;
10190     taskCount++;
10191     serialDispatcher2.addOperation(TestOperation::APPLY)
10192         .addApply(apply)
10193         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10194         .addOperation(TestOperation::DELAY)
10195         .addDelay(delay)
10196         .executedTask();
10197     taskId++;
10198     taskCount += apply;
10199     mainDispatcher.addOperation(TestOperation::APPLY)
10200         .addApply(apply)
10201         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10202         .addOperation(TestOperation::DELAY)
10203         .addDelay(delay)
10204         .executedTask();
10205     taskId++;
10206     taskCount += apply;
10207     Wait(taskCount);
10208     bool result = task_execution_sequence.size() > 1;
10209     std::vector<size_t> outerTaskIndex;
10210     std::vector<std::vector<size_t>> innerTaskIndex;
10211     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10212     for (auto index : outerTaskIndex) {
10213         result = result && (index != std::string::npos);
10214     }
10215     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10216 };
HybridCase25(int code)10217 void MainAbility::HybridCase25(int code)
10218 {
10219     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10220     Reset();
10221     auto context = GetContext();
10222     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10223     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10224     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10225     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10226     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10227     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10228     int taskId = 0;
10229     int taskCount = 0;
10230     globalDispatcher.addOperation(TestOperation::ASYNC)
10231         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10232         .executedTask();
10233     taskId++;
10234     taskCount++;
10235     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
10236         .addOperation(TestOperation::ASYNC_GROUP)
10237         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10238         .executedTask();
10239     taskId++;
10240     taskCount++;
10241     parallelDispatcher2.addOperation(TestOperation::CREATE_GROUP)
10242         .addOperation(TestOperation::ASYNC_GROUP)
10243         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10244         .addOperation(TestOperation::GROUP_NOTIFY)
10245         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
10246         .executedTask();
10247     taskId++;
10248     taskCount += numTwo;
10249     serialDispatcher1.addOperation(TestOperation::ASYNC)
10250         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10251         .executedTask();
10252     taskId++;
10253     taskCount++;
10254     serialDispatcher2.addOperation(TestOperation::SYNC)
10255         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10256         .executedTask();
10257     taskId++;
10258     taskCount++;
10259     mainDispatcher.addOperation(TestOperation::SYNC)
10260         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10261         .executedTask();
10262     taskId++;
10263     taskCount++;
10264     Wait(taskCount);
10265     bool result = task_execution_sequence.size() > 1;
10266     std::vector<size_t> outerTaskIndex;
10267     std::vector<std::vector<size_t>> innerTaskIndex;
10268     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10269     for (auto index : outerTaskIndex) {
10270         result = result && (index != std::string::npos);
10271     }
10272     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10273 };
HybridCase26(int code)10274 void MainAbility::HybridCase26(int code)
10275 {
10276     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10277     Reset();
10278     auto context = GetContext();
10279     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10280     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10281     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10282     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10283     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10284     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10285     int taskId = 0;
10286     int taskCount = 0;
10287     const int apply = 2;
10288     globalDispatcher.addOperation(TestOperation::ASYNC)
10289         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10290         .executedTask();
10291     taskId++;
10292     taskCount++;
10293     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
10294         .addOperation(TestOperation::ASYNC_GROUP)
10295         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10296         .executedTask();
10297     taskId++;
10298     taskCount++;
10299     parallelDispatcher2.addOperation(TestOperation::APPLY)
10300         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10301         .addApply(apply)
10302         .executedTask();
10303     taskId++;
10304     taskCount = taskCount + apply;
10305     serialDispatcher1.addOperation(TestOperation::ASYNC)
10306         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10307         .executedTask();
10308     taskId++;
10309     taskCount++;
10310     serialDispatcher2.addOperation(TestOperation::SYNC)
10311         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10312         .executedTask();
10313     taskId++;
10314     taskCount++;
10315     mainDispatcher.addOperation(TestOperation::ASYNC)
10316         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10317         .executedTask();
10318     taskId++;
10319     taskCount++;
10320     Wait(taskCount);
10321     bool result = task_execution_sequence.size() > 1;
10322     std::vector<size_t> outerTaskIndex;
10323     std::vector<std::vector<size_t>> innerTaskIndex;
10324     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10325     for (auto index : outerTaskIndex) {
10326         result = result && (index != std::string::npos);
10327     }
10328     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10329 };
HybridCase27(int code)10330 void MainAbility::HybridCase27(int code)
10331 {
10332     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10333     Reset();
10334     auto context = GetContext();
10335     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10336     TaskList parallelDispatcher1 = TaskList {TestDispatcher::PARALLEL, context, "parallel1"};
10337     TaskList parallelDispatcher2 = TaskList {TestDispatcher::PARALLEL, context, "parallel2"};
10338     TaskList serialDispatcher1 = TaskList {TestDispatcher::SERIAL, context, "serial1"};
10339     TaskList serialDispatcher2 = TaskList {TestDispatcher::SERIAL, context, "serial2"};
10340     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10341     int taskId = 0;
10342     int taskCount = 0;
10343     const int apply = 2;
10344     const int delay = 10;
10345     globalDispatcher.addOperation(TestOperation::ASYNC)
10346         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10347         .executedTask();
10348     taskId++;
10349     taskCount++;
10350     parallelDispatcher1.addOperation(TestOperation::CREATE_GROUP)
10351         .addOperation(TestOperation::ASYNC_GROUP)
10352         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10353         .addOperation(TestOperation::GROUP_NOTIFY)
10354         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId + 1)); }))
10355         .executedTask();
10356     taskId++;
10357     taskCount += numTwo;
10358     parallelDispatcher2.addOperation(TestOperation::APPLY)
10359         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10360         .addApply(apply)
10361         .executedTask();
10362     taskId++;
10363     taskCount += apply;
10364     serialDispatcher1.addOperation(TestOperation::DELAY)
10365         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10366         .addDelay(delay)
10367         .executedTask();
10368     taskId++;
10369     taskCount++;
10370     serialDispatcher2.addOperation(TestOperation::APPLY)
10371         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10372         .addApply(apply)
10373         .executedTask();
10374     taskId++;
10375     taskCount += apply;
10376     mainDispatcher.addOperation(TestOperation::DELAY)
10377         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10378         .addDelay(delay)
10379         .executedTask();
10380     taskId++;
10381     taskCount++;
10382     Wait(taskCount);
10383     bool result = task_execution_sequence.size() > 1;
10384     std::vector<size_t> outerTaskIndex;
10385     std::vector<std::vector<size_t>> innerTaskIndex;
10386     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10387     for (auto index : outerTaskIndex) {
10388         result = result && (index != std::string::npos);
10389     }
10390     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10391 };
10392 
MultiAppCase1(int code)10393 void MainAbility::MultiAppCase1(int code)
10394 {
10395     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10396     Reset();
10397     auto context = GetContext();
10398     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10399     std::vector<TestOperation> operationList = {
10400         TestOperation::ASYNC,
10401         TestOperation::ASYNC,
10402         TestOperation::ASYNC,
10403         TestOperation::ASYNC,
10404         TestOperation::ASYNC,
10405         TestOperation::ASYNC,
10406         TestOperation::ASYNC,
10407         TestOperation::ASYNC,
10408         TestOperation::ASYNC,
10409         TestOperation::ASYNC,
10410     };
10411     int taskId = 0;
10412     addTaskFromList(globalDispatcher, operationList, taskId);
10413     globalDispatcher.executedTask();
10414     Wait(taskId);
10415     bool result = task_execution_sequence.size() > 1;
10416     std::vector<size_t> outerTaskIndex;
10417     std::vector<std::vector<size_t>> innerTaskIndex;
10418     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10419     for (auto index : outerTaskIndex) {
10420         result = result && (index != std::string::npos);
10421     }
10422     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10423 }
10424 
MultiAppCase2(int code)10425 void MainAbility::MultiAppCase2(int code)
10426 {
10427     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10428     Reset();
10429     auto context = GetContext();
10430     TaskList parallelDispatcher = TaskList {TestDispatcher::PARALLEL, context, "parallel"};
10431     std::vector<TestOperation> operationList = {
10432         TestOperation::ASYNC,
10433         TestOperation::ASYNC,
10434         TestOperation::ASYNC,
10435         TestOperation::ASYNC,
10436         TestOperation::ASYNC,
10437         TestOperation::ASYNC,
10438         TestOperation::ASYNC,
10439         TestOperation::ASYNC,
10440         TestOperation::ASYNC,
10441         TestOperation::ASYNC,
10442     };
10443     int taskId = 0;
10444     addTaskFromList(parallelDispatcher, operationList, taskId);
10445     parallelDispatcher.executedTask();
10446     Wait(taskId);
10447     bool result = task_execution_sequence.size() > 1;
10448     std::vector<size_t> outerTaskIndex;
10449     std::vector<std::vector<size_t>> innerTaskIndex;
10450     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10451     for (auto index : outerTaskIndex) {
10452         result = result && (index != std::string::npos);
10453     }
10454     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10455 }
10456 
MultiAppCase3(int code)10457 void MainAbility::MultiAppCase3(int code)
10458 {
10459     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10460     Reset();
10461     auto context = GetContext();
10462     TaskList serialDispatcher = TaskList {TestDispatcher::SERIAL, context, "serial"};
10463     std::vector<TestOperation> operationList = {
10464         TestOperation::ASYNC,
10465         TestOperation::ASYNC,
10466         TestOperation::ASYNC,
10467         TestOperation::ASYNC,
10468         TestOperation::ASYNC,
10469         TestOperation::ASYNC,
10470         TestOperation::ASYNC,
10471         TestOperation::ASYNC,
10472         TestOperation::ASYNC,
10473         TestOperation::ASYNC,
10474     };
10475     int taskId = 0;
10476     addTaskFromList(serialDispatcher, operationList, taskId);
10477     serialDispatcher.executedTask();
10478     Wait(taskId);
10479     bool result = task_execution_sequence.size() > 1;
10480     std::vector<size_t> outerTaskIndex;
10481     std::vector<std::vector<size_t>> innerTaskIndex;
10482     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10483     for (auto index : outerTaskIndex) {
10484         result = result && (index != std::string::npos);
10485     }
10486     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10487 }
10488 
MultiAppCase4(int code)10489 void MainAbility::MultiAppCase4(int code)
10490 {
10491     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10492     Reset();
10493     auto context = GetContext();
10494     TaskList mainDispatcher = TaskList {TestDispatcher::MAIN, context, "main"};
10495     std::vector<TestOperation> operationList = {
10496         TestOperation::ASYNC,
10497         TestOperation::ASYNC,
10498         TestOperation::ASYNC,
10499         TestOperation::ASYNC,
10500         TestOperation::ASYNC,
10501         TestOperation::ASYNC,
10502         TestOperation::ASYNC,
10503         TestOperation::ASYNC,
10504         TestOperation::ASYNC,
10505         TestOperation::ASYNC,
10506     };
10507     int taskId = 0;
10508     addTaskFromList(mainDispatcher, operationList, taskId);
10509     mainDispatcher.executedTask();
10510     Wait(taskId);
10511     bool result = task_execution_sequence.size() > 1;
10512     std::vector<size_t> outerTaskIndex;
10513     std::vector<std::vector<size_t>> innerTaskIndex;
10514     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10515     for (auto index : outerTaskIndex) {
10516         result = result && (index != std::string::npos);
10517     }
10518     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10519 }
10520 
ExtraCase1(int code)10521 void MainAbility::ExtraCase1(int code)
10522 {
10523     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10524     Reset();
10525     auto context = GetContext();
10526     int taskId = 0;
10527     TaskList globalDispatcher = TaskList {TestDispatcher::GLOBAL, context, "global"};
10528     bool result = globalDispatcher.addOperation(TestOperation::SYNC)
10529         .addFunc(std::make_shared<Runnable>([=]() {
10530             std::string targetBundleName = "com.ohos.TaskDispatcherA";
10531             std::string targetAbility = "SecondAbility";
10532             Want want;
10533             want.SetElementName(targetBundleName, targetAbility);
10534             StartAbility(want);
10535             TestTask(std::to_string(taskId));
10536         }))
10537         .executedTask();
10538     taskId++;
10539     Wait(taskId);
10540     result = task_execution_sequence.size() > 1;
10541     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10542 }
10543 
FillInDispathcer()10544 void MainAbility::FillInDispathcer()
10545 {
10546     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10547     const int fullThreadNum = 32;
10548     const int waitTime = 2;
10549     auto context = GetContext();
10550     TaskList parallelDispatcher = TaskList {TestDispatcher::PARALLEL, context, "parallel"};
10551     parallelDispatcher.setTaskPriority(AppExecFwk::TaskPriority::HIGH);
10552     parallelDispatcher.addOperation(TestOperation::ASYNC).addFunc(std::make_shared<Runnable>([=]() {
10553         sleep(waitTime - 1);
10554     }));
10555     for (int i = 1; i < fullThreadNum; i++) {
10556         parallelDispatcher.addOperation(TestOperation::ASYNC).addFunc(std::make_shared<Runnable>([=]() {
10557             sleep(waitTime);
10558         }));
10559     }
10560     parallelDispatcher.executedTask();
10561 }
PriorityCase1(int code)10562 void MainAbility::PriorityCase1(int code)
10563 {
10564     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10565     FillInDispathcer();
10566     Reset();
10567     auto context = GetContext();
10568     TaskList globalDispatcherLow = TaskList {TestDispatcher::GLOBAL, context, "globalLow"};
10569     TaskList globalDispatcherDefault = TaskList {TestDispatcher::GLOBAL, context, "globalDefault"};
10570     TaskList globalDispatcherHigh = TaskList {TestDispatcher::GLOBAL, context, "globalHigh"};
10571     int taskId = 0;
10572     globalDispatcherLow.setTaskPriority(AppExecFwk::TaskPriority::LOW)
10573         .addOperation(TestOperation::ASYNC)
10574         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10575         .executedTask();
10576     taskId++;
10577     globalDispatcherDefault.setTaskPriority(AppExecFwk::TaskPriority::DEFAULT)
10578         .addOperation(TestOperation::ASYNC)
10579         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10580         .executedTask();
10581     taskId++;
10582     globalDispatcherHigh.setTaskPriority(AppExecFwk::TaskPriority::HIGH)
10583         .addOperation(TestOperation::ASYNC)
10584         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10585         .executedTask();
10586     taskId++;
10587     Wait(taskId);
10588     bool result = task_execution_sequence.size() > 1;
10589     std::vector<size_t> outerTaskIndex;
10590     std::vector<std::vector<size_t>> innerTaskIndex;
10591     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10592     for (auto index : outerTaskIndex) {
10593         result = result && (index != std::string::npos);
10594     }
10595     result = result && (outerTaskIndex[numZero] > outerTaskIndex[numOne]) &&
10596              (outerTaskIndex[numOne] > outerTaskIndex[numTwo]);
10597     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10598 }
PriorityCase2(int code)10599 void MainAbility::PriorityCase2(int code)
10600 {
10601     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10602     FillInDispathcer();
10603     Reset();
10604     auto context = GetContext();
10605     TaskList parallelDispatcherLow = TaskList {TestDispatcher::PARALLEL, context, "parallelLow"};
10606     TaskList parallelDispatcherDefault = TaskList {TestDispatcher::PARALLEL, context, "parallelDefault"};
10607     TaskList parallelDispatcherHigh = TaskList {TestDispatcher::PARALLEL, context, "parallelHigh"};
10608     int taskId = 0;
10609     parallelDispatcherLow.setTaskPriority(AppExecFwk::TaskPriority::LOW)
10610         .addOperation(TestOperation::ASYNC)
10611         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10612         .executedTask();
10613     taskId++;
10614     parallelDispatcherDefault.setTaskPriority(AppExecFwk::TaskPriority::DEFAULT)
10615         .addOperation(TestOperation::ASYNC)
10616         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10617         .executedTask();
10618     taskId++;
10619     parallelDispatcherHigh.setTaskPriority(AppExecFwk::TaskPriority::HIGH)
10620         .addOperation(TestOperation::ASYNC)
10621         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10622         .executedTask();
10623     taskId++;
10624     Wait(taskId);
10625     bool result = task_execution_sequence.size() > 1;
10626     std::vector<size_t> outerTaskIndex;
10627     std::vector<std::vector<size_t>> innerTaskIndex;
10628     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10629     for (auto index : outerTaskIndex) {
10630         result = result && (index != std::string::npos);
10631     }
10632     result = result && (outerTaskIndex[numZero] > outerTaskIndex[numOne]) &&
10633              (outerTaskIndex[numOne] > outerTaskIndex[numTwo]);
10634     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10635 }
PriorityCase3(int code)10636 void MainAbility::PriorityCase3(int code)
10637 {
10638     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10639     FillInDispathcer();
10640     Reset();
10641     auto context = GetContext();
10642     TaskList serialDispatcherLow = TaskList {TestDispatcher::SERIAL, context, "serialLow"};
10643     TaskList serialDispatcherDefault = TaskList {TestDispatcher::SERIAL, context, "serialDefault"};
10644     TaskList serialDispatcherHigh = TaskList {TestDispatcher::SERIAL, context, "serialHigh"};
10645     int taskId = 0;
10646     serialDispatcherLow.setTaskPriority(AppExecFwk::TaskPriority::LOW)
10647         .addOperation(TestOperation::ASYNC)
10648         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10649         .executedTask();
10650     taskId++;
10651     serialDispatcherDefault.setTaskPriority(AppExecFwk::TaskPriority::DEFAULT)
10652         .addOperation(TestOperation::ASYNC)
10653         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10654         .executedTask();
10655     taskId++;
10656     serialDispatcherHigh.setTaskPriority(AppExecFwk::TaskPriority::HIGH)
10657         .addOperation(TestOperation::ASYNC)
10658         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10659         .executedTask();
10660     taskId++;
10661     Wait(taskId);
10662     bool result = task_execution_sequence.size() > 1;
10663     std::vector<size_t> outerTaskIndex;
10664     std::vector<std::vector<size_t>> innerTaskIndex;
10665     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10666     for (auto index : outerTaskIndex) {
10667         result = result && (index != std::string::npos);
10668     }
10669     result = result && (outerTaskIndex[numZero] > outerTaskIndex[numOne]) &&
10670              (outerTaskIndex[numOne] > outerTaskIndex[numTwo]);
10671     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10672 }
PriorityCase4(int code)10673 void MainAbility::PriorityCase4(int code)
10674 {
10675     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10676     FillInDispathcer();
10677     Reset();
10678     auto context = GetContext();
10679     TaskList parallelDispatcherLow = TaskList {TestDispatcher::PARALLEL, context, "parallelLow"};
10680     TaskList parallelDispatcherDefault = TaskList {TestDispatcher::PARALLEL, context, "parallelDefault"};
10681     TaskList mainDispatcherHigh = TaskList {TestDispatcher::MAIN, context, "mainHigh"};
10682     int taskId = 0;
10683     parallelDispatcherLow.setTaskPriority(AppExecFwk::TaskPriority::LOW)
10684         .addOperation(TestOperation::ASYNC)
10685         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10686         .executedTask();
10687     taskId++;
10688     parallelDispatcherDefault.setTaskPriority(AppExecFwk::TaskPriority::DEFAULT)
10689         .addOperation(TestOperation::ASYNC)
10690         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10691         .executedTask();
10692     taskId++;
10693     mainDispatcherHigh.addOperation(TestOperation::ASYNC)
10694         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10695         .executedTask();
10696     taskId++;
10697     Wait(taskId);
10698     bool result = task_execution_sequence.size() > 1;
10699     std::vector<size_t> outerTaskIndex;
10700     std::vector<std::vector<size_t>> innerTaskIndex;
10701     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10702     for (auto index : outerTaskIndex) {
10703         result = result && (index != std::string::npos);
10704     }
10705     result = result && (outerTaskIndex[numZero] > outerTaskIndex[numOne]) &&
10706              (outerTaskIndex[numOne] > outerTaskIndex[numTwo]);
10707     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10708 }
PriorityCase5(int code)10709 void MainAbility::PriorityCase5(int code)
10710 {
10711     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10712     FillInDispathcer();
10713     Reset();
10714     auto context = GetContext();
10715     TaskList globalDispatcherLow = TaskList {TestDispatcher::GLOBAL, context, "globallLow"};
10716     TaskList parallelDispatcherDefault = TaskList {TestDispatcher::PARALLEL, context, "parallelDefault"};
10717     TaskList globalDispatcherHigh = TaskList {TestDispatcher::GLOBAL, context, "globalHigh"};
10718     int taskId = 0;
10719     globalDispatcherLow.setTaskPriority(AppExecFwk::TaskPriority::LOW)
10720         .addOperation(TestOperation::ASYNC)
10721         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10722         .executedTask();
10723     taskId++;
10724     parallelDispatcherDefault.setTaskPriority(AppExecFwk::TaskPriority::DEFAULT)
10725         .addOperation(TestOperation::ASYNC)
10726         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10727         .executedTask();
10728     taskId++;
10729     globalDispatcherHigh.setTaskPriority(AppExecFwk::TaskPriority::HIGH)
10730         .addOperation(TestOperation::ASYNC)
10731         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10732         .executedTask();
10733     taskId++;
10734     Wait(taskId);
10735     bool result = task_execution_sequence.size() > 1;
10736     std::vector<size_t> outerTaskIndex;
10737     std::vector<std::vector<size_t>> innerTaskIndex;
10738     GetTaskIndex(outerTaskIndex, innerTaskIndex, taskId, 0);
10739     for (auto index : outerTaskIndex) {
10740         result = result && (index != std::string::npos);
10741     }
10742     result = result && (outerTaskIndex[numZero] > outerTaskIndex[numOne]) &&
10743              (outerTaskIndex[numOne] > outerTaskIndex[numTwo]);
10744     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10745 }
RevokeCase1(int code)10746 void MainAbility::RevokeCase1(int code)
10747 {
10748     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10749     FillInDispathcer();
10750     Reset();
10751     auto context = GetContext();
10752     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10753     int taskId = 0;
10754     bool result = parallelDispatcher.addOperation(TestOperation::ASYNC)
10755         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10756         .addOperation(TestOperation::REVOCABLE)
10757         .addRevokeTask(1)
10758         .executedTask();
10759     taskId++;
10760     result = !result || Wait(taskId);
10761     result = result || task_execution_sequence.size() > 1;
10762 
10763     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(!result));
10764 }
RevokeCase2(int code)10765 void MainAbility::RevokeCase2(int code)
10766 {
10767     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10768     Reset();
10769     auto context = GetContext();
10770     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10771     int taskId = 0;
10772     bool result = parallelDispatcher.addOperation(TestOperation::ASYNC)
10773         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10774         .executedTask();
10775     taskId++;
10776     result = result && Wait(taskId);
10777     result = result && !parallelDispatcher.addOperation(TestOperation::REVOCABLE).addRevokeTask(1).executedTask();
10778     result = result && task_execution_sequence.size() > 1;
10779 
10780     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10781 }
RevokeCase3(int code)10782 void MainAbility::RevokeCase3(int code)
10783 {
10784     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10785     Reset();
10786     auto context = GetContext();
10787     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10788     int taskId = 0;
10789     bool result = parallelDispatcher.addOperation(TestOperation::DELAY)
10790         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10791         .addDelay(delayMs)
10792         .addOperation(TestOperation::REVOCABLE)
10793         .addRevokeTask(1)
10794         .executedTask();
10795     taskId++;
10796     result = !result || Wait(taskId);
10797     result = result || task_execution_sequence.size() > 1;
10798 
10799     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(!result));
10800 }
RevokeCase4(int code)10801 void MainAbility::RevokeCase4(int code)
10802 {
10803     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10804     Reset();
10805     auto context = GetContext();
10806     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10807     int taskId = 0;
10808     bool result = parallelDispatcher.addOperation(TestOperation::DELAY)
10809         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10810         .addDelay(delayMs)
10811         .executedTask();
10812     taskId++;
10813     result = result && Wait(taskId);
10814     result = result && !parallelDispatcher.addOperation(TestOperation::REVOCABLE).addRevokeTask(1).executedTask();
10815     result = result && task_execution_sequence.size() > 1;
10816 
10817     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10818 }
RevokeCase5(int code)10819 void MainAbility::RevokeCase5(int code)
10820 {
10821     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10822     FillInDispathcer();
10823     Reset();
10824     auto context = GetContext();
10825     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10826     int taskId = 0;
10827     bool result = parallelDispatcher.addOperation(TestOperation::CREATE_GROUP)
10828         .addOperation(TestOperation::ASYNC_GROUP)
10829         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10830         .addOperation(TestOperation::REVOCABLE)
10831         .addRevokeTask(1)
10832         .executedTask();
10833     taskId++;
10834     result = !result || Wait(taskId);
10835     result = result || task_execution_sequence.size() > 1;
10836 
10837     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(!result));
10838 }
RevokeCase6(int code)10839 void MainAbility::RevokeCase6(int code)
10840 {
10841     HILOG_INFO("-- -- -- -- -- --MainAbility::%{public}s", __FUNCTION__);
10842     Reset();
10843     auto context = GetContext();
10844     TaskList parallelDispatcher = TaskList {TestDispatcher::GLOBAL, context, "parallel"};
10845     int taskId = 0;
10846     bool result = parallelDispatcher.addOperation(TestOperation::CREATE_GROUP)
10847         .addOperation(TestOperation::ASYNC_GROUP)
10848         .addFunc(std::make_shared<Runnable>([=]() { TestTask(std::to_string(taskId)); }))
10849         .executedTask();
10850     taskId++;
10851     result = result && Wait(taskId);
10852     result = result && !parallelDispatcher.addOperation(TestOperation::REVOCABLE).addRevokeTask(1).executedTask();
10853     result = result && task_execution_sequence.size() > 1;
10854 
10855     TestUtils::PublishEvent(g_EVENT_RESP_FIRST, code, std::to_string(result));
10856 }
10857 REGISTER_AA(MainAbility)
10858 }  // namespace AppExecFwk
10859 }  // namespace OHOS
10860