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