1 /*
2 * Copyright (c) 2023-2024 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 "test.h"
17
18 #include <unistd.h>
19
20 #include "async_runner.h"
21 #include "async_runner_manager.h"
22 #include "helper/napi_helper.h"
23 #include "queue.h"
24 #include "sequence_runner_manager.h"
25 #include "task.h"
26 #include "taskpool.h"
27 #include "task_group_manager.h"
28 #include "task_manager.h"
29 #include "task_runner.h"
30 #include "thread.h"
31 #include "tools/log.h"
32 #include "uv.h"
33 #include "worker.h"
34
35 using namespace Commonlibrary::Concurrent::TaskPoolModule;
GetSendableFunction(napi_env env,const char * str,napi_value & result)36 void GetSendableFunction(napi_env env, const char* str, napi_value& result)
37 {
38 napi_value instance = SendableUtils::CreateSendableInstance(env);
39 napi_value name = nullptr;
40 napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &name);
41 napi_get_property(env, instance, name, &result);
42 }
43
GeneratorTask(napi_env env,napi_value thisVar)44 napi_value GeneratorTask(napi_env env, napi_value thisVar)
45 {
46 napi_value func = nullptr;
47 GetSendableFunction(env, "foo", func);
48 napi_value argv[] = { func };
49 std::string funcName = "TaskConstructor";
50 napi_value cb = nullptr;
51 napi_value task = nullptr;
52 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
53 napi_call_function(env, thisVar, cb, 1, argv, &task);
54 return task;
55 }
56
GeneratorTaskGroup(napi_env env,napi_value thisVar)57 napi_value GeneratorTaskGroup(napi_env env, napi_value thisVar)
58 {
59 std::string funcName = "TaskGroupConstructor";
60 napi_value argv[] = {};
61 napi_value cb = nullptr;
62 napi_value group = nullptr;
63 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
64 napi_call_function(env, thisVar, cb, 0, argv, &group);
65 return group;
66 }
67
GeneratorTaskGroupWithName(napi_env env,napi_value thisVar,const char * name)68 napi_value GeneratorTaskGroupWithName(napi_env env, napi_value thisVar, const char* name)
69 {
70 std::string funcName = "TaskGroupConstructor";
71 napi_value str = nullptr;
72 napi_create_string_utf8(env, name, NAPI_AUTO_LENGTH, &str);
73 napi_value argv[] = { str };
74 napi_value cb = nullptr;
75 napi_value group = nullptr;
76 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
77 napi_call_function(env, thisVar, cb, 1, argv, &group);
78 return group;
79 }
80
CreateTaskObject(napi_env env,TaskType taskType=TaskType::TASK,ExecuteState state=ExecuteState::NOT_FOUND,bool needStoreTask=false)81 napi_value CreateTaskObject(napi_env env, TaskType taskType = TaskType::TASK,
82 ExecuteState state = ExecuteState::NOT_FOUND, bool needStoreTask = false)
83 {
84 napi_value thisValue = NapiHelper::CreateObject(env);
85 size_t argc = 0;
86 napi_value func = nullptr;
87 napi_create_string_utf8(env, "testFunc", NAPI_AUTO_LENGTH, &func);
88 napi_value* args = new napi_value[1];
89 ObjectScope<napi_value> objScope(args, true);
90 napi_value taskName = NapiHelper::CreateEmptyString(env);
91 Task* task = Task::GenerateTask(env, thisValue, func, taskName, args, argc);
92 task->UpdateTaskType(taskType);
93 if (state != ExecuteState::NOT_FOUND) {
94 task->taskState_ = state;
95 }
96 if (!needStoreTask) {
97 TaskManager::GetInstance().RemoveTask(task->taskId_);
98 }
99 if (napi_wrap(
100 env, thisValue, task,
101 [](napi_env environment, void* data, void* hint) {
102 auto obj = reinterpret_cast<Task*>(data);
103 if (obj != nullptr) {
104 delete obj;
105 }
106 }, nullptr, nullptr) != napi_ok) {
107 delete task;
108 task = nullptr;
109 return nullptr;
110 }
111 return thisValue;
112 }
113
CreateNullTaskObject(napi_env env)114 napi_value CreateNullTaskObject(napi_env env)
115 {
116 napi_value thisValue = NapiHelper::CreateObject(env);
117 Task* task = nullptr;
118 napi_wrap(
119 env, thisValue, task,
120 [](napi_env environment, void* data, void* hint) {
121 auto obj = reinterpret_cast<Task*>(data);
122 if (obj != nullptr) {
123 delete obj;
124 }
125 }, nullptr, nullptr);
126 return thisValue;
127 }
128
GetNapiString(napi_env env,const char * str)129 napi_value GetNapiString(napi_env env, const char* str)
130 {
131 napi_value name = nullptr;
132 napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &name);
133 return name;
134 }
135
136 HWTEST_F(NativeEngineTest, TaskpoolTest001, testing::ext::TestSize.Level0)
137 {
138 TaskManager &taskManager = TaskManager::GetInstance();
139 uint32_t result = taskManager.GetThreadNum();
140 ASSERT_TRUE(result == 0);
141 }
142
143 HWTEST_F(NativeEngineTest, TaskpoolTest002, testing::ext::TestSize.Level0)
144 {
145 napi_env env = reinterpret_cast<napi_env>(engine_);
146 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
147 ASSERT_NE(worker, nullptr);
148 }
149
150 HWTEST_F(NativeEngineTest, TaskpoolTest003, testing::ext::TestSize.Level0)
151 {
152 napi_env env = reinterpret_cast<napi_env>(engine_);
153 napi_value taskClass = nullptr;
154 napi_value result = TaskPool::InitTaskPool(env, taskClass);
155 usleep(50000);
156 ASSERT_TRUE(result == nullptr);
157 }
158
159 HWTEST_F(NativeEngineTest, TaskpoolTest004, testing::ext::TestSize.Level0)
160 {
161 napi_env env = reinterpret_cast<napi_env>(engine_);
162 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
163 ASSERT_NE(worker, nullptr);
164 uint32_t workers = TaskManager::GetInstance().GetRunningWorkers();
165 ASSERT_TRUE(workers == 0);
166 }
167
168 HWTEST_F(NativeEngineTest, TaskpoolTest005, testing::ext::TestSize.Level0)
169 {
170 uint32_t taskId = 10;
171 TaskManager &taskManager = TaskManager::GetInstance();
172 Task* task = taskManager.GetTask(taskId);
173 ASSERT_TRUE(task == nullptr);
174 }
175
176 HWTEST_F(NativeEngineTest, TaskpoolTest006, testing::ext::TestSize.Level0)
177 {
178 TaskManager &taskManager = TaskManager::GetInstance();
179 std::pair<uint32_t, Priority> result = taskManager.DequeueTaskId();
180 ASSERT_TRUE(result.first == 0);
181 ASSERT_TRUE(result.second == Priority::LOW);
182 }
183
184 HWTEST_F(NativeEngineTest, TaskpoolTest007, testing::ext::TestSize.Level0)
185 {
186 TaskManager &taskManager = TaskManager::GetInstance();
187 uint32_t result = taskManager.GetTaskNum();
188 ASSERT_TRUE(result == 0);
189 }
190
191 HWTEST_F(NativeEngineTest, TaskpoolTest008, testing::ext::TestSize.Level0)
192 {
193 ExecuteQueue executeQueue;
194 uint32_t result = executeQueue.DequeueTaskId();
195 ASSERT_TRUE(result == 0);
196 }
197
198 HWTEST_F(NativeEngineTest, TaskpoolTest009, testing::ext::TestSize.Level0)
199 {
200 ExecuteQueue executeQueue;
201 bool result = executeQueue.IsEmpty();
202 ASSERT_TRUE(result);
203 }
204
205 HWTEST_F(NativeEngineTest, TaskpoolTest010, testing::ext::TestSize.Level0)
206 {
207 ExecuteQueue executeQueue;
208 uint32_t result = executeQueue.GetTaskNum();
209 ASSERT_TRUE(result == 0);
210 }
211
212 HWTEST_F(NativeEngineTest, TaskpoolTest011, testing::ext::TestSize.Level0)
213 {
214 napi_env env = (napi_env)engine_;
215 ExceptionScope scope(env);
216 napi_value argv[] = {nullptr};
217 std::string funcName = "TaskGroupConstructor";
218 napi_value cb = nullptr;
219 napi_value result = nullptr;
220 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
221 napi_call_function(env, nullptr, cb, 0, argv, &result);
222 ASSERT_TRUE(result != nullptr);
223 }
224
225 HWTEST_F(NativeEngineTest, TaskpoolTest012, testing::ext::TestSize.Level0)
226 {
227 napi_env env = (napi_env)engine_;
228 ExceptionScope scope(env);
229 napi_value argv[] = {nullptr};
230 std::string funcName = "TaskGroupConstructor";
231 napi_value cb = nullptr;
232 napi_value result = nullptr;
233 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
234 napi_call_function(env, nullptr, cb, 0, argv, &result);
235 ASSERT_TRUE(result != nullptr);
236 napi_value exception;
237 napi_get_and_clear_last_exception(env, &exception);
238
239 size_t argc1 = 0;
240 napi_value argv1[] = {nullptr};
241 funcName = "AddTask";
242 cb = nullptr;
243 napi_value result1 = nullptr;
244 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
245 napi_call_function(env, nullptr, cb, argc1, argv1, &result1);
246 ASSERT_TRUE(result1 == nullptr);
247 }
248
249 HWTEST_F(NativeEngineTest, TaskpoolTest013, testing::ext::TestSize.Level0)
250 {
251 uint32_t number = 10;
252 napi_env env = reinterpret_cast<napi_env>(engine_);
253 napi_value value = NapiHelper::CreateUint32(env, number);
254 napi_value result = TaskPool::InitTaskPool(env, value);
255 usleep(50000);
256 ASSERT_TRUE(result != nullptr);
257 }
258
TestFunction(napi_env env)259 napi_value TestFunction(napi_env env)
260 {
261 napi_value result = nullptr;
262 const char* message = "test taskpool";
263 size_t length = strlen(message);
264 napi_create_string_utf8(env, message, length, &result);
265 return result;
266 }
267
268 HWTEST_F(NativeEngineTest, TaskpoolTest014, testing::ext::TestSize.Level0)
269 {
270 napi_env env = reinterpret_cast<napi_env>(engine_);
271 TaskManager& taskManager = TaskManager::GetInstance();
272 taskManager.InitTaskManager(env);
273 usleep(50000);
274 uint32_t taskNum = taskManager.GetTaskNum();
275 ASSERT_TRUE(taskNum == 0);
276 uint32_t threadNum = taskManager.GetThreadNum();
277 ASSERT_TRUE(threadNum != 0);
278 uint32_t idleWorkers = taskManager.GetIdleWorkers();
279 ASSERT_TRUE(idleWorkers != 0);
280 uint32_t runningWorkers = taskManager.GetRunningWorkers();
281 ASSERT_TRUE(runningWorkers == 0);
282 uint32_t timeoutWorkers = taskManager.GetTimeoutWorkers();
283 ASSERT_TRUE(timeoutWorkers == 0);
284 }
285
286 HWTEST_F(NativeEngineTest, TaskpoolTest015, testing::ext::TestSize.Level0)
287 {
288 napi_env env = reinterpret_cast<napi_env>(engine_);
289 TaskManager& taskManager = TaskManager::GetInstance();
290 std::pair<uint32_t, Priority> result = taskManager.DequeueTaskId();
291 ASSERT_TRUE(result.first == 0);
292 ASSERT_TRUE(result.second == Priority::LOW);
293 }
294
295 HWTEST_F(NativeEngineTest, TaskpoolTest016, testing::ext::TestSize.Level0)
296 {
297 napi_env env = reinterpret_cast<napi_env>(engine_);
298 ExceptionScope scope(env);
299 TaskManager& taskManager = TaskManager::GetInstance();
300 Task* task = new Task();
301 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
302 taskManager.CancelTask(env, taskId);
303 ASSERT_TRUE(taskId != 0);
304 delete task;
305 }
306
307 HWTEST_F(NativeEngineTest, TaskpoolTest017, testing::ext::TestSize.Level0)
308 {
309 napi_env env = reinterpret_cast<napi_env>(engine_);
310 TaskManager& taskManager = TaskManager::GetInstance();
311 Task* task = new Task();
312 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
313 taskManager.TryTriggerExpand();
314 ASSERT_TRUE(taskId != 0);
315 delete task;
316 }
317
318 HWTEST_F(NativeEngineTest, TaskpoolTest018, testing::ext::TestSize.Level0)
319 {
320 napi_env env = reinterpret_cast<napi_env>(engine_);
321 TaskManager& taskManager = TaskManager::GetInstance();
322 Task* task = new Task();
323 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
324 uint64_t duration = 10;
325 taskManager.UpdateExecutedInfo(duration);
326 ASSERT_TRUE(taskId != 0);
327 delete task;
328 }
329
330 HWTEST_F(NativeEngineTest, TaskpoolTest019, testing::ext::TestSize.Level0)
331 {
332 napi_env env = (napi_env)engine_;
333 ExceptionScope scope(env);
334 napi_value argv[] = {nullptr};
335 std::string funcName = "TaskConstructor";
336 napi_value cb = nullptr;
337 napi_value result = nullptr;
338 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
339 napi_call_function(env, nullptr, cb, 0, argv, &result);
340 ASSERT_TRUE(result == nullptr);
341 }
342
343 HWTEST_F(NativeEngineTest, TaskpoolTest020, testing::ext::TestSize.Level0)
344 {
345 napi_env env = (napi_env)engine_;
346 ExceptionScope scope(env);
347 napi_value argv[] = {nullptr};
348 std::string funcName = "TaskConstructor";
349 napi_value cb = nullptr;
350 napi_value result = nullptr;
351 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
352 napi_call_function(env, nullptr, cb, 0, argv, &result);
353 ASSERT_TRUE(result == nullptr);
354 napi_value exception = nullptr;
355 napi_get_and_clear_last_exception(env, &exception);
356
357 cb = nullptr;
358 napi_value result1 = nullptr;
359 funcName = "SetTransferList";
360 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
361 napi_call_function(env, nullptr, cb, 0, argv, &result1);
362 ASSERT_TRUE(result1 != nullptr);
363 }
364
365 HWTEST_F(NativeEngineTest, TaskpoolTest021, testing::ext::TestSize.Level0)
366 {
367 napi_env env = (napi_env)engine_;
368 ExceptionScope scope(env);
369 size_t argc = 10;
370 napi_value argv[] = {nullptr};
371 std::string funcName = "TaskConstructor";
372 napi_value cb = nullptr;
373 napi_value result = nullptr;
374 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
375 napi_call_function(env, nullptr, cb, 0, argv, &result);
376 ASSERT_TRUE(result == nullptr);
377
378 napi_value func = TestFunction(env);
379 uint32_t number = 10;
380 napi_value value = NapiHelper::CreateUint32(env, number);
381 napi_value* args = new napi_value[argc];
382 ObjectScope<napi_value> objScope(args, true);
383 napi_value taskName = NapiHelper::CreateEmptyString(env);
384 Task::GenerateTask(env, value, func, taskName, args, argc);
385 ASSERT_TRUE(args != nullptr);
386 }
387
388 HWTEST_F(NativeEngineTest, TaskpoolTest022, testing::ext::TestSize.Level0)
389 {
390 napi_env env = reinterpret_cast<napi_env>(engine_);
391 ExceptionScope scope(env);
392 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
393 TaskGroup* group = new TaskGroup();
394 uint64_t groupId = reinterpret_cast<uint64_t>(group);
395 Task* task = new Task();
396 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
397 napi_value value = NapiHelper::CreateUint64(env, groupId);
398 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
399 taskGroupManager.AddTask(groupId, reference, taskId);
400 ASSERT_NE(reference, nullptr);
401 delete task;
402 delete group;
403 }
404
405 HWTEST_F(NativeEngineTest, TaskpoolTest023, testing::ext::TestSize.Level0)
406 {
407 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
408 TaskGroup* group = new TaskGroup();
409 uint64_t groupId = reinterpret_cast<uint64_t>(group);
410 TaskGroup* taskGroup = taskGroupManager.GetTaskGroup(groupId);
411 ASSERT_TRUE(taskGroup == nullptr);
412 }
413
414 HWTEST_F(NativeEngineTest, TaskpoolTest024, testing::ext::TestSize.Level0)
415 {
416 auto task = new Task();
417 task->taskId_ = 99;
418 napi_env env = reinterpret_cast<napi_env>(engine_);
419 auto worker = static_cast<Worker*>(WorkerConstructor(env));
420 NativeEngineTest::StoreTaskId(worker, task->taskId_);
421 auto res = NativeEngineTest::FindTaskId(worker, task->taskId_);
422 ASSERT_TRUE(res == true);
423 NativeEngineTest::RemoveTaskId(worker, task->taskId_);
424 res = NativeEngineTest::FindTaskId(worker, task->taskId_);
425 ASSERT_TRUE(res == false);
426 delete task;
427 }
428
429 HWTEST_F(NativeEngineTest, TaskpoolTest025, testing::ext::TestSize.Level0)
430 {
431 auto task = new Task();
432 task->taskId_ = 99;
433 napi_env env = reinterpret_cast<napi_env>(engine_);
434 auto worker = static_cast<Worker*>(WorkerConstructor(env));
435 auto res = NativeEngineTest::FindTaskId(worker, task->taskId_);
436 ASSERT_TRUE(res == false);
437 NativeEngineTest::RemoveTaskId(worker, task->taskId_);
438 res = NativeEngineTest::FindTaskId(worker, task->taskId_);
439 ASSERT_TRUE(res == false);
440 delete task;
441 }
442
443 HWTEST_F(NativeEngineTest, TaskpoolTest026, testing::ext::TestSize.Level0)
444 {
445 napi_env env = (napi_env)engine_;
446 ExceptionScope scope(env);
447 napi_value argv[] = {nullptr};
448 std::string funcName = "SeqRunnerConstructor";
449 napi_value cb = nullptr;
450 napi_value result = nullptr;
451 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &cb);
452 napi_call_function(env, nullptr, cb, 0, argv, &result);
453 ASSERT_NE(result, nullptr);
454 }
455
456 HWTEST_F(NativeEngineTest, TaskpoolTest027, testing::ext::TestSize.Level0)
457 {
458 napi_env env = (napi_env)engine_;
459 ExceptionScope scope(env);
460 napi_value argv[] = {nullptr};
461 std::string func = "SeqRunnerConstructor";
462 napi_value callback = nullptr;
463 napi_value result = nullptr;
464 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
465 napi_call_function(env, nullptr, callback, 0, argv, &result);
466 ASSERT_NE(result, nullptr);
467
468 size_t argc1 = 0;
469 napi_value argv1[] = {nullptr};
470 func = "Execute";
471 callback = nullptr;
472 napi_value result1 = nullptr;
473 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::Execute, nullptr, &callback);
474 napi_call_function(env, nullptr, callback, argc1, argv1, &result1);
475 ASSERT_TRUE(result1 == nullptr);
476 }
477
478 HWTEST_F(NativeEngineTest, TaskpoolTest028, testing::ext::TestSize.Level0)
479 {
480 TaskGroup taskGroup;
481 uint32_t taskId = 10;
482 uint32_t index = taskGroup.GetTaskIndex(taskId);
483 ASSERT_EQ(index, 0);
484 }
485
486 HWTEST_F(NativeEngineTest, TaskpoolTest029, testing::ext::TestSize.Level0)
487 {
488 napi_env env = (napi_env)engine_;
489 TaskGroup taskGroup;
490 taskGroup.NotifyGroupTask(env);
491 TaskManager &taskManager = TaskManager::GetInstance();
492 uint32_t taskId = 11;
493 ASSERT_EQ(taskId, 11);
494 }
495
496 HWTEST_F(NativeEngineTest, TaskpoolTest030, testing::ext::TestSize.Level0)
497 {
498 napi_env env = (napi_env)engine_;
499 TaskGroup taskGroup;
500 taskGroup.CancelPendingGroup(env);
501 TaskManager &taskManager = TaskManager::GetInstance();
502 uint32_t taskId = 12;
503 ASSERT_EQ(taskId, 12);
504 }
505
506 HWTEST_F(NativeEngineTest, TaskpoolTest031, testing::ext::TestSize.Level0)
507 {
508 napi_env env = reinterpret_cast<napi_env>(engine_);
509 TaskManager& taskManager = TaskManager::GetInstance();
510 Task* task = new Task();
511 taskManager.StoreTask(task);
512 Task* res = taskManager.GetTask(task->taskId_);
513 ASSERT_EQ(task, res);
514 }
515
516 HWTEST_F(NativeEngineTest, TaskpoolTest032, testing::ext::TestSize.Level0)
517 {
518 napi_env env = reinterpret_cast<napi_env>(engine_);
519 TaskManager& taskManager = TaskManager::GetInstance();
520 uint32_t taskId = 14;
521 taskManager.RemoveTask(taskId);
522 ASSERT_EQ(taskId, 14);
523 }
524
525 HWTEST_F(NativeEngineTest, TaskpoolTest033, testing::ext::TestSize.Level0)
526 {
527 napi_env env = reinterpret_cast<napi_env>(engine_);
528 TaskManager& taskManager = TaskManager::GetInstance();
529 usleep(50000);
530 ResetTaskManager();
531 // the task will freed in the taskManager's Destuctor and will not cause memory leak
532 Task* task = new Task();
533 auto taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
534 taskManager.EnqueueTaskId(taskId, Priority::HIGH);
535 std::pair<uint32_t, Priority> result = taskManager.DequeueTaskId();
536 ASSERT_TRUE(result.first == taskId);
537 ASSERT_TRUE(result.second == Priority::HIGH);
538 }
539
540 HWTEST_F(NativeEngineTest, TaskpoolTest034, testing::ext::TestSize.Level0)
541 {
542 napi_env env = reinterpret_cast<napi_env>(engine_);
543 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
544 TaskManager& taskManager = TaskManager::GetInstance();
545 taskManager.NotifyWorkerIdle(worker);
546 ASSERT_NE(worker, nullptr);
547 taskManager.NotifyWorkerCreated(worker);
548 ASSERT_NE(worker, nullptr);
549 taskManager.NotifyWorkerRunning(worker);
550 ASSERT_NE(worker, nullptr);
551 taskManager.RestoreWorker(worker);
552 ASSERT_NE(worker, nullptr);
553 taskManager.RemoveWorker(worker);
554 ASSERT_NE(worker, nullptr);
555 }
556
557 HWTEST_F(NativeEngineTest, TaskpoolTest035, testing::ext::TestSize.Level0)
558 {
559 napi_env env = reinterpret_cast<napi_env>(engine_);
560 TaskManager& taskManager = TaskManager::GetInstance();
561 uint32_t step = 8;
562 taskManager.GetIdleWorkersList(step);
563 ASSERT_EQ(step, 8);
564 }
565
566 HWTEST_F(NativeEngineTest, TaskpoolTest036, testing::ext::TestSize.Level0)
567 {
568 napi_env env = reinterpret_cast<napi_env>(engine_);
569 TaskManager& taskManager = TaskManager::GetInstance();
570 napi_value res = taskManager.GetThreadInfos(env);
571 ASSERT_NE(res, nullptr);
572 }
573
574 HWTEST_F(NativeEngineTest, TaskpoolTest037, testing::ext::TestSize.Level0)
575 {
576 napi_env env = reinterpret_cast<napi_env>(engine_);
577 TaskManager& taskManager = TaskManager::GetInstance();
578 uint32_t taskId = 99;
579 auto callbackInfo = std::make_shared<CallbackInfo>(env, 1, nullptr);
580 taskManager.RegisterCallback(env, taskId, callbackInfo, "TaskpoolTest037");
581 auto res = callbackInfo->refCount;
582 taskManager.DecreaseSendDataRefCount(env, taskId);
583 ASSERT_EQ(res, 1);
584 }
585
586 HWTEST_F(NativeEngineTest, TaskpoolTest038, testing::ext::TestSize.Level0)
587 {
588 napi_env env = reinterpret_cast<napi_env>(engine_);
589 TaskManager& taskManager = TaskManager::GetInstance();
590 uint32_t taskId = 100;
591 std::weak_ptr<CallbackInfo> wptr;
592 {
593 auto callbackInfo = std::make_shared<CallbackInfo>(env, 1, nullptr);
594 wptr = callbackInfo;
595 taskManager.RegisterCallback(env, taskId, callbackInfo, "TaskpoolTest038");
596 taskManager.DecreaseSendDataRefCount(env, taskId);
597 }
598 bool res = wptr.expired();
599 ASSERT_EQ(res, true);
600 }
601
602 HWTEST_F(NativeEngineTest, TaskpoolTest039, testing::ext::TestSize.Level0)
603 {
604 napi_env env = reinterpret_cast<napi_env>(engine_);
605 TaskManager& taskManager = TaskManager::GetInstance();
606 uint32_t taskId = 17;
607 taskManager.IncreaseSendDataRefCount(taskId);
608 ASSERT_EQ(taskId, 17);
609 }
610
611 HWTEST_F(NativeEngineTest, TaskpoolTest040, testing::ext::TestSize.Level0)
612 {
613 napi_env env = reinterpret_cast<napi_env>(engine_);
614 TaskManager& taskManager = TaskManager::GetInstance();
615 uint32_t taskId = 18;
616 taskManager.DecreaseSendDataRefCount(env, taskId);
617 ASSERT_EQ(taskId, 18);
618 }
619
620 HWTEST_F(NativeEngineTest, TaskpoolTest041, testing::ext::TestSize.Level0)
621 {
622 napi_env env = reinterpret_cast<napi_env>(engine_);
623 TaskManager& taskManager = TaskManager::GetInstance();
624 uint32_t taskId = 19;
625 bool res = taskManager.IsDependendByTaskId(taskId);
626 ASSERT_EQ(res, false);
627 }
628
629 HWTEST_F(NativeEngineTest, TaskpoolTest042, testing::ext::TestSize.Level0)
630 {
631 napi_env env = reinterpret_cast<napi_env>(engine_);
632 TaskManager& taskManager = TaskManager::GetInstance();
633 uint32_t taskId = 20;
634 taskManager.NotifyDependencyTaskInfo(taskId);
635 ASSERT_EQ(taskId, 20);
636 }
637
638 HWTEST_F(NativeEngineTest, TaskpoolTest043, testing::ext::TestSize.Level0)
639 {
640 napi_env env = reinterpret_cast<napi_env>(engine_);
641 TaskManager& taskManager = TaskManager::GetInstance();
642 uint32_t taskId = 21;
643 std::set<uint32_t> taskSet;
644 taskSet.emplace(1);
645 taskSet.emplace(2);
646 bool res = taskManager.StoreTaskDependency(taskId, taskSet);
647 ASSERT_EQ(res, true);
648 }
649
650 HWTEST_F(NativeEngineTest, TaskpoolTest044, testing::ext::TestSize.Level0)
651 {
652 napi_env env = reinterpret_cast<napi_env>(engine_);
653 TaskManager& taskManager = TaskManager::GetInstance();
654 uint32_t taskId = 22;
655 uint32_t dependentId = 0;
656 bool res = taskManager.RemoveTaskDependency(taskId, dependentId);
657 ASSERT_EQ(res, false);
658 }
659
660 HWTEST_F(NativeEngineTest, TaskpoolTest045, testing::ext::TestSize.Level0)
661 {
662 napi_env env = reinterpret_cast<napi_env>(engine_);
663 TaskManager& taskManager = TaskManager::GetInstance();
664 uint32_t taskId = 23;
665 std::set<uint32_t> dependentIdSet;
666 dependentIdSet.emplace(1);
667 std::set<uint32_t> idSet;
668 idSet.emplace(2);
669 bool res = taskManager.CheckCircularDependency(dependentIdSet, idSet, taskId);
670 ASSERT_EQ(res, true);
671 }
672
673 HWTEST_F(NativeEngineTest, TaskpoolTest046, testing::ext::TestSize.Level0)
674 {
675 napi_env env = reinterpret_cast<napi_env>(engine_);
676 TaskManager& taskManager = TaskManager::GetInstance();
677 uint32_t taskId = 24;
678 taskManager.EnqueuePendingTaskInfo(taskId, Priority::NUMBER);
679 std::pair<uint32_t, Priority> res = taskManager.DequeuePendingTaskInfo(taskId);
680 ASSERT_EQ(res.first, 24);
681 ASSERT_EQ(res.second, Priority::NUMBER);
682 }
683
684 HWTEST_F(NativeEngineTest, TaskpoolTest047, testing::ext::TestSize.Level0)
685 {
686 napi_env env = reinterpret_cast<napi_env>(engine_);
687 TaskManager& taskManager = TaskManager::GetInstance();
688 uint32_t taskId = 24;
689 taskManager.RemovePendingTaskInfo(taskId);
690 ASSERT_EQ(taskId, 24);
691 }
692
693 HWTEST_F(NativeEngineTest, TaskpoolTest048, testing::ext::TestSize.Level0)
694 {
695 napi_env env = reinterpret_cast<napi_env>(engine_);
696 TaskManager& taskManager = TaskManager::GetInstance();
697 uint32_t taskId = 25;
698 std::set<uint32_t> dependTaskIdSet;
699 taskManager.StoreDependentTaskInfo(dependTaskIdSet, taskId);
700 ASSERT_EQ(taskId, 25);
701 }
702
703 HWTEST_F(NativeEngineTest, TaskpoolTest049, testing::ext::TestSize.Level0)
704 {
705 napi_env env = reinterpret_cast<napi_env>(engine_);
706 TaskManager& taskManager = TaskManager::GetInstance();
707 uint32_t taskId = 26;
708 uint32_t dependentTaskId = 26;
709 taskManager.RemoveDependentTaskInfo(dependentTaskId, taskId);
710 ASSERT_EQ(taskId, 26);
711 ASSERT_EQ(dependentTaskId, 26);
712 }
713
714 HWTEST_F(NativeEngineTest, TaskpoolTest050, testing::ext::TestSize.Level0)
715 {
716 napi_env env = reinterpret_cast<napi_env>(engine_);
717 TaskManager& taskManager = TaskManager::GetInstance();
718 uint32_t taskId = 27;
719 uint64_t totalDuration = 25;
720 uint64_t cpuDuration = 8;
721 taskManager.StoreTaskDuration(taskId, totalDuration, cpuDuration);
722 ASSERT_EQ(taskId, 27);
723 ASSERT_EQ(totalDuration, 25);
724 ASSERT_EQ(cpuDuration, 8);
725 }
726
727 HWTEST_F(NativeEngineTest, TaskpoolTest051, testing::ext::TestSize.Level0)
728 {
729 napi_env env = reinterpret_cast<napi_env>(engine_);
730 TaskManager& taskManager = TaskManager::GetInstance();
731 uint32_t taskId = 28;
732 std::string str = "testTaskpool";
733 taskManager.GetTaskDuration(taskId, str);
734 ASSERT_EQ(taskId, 28);
735 }
736
737 HWTEST_F(NativeEngineTest, TaskpoolTest052, testing::ext::TestSize.Level0)
738 {
739 napi_env env = reinterpret_cast<napi_env>(engine_);
740 TaskManager& taskManager = TaskManager::GetInstance();
741 uint32_t taskId = 29;
742 taskManager.RemoveTaskDuration(taskId);
743 ASSERT_EQ(taskId, 29);
744 }
745
746 HWTEST_F(NativeEngineTest, TaskpoolTest053, testing::ext::TestSize.Level0)
747 {
748 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
749 uint64_t groupId = 30;
750 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
751 taskGroupManager.StoreTaskGroup(groupId, group);
752 ASSERT_EQ(groupId, 30);
753 }
754
755 HWTEST_F(NativeEngineTest, TaskpoolTest054, testing::ext::TestSize.Level0)
756 {
757 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
758 uint64_t groupId = 31;
759 taskGroupManager.RemoveTaskGroup(groupId);
760 ASSERT_EQ(groupId, 31);
761 }
762
763 HWTEST_F(NativeEngineTest, TaskpoolTest055, testing::ext::TestSize.Level0)
764 {
765 napi_env env = reinterpret_cast<napi_env>(engine_);
766 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
767 uint64_t groupId = 32;
768 taskGroupManager.CancelGroup(env, groupId);
769 ASSERT_EQ(groupId, 32);
770 }
771
772 HWTEST_F(NativeEngineTest, TaskpoolTest056, testing::ext::TestSize.Level0)
773 {
774 napi_env env = reinterpret_cast<napi_env>(engine_);
775 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
776 uint32_t taskId = 33;
777 TaskGroup* group = taskGroupManager.GetTaskGroup(taskId);
778 taskGroupManager.CancelGroupTask(env, taskId, group);
779 ASSERT_EQ(taskId, 33);
780 }
781
782 HWTEST_F(NativeEngineTest, TaskpoolTest057, testing::ext::TestSize.Level0)
783 {
784 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
785 uint64_t groupId = 34;
786 taskGroupManager.UpdateGroupState(groupId);
787 ASSERT_EQ(groupId, 34);
788 }
789
790 HWTEST_F(NativeEngineTest, TaskpoolTest058, testing::ext::TestSize.Level0)
791 {
792 napi_env env = reinterpret_cast<napi_env>(engine_);
793 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
794 SequenceRunnerManager& sequenceRunnerManager = SequenceRunnerManager::GetInstance();
795 uint64_t seqRunnerId = 35;
796 Task* task = new Task();
797 ASSERT_NE(task, nullptr);
798 sequenceRunnerManager.AddTaskToSeqRunner(seqRunnerId, task);
799 sequenceRunnerManager.TriggerSeqRunner(env, task);
800 SequenceRunner sequenceRunner;
801 sequenceRunnerManager.StoreSequenceRunner(seqRunnerId, &sequenceRunner);
802 NativeEngineTest::RemoveSequenceRunner(seqRunnerId);
803 ASSERT_EQ(seqRunnerId, 35);
804 SequenceRunner* res = sequenceRunnerManager.GetSeqRunner(seqRunnerId);
805 ASSERT_EQ(res, nullptr);
806 }
807
808 HWTEST_F(NativeEngineTest, TaskpoolTest059, testing::ext::TestSize.Level0)
809 {
810 napi_env env = reinterpret_cast<napi_env>(engine_);
811 TaskManager& taskManager = TaskManager::GetInstance();
812 taskManager.InitTaskManager(env);
813 taskManager.TryTriggerExpand();
814 usleep(50000);
815 NativeEngineTest::TriggerShrink(env);
816 napi_value exception = nullptr;
817 napi_get_and_clear_last_exception(env, &exception);
818 ASSERT_TRUE(exception == nullptr);
819 }
820
821 HWTEST_F(NativeEngineTest, TaskpoolTest060, testing::ext::TestSize.Level0)
822 {
823 napi_env env = reinterpret_cast<napi_env>(engine_);
824 TaskManager& taskManager = TaskManager::GetInstance();
825 ResetTaskManager();
826 uint32_t taskId = 36;
827 taskManager.EnqueueTaskId(taskId, Priority::LOW);
828 ASSERT_EQ(taskId, 36);
829
830 std::pair<uint32_t, Priority> result = taskManager.DequeueTaskId();
831 ASSERT_TRUE(result.first == 36);
832 ASSERT_TRUE(result.second == Priority::LOW);
833
834 taskId = 37;
835 taskManager.EnqueueTaskId(taskId, Priority::IDLE);
836 ASSERT_EQ(taskId, 37);
837
838 result = taskManager.DequeueTaskId();
839 ASSERT_TRUE(result.first == 37);
840 ASSERT_TRUE(result.second == Priority::IDLE);
841 result = taskManager.DequeueTaskId();
842 ASSERT_TRUE(result.first == 0);
843 ASSERT_TRUE(result.second == Priority::LOW);
844 }
845
846 HWTEST_F(NativeEngineTest, TaskpoolTest061, testing::ext::TestSize.Level0)
847 {
848 napi_env env = (napi_env)engine_;
849 ExceptionScope scope(env);
850 napi_value argv[] = {nullptr, nullptr};
851 std::string funcName = "TaskGroupConstructor";
852 napi_value cb = nullptr;
853 napi_value result = nullptr;
854 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
855
856 napi_call_function(env, nullptr, cb, 2, argv, &result);
857 ASSERT_TRUE(result == nullptr);
858 }
859
860 HWTEST_F(NativeEngineTest, TaskpoolTest062, testing::ext::TestSize.Level0)
861 {
862 napi_env env = (napi_env)engine_;
863 ExceptionScope scope(env);
864 napi_value argv[] = {nullptr};
865 std::string funcName = "TaskGroupConstructor";
866 napi_value cb = nullptr;
867 napi_value result = nullptr;
868 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
869
870 napi_call_function(env, nullptr, cb, 1, argv, &result);
871 ASSERT_TRUE(result == nullptr);
872 }
873
874 HWTEST_F(NativeEngineTest, TaskpoolTest063, testing::ext::TestSize.Level0)
875 {
876 napi_env env = (napi_env)engine_;
877 TaskGroup taskGroup;
878 uint32_t taskId = 10;
879 taskGroup.taskIds_.push_back(taskId);
880 uint32_t index = taskGroup.GetTaskIndex(taskId);
881 ASSERT_EQ(index, 0);
882 }
883
884 HWTEST_F(NativeEngineTest, TaskpoolTest064, testing::ext::TestSize.Level0)
885 {
886 napi_env env = (napi_env)engine_;
887 TaskGroup taskGroup;
888 uint32_t taskId = 11;
889 taskGroup.taskIds_.push_back(taskId);
890 uint32_t index = taskGroup.GetTaskIndex(1);
891 ASSERT_EQ(index, 1);
892 }
893
894 HWTEST_F(NativeEngineTest, TaskpoolTest065, testing::ext::TestSize.Level0)
895 {
896 napi_env env = (napi_env)engine_;
897 TaskGroup taskGroup;
898 GroupInfo* groupInfo = new GroupInfo();
899 taskGroup.pendingGroupInfos_.push_back(groupInfo);
900 taskGroup.NotifyGroupTask(env);
901 delete groupInfo;
902 groupInfo = nullptr;
903 ASSERT_TRUE(taskGroup.pendingGroupInfos_.empty());
904 }
905
906 HWTEST_F(NativeEngineTest, TaskpoolTest066, testing::ext::TestSize.Level0)
907 {
908 napi_env env = (napi_env)engine_;
909 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
910 TaskGroup* taskGroup = new TaskGroup();
911 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
912 taskGroup->groupId_ = groupId;
913 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
914
915 GroupInfo* groupInfo = new GroupInfo();
916 groupInfo->priority = Priority::DEFAULT;
917 taskGroup->pendingGroupInfos_.push_back(groupInfo);
918 taskGroup->NotifyGroupTask(env);
919 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
920 }
921
922 HWTEST_F(NativeEngineTest, TaskpoolTest067, testing::ext::TestSize.Level0)
923 {
924 napi_env env = (napi_env)engine_;
925 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
926 TaskGroup* taskGroup = new TaskGroup();
927 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
928 taskGroup->groupId_ = groupId;
929 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
930
931 Task* task = new Task();
932 task->taskType_ = TaskType::COMMON_TASK;
933 task->groupId_ = groupId;
934 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
935 napi_reference_ref(env, task->taskRef_, nullptr);
936 napi_value thisValue = NapiHelper::CreateObject(env);
937 napi_wrap(
938 env, thisValue, task,
__anon5b19175e0302(napi_env environment, void* data, void* hint) 939 [](napi_env environment, void* data, void* hint) {
940 auto obj = reinterpret_cast<Task*>(data);
941 if (obj != nullptr) {
942 delete obj;
943 }
944 }, nullptr, nullptr);
945 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
946 taskGroupManager.AddTask(groupId, ref, task->taskId_);
947
948 GroupInfo* groupInfo = new GroupInfo();
949 groupInfo->priority = Priority::DEFAULT;
950 taskGroup->pendingGroupInfos_.push_back(groupInfo);
951 taskGroup->NotifyGroupTask(env);
952 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
953 }
954
955 HWTEST_F(NativeEngineTest, TaskpoolTest068, testing::ext::TestSize.Level0)
956 {
957 napi_env env = (napi_env)engine_;
958 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
959 TaskGroup taskGroup;
960
961 GroupInfo* groupInfo = new GroupInfo();
962 groupInfo->priority = Priority::DEFAULT;
963 taskGroup.pendingGroupInfos_.push_back(groupInfo);
964 uint32_t taskId = 68;
965 taskGroup.taskIds_.push_back(taskId);
966 taskGroup.CancelPendingGroup(env);
967
968 ASSERT_TRUE(taskGroup.pendingGroupInfos_.empty());
969 }
970
971 HWTEST_F(NativeEngineTest, TaskpoolTest069, testing::ext::TestSize.Level0)
972 {
973 napi_env env = (napi_env)engine_;
974 TaskManager& taskManager = TaskManager::GetInstance();
975 Task* pointer = new Task();
976 auto task = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(pointer));
977 auto worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
978 taskManager.StoreLongTaskInfo(task, worker);
979 auto res = taskManager.GetLongTaskInfo(task);
980 ASSERT_TRUE(worker == res);
981 taskManager.TerminateTask(task);
982 res = taskManager.GetLongTaskInfo(task);
983 ASSERT_TRUE(res == nullptr);
984 }
985
986 HWTEST_F(NativeEngineTest, TaskpoolTest070, testing::ext::TestSize.Level0)
987 {
988 napi_env env = (napi_env)engine_;
989 TaskManager& taskManager = TaskManager::GetInstance();
990 ResetTaskManager();
991 auto worker = Worker::WorkerConstructor(env);
992 usleep(50000);
993 taskManager.NotifyWorkerCreated(worker);
994 Task* task = new Task();
995 task->isLongTask_ = true;
996 taskManager.StoreTask(task);
997 uint32_t id = task->taskId_;
998 taskManager.EnqueueTaskId(id);
999 usleep(50000);
1000 auto res = taskManager.GetLongTaskInfo(id);
1001 ASSERT_NE(res, nullptr);
1002 ResetTaskManager();
1003 }
1004
1005 HWTEST_F(NativeEngineTest, TaskpoolTest071, testing::ext::TestSize.Level0)
1006 {
1007 napi_env env = (napi_env)engine_;
1008 TaskManager& taskManager = TaskManager::GetInstance();
1009 char buf[4096]; // 4096: buffer length for thread state
1010 auto worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
1011 uv_timer_t* handle = new uv_timer_t;
1012 handle->data = worker;
1013 auto tid = NativeEngineTest::GetWorkerTid(handle);
1014 bool res = taskManager.ReadThreadInfo(tid, buf, sizeof(buf));
1015 ASSERT_TRUE(res == true);
1016 }
1017
1018 HWTEST_F(NativeEngineTest, TaskpoolTest072, testing::ext::TestSize.Level0)
1019 {
1020 napi_env env = (napi_env)engine_;
1021 TaskManager& taskManager = TaskManager::GetInstance();
1022 Task* task = new Task();
1023 auto id = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
1024 bool res = taskManager.IsDependendByTaskId(id);
1025 ASSERT_NE(res, true);
1026 }
1027
1028 HWTEST_F(NativeEngineTest, TaskpoolTest073, testing::ext::TestSize.Level0)
1029 {
1030 napi_env env = (napi_env)engine_;
1031 TaskManager& taskManager = TaskManager::GetInstance();
1032 Task* task = new Task();
1033 taskManager.StoreTask(task);
1034 task = taskManager.GetTask(task->taskId_);
1035 ASSERT_TRUE(task != nullptr);
1036 }
1037
1038 HWTEST_F(NativeEngineTest, TaskpoolTest074, testing::ext::TestSize.Level0)
1039 {
1040 napi_env env = (napi_env)engine_;
1041 TaskManager& taskManager = TaskManager::GetInstance();
1042 auto res = taskManager.GetThreadInfos(env);
1043 ASSERT_TRUE(res != nullptr);
1044 }
1045
1046 HWTEST_F(NativeEngineTest, TaskpoolTest075, testing::ext::TestSize.Level0)
1047 {
1048 napi_env env = (napi_env)engine_;
1049 TaskManager& taskManager = TaskManager::GetInstance();
1050 auto res = taskManager.GetTaskInfos(env);
1051 ASSERT_TRUE(res != nullptr);
1052 }
1053
1054 HWTEST_F(NativeEngineTest, TaskpoolTest076, testing::ext::TestSize.Level0)
1055 {
1056 napi_env env = (napi_env)engine_;
1057 TaskManager& taskManager = TaskManager::GetInstance();
1058 Task* task = new Task();
1059 auto id = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
1060 taskManager.StoreTaskDuration(id, 0, 0);
1061 auto totalTime = taskManager.GetTaskDuration(id, TASK_TOTAL_TIME);
1062 auto cpuTime = taskManager.GetTaskDuration(id, TASK_CPU_TIME);
1063 ASSERT_TRUE(totalTime == 0);
1064 ASSERT_TRUE(cpuTime == 0);
1065 taskManager.StoreTaskDuration(id, 100, 100); // 100: 100 seconds
1066 totalTime = taskManager.GetTaskDuration(id, TASK_TOTAL_TIME);
1067 cpuTime = taskManager.GetTaskDuration(id, TASK_CPU_TIME);
1068 ASSERT_TRUE(totalTime == 100);
1069 ASSERT_TRUE(cpuTime == 100);
1070 }
1071
1072 HWTEST_F(NativeEngineTest, TaskpoolTest077, testing::ext::TestSize.Level0)
1073 {
1074 napi_env env = (napi_env)engine_;
1075 TaskManager& taskManager = TaskManager::GetInstance();
1076 Task* task = new Task(env, TaskType::COMMON_TASK, "test");
1077 taskManager.StoreTask(task);
1078 auto res = task->name_;
1079 ASSERT_TRUE(strcmp(res.c_str(), "test") == 0);
1080 }
1081
1082 HWTEST_F(NativeEngineTest, TaskpoolTest078, testing::ext::TestSize.Level0)
1083 {
1084 napi_env env = (napi_env)engine_;
1085 ExceptionScope scope(env);
1086 napi_value argv[] = {};
1087 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 0);
1088 ASSERT_TRUE(result == nullptr);
1089 }
1090
1091 HWTEST_F(NativeEngineTest, TaskpoolTest079, testing::ext::TestSize.Level0)
1092 {
1093 napi_env env = (napi_env)engine_;
1094 ExceptionScope scope(env);
1095 napi_value argv[] = { nullptr };
1096 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 1);
1097 ASSERT_TRUE(result == nullptr);
1098 }
1099
1100 HWTEST_F(NativeEngineTest, TaskpoolTest080, testing::ext::TestSize.Level0)
1101 {
1102 napi_env env = (napi_env)engine_;
1103 ExceptionScope scope(env);
1104 napi_value argv[] = { nullptr, nullptr };
1105 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 2);
1106 ASSERT_TRUE(result == nullptr);
1107 }
1108
1109 HWTEST_F(NativeEngineTest, TaskpoolTest081, testing::ext::TestSize.Level0)
1110 {
1111 napi_env env = (napi_env)engine_;
1112 ExceptionScope scope(env);
1113 napi_value func = nullptr;
1114 GetSendableFunction(env, "foo", func);
1115 napi_value argv[] = { func };
1116 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 1);
1117 bool res = true;
1118 napi_get_value_bool(env, result, &res);
1119 ASSERT_TRUE(res == false);
1120 }
1121
1122 HWTEST_F(NativeEngineTest, TaskpoolTest082, testing::ext::TestSize.Level0)
1123 {
1124 napi_env env = (napi_env)engine_;
1125 ExceptionScope scope(env);
1126 napi_value argv[] = { nullptr };
1127 napi_value result = NativeEngineTest::GetTaskPoolInfo(env, argv, 1);
1128 ASSERT_TRUE(result != nullptr);
1129 }
1130
1131 HWTEST_F(NativeEngineTest, TaskpoolTest083, testing::ext::TestSize.Level0)
1132 {
1133 napi_env env = (napi_env)engine_;
1134 ExceptionScope scope(env);
1135 napi_value argv[] = { nullptr };
1136 napi_value result = NativeEngineTest::TerminateTask(env, argv, 1);
1137 ASSERT_TRUE(result == nullptr);
1138 }
1139
1140 HWTEST_F(NativeEngineTest, TaskpoolTest084, testing::ext::TestSize.Level0)
1141 {
1142 napi_env env = (napi_env)engine_;
1143 ExceptionScope scope(env);
1144 napi_value func = nullptr;
1145 GetSendableFunction(env, "foo", func);
1146 napi_value argv[] = { func };
1147 napi_value result = NativeEngineTest::Execute(env, argv, 1);
1148 ASSERT_TRUE(result != nullptr);
1149 }
1150
1151 HWTEST_F(NativeEngineTest, TaskpoolTest085, testing::ext::TestSize.Level0)
1152 {
1153 napi_env env = (napi_env)engine_;
1154 ExceptionScope scope(env);
1155 napi_value func = nullptr;
1156 GetSendableFunction(env, "foo", func);
1157
1158 size_t delay = 1000;
1159 napi_value result = nullptr;
1160 napi_create_uint32(env, delay, &result);
1161
1162 napi_value argv[] = { result, func };
1163 std::string funcName = "ExecuteDelayed";
1164 result = NativeEngineTest::ExecuteDelayed(env, argv, 2);
1165 ASSERT_TRUE(result == nullptr);
1166 }
1167
1168 HWTEST_F(NativeEngineTest, TaskpoolTest086, testing::ext::TestSize.Level0)
1169 {
1170 napi_env env = (napi_env)engine_;
1171 ExceptionScope scope(env);
1172 std::string func = "SeqRunnerConstructor";
1173 napi_value callback = nullptr;
1174 napi_value result = nullptr;
1175 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
1176
1177 napi_value argv1[] = {nullptr};
1178 napi_create_uint32(env, 1, &argv1[0]);
1179 napi_call_function(env, nullptr, callback, 1, argv1, &result);
1180 ASSERT_NE(result, nullptr);
1181
1182 napi_value argv2[2] = {nullptr};
1183 napi_create_uint32(env, 1, &argv2[0]);
1184 napi_create_string_utf8(env, "seq01", NAPI_AUTO_LENGTH, &argv2[1]);
1185 result = nullptr;
1186 napi_call_function(env, nullptr, callback, 2, argv2, &result);
1187 ASSERT_EQ(result, nullptr);
1188 napi_value exception = nullptr;
1189 napi_get_and_clear_last_exception(env, &exception);
1190
1191 napi_value argv3[2] = {nullptr};
1192 napi_create_string_utf8(env, "seq02", NAPI_AUTO_LENGTH, &argv3[0]);
1193 napi_create_uint32(env, 1, &argv3[1]);
1194 result = nullptr;
1195 napi_call_function(env, nullptr, callback, 2, argv3, &result);
1196 ASSERT_NE(result, nullptr);
1197 }
1198
1199 HWTEST_F(NativeEngineTest, TaskpoolTest087, testing::ext::TestSize.Level0)
1200 {
1201 napi_env env = (napi_env)engine_;
1202 ExceptionScope scope(env);
1203 std::string func = "SeqRunnerConstructor";
1204 napi_value callback = nullptr;
1205 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
1206
1207 napi_value argv[2] = {nullptr};
1208 napi_create_string_utf8(env, "seq03", NAPI_AUTO_LENGTH, &argv[0]);
1209 napi_create_uint32(env, 1, &argv[1]);
1210 napi_value result = nullptr;
1211 napi_call_function(env, nullptr, callback, 2, argv, &result);
1212 ASSERT_NE(result, nullptr);
1213
1214 func = "Execute";
1215 napi_value cb = nullptr;
1216 napi_value res = nullptr;
1217 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::Execute, nullptr, &cb);
1218
1219 napi_value argv1[] = {nullptr};
1220 napi_create_uint32(env, 1, &argv1[0]);
1221 napi_call_function(env, nullptr, cb, 1, argv1, &res);
1222 ASSERT_EQ(res, nullptr);
1223 napi_value exception = nullptr;
1224 napi_get_and_clear_last_exception(env, &exception);
1225
1226 napi_value thisValue = CreateTaskObject(env);
1227 napi_value argv2[] = {thisValue};
1228 res = nullptr;
1229 napi_call_function(env, nullptr, cb, 1, argv2, &res);
1230 ASSERT_NE(res, nullptr);
1231 exception = nullptr;
1232 napi_get_and_clear_last_exception(env, &exception);
1233
1234 napi_value napiSeqRunnerId = NapiHelper::GetNameProperty(env, result, "seqRunnerId");
1235 uint64_t seqId = NapiHelper::GetUint64Value(env, napiSeqRunnerId);
1236 SequenceRunner seq;
1237 SequenceRunnerManager::GetInstance().StoreSequenceRunner(seqId, &seq);
1238
1239 res = nullptr;
1240 napi_call_function(env, nullptr, cb, 1, argv2, &res);
1241 ASSERT_NE(res, nullptr);
1242 }
1243
1244 HWTEST_F(NativeEngineTest, TaskpoolTest088, testing::ext::TestSize.Level0)
1245 {
1246 napi_env env = (napi_env)engine_;
1247 ExceptionScope scope(env);
1248 napi_value argv[] = {nullptr};
1249 std::string func = "TaskGroupConstructor";
1250 napi_value callback = nullptr;
1251 napi_value taskGroupResult = nullptr;
1252 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1253 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1254
1255 func = "AddTask";
1256 napi_value cb = nullptr;
1257 napi_value result = nullptr;
1258 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
1259
1260 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
1261 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
1262
1263 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
1264 TaskGroup* group = new TaskGroup();
1265 group->groupId_ = groupId;
1266 taskGroupManager.StoreTaskGroup(groupId, group);
1267
1268 napi_value thisValue = CreateTaskObject(env);
1269 napi_value argv1[] = {thisValue};
1270 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1271 ASSERT_NE(result, nullptr);
1272
1273 napi_value thisValue2 = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
1274 napi_value argv2[] = {thisValue2};
1275 result = nullptr;
1276 napi_call_function(env, nullptr, cb, 1, argv2, &result);
1277 ASSERT_EQ(result, nullptr);
1278 }
1279
1280 HWTEST_F(NativeEngineTest, TaskpoolTest089, testing::ext::TestSize.Level0)
1281 {
1282 napi_env env = (napi_env)engine_;
1283 ExceptionScope scope(env);
1284 napi_value argv[] = {nullptr};
1285 std::string func = "TaskGroupConstructor";
1286 napi_value callback = nullptr;
1287 napi_value taskGroupResult = nullptr;
1288 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1289 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1290
1291 napi_value thisValue = NapiHelper::CreateObject(env);
1292 napi_value argv1[] = {thisValue};
1293 func = "AddTask";
1294 napi_value cb = nullptr;
1295 napi_value result = nullptr;
1296 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
1297 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1298 ASSERT_EQ(result, nullptr);
1299 }
1300
1301 HWTEST_F(NativeEngineTest, TaskpoolTest090, testing::ext::TestSize.Level0)
1302 {
1303 napi_env env = (napi_env)engine_;
1304 ExceptionScope scope(env);
1305 napi_value argv[] = {nullptr};
1306 std::string funcName = "TaskGroupConstructor";
1307 napi_value callback = nullptr;
1308 napi_value taskGroupResult = nullptr;
1309 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1310 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1311
__anon5b19175e0402(napi_env environment, napi_callback_info info) 1312 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
1313 return nullptr;
1314 };
1315 napi_value thisValue = nullptr;
1316 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &thisValue);
1317 napi_value argv1[] = {thisValue};
1318 funcName = "AddTask";
1319 napi_value cb = nullptr;
1320 napi_value result = nullptr;
1321 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1322 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1323 ASSERT_EQ(result, nullptr);
1324 }
1325
1326 HWTEST_F(NativeEngineTest, TaskpoolTest091, testing::ext::TestSize.Level0)
1327 {
1328 napi_env env = (napi_env)engine_;
1329 ExceptionScope scope(env);
1330 napi_value argv[] = {nullptr};
1331 std::string funcName = "TaskGroupConstructor";
1332 napi_value callback = nullptr;
1333 napi_value taskGroupResult = nullptr;
1334 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1335 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1336
1337 napi_value argv1[] = {};
1338 napi_create_uint32(env, 1, &argv1[0]);
1339 funcName = "AddTask";
1340 napi_value cb = nullptr;
1341 napi_value result = nullptr;
1342 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1343 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1344 ASSERT_EQ(result, nullptr);
1345 }
1346
1347 HWTEST_F(NativeEngineTest, TaskpoolTest092, testing::ext::TestSize.Level0)
1348 {
1349 napi_env env = (napi_env)engine_;
1350 napi_value thisObj = nullptr;
1351 napi_create_object(env, &thisObj);
1352
1353 napi_value taskIdValue = nullptr;
1354 napi_create_uint32(env, 1, &taskIdValue);
1355 napi_set_named_property(env, thisObj, "taskId", taskIdValue);
1356
1357 std::string funcName = "OnReceiveData";
1358 napi_value cb = nullptr;
1359 napi_value result = nullptr;
1360
1361 napi_value listenerFunc = nullptr;
__anon5b19175e0502(napi_env env, napi_callback_info info) 1362 napi_create_function(env, "listener", NAPI_AUTO_LENGTH, [](napi_env env, napi_callback_info info) -> napi_value {
1363 napi_value undefined;
1364 napi_get_undefined(env, &undefined);
1365 return undefined;
1366 }, nullptr, &listenerFunc);
1367
1368 napi_value argv1[2] = { listenerFunc, nullptr };
1369 napi_create_object(env, &argv1[1]);
1370
1371 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, env, &cb);
1372 napi_call_function(env, thisObj, cb, 2, argv1, &result);
1373
1374 napi_value exception = nullptr;
1375 napi_get_and_clear_last_exception(env, &exception);
1376 ExceptionScope scope(env);
1377
1378 napi_value argv2[2] = { listenerFunc, nullptr };
1379 napi_create_object(env, &argv2[1]);
1380
1381 result = nullptr;
1382 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, env, &cb);
1383 napi_call_function(env, thisObj, cb, 2, argv2, &result);
1384 ASSERT_TRUE(result == nullptr);
1385 }
1386
1387 HWTEST_F(NativeEngineTest, TaskpoolTest093, testing::ext::TestSize.Level0)
1388 {
1389 napi_env env = (napi_env)engine_;
1390 napi_value global = NapiHelper::CreateObject(env);
1391 ExceptionScope scope(env);
1392 napi_value func = nullptr;
1393 GetSendableFunction(env, "foo", func);
1394 napi_value argv[] = { func };
1395 std::string funcName = "TaskConstructor";
1396 napi_value cb = nullptr;
1397 napi_value task = nullptr;
1398 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1399 napi_call_function(env, global, cb, 1, argv, &task);
1400 auto& taskManager = TaskManager::GetInstance();
1401 Task* pointer = nullptr;
1402 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1403
1404 funcName = "OnReceiveData";
1405 cb = nullptr;
1406 napi_value result = nullptr;
1407 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
1408 napi_call_function(env, task, cb, 1, argv, &result);
1409 ASSERT_TRUE(result != nullptr);
1410 }
1411
1412 HWTEST_F(NativeEngineTest, TaskpoolTest094, testing::ext::TestSize.Level0)
1413 {
1414 napi_env env = (napi_env)engine_;
1415 ExceptionScope scope(env);
1416 napi_value argv[] = { nullptr, nullptr };
1417 std::string funcName = "TaskConstructor";
1418 napi_value cb = nullptr;
1419 napi_value result = nullptr;
1420 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1421 napi_call_function(env, nullptr, cb, 2, argv, &result);
1422 ASSERT_TRUE(result == nullptr);
1423 }
1424
1425 HWTEST_F(NativeEngineTest, TaskpoolTest095, testing::ext::TestSize.Level0)
1426 {
1427 napi_env env = (napi_env)engine_;
1428 ExceptionScope scope(env);
1429 const char* str = "Task";
1430 napi_value name = nullptr;
1431 napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &name);
1432 napi_value argv[] = { name, nullptr };
1433 std::string funcName = "TaskConstructor";
1434 napi_value cb = nullptr;
1435 napi_value result = nullptr;
1436 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1437 napi_call_function(env, nullptr, cb, 2, argv, &result);
1438 ASSERT_TRUE(result == nullptr);
1439 }
1440
1441 HWTEST_F(NativeEngineTest, TaskpoolTest096, testing::ext::TestSize.Level0)
1442 {
1443 napi_env env = (napi_env)engine_;
1444 napi_value global = NapiHelper::CreateObject(env);
1445 ExceptionScope scope(env);
1446 napi_value func = nullptr;
1447 GetSendableFunction(env, "foo", func);
1448 napi_value argv[] = { func };
1449 std::string funcName = "TaskConstructor";
1450 napi_value cb = nullptr;
1451 napi_value result = nullptr;
1452 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1453 napi_call_function(env, global, cb, 1, argv, &result);
1454 ASSERT_TRUE(result != nullptr);
1455 }
1456
1457 HWTEST_F(NativeEngineTest, TaskpoolTest097, testing::ext::TestSize.Level0)
1458 {
1459 napi_env env = (napi_env)engine_;
1460 napi_value global = NapiHelper::CreateObject(env);
1461 ExceptionScope scope(env);
1462 napi_value func = nullptr;
1463 GetSendableFunction(env, "bar", func);
1464 napi_value argv[] = { func };
1465 std::string funcName = "LongTaskConstructor";
1466 napi_value cb = nullptr;
1467 napi_value result = nullptr;
1468 napi_create_function(env, funcName.c_str(), funcName.size(), Task::LongTaskConstructor, nullptr, &cb);
1469 napi_call_function(env, global, cb, 1, argv, &result);
1470 ASSERT_TRUE(result != nullptr);
1471 }
1472
1473 HWTEST_F(NativeEngineTest, TaskpoolTest098, testing::ext::TestSize.Level0)
1474 {
1475 napi_env env = (napi_env)engine_;
1476 ExceptionScope scope(env);
1477 napi_value argv[] = { nullptr };
1478 std::string funcName = "SendData";
1479 napi_value cb = nullptr;
1480 napi_value result = nullptr;
1481 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
1482 napi_call_function(env, nullptr, cb, 1, argv, &result);
1483 ASSERT_TRUE(result == nullptr);
1484 }
1485
1486 HWTEST_F(NativeEngineTest, TaskpoolTest099, testing::ext::TestSize.Level0)
1487 {
1488 napi_env env = (napi_env)engine_;
1489 napi_value argv[] = {};
1490 std::string funcName = "AddDependency";
1491 napi_value cb = nullptr;
1492 napi_value result = nullptr;
1493 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1494 napi_call_function(env, nullptr, cb, 0, argv, &result);
1495 napi_value exception = nullptr;
1496 napi_get_and_clear_last_exception(env, &exception);
1497 ASSERT_TRUE(exception != nullptr);
1498 }
1499
1500 HWTEST_F(NativeEngineTest, TaskpoolTest100, testing::ext::TestSize.Level0)
1501 {
1502 napi_env env = (napi_env)engine_;
1503 napi_value global = NapiHelper::CreateObject(env);
1504 auto task = GeneratorTask(env, global);
1505 Task* pointer = nullptr;
1506 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1507 pointer->isPeriodicTask_ = true;
1508
1509 napi_value argv[] = { nullptr };
1510 std::string funcName = "AddDependency";
1511 napi_value cb = nullptr;
1512 napi_value result = nullptr;
1513 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1514 napi_call_function(env, task, cb, 1, argv, &result);
1515 napi_value exception = nullptr;
1516 napi_get_and_clear_last_exception(env, &exception);
1517 ASSERT_TRUE(exception != nullptr);
1518 }
1519
1520 HWTEST_F(NativeEngineTest, TaskpoolTest101, testing::ext::TestSize.Level0)
1521 {
1522 napi_env env = (napi_env)engine_;
1523 napi_value global = NapiHelper::CreateObject(env);
1524 auto task = GeneratorTask(env, global);
1525 Task* pointer = nullptr;
1526 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1527 pointer->taskType_ = TaskType::COMMON_TASK;
1528
1529 napi_value argv[] = { nullptr };
1530 std::string funcName = "AddDependency";
1531 napi_value cb = nullptr;
1532 napi_value result = nullptr;
1533 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1534 napi_call_function(env, task, cb, 1, argv, &result);
1535 napi_value exception = nullptr;
1536 napi_get_and_clear_last_exception(env, &exception);
1537 ASSERT_TRUE(exception != nullptr);
1538 }
1539
1540 HWTEST_F(NativeEngineTest, TaskpoolTest102, testing::ext::TestSize.Level0)
1541 {
1542 napi_env env = (napi_env)engine_;
1543 napi_value global = NapiHelper::CreateObject(env);
1544 auto task = GeneratorTask(env, global);
1545 auto dependentTask = GeneratorTask(env, global);
1546
1547 napi_value argv[] = { task };
1548 std::string funcName = "AddDependency";
1549 napi_value cb = nullptr;
1550 napi_value result = nullptr;
1551 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1552 napi_call_function(env, task, cb, 1, argv, &result);
1553 napi_value exception = nullptr;
1554 napi_get_and_clear_last_exception(env, &exception);
1555 ASSERT_TRUE(exception != nullptr);
1556 }
1557
1558 HWTEST_F(NativeEngineTest, TaskpoolTest103, testing::ext::TestSize.Level0)
1559 {
1560 napi_env env = (napi_env)engine_;
1561 napi_value global = NapiHelper::CreateObject(env);
1562 auto task = GeneratorTask(env, global);
1563 napi_value obj;
1564 napi_create_object(env, &obj);
1565 auto dependentTask = GeneratorTask(env, obj);
1566
1567 napi_value argv[] = { dependentTask };
1568 std::string funcName = "AddDependency";
1569 napi_value cb = nullptr;
1570 napi_value result = nullptr;
1571 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1572 napi_call_function(env, task, cb, 1, argv, &result);
1573 napi_value exception = nullptr;
1574 napi_get_and_clear_last_exception(env, &exception);
1575 ASSERT_TRUE(exception == nullptr);
1576 }
1577
1578 HWTEST_F(NativeEngineTest, TaskpoolTest104, testing::ext::TestSize.Level0)
1579 {
1580 napi_env env = (napi_env)engine_;
1581 ExceptionScope scope(env);
1582 napi_value obj;
1583 napi_create_object(env, &obj);
1584 auto task = GeneratorTask(env, obj);
1585 napi_value argv[] = { task };
1586 NativeEngineTest::Execute(env, argv, 1);
1587 napi_value exception = nullptr;
1588 napi_get_and_clear_last_exception(env, &exception);
1589 ASSERT_TRUE(exception == nullptr);
1590 }
1591
1592 HWTEST_F(NativeEngineTest, TaskpoolTest105, testing::ext::TestSize.Level0)
1593 {
1594 napi_env env = (napi_env)engine_;
1595 ExceptionScope scope(env);
1596 napi_value obj;
1597 napi_create_object(env, &obj);
1598 auto task = GeneratorTask(env, obj);
1599 napi_value argv[] = { task };
1600 NativeEngineTest::TerminateTask(env, argv, 1);
1601 napi_value exception = nullptr;
1602 napi_get_and_clear_last_exception(env, &exception);
1603 ASSERT_TRUE(exception != nullptr);
1604 }
1605
1606 HWTEST_F(NativeEngineTest, TaskpoolTest106, testing::ext::TestSize.Level0)
1607 {
1608 napi_env env = (napi_env)engine_;
1609 ExceptionScope scope(env);
1610 napi_value argv[] = {};
1611 NativeEngineTest::TerminateTask(env, argv, 0);
1612 napi_value exception = nullptr;
1613 napi_get_and_clear_last_exception(env, &exception);
1614 ASSERT_TRUE(exception != nullptr);
1615 }
1616
1617 HWTEST_F(NativeEngineTest, TaskpoolTest107, testing::ext::TestSize.Level0)
1618 {
1619 napi_env env = (napi_env)engine_;
1620 ExceptionScope scope(env);
1621 napi_value obj;
1622 napi_create_object(env, &obj);
1623 auto task = GeneratorTask(env, obj);
1624 Task* pointer = nullptr;
1625 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1626 ASSERT_TRUE(pointer != nullptr);
1627 pointer->isLongTask_ = true;
1628 napi_value argv[] = { task };
1629 NativeEngineTest::TerminateTask(env, argv, 1);
1630 napi_value exception = nullptr;
1631 napi_get_and_clear_last_exception(env, &exception);
1632 ASSERT_TRUE(exception == nullptr);
1633 }
1634
1635 HWTEST_F(NativeEngineTest, TaskpoolTest108, testing::ext::TestSize.Level0)
1636 {
1637 napi_env env = (napi_env)engine_;
1638 ExceptionScope scope(env);
1639 napi_value argv[] = {};
1640 NativeEngineTest::Execute(env, argv, 0);
1641 napi_value exception = nullptr;
1642 napi_get_and_clear_last_exception(env, &exception);
1643 ASSERT_TRUE(exception != nullptr);
1644 }
1645
1646 HWTEST_F(NativeEngineTest, TaskpoolTest109, testing::ext::TestSize.Level0)
1647 {
1648 napi_env env = (napi_env)engine_;
1649 ExceptionScope scope(env);
1650 napi_value obj;
1651 napi_create_object(env, &obj);
1652 auto task = GeneratorTask(env, obj);
1653 napi_value priority = nullptr;
1654 napi_create_uint32(env, 2, &priority); // 2: LOW priority
1655 napi_value argv[] = { task, priority };
1656 NativeEngineTest::Execute(env, argv, 2);
1657 napi_value exception = nullptr;
1658 napi_get_and_clear_last_exception(env, &exception);
1659 ASSERT_TRUE(exception == nullptr);
1660 }
1661
1662 HWTEST_F(NativeEngineTest, TaskpoolTest110, testing::ext::TestSize.Level0)
1663 {
1664 napi_env env = (napi_env)engine_;
1665 ExceptionScope scope(env);
1666 napi_value obj;
1667 napi_create_object(env, &obj);
1668 auto task = GeneratorTask(env, obj);
1669 napi_value priority = nullptr;
1670 napi_create_uint32(env, 10, &priority); // 10: invalid priority
1671 napi_value argv[] = { task, priority };
1672 NativeEngineTest::Execute(env, argv, 2);
1673 napi_value exception = nullptr;
1674 napi_get_and_clear_last_exception(env, &exception);
1675 ASSERT_TRUE(exception != nullptr);
1676 }
1677
1678 HWTEST_F(NativeEngineTest, TaskpoolTest111, testing::ext::TestSize.Level0)
1679 {
1680 napi_env env = (napi_env)engine_;
1681 ExceptionScope scope(env);
1682 napi_value obj;
1683 napi_create_object(env, &obj);
1684 auto group = GeneratorTaskGroup(env, obj);
1685 napi_value taskObj;
1686 napi_create_object(env, &taskObj);
1687 auto task = GeneratorTask(env, taskObj);
1688 napi_value argv[] = { task };
1689 std::string funcName = "AddTask";
1690 napi_value cb = nullptr;
1691 napi_value result = nullptr;
1692 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1693 napi_call_function(env, group, cb, 1, argv, &result);
1694 napi_value exception = nullptr;
1695 napi_get_and_clear_last_exception(env, &exception);
1696 ASSERT_TRUE(exception == nullptr);
1697 }
1698
1699 HWTEST_F(NativeEngineTest, TaskpoolTest112, testing::ext::TestSize.Level0)
1700 {
1701 napi_env env = (napi_env)engine_;
1702 ExceptionScope scope(env);
1703 napi_value obj;
1704 napi_create_object(env, &obj);
1705 auto group = GeneratorTaskGroup(env, obj);
1706 napi_value func = nullptr;
1707 GetSendableFunction(env, "foo", func);
1708 napi_value argv[] = { func };
1709 std::string funcName = "AddTask";
1710 napi_value cb = nullptr;
1711 napi_value result = nullptr;
1712 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1713 napi_call_function(env, group, cb, 1, argv, &result);
1714 napi_value exception = nullptr;
1715 napi_get_and_clear_last_exception(env, &exception);
1716 ASSERT_TRUE(exception == nullptr);
1717 }
1718
1719 HWTEST_F(NativeEngineTest, TaskpoolTest113, testing::ext::TestSize.Level0)
1720 {
1721 napi_env env = (napi_env)engine_;
1722 ExceptionScope scope(env);
1723 napi_value argv[] = {};
1724 NativeEngineTest::Cancel(env, argv, 0);
1725 napi_value exception = nullptr;
1726 napi_get_and_clear_last_exception(env, &exception);
1727 ASSERT_TRUE(exception != nullptr);
1728 }
1729
1730 HWTEST_F(NativeEngineTest, TaskpoolTest114, testing::ext::TestSize.Level0)
1731 {
1732 napi_env env = (napi_env)engine_;
1733 ExceptionScope scope(env);
1734 napi_value argv[] = { nullptr };
1735 NativeEngineTest::Cancel(env, argv, 1);
1736 napi_value exception = nullptr;
1737 napi_get_and_clear_last_exception(env, &exception);
1738 ASSERT_TRUE(exception != nullptr);
1739 }
1740
1741 HWTEST_F(NativeEngineTest, TaskpoolTest115, testing::ext::TestSize.Level0)
1742 {
1743 napi_env env = (napi_env)engine_;
1744 ExceptionScope scope(env);
1745 napi_value obj = nullptr;
1746 napi_create_object(env, &obj);
1747 auto task = GeneratorTask(env, obj);
1748 napi_value argv[] = { task };
1749 NativeEngineTest::Cancel(env, argv, 1);
1750 napi_value exception = nullptr;
1751 napi_get_and_clear_last_exception(env, &exception);
1752 ASSERT_TRUE(exception != nullptr);
1753 }
1754
1755 HWTEST_F(NativeEngineTest, TaskpoolTest116, testing::ext::TestSize.Level0)
1756 {
1757 napi_env env = (napi_env)engine_;
1758 ExceptionScope scope(env);
1759 napi_value obj = nullptr;
1760 napi_create_object(env, &obj);
1761 auto task = GeneratorTask(env, obj);
1762 napi_value argv[] = { task };
1763 NativeEngineTest::Execute(env, argv, 1);
1764 NativeEngineTest::Cancel(env, argv, 1);
1765 napi_value exception = nullptr;
1766 napi_get_and_clear_last_exception(env, &exception);
1767 ASSERT_TRUE(exception == nullptr);
1768 }
1769
1770
1771 HWTEST_F(NativeEngineTest, TaskpoolTest117, testing::ext::TestSize.Level0)
1772 {
1773 napi_env env = (napi_env)engine_;
1774 napi_value obj;
1775 napi_create_object(env, &obj);
1776 auto task = GeneratorTask(env, obj);
1777 napi_value argv[] = { nullptr, nullptr };
1778 std::string funcName = "SetTransferList";
1779 napi_value cb = nullptr;
1780 napi_value result = nullptr;
1781 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
1782 napi_call_function(env, task, cb, 2, argv, &result);
1783 napi_value exception = nullptr;
1784 napi_get_and_clear_last_exception(env, &exception);
1785 ASSERT_TRUE(exception != nullptr);
1786 }
1787
1788 HWTEST_F(NativeEngineTest, TaskpoolTest118, testing::ext::TestSize.Level0)
1789 {
1790 napi_env env = (napi_env)engine_;
1791 napi_value obj;
1792 napi_create_object(env, &obj);
1793 auto task = GeneratorTask(env, obj);
1794 napi_value array;
1795 napi_create_array_with_length(env, 1, &array);
1796
1797 napi_value argv[] = { array };
1798 std::string funcName = "SetTransferList";
1799 napi_value cb = nullptr;
1800 napi_value result = nullptr;
1801 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
1802 napi_call_function(env, task, cb, 1, argv, &result);
1803 napi_value exception = nullptr;
1804 napi_get_and_clear_last_exception(env, &exception);
1805 ASSERT_TRUE(exception != nullptr);
1806 }
1807
1808 HWTEST_F(NativeEngineTest, TaskpoolTest119, testing::ext::TestSize.Level0)
1809 {
1810 napi_env env = (napi_env)engine_;
1811 napi_value obj;
1812 napi_create_object(env, &obj);
1813 auto task = GeneratorTask(env, obj);
1814 napi_value argv[] = { nullptr, nullptr };
1815 std::string funcName = "SetCloneList";
1816 napi_value cb = nullptr;
1817 napi_value result = nullptr;
1818 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1819 napi_call_function(env, task, cb, 2, argv, &result);
1820 napi_value exception = nullptr;
1821 napi_get_and_clear_last_exception(env, &exception);
1822 ASSERT_TRUE(exception != nullptr);
1823 }
1824
1825 HWTEST_F(NativeEngineTest, TaskpoolTest120, testing::ext::TestSize.Level0)
1826 {
1827 napi_env env = (napi_env)engine_;
1828 napi_value obj;
1829 napi_create_object(env, &obj);
1830 auto task = GeneratorTask(env, obj);
1831 napi_value argv[] = { nullptr };
1832 std::string funcName = "SetCloneList";
1833 napi_value cb = nullptr;
1834 napi_value result = nullptr;
1835 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1836 napi_call_function(env, task, cb, 1, argv, &result);
1837 napi_value exception = nullptr;
1838 napi_get_and_clear_last_exception(env, &exception);
1839 ASSERT_TRUE(exception != nullptr);
1840 }
1841
1842 HWTEST_F(NativeEngineTest, TaskpoolTest121, testing::ext::TestSize.Level0)
1843 {
1844 napi_env env = (napi_env)engine_;
1845 napi_value obj;
1846 napi_create_object(env, &obj);
1847 auto task = GeneratorTask(env, obj);
1848 napi_value array;
1849 napi_create_array_with_length(env, 1, &array);
1850 napi_value argv[] = { array };
1851 std::string funcName = "SetCloneList";
1852 napi_value cb = nullptr;
1853 napi_value result = nullptr;
1854 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1855 napi_call_function(env, task, cb, 1, argv, &result);
1856 napi_value exception = nullptr;
1857 napi_get_and_clear_last_exception(env, &exception);
1858 ASSERT_TRUE(exception == nullptr);
1859 }
1860
1861 HWTEST_F(NativeEngineTest, TaskpoolTest122, testing::ext::TestSize.Level0)
1862 {
1863 napi_env env = (napi_env)engine_;
1864 napi_value argv[] = {};
1865 std::string funcName = "IsCanceled";
1866 napi_value cb = nullptr;
1867 napi_value result = nullptr;
1868 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
1869 napi_call_function(env, nullptr, cb, 0, argv, &result);
1870 bool value = true;
1871 napi_get_value_bool(env, result, &value);
1872 ASSERT_TRUE(value == false);
1873 }
1874
1875 HWTEST_F(NativeEngineTest, TaskpoolTest123, testing::ext::TestSize.Level0)
1876 {
1877 auto task = std::make_unique<Task>();
1878 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task.get()));
1879 task->ioTime_ = 100;
1880 task->startTime_ = 0;
1881 task->StoreTaskDuration();
1882 auto& taskManager = TaskManager::GetInstance();
1883 auto res = taskManager.GetTaskDuration(task->taskId_, "totalDuration");
1884 ASSERT_TRUE(res != 0);
1885 res = taskManager.GetTaskDuration(task->taskId_, "cpuDuration");
1886 ASSERT_TRUE(res != 0);
1887 res = taskManager.GetTaskDuration(task->taskId_, "ioDuration");
1888 ASSERT_TRUE(res == 0);
1889 }
1890
1891 HWTEST_F(NativeEngineTest, TaskpoolTest124, testing::ext::TestSize.Level0)
1892 {
1893 napi_env env = (napi_env)engine_;
1894 ExceptionScope scope(env);
1895 auto task = std::make_unique<Task>();
1896 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task.get()));
1897 task->SetHasDependency(true);
1898 auto res = task->CanForSequenceRunner(env);
1899 ASSERT_TRUE(res == false);
1900 task->TryClearHasDependency();
1901 res = task->CanForSequenceRunner(env);
1902 ASSERT_TRUE(res == true);
1903 task->taskType_ = TaskType::SEQRUNNER_TASK;
1904 res = task->CanForSequenceRunner(env);
1905 ASSERT_TRUE(res == false);
1906 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1907 res = task->CanForSequenceRunner(env);
1908 ASSERT_TRUE(res == false);
1909 task->UpdatePeriodicTask();
1910 res = task->CanForSequenceRunner(env);
1911 ASSERT_TRUE(res == false);
1912 }
1913
1914 HWTEST_F(NativeEngineTest, TaskpoolTest125, testing::ext::TestSize.Level0)
1915 {
1916 napi_env env = (napi_env)engine_;
1917 ExceptionScope scope(env);
1918 auto task = std::make_unique<Task>();
1919 task->ThrowNoDependencyError(env);
1920 napi_value exception = nullptr;
1921 napi_get_and_clear_last_exception(env, &exception);
1922 ASSERT_TRUE(exception!= nullptr);
1923 auto res = task->CanExecutePeriodically(env);
1924 ASSERT_TRUE(res == true);
1925 task->UpdatePeriodicTask();
1926 res = task->CanExecutePeriodically(env);
1927 ASSERT_TRUE(res == false);
1928 }
1929
1930 HWTEST_F(NativeEngineTest, TaskpoolTest126, testing::ext::TestSize.Level0)
1931 {
1932 napi_env env = (napi_env)engine_;
1933 ExceptionScope scope(env);
1934 auto task = std::make_unique<Task>();
1935 auto res = task->CanForTaskGroup(env);
1936 ASSERT_TRUE(res == true);
1937 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task.get()));
1938 task->SetHasDependency(true);
1939 res = task->CanForTaskGroup(env);
1940 ASSERT_TRUE(res == false);
1941 task->taskType_ = TaskType::SEQRUNNER_TASK;
1942 res = task->CanForTaskGroup(env);
1943 ASSERT_TRUE(res == false);
1944 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1945 res = task->CanForTaskGroup(env);
1946 ASSERT_TRUE(res == false);
1947 task->isLongTask_ = true;
1948 res = task->CanForTaskGroup(env);
1949 ASSERT_TRUE(res == false);
1950 task->UpdatePeriodicTask();
1951 res = task->CanForTaskGroup(env);
1952 ASSERT_TRUE(res == false);
1953 }
1954
1955 HWTEST_F(NativeEngineTest, TaskpoolTest127, testing::ext::TestSize.Level0)
1956 {
1957 napi_env env = (napi_env)engine_;
1958 ExceptionScope scope(env);
1959 auto task = std::make_unique<Task>();
1960 auto res = task->CanExecute(env);
1961 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1962 res = task->CanExecute(env);
1963 ASSERT_TRUE(res == false);
1964 task->taskType_ = TaskType::SEQRUNNER_TASK;
1965 res = task->CanExecute(env);
1966 ASSERT_TRUE(res == false);
1967 task->taskType_ = TaskType::COMMON_TASK;
1968 res = task->CanExecute(env);
1969 ASSERT_TRUE(res == true);
1970 task->SetHasDependency(true);
1971 res = task->CanExecute(env);
1972 ASSERT_TRUE(res == false);
1973 task->TryClearHasDependency();
1974 task->isLongTask_ = true;
1975 res = task->CanExecute(env);
1976 ASSERT_TRUE(res == false);
1977 task->UpdatePeriodicTask();
1978 res = task->CanExecute(env);
1979 ASSERT_TRUE(res == false);
1980 }
1981
1982 HWTEST_F(NativeEngineTest, TaskpoolTest128, testing::ext::TestSize.Level0)
1983 {
1984 napi_env env = (napi_env)engine_;
1985 ExceptionScope scope(env);
1986 auto task = std::make_unique<Task>();
1987 auto res = task->CanExecuteDelayed(env);
1988 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1989 res = task->CanExecuteDelayed(env);
1990 ASSERT_TRUE(res == false);
1991 task->taskType_ = TaskType::SEQRUNNER_TASK;
1992 res = task->CanExecuteDelayed(env);
1993 ASSERT_TRUE(res == false);
1994 task->taskType_ = TaskType::COMMON_TASK;
1995 res = task->CanExecuteDelayed(env);
1996 ASSERT_TRUE(res == true);
1997 task->isLongTask_ = true;
1998 res = task->CanExecute(env);
1999 ASSERT_TRUE(res == false);
2000 task->UpdatePeriodicTask();
2001 res = task->CanExecute(env);
2002 ASSERT_TRUE(res == false);
2003 }
2004
2005 HWTEST_F(NativeEngineTest, TaskpoolTest129, testing::ext::TestSize.Level0)
2006 {
2007 napi_env env = (napi_env)engine_;
2008 ExceptionScope scope(env);
2009 SequenceRunner* seqRunner = new SequenceRunner();
2010 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
2011 seqRunner->seqName_ = "seq01";
2012 void* data = static_cast<void*>(seqRunner);
2013 NativeEngineTest::SequenceRunnerDestructor(env, data);
2014
2015 SequenceRunner* seqRunner2 = new SequenceRunner();
2016 seqRunner2->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner2);
2017 seqRunner2->seqName_ = "seq02";
2018 seqRunner2->isGlobalRunner_ = true;
2019 void* data2 = static_cast<void*>(seqRunner2);
2020 NativeEngineTest::SequenceRunnerDestructor(env, data2);
2021
2022 ASSERT_TRUE(true);
2023 }
2024
2025 HWTEST_F(NativeEngineTest, TaskpoolTest130, testing::ext::TestSize.Level0)
2026 {
2027 napi_env env = (napi_env)engine_;
2028 ExceptionScope scope(env);
2029 TaskGroup* taskGroup = new TaskGroup();
2030 Task* task = new Task(env, TaskType::COMMON_TASK, "groupTask");
2031 TaskManager &taskManager = TaskManager::GetInstance();
2032 taskManager.StoreTask(task);
2033 uint32_t taskId = task->taskId_;
2034 taskGroup->taskIds_.push_back(taskId);
2035 napi_reference_ref(env, task->taskRef_, nullptr);
2036
2037 taskGroup->taskIds_.push_back(2);
2038
2039 GroupInfo* groupInfo = new GroupInfo();
2040 taskGroup->currentGroupInfo_ = groupInfo;
2041
2042 void* data = static_cast<void*>(taskGroup);
2043 NativeEngineTest::TaskGroupDestructor(env, data);
2044 ASSERT_TRUE(true);
2045 }
2046
2047 HWTEST_F(NativeEngineTest, TaskpoolTest131, testing::ext::TestSize.Level0)
2048 {
2049 napi_env env = (napi_env)engine_;
2050 ExceptionScope scope(env);
2051 Task* task1 = new Task();
2052 uint32_t taskId1 = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task1));
2053 task1->taskId_ = taskId1;
2054
2055 napi_value thisValue = NapiHelper::CreateObject(env);
2056 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2057 std::shared_ptr<CallbackInfo> cbInfo = std::make_shared<CallbackInfo>(env, 1, ref);
2058
2059 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2060 void* args = nullptr;
2061 TaskResultInfo* resultInfo = new TaskResultInfo(env, taskId1, args);
2062
2063 NativeEngineTest::ExecuteOnReceiveDataCallback(cbInfo.get(), resultInfo);
2064
2065 TaskManager& taskManager = TaskManager::GetInstance();
2066 taskManager.RegisterCallback(env, taskId1, cbInfo, "TaskpoolTest131-1");
2067 taskManager.DecreaseSendDataRefCount(env, taskId1);
2068
2069 Task* task2 = new Task();
2070 uint32_t taskId2 = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task2));
2071 task2->taskId_ = taskId2;
2072
2073 taskManager.RegisterCallback(env, taskId2, cbInfo, "TaskpoolTest131-2");
2074 taskManager.DecreaseSendDataRefCount(env, taskId2);
2075 ASSERT_TRUE(true);
2076 }
2077
2078
2079 HWTEST_F(NativeEngineTest, TaskpoolTest132, testing::ext::TestSize.Level0)
2080 {
2081 napi_env env = (napi_env)engine_;
2082 ExceptionScope scope(env);
2083 Task* task = new Task();
2084 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2085 task->taskId_ = taskId;
2086 napi_value thisValue = NapiHelper::CreateObject(env);
2087 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2088
2089 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref);
2090 uv_async_t* req = new uv_async_t;
2091 req->data = cbInfo;
2092
2093 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2094 void* args = nullptr;
2095 TaskResultInfo* resultInfo = new TaskResultInfo(env, taskId, args);
2096
2097 TaskManager &taskManager = TaskManager::GetInstance();
__anon5b19175e0602(napi_env environment, napi_callback_info info) 2098 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
2099 return nullptr;
2100 };
2101 napi_value funValue = nullptr;
2102 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &funValue);
2103 napi_value argv[] = {funValue};
2104 napi_ref callbackRef = NapiHelper::CreateReference(env, argv[0], 1);
2105 std::shared_ptr<CallbackInfo> callbackInfo = std::make_shared<CallbackInfo>(env, 1, callbackRef);
2106 taskManager.RegisterCallback(env, taskId, callbackInfo, "TaskpoolTest132");
2107 taskManager.DecreaseSendDataRefCount(env, taskId, task);
2108 ASSERT_TRUE(true);
2109 }
2110
2111 HWTEST_F(NativeEngineTest, TaskpoolTest133, testing::ext::TestSize.Level0)
2112 {
2113 napi_env env = (napi_env)engine_;
2114 ExceptionScope scope(env);
2115 Task* task = new Task();
2116 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2117 task->taskId_ = taskId;
2118 napi_value thisValue = NapiHelper::CreateObject(env);
2119 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2120
2121 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref);
2122 uv_async_t* req = new uv_async_t;
2123 req->data = cbInfo;
2124
2125 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2126 size_t argc = 1;
2127 napi_value argv[] = {nullptr};
2128 napi_create_uint32(env, 1, &argv[0]);
2129 napi_value argsArray;
2130 napi_create_array_with_length(env, argc, &argsArray);
2131 for (size_t i = 0; i < argc; i++) {
2132 napi_set_element(env, argsArray, i, argv[i]);
2133 }
2134 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2135 void* serializationArgs = nullptr;
2136 napi_serialize_inner(env, argsArray, undefined, undefined, true, false, &serializationArgs);
2137 TaskResultInfo* resultInfo = new TaskResultInfo(env, taskId, serializationArgs);
2138
2139 TaskManager &taskManager = TaskManager::GetInstance();
__anon5b19175e0702(napi_env environment, napi_callback_info info) 2140 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
2141 return nullptr;
2142 };
2143 napi_value funValue = nullptr;
2144 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &funValue);
2145 napi_value argv1[] = {funValue};
2146 napi_ref callbackRef = NapiHelper::CreateReference(env, argv1[0], 1);
2147 std::shared_ptr<CallbackInfo> callbackInfo = std::make_shared<CallbackInfo>(env, 1, callbackRef);
2148 taskManager.RegisterCallback(env, taskId, callbackInfo, "TaskpoolTest133");
2149 taskManager.DecreaseSendDataRefCount(env, taskId, task);
2150 ASSERT_TRUE(true);
2151 }
2152
2153 HWTEST_F(NativeEngineTest, TaskpoolTest134, testing::ext::TestSize.Level0)
2154 {
2155 napi_env env = (napi_env)engine_;
2156 ExceptionScope scope(env);
2157 Task* task = new Task();
2158 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2159 task->taskId_ = taskId;
2160 napi_value thisValue = NapiHelper::CreateObject(env);
2161 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2162
2163 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref);
2164 ASSERT_TRUE(cbInfo->refCount == 1);
2165
2166 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2167 void* args = nullptr;
2168 TaskResultInfo* resultInfo = new TaskResultInfo(env, taskId, args);
2169 ASSERT_TRUE(true);
2170 }
2171
2172 HWTEST_F(NativeEngineTest, TaskpoolTest135, testing::ext::TestSize.Level0)
2173 {
2174 napi_env env = (napi_env)engine_;
2175 ExceptionScope scope(env);
2176 napi_value argv[] = {};
2177 napi_value result = NativeEngineTest::TerminateTask(env, argv, 0);
2178 ASSERT_TRUE(result == nullptr);
2179 napi_value exception = nullptr;
2180 napi_get_and_clear_last_exception(env, &exception);
2181
2182 napi_value thisValue = NapiHelper::CreateObject(env);
2183 napi_value argv1[] = {thisValue};
2184 result = NativeEngineTest::TerminateTask(env, argv1, 1);
2185 ASSERT_TRUE(result == nullptr);
2186 exception = nullptr;
2187 napi_get_and_clear_last_exception(env, &exception);
2188
2189 napi_value napiTask = CreateTaskObject(env, TaskType::TASK, ExecuteState::NOT_FOUND, true);
2190 Task* task = nullptr;
2191 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
2192 task->isLongTask_ = true;
2193 napi_value argv2[] = {napiTask};
2194 result = NativeEngineTest::TerminateTask(env, argv2, 1);
2195 ASSERT_TRUE(result != nullptr);
2196 }
2197
2198 HWTEST_F(NativeEngineTest, TaskpoolTest136, testing::ext::TestSize.Level0)
2199 {
2200 napi_env env = (napi_env)engine_;
2201 ExceptionScope scope(env);
2202 napi_value argv[] = {};
2203 napi_value result = NativeEngineTest::Execute(env, argv, 0);
2204 ASSERT_TRUE(result == nullptr);
2205 napi_value exception = nullptr;
2206 napi_get_and_clear_last_exception(env, &exception);
2207
2208 napi_value thisValue = NapiHelper::CreateObject(env);
2209 napi_value argv1[] = {thisValue};
2210 result = NativeEngineTest::Execute(env, argv1, 1);
2211 ASSERT_TRUE(result == nullptr);
2212 exception = nullptr;
2213 napi_get_and_clear_last_exception(env, &exception);
2214
2215 thisValue = CreateTaskObject(env);
2216 napi_value argv2[] = {thisValue};
2217 result = NativeEngineTest::Execute(env, argv2, 1);
2218 ASSERT_TRUE(result != nullptr);
2219 exception = nullptr;
2220 napi_get_and_clear_last_exception(env, &exception);
2221
2222 napi_create_string_utf8(env, "test", NAPI_AUTO_LENGTH, &argv2[0]);
2223 result = NativeEngineTest::Execute(env, argv2, 1);
2224 ASSERT_TRUE(result == nullptr);
2225 exception = nullptr;
2226 napi_get_and_clear_last_exception(env, &exception);
2227
2228 thisValue = CreateTaskObject(env);
2229 napi_value argv3[2] = {};
2230 argv3[0] = thisValue;
2231 napi_create_string_utf8(env, "test", NAPI_AUTO_LENGTH, &argv[1]);
2232 result = NativeEngineTest::Execute(env, argv3, 2);
2233 ASSERT_TRUE(result == nullptr);
2234 }
2235
2236 HWTEST_F(NativeEngineTest, TaskpoolTest137, testing::ext::TestSize.Level0)
2237 {
2238 napi_env env = (napi_env)engine_;
2239 ExceptionScope scope(env);
2240 napi_value thisValue = CreateTaskObject(env);
2241 napi_value argv[2] = {};
2242 argv[0] = thisValue;
2243 napi_create_uint32(env, 1, &argv[1]);
2244 napi_value result = NativeEngineTest::Execute(env, argv, 2);
2245 ASSERT_TRUE(result != nullptr);
2246
2247 thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
2248 napi_value argv1[2] = {};
2249 argv1[0] = thisValue;
2250 napi_create_uint32(env, 1, &argv[1]);
2251 result = NativeEngineTest::Execute(env, argv1, 2);
2252 ASSERT_TRUE(result == nullptr);
2253 napi_value exception = nullptr;
2254 napi_get_and_clear_last_exception(env, &exception);
2255
2256 napi_value func = nullptr;
2257 GetSendableFunction(env, "foo", func);
2258 napi_value argv2[] = {func};
2259 result = NativeEngineTest::Execute(env, argv2, 1);
2260 ASSERT_TRUE(result != nullptr);
2261
2262 thisValue = CreateTaskObject(env);
2263 napi_value argv3[2] = {};
2264 argv3[0] = thisValue;
2265 napi_create_uint32(env, 5, &argv3[1]);
2266 result = NativeEngineTest::Execute(env, argv3, 2);
2267 ASSERT_TRUE(result == nullptr);
2268 }
2269
2270 HWTEST_F(NativeEngineTest, TaskpoolTest138, testing::ext::TestSize.Level0)
2271 {
2272 napi_env env = (napi_env)engine_;
2273 ExceptionScope scope(env);
2274 size_t delayTime = 1000;
2275
2276 napi_value argv[] = {nullptr};
2277 napi_value result = NativeEngineTest::ExecuteDelayed(env, argv, 1);
2278 ASSERT_TRUE(result == nullptr);
2279 napi_value exception = nullptr;
2280 napi_get_and_clear_last_exception(env, &exception);
2281
2282 napi_value func = nullptr;
2283 GetSendableFunction(env, "foo", func);
2284 napi_value num = nullptr;
2285 napi_create_uint32(env, delayTime, &num);
2286 napi_value argv1[] = { func, num };
2287 result = NativeEngineTest::ExecuteDelayed(env, argv1, 2);
2288 ASSERT_TRUE(result == nullptr);
2289 exception = nullptr;
2290 napi_get_and_clear_last_exception(env, &exception);
2291
2292 napi_value obj = NapiHelper::CreateObject(env);
2293 num = nullptr;
2294 napi_create_uint32(env, -100, &num);
2295 napi_value argv2[] = { num, obj };
2296 result = NativeEngineTest::ExecuteDelayed(env, argv2, 2);
2297 ASSERT_TRUE(result == nullptr);
2298 exception = nullptr;
2299 napi_get_and_clear_last_exception(env, &exception);
2300
2301 num = nullptr;
2302 napi_create_uint32(env, delayTime, &num);
2303 napi_value argv3[] = { num, obj, obj };
2304 result = NativeEngineTest::ExecuteDelayed(env, argv3, 3);
2305 ASSERT_TRUE(result == nullptr);
2306 exception = nullptr;
2307 napi_get_and_clear_last_exception(env, &exception);
2308
2309 napi_value argv4[] = { num, func};
2310 result = NativeEngineTest::ExecuteDelayed(env, argv4, 2);
2311 ASSERT_TRUE(result == nullptr);
2312 }
2313
2314 HWTEST_F(NativeEngineTest, TaskpoolTest139, testing::ext::TestSize.Level0)
2315 {
2316 napi_env env = (napi_env)engine_;
2317 ExceptionScope scope(env);
2318 size_t delayTime = 1000;
2319 napi_value result = nullptr;
2320 napi_value num = nullptr;
2321 napi_value priority = nullptr;
2322 napi_value exception = nullptr;
2323
2324 napi_value obj = NapiHelper::CreateObject(env);
2325 napi_create_uint32(env, delayTime, &num);
2326 napi_create_uint32(env, 5, &priority);
2327 napi_value argv[] = { num, obj, priority };
2328 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
2329 ASSERT_TRUE(result == nullptr);
2330 exception = nullptr;
2331 napi_get_and_clear_last_exception(env, &exception);
2332
2333 obj = CreateNullTaskObject(env);
2334 napi_create_uint32(env, 1, &priority);
2335 napi_value argv2[] = { num, obj, priority };
2336 result = NativeEngineTest::ExecuteDelayed(env, argv2, 3);
2337 ASSERT_TRUE(result == nullptr);
2338 exception = nullptr;
2339 napi_get_and_clear_last_exception(env, &exception);
2340
2341 obj = CreateTaskObject(env, TaskType::GROUP_COMMON_TASK);
2342 napi_value argv3[] = { num, obj, priority };
2343 result = NativeEngineTest::ExecuteDelayed(env, argv3, 3);
2344 exception = nullptr;
2345 napi_get_and_clear_last_exception(env, &exception);
2346 ASSERT_TRUE(result == nullptr);
2347
2348 obj = CreateTaskObject(env, TaskType::COMMON_TASK, ExecuteState::CANCELED);
2349 napi_value argv4[] = { num, obj, priority };
2350 result = NativeEngineTest::ExecuteDelayed(env, argv4, 3);
2351 ASSERT_TRUE(result != nullptr);
2352 }
2353
2354 HWTEST_F(NativeEngineTest, TaskpoolTest140, testing::ext::TestSize.Level0)
2355 {
2356 napi_env env = (napi_env)engine_;
2357 ExceptionScope scope(env);
2358 TaskManager &taskManager = TaskManager::GetInstance();
2359 napi_value exception = nullptr;
2360 uv_loop_t* loop = NapiHelper::GetLibUV(env);
2361 uv_update_time(loop);
2362 uv_timer_t* handle = new uv_timer_t;
2363 uv_timer_init(loop, handle);
2364 TaskMessage* taskMessage = new TaskMessage();
2365 Task* task = new Task();
2366 task->env_ = env;
2367 TaskManager::GetInstance().StoreTask(task);
2368 taskMessage->taskId = task->taskId_;
2369 handle->data = taskMessage;
2370 NativeEngineTest::DelayTask(handle);
2371 napi_get_and_clear_last_exception(env, &exception);
2372 ASSERT_TRUE(exception == nullptr);
2373
2374 uv_loop_t* loop2 = NapiHelper::GetLibUV(env);
2375 uv_update_time(loop2);
2376 uv_timer_t* handle2 = new uv_timer_t;
2377 uv_timer_init(loop2, handle2);
2378 TaskMessage* taskMessage2 = new TaskMessage();
2379 Task* task2 = new Task();
2380 taskMessage2->taskId = task2->taskId_;
2381 handle2->data = taskMessage2;
2382 NativeEngineTest::DelayTask(handle2);
2383 napi_get_and_clear_last_exception(env, &exception);
2384 ASSERT_TRUE(exception == nullptr);
2385 }
2386
2387 HWTEST_F(NativeEngineTest, TaskpoolTest141, testing::ext::TestSize.Level0)
2388 {
2389 napi_env env = (napi_env)engine_;
2390 ExceptionScope scope(env);
2391 napi_value exception = nullptr;
2392 napi_value thisVar = NapiHelper::CreateObject(env);
2393 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2394 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2395 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2396
2397 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2398 TaskGroup* group = new TaskGroup();
2399 group->groupId_ = groupId;
2400 taskGroupManager.StoreTaskGroup(groupId, group);
2401 napi_value value = NapiHelper::CreateUint64(env, groupId);
2402 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
2403 taskGroupManager.AddTask(groupId, reference, 1);
2404 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2405 ASSERT_TRUE(result == nullptr);
2406 }
2407
2408 HWTEST_F(NativeEngineTest, TaskpoolTest142, testing::ext::TestSize.Level0)
2409 {
2410 napi_env env = (napi_env)engine_;
2411 ExceptionScope scope(env);
2412 napi_value exception = nullptr;
2413 napi_value thisVar = NapiHelper::CreateObject(env);
2414 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2415 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2416 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2417
2418 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2419 TaskGroup* group = new TaskGroup();
2420 group->groupId_ = groupId;
2421 taskGroupManager.StoreTaskGroup(groupId, group);
2422 Task* task = new Task();
2423 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2424 task->groupId_ = groupId;
2425 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2426 napi_reference_ref(env, task->taskRef_, nullptr);
2427 napi_value thisValue = NapiHelper::CreateObject(env);
2428 napi_wrap(
2429 env, thisValue, task,
__anon5b19175e0802(napi_env environment, void* data, void* hint) 2430 [](napi_env environment, void* data, void* hint) {
2431 auto obj = reinterpret_cast<Task*>(data);
2432 if (obj != nullptr) {
2433 delete obj;
2434 }
2435 }, nullptr, nullptr);
2436 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2437 taskGroupManager.AddTask(groupId, ref, task->taskId_);
2438 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2439 ASSERT_TRUE(result != nullptr);
2440 }
2441
2442 HWTEST_F(NativeEngineTest, TaskpoolTest143, testing::ext::TestSize.Level0)
2443 {
2444 napi_env env = (napi_env)engine_;
2445 ExceptionScope scope(env);
2446 napi_value exception = nullptr;
2447 napi_value thisVar = NapiHelper::CreateObject(env);
2448 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2449 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2450 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2451
2452 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2453 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
2454 GroupInfo* groupInfo = new GroupInfo();
2455 groupInfo->priority = Priority::DEFAULT;
2456 group->currentGroupInfo_ = groupInfo;
2457 taskGroupManager.StoreTaskGroup(groupId, group);
2458 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2459 ASSERT_TRUE(result != nullptr);
2460 }
2461
2462 HWTEST_F(NativeEngineTest, TaskpoolTest144, testing::ext::TestSize.Level0)
2463 {
2464 napi_env env = (napi_env)engine_;
2465 ExceptionScope scope(env);
2466 size_t delayTime = 1000;
2467
2468 napi_value argv[] = {nullptr};
2469 napi_value result = NativeEngineTest::ExecutePeriodically(env, argv, 1);
2470 ASSERT_TRUE(result == nullptr);
2471 napi_value exception = nullptr;
2472 napi_get_and_clear_last_exception(env, &exception);
2473
2474 napi_value func = nullptr;
2475 GetSendableFunction(env, "foo", func);
2476 napi_value num = nullptr;
2477 napi_create_uint32(env, delayTime, &num);
2478 napi_value argv1[] = { func, num };
2479 result = NativeEngineTest::ExecutePeriodically(env, argv1, 2);
2480 ASSERT_TRUE(result == nullptr);
2481 exception = nullptr;
2482 napi_get_and_clear_last_exception(env, &exception);
2483
2484 napi_value obj = NapiHelper::CreateObject(env);
2485 num = nullptr;
2486 napi_create_uint32(env, -100, &num);
2487 napi_value argv2[] = { num, obj };
2488 result = NativeEngineTest::ExecutePeriodically(env, argv2, 2);
2489 ASSERT_TRUE(result == nullptr);
2490 exception = nullptr;
2491 napi_get_and_clear_last_exception(env, &exception);
2492
2493 num = nullptr;
2494 napi_create_uint32(env, delayTime, &num);
2495 napi_value argv3[] = { num, obj, obj };
2496 result = NativeEngineTest::ExecutePeriodically(env, argv3, 3);
2497 ASSERT_TRUE(result == nullptr);
2498 exception = nullptr;
2499 napi_get_and_clear_last_exception(env, &exception);
2500
2501 napi_value argv4[] = { num, num };
2502 result = NativeEngineTest::ExecutePeriodically(env, argv4, 2);
2503 ASSERT_TRUE(result == nullptr);
2504 }
2505
2506 HWTEST_F(NativeEngineTest, TaskpoolTest145, testing::ext::TestSize.Level0)
2507 {
2508 napi_env env = (napi_env)engine_;
2509 ExceptionScope scope(env);
2510 size_t delayTime = 1000;
2511 napi_value result = nullptr;
2512 napi_value num = nullptr;
2513 napi_value priority = nullptr;
2514 napi_value exception = nullptr;
2515
2516 napi_value obj = NapiHelper::CreateObject(env);
2517 napi_create_uint32(env, delayTime, &num);
2518 napi_create_uint32(env, 5, &priority);
2519 napi_value argv[] = { num, obj, priority };
2520 result = NativeEngineTest::ExecutePeriodically(env, argv, 3);
2521 ASSERT_TRUE(result == nullptr);
2522 exception = nullptr;
2523 napi_get_and_clear_last_exception(env, &exception);
2524
2525 obj = CreateNullTaskObject(env);
2526 napi_create_uint32(env, 1, &priority);
2527 napi_value argv2[] = { num, obj, priority };
2528 result = NativeEngineTest::ExecutePeriodically(env, argv2, 3);
2529 ASSERT_TRUE(result == nullptr);
2530 exception = nullptr;
2531 napi_get_and_clear_last_exception(env, &exception);
2532
2533 obj = CreateTaskObject(env, TaskType::GROUP_COMMON_TASK);
2534 napi_value argv3[] = { num, obj, priority };
2535 result = NativeEngineTest::ExecutePeriodically(env, argv3, 3);
2536 exception = nullptr;
2537 napi_get_and_clear_last_exception(env, &exception);
2538 ASSERT_TRUE(result == nullptr);
2539
2540 obj = CreateTaskObject(env, TaskType::TASK);
2541 napi_value argv4[] = { num, obj, priority };
2542 result = NativeEngineTest::ExecutePeriodically(env, argv4, 3);
2543 ASSERT_TRUE(result == nullptr);
2544 }
2545
2546 HWTEST_F(NativeEngineTest, TaskpoolTest146, testing::ext::TestSize.Level0)
2547 {
2548 napi_env env = (napi_env)engine_;
2549 ExceptionScope scope(env);
2550 napi_value global = NapiHelper::CreateObject(env);
2551 auto task = GeneratorTask(env, global);
2552 size_t delayTime = 1000;
2553 napi_value result = nullptr;
2554 napi_value num = nullptr;
2555 napi_value priority = nullptr;
2556 napi_create_uint32(env, delayTime, &num);
2557 napi_create_uint32(env, 1, &priority);
2558 napi_value argv[] = { num, global, priority };
2559 result = NativeEngineTest::ExecutePeriodically(env, argv, 3);
2560 ASSERT_TRUE(result != nullptr);
2561 }
2562
2563 HWTEST_F(NativeEngineTest, TaskpoolTest147, testing::ext::TestSize.Level0)
2564 {
2565 napi_env env = (napi_env)engine_;
2566 uv_timer_t* handle = new uv_timer_t;
2567
2568 handle->data = nullptr;
2569 NativeEngineTest::PeriodicTaskCallback(handle);
2570 ASSERT_TRUE(true);
2571 Task* task = new Task();
2572 handle->data = task;
2573 NativeEngineTest::PeriodicTaskCallback(handle);
2574 ASSERT_TRUE(true);
2575
2576 task->isPeriodicTask_ = true;
2577 handle->data = task;
2578 NativeEngineTest::PeriodicTaskCallback(handle);
2579 ASSERT_TRUE(true);
2580
2581 task->taskState_ = ExecuteState::CANCELED;
2582 task->env_ = env;
2583 napi_value obj = NapiHelper::CreateObject(env);
2584 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
2585 uv_loop_t* loop = NapiHelper::GetLibUV(env);
2586 task->timer_ = new uv_timer_t;
2587 uv_timer_init(loop, task->timer_);
2588 handle->data = task;
2589 NativeEngineTest::PeriodicTaskCallback(handle);
2590 ASSERT_TRUE(true);
2591 }
2592
2593 HWTEST_F(NativeEngineTest, TaskpoolTest148, testing::ext::TestSize.Level0)
2594 {
2595 napi_env env = (napi_env)engine_;
2596 uv_timer_t* handle = new uv_timer_t;
2597
2598 Task* task = new Task();
2599 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2600 task->taskId_ = taskId;
2601 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2602 napi_value num = nullptr;
2603 napi_create_uint32(env, 1, &num);
2604 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
2605 task->onExecutionFailedCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
2606 handle->data = task;
2607 napi_value res = nullptr;
2608 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2609 ASSERT_TRUE(true);
2610
2611 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2612 TaskGroup* group = new TaskGroup();
2613 uint64_t groupId = reinterpret_cast<uint64_t>(group);
2614 group->groupId_ = groupId;
2615 task->groupId_ = groupId;
2616 taskGroupManager.StoreTaskGroup(groupId, group);
2617 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2618 ASSERT_TRUE(true);
2619
2620 group->taskIds_.push_back(taskId);
2621 GroupInfo* groupInfo = new GroupInfo();
2622 napi_value resArr;
2623 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
2624 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
2625 groupInfo->resArr = arrRef;
2626 NapiHelper::CreatePromise(env, &groupInfo->deferred);
2627 group->currentGroupInfo_ = groupInfo;
2628 taskGroupManager.StoreTaskGroup(groupId, group);
2629 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, false);
2630 ASSERT_TRUE(true);
2631 }
2632
2633 HWTEST_F(NativeEngineTest, TaskpoolTest149, testing::ext::TestSize.Level0)
2634 {
2635 napi_env env = (napi_env)engine_;
2636 uv_timer_t* handle = new uv_timer_t;
2637 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2638 TaskManager& taskManager = TaskManager::GetInstance();
2639
2640 TaskGroup* group = new TaskGroup();
2641 uint64_t groupId = reinterpret_cast<uint64_t>(group);
2642 group->groupId_ = groupId;
2643 Task* task = new Task();
2644 taskManager.StoreTask(task);
2645 uint32_t taskId = task->taskId_;
2646 task->groupId_ = groupId;
2647 napi_value num = nullptr;
2648 napi_create_uint32(env, 1, &num);
2649 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
2650 task->onExecutionSucceededCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
2651 group->taskIds_.push_back(taskId);
2652 handle->data = task;
2653
2654 GroupInfo* groupInfo = new GroupInfo();
2655 groupInfo->priority = Priority::DEFAULT;
2656 napi_value resArr;
2657 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
2658 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
2659 groupInfo->resArr = arrRef;
2660 NapiHelper::CreatePromise(env, &groupInfo->deferred);
2661 group->currentGroupInfo_ = groupInfo;
2662
2663 taskGroupManager.StoreTaskGroup(groupId, group);
2664 napi_value value = NapiHelper::CreateUint64(env, groupId);
2665 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
2666 taskGroupManager.AddTask(groupId, reference, taskId);
2667
2668 napi_value res = nullptr;
2669 napi_create_uint32(env, 1, &res);
2670 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2671 ASSERT_TRUE(true);
2672 }
2673
2674 HWTEST_F(NativeEngineTest, TaskpoolTest150, testing::ext::TestSize.Level0)
2675 {
2676 napi_env env = (napi_env)engine_;
2677 NativeEngineTest::TryTriggerExpand();
2678 napi_value exception = nullptr;
2679 napi_get_and_clear_last_exception(env, &exception);
2680 ASSERT_TRUE(exception == nullptr);
2681 }
2682
2683 HWTEST_F(NativeEngineTest, TaskpoolTest150_1, testing::ext::TestSize.Level0)
2684 {
2685 napi_env env = (napi_env)engine_;
2686 NativeEngineTest::CheckForBlockedWorkers(env);
2687 napi_value exception = nullptr;
2688 napi_get_and_clear_last_exception(env, &exception);
2689 ASSERT_TRUE(exception == nullptr);
2690 }
2691
2692 HWTEST_F(NativeEngineTest, TaskpoolTest150_2, testing::ext::TestSize.Level0)
2693 {
2694 napi_env env = (napi_env)engine_;
2695 NativeEngineTest::NotifyShrink(env);
2696 napi_value exception = nullptr;
2697 napi_get_and_clear_last_exception(env, &exception);
2698 ASSERT_TRUE(exception == nullptr);
2699 }
2700
2701 HWTEST_F(NativeEngineTest, TaskpoolTest150_3, testing::ext::TestSize.Level0)
2702 {
2703 napi_env env = (napi_env)engine_;
2704 NativeEngineTest::TryExpand(env);
2705 napi_value exception = nullptr;
2706 napi_get_and_clear_last_exception(env, &exception);
2707 ASSERT_TRUE(exception == nullptr);
2708 }
2709
2710 HWTEST_F(NativeEngineTest, TaskpoolTest150_4, testing::ext::TestSize.Level0)
2711 {
2712 napi_env env = (napi_env)engine_;
2713 NativeEngineTest::CancelTask(env);
2714 napi_value exception = nullptr;
2715 napi_get_and_clear_last_exception(env, &exception);
2716 ASSERT_TRUE(exception != nullptr);
2717 }
2718
2719 HWTEST_F(NativeEngineTest, TaskpoolTest150_5, testing::ext::TestSize.Level0)
2720 {
2721 napi_env env = (napi_env)engine_;
2722 NativeEngineTest::NotifyWorkerIdle(env);
2723 napi_value exception = nullptr;
2724 napi_get_and_clear_last_exception(env, &exception);
2725 ASSERT_TRUE(exception == nullptr);
2726 }
2727
2728 HWTEST_F(NativeEngineTest, TaskpoolTest150_6, testing::ext::TestSize.Level0)
2729 {
2730 napi_env env = (napi_env)engine_;
2731 NativeEngineTest::EnqueueTaskId(env);
2732 napi_value exception = nullptr;
2733 napi_get_and_clear_last_exception(env, &exception);
2734 ASSERT_TRUE(exception == nullptr);
2735 }
2736
2737 HWTEST_F(NativeEngineTest, TaskpoolTest150_7, testing::ext::TestSize.Level0)
2738 {
2739 napi_env env = (napi_env)engine_;
2740 NativeEngineTest::GetTaskByPriority(env);
2741 napi_value exception = nullptr;
2742 napi_get_and_clear_last_exception(env, &exception);
2743 ASSERT_TRUE(exception == nullptr);
2744 }
2745
2746 HWTEST_F(NativeEngineTest, TaskpoolTest150_8, testing::ext::TestSize.Level0)
2747 {
2748 napi_env env = (napi_env)engine_;
2749 NativeEngineTest::RestoreWorker(env);
2750 napi_value exception = nullptr;
2751 napi_get_and_clear_last_exception(env, &exception);
2752 ASSERT_TRUE(exception == nullptr);
2753 }
2754
2755 HWTEST_F(NativeEngineTest, TaskpoolTest151, testing::ext::TestSize.Level0)
2756 {
2757 napi_env env = (napi_env)engine_;
2758 ExceptionScope scope(env);
2759 napi_value argv[] = {nullptr};
2760 std::string func = "TaskGroupConstructor";
2761 napi_value callback = nullptr;
2762 napi_value taskGroupResult = nullptr;
2763 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
2764 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
2765
2766 func = "AddTask";
2767 napi_value cb = nullptr;
2768 napi_value result = nullptr;
2769
2770 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
2771 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2772 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2773 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2774 TaskGroup* group = new TaskGroup();
2775 group->groupId_ = groupId;
2776 group->groupState_ = ExecuteState::RUNNING;
2777 taskGroupManager.StoreTaskGroup(groupId, group);
2778 napi_value argv1[] = {taskGroupResult};
2779 napi_call_function(env, nullptr, cb, 1, argv1, &result);
2780 ASSERT_TRUE(result == nullptr);
2781 }
2782
2783 HWTEST_F(NativeEngineTest, TaskpoolTest152, testing::ext::TestSize.Level0)
2784 {
2785 napi_env env = (napi_env)engine_;
2786 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2787 TaskGroup* taskGroup = new TaskGroup();
2788 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
2789 taskGroup->groupId_ = groupId;
2790 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
2791
2792 Task* task = new Task();
2793 task->taskType_ = TaskType::COMMON_TASK;
2794 task->groupId_ = groupId;
2795 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2796 napi_reference_ref(env, task->taskRef_, nullptr);
2797 napi_value thisValue = NapiHelper::CreateObject(env);
2798 napi_wrap(
2799 env, thisValue, task,
__anon5b19175e0902(napi_env environment, void* data, void* hint) 2800 [](napi_env environment, void* data, void* hint) {
2801 auto obj = reinterpret_cast<Task*>(data);
2802 if (obj != nullptr) {
2803 delete obj;
2804 }
2805 }, nullptr, nullptr);
2806 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2807 taskGroupManager.AddTask(groupId, nullptr, task->taskId_);
2808
2809 GroupInfo* groupInfo = new GroupInfo();
2810 groupInfo->priority = Priority::DEFAULT;
2811 taskGroup->pendingGroupInfos_.push_back(groupInfo);
2812 taskGroup->NotifyGroupTask(env);
2813 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
2814 }
2815
2816 HWTEST_F(NativeEngineTest, TaskpoolTest153, testing::ext::TestSize.Level0)
2817 {
2818 napi_env env = (napi_env)engine_;
2819 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2820 TaskGroup* taskGroup = new TaskGroup();
2821 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
2822 taskGroup->groupId_ = groupId;
2823 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
2824
2825 Task* task = new Task();
2826 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2827 task->groupId_ = groupId;
2828 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2829 napi_reference_ref(env, task->taskRef_, nullptr);
2830 napi_value thisValue = NapiHelper::CreateObject(env);
2831 napi_wrap(
2832 env, thisValue, task,
__anon5b19175e0a02(napi_env environment, void* data, void* hint) 2833 [](napi_env environment, void* data, void* hint) {
2834 auto obj = reinterpret_cast<Task*>(data);
2835 if (obj != nullptr) {
2836 delete obj;
2837 }
2838 }, nullptr, nullptr);
2839 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2840 taskGroupManager.AddTask(groupId, ref, task->taskId_);
2841
2842 GroupInfo* groupInfo = new GroupInfo();
2843 groupInfo->priority = Priority::DEFAULT;
2844 taskGroup->pendingGroupInfos_.push_back(groupInfo);
2845 taskGroup->NotifyGroupTask(env);
2846 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
2847 }
2848
2849 HWTEST_F(NativeEngineTest, TaskpoolTest154, testing::ext::TestSize.Level0)
2850 {
2851 napi_env env = (napi_env)engine_;
2852 Task* task = new Task();
2853 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2854 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
2855 napi_value args[2] = {nullptr};
2856 napi_create_string_utf8(env, "generate", NAPI_AUTO_LENGTH, &args[0]);
2857 napi_value obj;
2858 napi_create_object(env, &obj);
2859 args[1] = obj;
2860 task = task->GenerateFunctionTask(env, nullptr, args, 2, TaskType::GROUP_FUNCTION_TASK);
2861 napi_value exception = nullptr;
2862 napi_get_and_clear_last_exception(env, &exception);
2863 ASSERT_TRUE(exception != nullptr);
2864 }
2865
2866 HWTEST_F(NativeEngineTest, TaskpoolTest155, testing::ext::TestSize.Level0)
2867 {
2868 napi_env env = (napi_env)engine_;
2869 Task* task = new Task();
2870 napi_value result = CreateTaskObject(env);
2871 std::string func = "func";
2872 std::string name = "Task";
2873 napi_value funcValue = nullptr;
2874 napi_value nameValue = nullptr;
2875 napi_create_string_utf8(env, name.c_str(), name.length(), &nameValue);
2876 napi_create_string_utf8(env, func.c_str(), func.length(), &funcValue);
2877 napi_value undefined = nullptr;
2878 napi_get_undefined(env, &undefined);
2879 napi_set_named_property(env, result, ARGUMENTS_STR, nameValue);
2880
2881 napi_set_named_property(env, result, FUNCTION_STR, funcValue);
2882 napi_set_named_property(env, result, NAME, nameValue);
2883 napi_value trueVal = NapiHelper::CreateBooleanValue(env, true);
2884 napi_set_named_property(env, result, DEFAULT_TRANSFER_STR, trueVal);
2885 napi_set_named_property(env, result, DEFAULT_CLONE_SENDABLE_STR, trueVal);
2886
2887 napi_set_named_property(env, result, TRANSFERLIST_STR, nameValue);
2888 napi_set_named_property(env, result, TRANSFERLIST_STR, nameValue);
2889 TaskInfo* info = task->GetTaskInfo(env, result, Priority::DEFAULT);
2890 ASSERT_TRUE(info == nullptr);
2891 delete task;
2892 }
2893
2894 HWTEST_F(NativeEngineTest, TaskpoolTest156, testing::ext::TestSize.Level0)
2895 {
2896 napi_env env = (napi_env)engine_;
2897 napi_value global = NapiHelper::GetGlobalObject(env);
2898 napi_value thisValue = CreateTaskObject(env);
2899 Task* task = nullptr;
2900 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2901 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2902 napi_status status = napi_set_named_property(env, thisValue, CLONE_LIST_STR, undefined);
2903 napi_value array;
2904 napi_create_array_with_length(env, 1, &array);
2905
2906 napi_value argv[] = { array };
2907 std::string funcName = "SetTransferList";
2908 napi_value cb = nullptr;
2909 napi_value result = nullptr;
2910 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2911 napi_call_function(env, thisValue, cb, 1, argv, &result);
2912 napi_value exception = nullptr;
2913 napi_get_and_clear_last_exception(env, &exception);
2914 ASSERT_TRUE(exception != nullptr);
2915 }
2916
2917 HWTEST_F(NativeEngineTest, TaskpoolTest157, testing::ext::TestSize.Level0)
2918 {
2919 napi_env env = (napi_env)engine_;
2920 napi_value global = NapiHelper::GetGlobalObject(env);
2921 napi_value thisValue = CreateTaskObject(env);
2922 Task* task = nullptr;
2923 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2924
2925 napi_value array;
2926 napi_create_array_with_length(env, 1, &array);
2927
2928 std::string funcName = "SetTransferList";
2929 napi_value cb = nullptr;
2930 napi_value result = nullptr;
2931 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2932 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
2933 napi_value exception = nullptr;
2934 napi_get_and_clear_last_exception(env, &exception);
2935 ASSERT_TRUE(exception == nullptr);
2936 }
2937
2938 HWTEST_F(NativeEngineTest, TaskpoolTest158, testing::ext::TestSize.Level0)
2939 {
2940 napi_env env = (napi_env)engine_;
2941 napi_value global = NapiHelper::GetGlobalObject(env);
2942 napi_value thisValue = CreateTaskObject(env);
2943 Task* task = nullptr;
2944 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2945
2946 napi_value argv[1] = { nullptr };
2947 std::string funcName = "SetTransferList";
2948 napi_create_string_utf8(env, funcName.c_str(), funcName.size(), &argv[0]);
2949 napi_value cb = nullptr;
2950 napi_value result = nullptr;
2951 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2952 napi_call_function(env, thisValue, cb, 1, argv, &result);
2953 napi_value exception = nullptr;
2954 napi_get_and_clear_last_exception(env, &exception);
2955 ASSERT_TRUE(exception != nullptr);
2956 }
2957
2958 HWTEST_F(NativeEngineTest, TaskpoolTest159, testing::ext::TestSize.Level0)
2959 {
2960 napi_env env = (napi_env)engine_;
2961 napi_value global = NapiHelper::GetGlobalObject(env);
2962 napi_value thisValue = CreateTaskObject(env);
2963 Task* task = nullptr;
2964 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2965 napi_value array;
2966 napi_create_array_with_length(env, 0, &array);
2967
2968 napi_value argv[] = { array };
2969 std::string funcName = "SetTransferList";
2970 napi_value cb = nullptr;
2971 napi_value result = nullptr;
2972 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2973 napi_call_function(env, thisValue, cb, 1, argv, &result);
2974 napi_value exception = nullptr;
2975 napi_get_and_clear_last_exception(env, &exception);
2976 ASSERT_TRUE(exception == nullptr);
2977 }
2978
2979 HWTEST_F(NativeEngineTest, TaskpoolTest160, testing::ext::TestSize.Level0)
2980 {
2981 napi_env env = (napi_env)engine_;
2982 napi_value global = NapiHelper::GetGlobalObject(env);
2983 napi_value thisValue = CreateTaskObject(env);
2984 Task* task = nullptr;
2985 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2986 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2987 napi_status status = napi_set_named_property(env, thisValue, TRANSFERLIST_STR, undefined);
2988 ASSERT_TRUE(status == napi_ok);
2989 napi_value argv[] = { nullptr, nullptr };
2990 std::string funcName = "SetCloneList";
2991 napi_value cb = nullptr;
2992 napi_value result = nullptr;
2993 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
2994 napi_call_function(env, nullptr, cb, 2, argv, &result);
2995 napi_value exception = nullptr;
2996 napi_get_and_clear_last_exception(env, &exception);
2997 ASSERT_TRUE(exception != nullptr);
2998 }
2999
3000 HWTEST_F(NativeEngineTest, TaskpoolTest161, testing::ext::TestSize.Level0)
3001 {
3002 napi_env env = (napi_env)engine_;
3003 napi_value global = NapiHelper::GetGlobalObject(env);
3004 napi_value thisValue = CreateTaskObject(env);
3005 Task* task = nullptr;
3006 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3007
3008 napi_value array;
3009 napi_create_array_with_length(env, 0, &array);
3010 napi_value argv[] = { array };
3011 std::string funcName = "SetCloneList";
3012 napi_value cb = nullptr;
3013 napi_value result = nullptr;
3014 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
3015 napi_call_function(env, nullptr, cb, 1, argv, &result);
3016 napi_value exception = nullptr;
3017 napi_get_and_clear_last_exception(env, &exception);
3018 ASSERT_TRUE(exception == nullptr);
3019 }
3020
3021 HWTEST_F(NativeEngineTest, TaskpoolTest162, testing::ext::TestSize.Level0)
3022 {
3023 napi_env env = (napi_env)engine_;
3024 napi_value global = NapiHelper::GetGlobalObject(env);
3025 napi_value thisValue = CreateTaskObject(env);
3026 Task* task = nullptr;
3027 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3028
3029 napi_value array;
3030 napi_create_array_with_length(env, 0, &array);
3031 napi_value argv[] = { array };
3032 std::string funcName = "SetCloneList";
3033 napi_value cb = nullptr;
3034 napi_value result = nullptr;
3035 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
3036 napi_call_function(env, thisValue, cb, 1, argv, &result);
3037 napi_value exception = nullptr;
3038 napi_get_and_clear_last_exception(env, &exception);
3039 ASSERT_TRUE(exception == nullptr);
3040 }
3041
3042 HWTEST_F(NativeEngineTest, TaskpoolTest163, testing::ext::TestSize.Level0)
3043 {
3044 napi_env env = (napi_env)engine_;
3045 napi_value global = NapiHelper::GetGlobalObject(env);
3046 napi_value thisValue = CreateTaskObject(env);
3047 Task* task = nullptr;
3048 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3049
3050 napi_value array;
3051 napi_create_array_with_length(env, 0, &array);
3052 napi_value argv[] = { array };
3053 std::string funcName = "SetCloneList";
3054 napi_value cb = nullptr;
3055 napi_value result = nullptr;
3056 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
3057 napi_call_function(env, thisValue, cb, 1, argv, &result);
3058 napi_value exception = nullptr;
3059 napi_get_and_clear_last_exception(env, &exception);
3060 ASSERT_TRUE(exception == nullptr);
3061 }
3062
3063 HWTEST_F(NativeEngineTest, TaskpoolTest164, testing::ext::TestSize.Level0)
3064 {
3065 napi_env env = (napi_env)engine_;
3066 napi_env taskEnv = nullptr;
3067 napi_create_runtime(env, &taskEnv);
3068 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3069 taskEngine->MarkTaskPoolThread();
3070 napi_value global = NapiHelper::GetGlobalObject(env);
3071 napi_value thisValue = CreateTaskObject(taskEnv);
3072
3073 std::string funcName = "IsCanceled";
3074 napi_value cb = nullptr;
3075 napi_value result = nullptr;
3076 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
3077 napi_call_function(taskEnv, thisValue, cb, 0, nullptr, &result);
3078 napi_value exception = nullptr;
3079 napi_get_and_clear_last_exception(taskEnv, &exception);
3080 ASSERT_TRUE(exception == nullptr);
3081 }
3082
3083 HWTEST_F(NativeEngineTest, TaskpoolTest165, testing::ext::TestSize.Level0)
3084 {
3085 napi_env env = (napi_env)engine_;
3086 napi_env taskEnv = nullptr;
3087 napi_create_runtime(env, &taskEnv);
3088 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3089 taskEngine->MarkTaskPoolThread();
3090 napi_value global = NapiHelper::GetGlobalObject(env);
3091 napi_value thisValue = CreateTaskObject(taskEnv);
3092 std::string funcName = "IsCanceled";
3093 napi_value cb = nullptr;
3094 napi_value result = nullptr;
3095 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
3096 napi_call_function(taskEnv, thisValue, cb, 0, nullptr, &result);
3097 napi_value exception = nullptr;
3098 napi_get_and_clear_last_exception(taskEnv, &exception);
3099 ASSERT_TRUE(exception == nullptr);
3100 }
3101
3102 HWTEST_F(NativeEngineTest, TaskpoolTest166, testing::ext::TestSize.Level0)
3103 {
3104 napi_env env = (napi_env)engine_;
3105 napi_value global = NapiHelper::GetGlobalObject(env);
3106 napi_value argv[1] = { nullptr };
3107 napi_value undefined = NapiHelper::GetUndefinedValue(env);
3108 argv[0] = undefined;
3109 std::string funcName = "OnReceiveData";
3110 napi_value cb = nullptr;
3111 napi_value result = nullptr;
3112
3113 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
3114 napi_call_function(env, global, cb, 1, argv, &result);
3115
3116 napi_value exception = nullptr;
3117 napi_get_and_clear_last_exception(env, &exception);
3118 ASSERT_TRUE(exception != nullptr);
3119 }
3120
3121 HWTEST_F(NativeEngineTest, TaskpoolTest167, testing::ext::TestSize.Level0)
3122 {
3123 napi_env env = (napi_env)engine_;
3124 ExceptionScope scope(env);
3125 napi_env taskEnv = nullptr;
3126 napi_create_runtime(env, &taskEnv);
3127 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3128 taskEngine->MarkTaskPoolThread();
3129 napi_value global = NapiHelper::GetGlobalObject(env);
3130
3131 napi_value argv[] = { nullptr };
3132 std::string funcName = "SendData";
3133 napi_value cb = nullptr;
3134 napi_value result = nullptr;
3135 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
3136 napi_call_function(taskEnv, global, cb, 1, argv, &result);
3137 napi_value exception = nullptr;
3138 napi_get_and_clear_last_exception(env, &exception);
3139 ASSERT_TRUE(exception == nullptr);
3140 }
3141
3142 HWTEST_F(NativeEngineTest, TaskpoolTest168, testing::ext::TestSize.Level0)
3143 {
3144 napi_env env = (napi_env)engine_;
3145 ExceptionScope scope(env);
3146 napi_env taskEnv = nullptr;
3147 napi_create_runtime(env, &taskEnv);
3148 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3149 taskEngine->MarkTaskPoolThread();
3150 napi_value global = NapiHelper::GetGlobalObject(env);
3151 napi_value argv[] = { nullptr };
3152 std::string funcName = "SendData";
3153 napi_value cb = nullptr;
3154 napi_value result = nullptr;
3155 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
3156 napi_call_function(taskEnv, global, cb, 1, argv, &result);
3157 napi_value exception = nullptr;
3158 napi_get_and_clear_last_exception(env, &exception);
3159 ASSERT_TRUE(exception == nullptr);
3160 }
3161
3162 HWTEST_F(NativeEngineTest, TaskpoolTest169, testing::ext::TestSize.Level0)
3163 {
3164 napi_env env = (napi_env)engine_;
3165 napi_value global = NapiHelper::CreateObject(env);
3166 napi_value thisValue = CreateTaskObject(env);
3167
3168 napi_value dependentTask = CreateTaskObject(env);
3169 napi_value argv[] = { dependentTask };
3170 std::string funcName = "AddDependency";
3171 napi_value cb = nullptr;
3172 napi_value result = nullptr;
3173 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3174 napi_call_function(env, nullptr, cb, 1, argv, &result);
3175 napi_value exception = nullptr;
3176 napi_get_and_clear_last_exception(env, &exception);
3177 ASSERT_TRUE(exception == nullptr);
3178 }
3179
3180 HWTEST_F(NativeEngineTest, TaskpoolTest170, testing::ext::TestSize.Level0)
3181 {
3182 napi_env env = (napi_env)engine_;
3183 napi_value global = NapiHelper::CreateObject(env);
3184 napi_value thisValue = CreateTaskObject(env);
3185 Task* task = nullptr;
3186 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3187 ASSERT_TRUE(task != nullptr);
3188
3189 napi_value dependentTask = CreateTaskObject(env);
3190 napi_value argv[] = { dependentTask };
3191 std::string funcName = "AddDependency";
3192 napi_value cb = nullptr;
3193 napi_value result = nullptr;
3194 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3195 task->isPeriodicTask_ = false;
3196 task->taskType_ = TaskType::GROUP_COMMON_TASK;
3197 napi_call_function(env, thisValue, cb, 1, argv, &result);
3198 napi_value exception = nullptr;
3199 napi_get_and_clear_last_exception(env, &exception);
3200 ASSERT_TRUE(exception != nullptr);
3201 }
3202
3203 HWTEST_F(NativeEngineTest, TaskpoolTest171, testing::ext::TestSize.Level0)
3204 {
3205 napi_env env = (napi_env)engine_;
3206 napi_value global = NapiHelper::CreateObject(env);
3207 napi_value thisValue = CreateTaskObject(env);
3208 Task* task = nullptr;
3209 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3210
3211 napi_value dependentTask = CreateTaskObject(env);
3212 napi_value argv[] = { dependentTask };
3213 std::string funcName = "AddDependency";
3214 napi_value cb = nullptr;
3215 napi_value result = nullptr;
3216 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3217 task->taskType_ = TaskType::TASK;
3218 task->isPeriodicTask_ = false;
3219 napi_call_function(env, thisValue, cb, 1, argv, &result);
3220 napi_value exception = nullptr;
3221 napi_get_and_clear_last_exception(env, &exception);
3222 ASSERT_TRUE(exception == nullptr);
3223 }
3224
3225 HWTEST_F(NativeEngineTest, TaskpoolTest172, testing::ext::TestSize.Level0)
3226 {
3227 napi_env env = (napi_env)engine_;
3228 napi_value global = NapiHelper::CreateObject(env);
3229 napi_value thisValue = CreateTaskObject(env);
3230 Task* task = nullptr;
3231 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3232
3233 napi_value argv[] = { nullptr };
3234 std::string funcName = "AddDependency";
3235 napi_value cb = nullptr;
3236 napi_value result = nullptr;
3237 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3238 task->taskType_ = TaskType::TASK;
3239 task->isPeriodicTask_ = false;
3240 napi_call_function(env, thisValue, cb, 1, argv, &result);
3241 napi_value exception = nullptr;
3242 napi_get_and_clear_last_exception(env, &exception);
3243 ASSERT_TRUE(exception != nullptr);
3244 }
3245
3246 HWTEST_F(NativeEngineTest, TaskpoolTest173, testing::ext::TestSize.Level0)
3247 {
3248 napi_env env = (napi_env)engine_;
3249 napi_value global = NapiHelper::CreateObject(env);
3250 napi_value thisValue = CreateTaskObject(env);
3251 Task* task = nullptr;
3252 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3253
3254 napi_value dependentTask = CreateTaskObject(env);
3255 Task* task1 = nullptr;
3256 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3257 task1->isPeriodicTask_ = true;
3258 napi_value argv[] = { dependentTask };
3259 std::string funcName = "AddDependency";
3260 napi_value cb = nullptr;
3261 napi_value result = nullptr;
3262 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3263 task->taskType_ = TaskType::TASK;
3264 task->isPeriodicTask_ = false;
3265 napi_call_function(env, thisValue, cb, 1, argv, &result);
3266 napi_value exception = nullptr;
3267 napi_get_and_clear_last_exception(env, &exception);
3268 ASSERT_TRUE(exception != nullptr);
3269 }
3270
3271 HWTEST_F(NativeEngineTest, TaskpoolTest174, testing::ext::TestSize.Level0)
3272 {
3273 napi_env env = (napi_env)engine_;
3274 napi_value global = NapiHelper::CreateObject(env);
3275 napi_value thisValue = CreateTaskObject(env);
3276 Task* task = nullptr;
3277 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3278
3279 napi_value dependentTask = CreateTaskObject(env);
3280 Task* task1 = nullptr;
3281 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3282 task1->taskType_ = TaskType::COMMON_TASK;
3283 napi_value argv[] = { dependentTask };
3284 std::string funcName = "AddDependency";
3285 napi_value cb = nullptr;
3286 napi_value result = nullptr;
3287 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3288 task->taskType_ = TaskType::TASK;
3289 task1->taskType_ = TaskType::COMMON_TASK;
3290 task->isPeriodicTask_ = false;
3291 task1->isPeriodicTask_ = false;
3292 napi_call_function(env, thisValue, cb, 1, argv, &result);
3293 napi_value exception = nullptr;
3294 napi_get_and_clear_last_exception(env, &exception);
3295 ASSERT_TRUE(exception != nullptr);
3296
3297 task1->taskType_ = TaskType::SEQRUNNER_TASK;
3298 napi_call_function(env, thisValue, cb, 1, argv, &result);
3299 napi_get_and_clear_last_exception(env, &exception);
3300 ASSERT_TRUE(exception != nullptr);
3301
3302 task1->taskType_ = TaskType::GROUP_COMMON_TASK;
3303 napi_call_function(env, thisValue, cb, 1, argv, &result);
3304 napi_get_and_clear_last_exception(env, &exception);
3305 ASSERT_TRUE(exception != nullptr);
3306
3307 task1->taskType_ = TaskType::ASYNCRUNNER_TASK;
3308 napi_call_function(env, thisValue, cb, 1, argv, &result);
3309 napi_get_and_clear_last_exception(env, &exception);
3310 ASSERT_TRUE(exception != nullptr);
3311 }
3312
3313 HWTEST_F(NativeEngineTest, TaskpoolTest175, testing::ext::TestSize.Level0)
3314 {
3315 napi_env env = (napi_env)engine_;
3316 napi_value global = NapiHelper::CreateObject(env);
3317 napi_value thisValue = CreateTaskObject(env);
3318 Task* task = nullptr;
3319 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3320
3321 napi_value dependentTask = CreateTaskObject(env);
3322 napi_value argv[] = { dependentTask };
3323 std::string funcName = "AddDependency";
3324 napi_value cb = nullptr;
3325 napi_value result = nullptr;
3326 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3327 task->isPeriodicTask_ = false;
3328 task->taskType_ = TaskType::SEQRUNNER_TASK;
3329 napi_call_function(env, thisValue, cb, 1, argv, &result);
3330 napi_value exception = nullptr;
3331 napi_get_and_clear_last_exception(env, &exception);
3332 ASSERT_TRUE(exception != nullptr);
3333
3334 task->taskType_ = TaskType::COMMON_TASK;
3335 napi_call_function(env, thisValue, cb, 1, argv, &result);
3336 exception = nullptr;
3337 napi_get_and_clear_last_exception(env, &exception);
3338 ASSERT_TRUE(exception != nullptr);
3339
3340 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
3341 napi_call_function(env, thisValue, cb, 1, argv, &result);
3342 exception = nullptr;
3343 napi_get_and_clear_last_exception(env, &exception);
3344 ASSERT_TRUE(exception != nullptr);
3345 }
3346
3347 HWTEST_F(NativeEngineTest, TaskpoolTest176, testing::ext::TestSize.Level0)
3348 {
3349 napi_env env = (napi_env)engine_;
3350 std::string funcName = "RemoveDependency";
3351 napi_value cb = nullptr;
3352 napi_value result = nullptr;
3353 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3354
3355 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
3356 napi_value exception = nullptr;
3357 napi_get_and_clear_last_exception(env, &exception);
3358 ASSERT_TRUE(exception != nullptr);
3359 }
3360
3361 HWTEST_F(NativeEngineTest, TaskpoolTest177, testing::ext::TestSize.Level0)
3362 {
3363 napi_env env = (napi_env)engine_;
3364 napi_value thisValue = CreateTaskObject(env);
3365 Task* task = nullptr;
3366 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3367
3368 napi_value dependentTask = CreateTaskObject(env);
3369 napi_value argv[] = { dependentTask };
3370 std::string funcName = "RemoveDependency";
3371 napi_value cb = nullptr;
3372 napi_value result = nullptr;
3373 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3374 napi_call_function(env, nullptr, cb, 1, argv, &result);
3375 napi_value exception = nullptr;
3376 napi_get_and_clear_last_exception(env, &exception);
3377 ASSERT_TRUE(exception != nullptr);
3378 }
3379
3380 HWTEST_F(NativeEngineTest, TaskpoolTest178, testing::ext::TestSize.Level0)
3381 {
3382 napi_env env = (napi_env)engine_;
3383 napi_value thisValue = CreateTaskObject(env);
3384 Task* task = nullptr;
3385 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3386
3387 napi_value undefined = NapiHelper::GetUndefinedValue(env);
3388 napi_value dependentTask = CreateTaskObject(env);
3389 napi_set_named_property(env, dependentTask, TASKID_STR, undefined);
3390 napi_value argv[] = { dependentTask };
3391 std::string funcName = "RemoveDependency";
3392 napi_value cb = nullptr;
3393 napi_value result = nullptr;
3394 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3395 task->hasDependency_ = false;
3396 napi_call_function(env, thisValue, cb, 1, argv, &result);
3397 napi_value exception = nullptr;
3398 napi_get_and_clear_last_exception(env, &exception);
3399 ASSERT_TRUE(exception != nullptr);
3400
3401 task->hasDependency_ = true;
3402 task->isPeriodicTask_ = true;
3403 napi_call_function(env, thisValue, cb, 1, argv, &result);
3404 napi_get_and_clear_last_exception(env, &exception);
3405 ASSERT_TRUE(exception != nullptr);
3406
3407 task->isPeriodicTask_ = false;
3408 task->taskType_ = TaskType::COMMON_TASK;
3409 napi_call_function(env, thisValue, cb, 1, argv, &result);
3410 napi_get_and_clear_last_exception(env, &exception);
3411 ASSERT_TRUE(exception != nullptr);
3412
3413 task->taskType_ = TaskType::TASK;
3414 napi_call_function(env, thisValue, cb, 1, argv, &result);
3415 napi_get_and_clear_last_exception(env, &exception);
3416 ASSERT_TRUE(exception != nullptr);
3417 }
3418
3419 HWTEST_F(NativeEngineTest, TaskpoolTest179, testing::ext::TestSize.Level0)
3420 {
3421 napi_env env = (napi_env)engine_;
3422 napi_value thisValue = CreateTaskObject(env);
3423 Task* task = nullptr;
3424 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3425
3426 napi_value dependentTask = CreateTaskObject(env);
3427 Task* task1 = nullptr;
3428 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3429 napi_value argv[] = { dependentTask };
3430 std::string funcName = "RemoveDependency";
3431 napi_value cb = nullptr;
3432 napi_value result = nullptr;
3433 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3434 task->hasDependency_ = true;
3435 task->isPeriodicTask_ = false;
3436 task->taskType_ = TaskType::TASK;
3437 task1->hasDependency_ = false;
3438 napi_call_function(env, thisValue, cb, 1, argv, &result);
3439 napi_value exception = nullptr;
3440 napi_get_and_clear_last_exception(env, &exception);
3441 ASSERT_TRUE(exception != nullptr);
3442
3443 task1->hasDependency_ = true;
3444 task1->isPeriodicTask_ = true;
3445 napi_call_function(env, thisValue, cb, 1, argv, &result);
3446 napi_get_and_clear_last_exception(env, &exception);
3447 ASSERT_TRUE(exception != nullptr);
3448
3449 task1->isPeriodicTask_ = false;
3450 task1->taskType_ = TaskType::COMMON_TASK;
3451 napi_call_function(env, thisValue, cb, 1, argv, &result);
3452 napi_get_and_clear_last_exception(env, &exception);
3453 ASSERT_TRUE(exception != nullptr);
3454
3455 task1->taskType_ = TaskType::TASK;
3456 napi_call_function(env, thisValue, cb, 1, argv, &result);
3457 napi_get_and_clear_last_exception(env, &exception);
3458 ASSERT_TRUE(exception != nullptr);
3459
3460 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
3461 napi_call_function(env, thisValue, cb, 1, argv, &result);
3462 napi_get_and_clear_last_exception(env, &exception);
3463 ASSERT_TRUE(exception != nullptr);
3464 }
3465
3466 HWTEST_F(NativeEngineTest, TaskpoolTest180, testing::ext::TestSize.Level0)
3467 {
3468 napi_env env = (napi_env)engine_;
3469 napi_value thisValue = CreateTaskObject(env);
3470 Task* task = nullptr;
3471 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3472
3473 napi_value dependentTask = CreateTaskObject(env);
3474 Task* task1 = nullptr;
3475 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3476 napi_value argv[] = { dependentTask };
3477 std::string funcName = "RemoveDependency";
3478 napi_value cb = nullptr;
3479 napi_value result = nullptr;
3480 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3481 task->hasDependency_ = true;
3482 task->isPeriodicTask_ = false;
3483 task->taskType_ = TaskType::TASK;
3484 task1->hasDependency_ = true;
3485 task1->isPeriodicTask_ = false;
3486 task1->taskType_ = TaskType::TASK;
3487 task1->hasDependency_ = false;
3488 NativeEngineTest::StoreDependentId(task->taskId_, task1->taskId_);
3489 napi_call_function(env, thisValue, cb, 1, argv, &result);
3490 napi_value exception = nullptr;
3491 napi_get_and_clear_last_exception(env, &exception);
3492 ASSERT_TRUE(exception != nullptr);
3493 }
3494
3495 HWTEST_F(NativeEngineTest, TaskpoolTest181, testing::ext::TestSize.Level0)
3496 {
3497 napi_env env = (napi_env)engine_;
3498 napi_value func = nullptr;
3499 GetSendableFunction(env, "foo", func);
3500 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, func, 1);
3501 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, callbackRef, nullptr);
3502
3503 uv_async_t* req = new uv_async_t;
3504 req->data = cbInfo;
3505 Task::StartExecutionCallback(req);
3506 napi_value exception = nullptr;
3507 napi_get_and_clear_last_exception(env, &exception);
3508 ASSERT_TRUE(exception == nullptr);
3509 }
3510
3511 HWTEST_F(NativeEngineTest, TaskpoolTest182, testing::ext::TestSize.Level0)
3512 {
3513 napi_env env = (napi_env)engine_;
3514 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, nullptr, nullptr);
3515
3516 uv_async_t* req = new uv_async_t;
3517 req->data = cbInfo;
3518 Task::StartExecutionCallback(req);
3519 napi_value exception = nullptr;
3520 napi_get_and_clear_last_exception(env, &exception);
3521 ASSERT_TRUE(exception == nullptr);
3522 }
3523
3524 HWTEST_F(NativeEngineTest, TaskpoolTest183, testing::ext::TestSize.Level0)
3525 {
3526 napi_env env = (napi_env)engine_;
3527 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, nullptr, nullptr);
3528
3529 Task* task = new Task();
3530 auto taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
3531 Task::ExecuteListenerCallback(cbInfo, taskId);
3532 napi_value exception = nullptr;
3533 napi_get_and_clear_last_exception(env, &exception);
3534 ASSERT_TRUE(exception == nullptr);
3535
3536 napi_value func = nullptr;
3537 GetSendableFunction(env, "foo", func);
3538 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, func, 1);
3539 cbInfo = new ListenerCallBackInfo(env, callbackRef, nullptr);
3540 Task::ExecuteListenerCallback(cbInfo, taskId);
3541 napi_get_and_clear_last_exception(env, &exception);
3542 ASSERT_TRUE(exception == nullptr);
3543
3544 napi_value error = NapiHelper::CreateObject(env);
3545 cbInfo = new ListenerCallBackInfo(env, callbackRef, error);
3546 Task::ExecuteListenerCallback(cbInfo, taskId);
3547 napi_get_and_clear_last_exception(env, &exception);
3548 ASSERT_TRUE(exception == nullptr);
3549 }
3550
3551 HWTEST_F(NativeEngineTest, TaskpoolTest184, testing::ext::TestSize.Level0)
3552 {
3553 napi_env env = (napi_env)engine_;
3554 napi_value thisValue = CreateTaskObject(env);
3555 Task* task = nullptr;
3556 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3557
3558 std::string funcName = "OnEnqueued";
3559 napi_value cb = nullptr;
3560 napi_value result = nullptr;
3561 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3562 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3563 napi_value exception = nullptr;
3564 napi_get_and_clear_last_exception(env, &exception);
3565 ASSERT_TRUE(exception == nullptr);
3566 }
3567
3568 HWTEST_F(NativeEngineTest, TaskpoolTest185, testing::ext::TestSize.Level0)
3569 {
3570 napi_env env = (napi_env)engine_;
3571 napi_value thisValue = CreateTaskObject(env);
3572 Task* task = nullptr;
3573 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3574
3575 napi_value object = NapiHelper::CreateObject(env);
3576 napi_value argv[1] = { object };
3577 std::string funcName = "OnEnqueued";
3578 napi_value cb = nullptr;
3579 napi_value result = nullptr;
3580 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3581 napi_call_function(env, thisValue, cb, 1, argv, &result);
3582 napi_value exception = nullptr;
3583 napi_get_and_clear_last_exception(env, &exception);
3584 ASSERT_TRUE(exception != nullptr);
3585 }
3586
3587 HWTEST_F(NativeEngineTest, TaskpoolTest186, testing::ext::TestSize.Level0)
3588 {
3589 napi_env env = (napi_env)engine_;
3590 napi_value thisValue = CreateTaskObject(env);
3591 Task* task = nullptr;
3592 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3593
3594 napi_value func = nullptr;
3595 GetSendableFunction(env, "foo", func);
3596 napi_value argv[1] = { func };
3597 std::string funcName = "OnEnqueued";
3598 napi_value cb = nullptr;
3599 napi_value result = nullptr;
3600 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3601 napi_call_function(env, nullptr, cb, 1, argv, &result);
3602 napi_value exception = nullptr;
3603 napi_get_and_clear_last_exception(env, &exception);
3604 ASSERT_TRUE(exception == nullptr);
3605 }
3606
3607 HWTEST_F(NativeEngineTest, TaskpoolTest187, testing::ext::TestSize.Level0)
3608 {
3609 napi_env env = (napi_env)engine_;
3610 napi_value thisValue = CreateTaskObject(env);
3611 Task* task = nullptr;
3612 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3613
3614 napi_value func = nullptr;
3615 GetSendableFunction(env, "foo", func);
3616 napi_value argv[1] = { func };
3617 std::string funcName = "OnEnqueued";
3618 napi_value cb = nullptr;
3619 napi_value result = nullptr;
3620 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3621 task->taskState_ = ExecuteState::WAITING;
3622 napi_call_function(env, thisValue, cb, 1, argv, &result);
3623 napi_value exception = nullptr;
3624 napi_get_and_clear_last_exception(env, &exception);
3625 ASSERT_TRUE(exception != nullptr);
3626
3627 task->taskState_ = ExecuteState::NOT_FOUND;
3628 napi_call_function(env, thisValue, cb, 1, argv, &result);
3629 napi_get_and_clear_last_exception(env, &exception);
3630 ASSERT_TRUE(exception != nullptr);
3631 }
3632
3633 HWTEST_F(NativeEngineTest, TaskpoolTest188, testing::ext::TestSize.Level0)
3634 {
3635 napi_env env = (napi_env)engine_;
3636 napi_value thisValue = CreateTaskObject(env);
3637 Task* task = nullptr;
3638 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3639
3640 std::string funcName = "OnStartExecution";
3641 napi_value cb = nullptr;
3642 napi_value result = nullptr;
3643 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3644 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3645 napi_value exception = nullptr;
3646 napi_get_and_clear_last_exception(env, &exception);
3647 ASSERT_TRUE(exception == nullptr);
3648 }
3649
3650 HWTEST_F(NativeEngineTest, TaskpoolTest189, testing::ext::TestSize.Level0)
3651 {
3652 napi_env env = (napi_env)engine_;
3653 napi_value thisValue = CreateTaskObject(env);
3654 Task* task = nullptr;
3655 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3656
3657 napi_value object = NapiHelper::CreateObject(env);
3658 napi_value argv[1] = { object };
3659 std::string funcName = "OnStartExecution";
3660 napi_value cb = nullptr;
3661 napi_value result = nullptr;
3662 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3663 napi_call_function(env, thisValue, cb, 1, argv, &result);
3664 napi_value exception = nullptr;
3665 napi_get_and_clear_last_exception(env, &exception);
3666 ASSERT_TRUE(exception != nullptr);
3667 }
3668
3669 HWTEST_F(NativeEngineTest, TaskpoolTest190, testing::ext::TestSize.Level0)
3670 {
3671 napi_env env = (napi_env)engine_;
3672 napi_value thisValue = CreateTaskObject(env);
3673 Task* task = nullptr;
3674 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3675
3676 napi_value func = nullptr;
3677 GetSendableFunction(env, "foo", func);
3678 napi_value argv[1] = { func };
3679 std::string funcName = "OnStartExecution";
3680 napi_value cb = nullptr;
3681 napi_value result = nullptr;
3682 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3683 napi_call_function(env, thisValue, cb, 1, argv, &result);
3684 napi_value exception = nullptr;
3685 napi_get_and_clear_last_exception(env, &exception);
3686 ASSERT_TRUE(exception == nullptr);
3687 }
3688
3689 HWTEST_F(NativeEngineTest, TaskpoolTest191, testing::ext::TestSize.Level0)
3690 {
3691 napi_env env = (napi_env)engine_;
3692 napi_value thisValue = CreateTaskObject(env);
3693 Task* task = nullptr;
3694 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3695
3696 napi_value func = nullptr;
3697 GetSendableFunction(env, "foo", func);
3698 napi_value argv[1] = { func };
3699 std::string funcName = "OnStartExecution";
3700 napi_value cb = nullptr;
3701 napi_value result = nullptr;
3702 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3703 task->taskState_ = ExecuteState::WAITING;
3704 napi_call_function(env, thisValue, cb, 1, argv, &result);
3705 napi_value exception = nullptr;
3706 napi_get_and_clear_last_exception(env, &exception);
3707 ASSERT_TRUE(exception != nullptr);
3708
3709 task->taskState_ = ExecuteState::NOT_FOUND;
3710 task->isMainThreadTask_ = false;
3711 napi_call_function(env, thisValue, cb, 1, argv, &result);
3712 napi_get_and_clear_last_exception(env, &exception);
3713 ASSERT_TRUE(exception != nullptr);
3714
3715 task->isMainThreadTask_ = true;
3716 napi_call_function(env, thisValue, cb, 1, argv, &result);
3717 napi_get_and_clear_last_exception(env, &exception);
3718 ASSERT_TRUE(exception != nullptr);
3719 }
3720
3721 HWTEST_F(NativeEngineTest, TaskpoolTest192, testing::ext::TestSize.Level0)
3722 {
3723 napi_env env = (napi_env)engine_;
3724 napi_value thisValue = CreateTaskObject(env);
3725 Task* task = nullptr;
3726 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3727
3728 std::string funcName = "OnExecutionFailed";
3729 napi_value cb = nullptr;
3730 napi_value result = nullptr;
3731 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3732 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3733 napi_value exception = nullptr;
3734 napi_get_and_clear_last_exception(env, &exception);
3735 ASSERT_TRUE(exception == nullptr);
3736 }
3737
3738 HWTEST_F(NativeEngineTest, TaskpoolTest193, testing::ext::TestSize.Level0)
3739 {
3740 napi_env env = (napi_env)engine_;
3741 napi_value thisValue = CreateTaskObject(env);
3742 Task* task = nullptr;
3743 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3744
3745 napi_value object = NapiHelper::CreateObject(env);
3746 napi_value argv[1] = { object };
3747 std::string funcName = "OnExecutionFailed";
3748 napi_value cb = nullptr;
3749 napi_value result = nullptr;
3750 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3751 napi_call_function(env, thisValue, cb, 1, argv, &result);
3752 napi_value exception = nullptr;
3753 napi_get_and_clear_last_exception(env, &exception);
3754 ASSERT_TRUE(exception != nullptr);
3755 }
3756
3757 HWTEST_F(NativeEngineTest, TaskpoolTest194, testing::ext::TestSize.Level0)
3758 {
3759 napi_env env = (napi_env)engine_;
3760 napi_value thisValue = CreateTaskObject(env);
3761 Task* task = nullptr;
3762 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3763
3764 napi_value func = nullptr;
3765 GetSendableFunction(env, "foo", func);
3766 napi_value argv[1] = { func };
3767 std::string funcName = "OnExecutionFailed";
3768 napi_value cb = nullptr;
3769 napi_value result = nullptr;
3770 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3771 napi_call_function(env, nullptr, cb, 1, argv, &result);
3772 napi_value exception = nullptr;
3773 napi_get_and_clear_last_exception(env, &exception);
3774 ASSERT_TRUE(exception == nullptr);
3775 }
3776
3777 HWTEST_F(NativeEngineTest, TaskpoolTest195, testing::ext::TestSize.Level0)
3778 {
3779 napi_env env = (napi_env)engine_;
3780 napi_value thisValue = CreateTaskObject(env);
3781 Task* task = nullptr;
3782 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3783
3784 napi_value func = nullptr;
3785 GetSendableFunction(env, "foo", func);
3786 napi_value argv[1] = { func };
3787 std::string funcName = "OnExecutionFailed";
3788 napi_value cb = nullptr;
3789 napi_value result = nullptr;
3790 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3791 task->taskState_ = ExecuteState::WAITING;
3792 napi_call_function(env, thisValue, cb, 1, argv, &result);
3793 napi_value exception = nullptr;
3794 napi_get_and_clear_last_exception(env, &exception);
3795 ASSERT_TRUE(exception != nullptr);
3796
3797 task->taskState_ = ExecuteState::NOT_FOUND;
3798 napi_call_function(env, thisValue, cb, 1, argv, &result);
3799 napi_get_and_clear_last_exception(env, &exception);
3800 ASSERT_TRUE(exception != nullptr);
3801 }
3802
3803 HWTEST_F(NativeEngineTest, TaskpoolTest196, testing::ext::TestSize.Level0)
3804 {
3805 napi_env env = (napi_env)engine_;
3806 napi_value thisValue = CreateTaskObject(env);
3807 Task* task = nullptr;
3808 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3809
3810 std::string funcName = "OnExecutionSucceeded";
3811 napi_value cb = nullptr;
3812 napi_value result = nullptr;
3813 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3814 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3815 napi_value exception = nullptr;
3816 napi_get_and_clear_last_exception(env, &exception);
3817 ASSERT_TRUE(exception == nullptr);
3818 }
3819
3820 HWTEST_F(NativeEngineTest, TaskpoolTest197, testing::ext::TestSize.Level0)
3821 {
3822 napi_env env = (napi_env)engine_;
3823 napi_value thisValue = CreateTaskObject(env);
3824 Task* task = nullptr;
3825 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3826
3827 napi_value object = NapiHelper::CreateObject(env);
3828 napi_value argv[1] = { object };
3829 std::string funcName = "OnExecutionSucceeded";
3830 napi_value cb = nullptr;
3831 napi_value result = nullptr;
3832 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3833 napi_call_function(env, thisValue, cb, 1, argv, &result);
3834 napi_value exception = nullptr;
3835 napi_get_and_clear_last_exception(env, &exception);
3836 ASSERT_TRUE(exception != nullptr);
3837 }
3838
3839 HWTEST_F(NativeEngineTest, TaskpoolTest198, testing::ext::TestSize.Level0)
3840 {
3841 napi_env env = (napi_env)engine_;
3842 napi_value thisValue = CreateTaskObject(env);
3843 Task* task = nullptr;
3844 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3845
3846 napi_value func = nullptr;
3847 GetSendableFunction(env, "foo", func);
3848 napi_value argv[1] = { func };
3849 std::string funcName = "OnExecutionSucceeded";
3850 napi_value cb = nullptr;
3851 napi_value result = nullptr;
3852 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3853 napi_call_function(env, nullptr, cb, 1, argv, &result);
3854 napi_value exception = nullptr;
3855 napi_get_and_clear_last_exception(env, &exception);
3856 ASSERT_TRUE(exception == nullptr);
3857 }
3858
3859 HWTEST_F(NativeEngineTest, TaskpoolTest199, testing::ext::TestSize.Level0)
3860 {
3861 napi_env env = (napi_env)engine_;
3862 napi_value thisValue = CreateTaskObject(env);
3863 Task* task = nullptr;
3864 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3865
3866 napi_value func = nullptr;
3867 GetSendableFunction(env, "foo", func);
3868 napi_value argv[1] = { func };
3869 std::string funcName = "OnExecutionSucceeded";
3870 napi_value cb = nullptr;
3871 napi_value result = nullptr;
3872 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3873 task->taskState_ = ExecuteState::WAITING;
3874 napi_call_function(env, thisValue, cb, 1, argv, &result);
3875 napi_value exception = nullptr;
3876 napi_get_and_clear_last_exception(env, &exception);
3877 ASSERT_TRUE(exception != nullptr);
3878
3879 task->taskState_ = ExecuteState::NOT_FOUND;
3880 napi_call_function(env, thisValue, cb, 1, argv, &result);
3881 napi_get_and_clear_last_exception(env, &exception);
3882 ASSERT_TRUE(exception != nullptr);
3883 }
3884
3885 HWTEST_F(NativeEngineTest, TaskpoolTest200, testing::ext::TestSize.Level0)
3886 {
3887 napi_env env = (napi_env)engine_;
3888 napi_value thisValue = CreateTaskObject(env);
3889 Task* task = nullptr;
3890 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3891
3892 std::string funcName = "IsDone";
3893 napi_value cb = nullptr;
3894 napi_value result = nullptr;
3895 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsDone, nullptr, &cb);
3896 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
3897 napi_value exception = nullptr;
3898 napi_get_and_clear_last_exception(env, &exception);
3899 ASSERT_TRUE(exception == nullptr);
3900 }
3901
3902 HWTEST_F(NativeEngineTest, TaskpoolTest201, testing::ext::TestSize.Level0)
3903 {
3904 napi_env env = (napi_env)engine_;
3905 napi_value thisValue = CreateTaskObject(env);
3906 Task* task = nullptr;
3907 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3908
3909 std::string funcName = "IsDone";
3910 napi_value cb = nullptr;
3911 napi_value result = nullptr;
3912 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsDone, nullptr, &cb);
3913 task->taskState_ = ExecuteState::WAITING;
3914 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3915 napi_value exception = nullptr;
3916 napi_get_and_clear_last_exception(env, &exception);
3917 ASSERT_TRUE(exception == nullptr);
3918
3919 task->taskState_ = ExecuteState::FINISHED;
3920 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3921 napi_get_and_clear_last_exception(env, &exception);
3922 ASSERT_TRUE(exception == nullptr);
3923
3924 task->taskState_ = ExecuteState::ENDING;
3925 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3926 napi_get_and_clear_last_exception(env, &exception);
3927 ASSERT_TRUE(exception == nullptr);
3928 }
3929
3930 HWTEST_F(NativeEngineTest, TaskpoolTest202, testing::ext::TestSize.Level0)
3931 {
3932 napi_env env = (napi_env)engine_;
3933 napi_value thisValue = CreateTaskObject(env);
3934 Task* task = nullptr;
3935 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3936 NativeEngineTest::StoreTaskDuration(task->taskId_);
3937 std::string funcName = "GetTotalDuration";
3938 napi_value cb = nullptr;
3939 napi_value result = nullptr;
3940 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetTotalDuration, nullptr, &cb);
3941 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3942 napi_value exception = nullptr;
3943 napi_get_and_clear_last_exception(env, &exception);
3944 ASSERT_TRUE(exception == nullptr);
3945
3946 funcName = "GetCPUDuration";
3947 cb = nullptr;
3948 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetCPUDuration, nullptr, &cb);
3949 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3950 napi_get_and_clear_last_exception(env, &exception);
3951 ASSERT_TRUE(exception == nullptr);
3952
3953 funcName = "GetIODuration";
3954 cb = nullptr;
3955 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetIODuration, nullptr, &cb);
3956 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3957 napi_get_and_clear_last_exception(env, &exception);
3958 ASSERT_TRUE(exception == nullptr);
3959 }
3960
3961 HWTEST_F(NativeEngineTest, TaskpoolTest203, testing::ext::TestSize.Level0)
3962 {
3963 Task* task = new Task();
3964 task->IncreaseRefCount();
3965 task->DecreaseRefCount();
3966 task->taskType_ = TaskType::COMMON_TASK;
3967 ASSERT_TRUE(task->IsRepeatableTask());
3968 task->taskType_ = TaskType::GROUP_COMMON_TASK;
3969 ASSERT_TRUE(task->IsRepeatableTask());
3970 task->taskType_ = TaskType::GROUP_FUNCTION_TASK;
3971 ASSERT_TRUE(task->IsRepeatableTask());
3972 task->taskType_ = TaskType::TASK;
3973 ASSERT_TRUE(!task->IsRepeatableTask());
3974 delete task;
3975 }
3976
3977 HWTEST_F(NativeEngineTest, TaskpoolTest204, testing::ext::TestSize.Level0)
3978 {
3979 napi_env env = (napi_env)engine_;
3980 Task* task = new Task();
3981 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
3982 napi_value thisValue = NapiHelper::CreateObject(env);
3983 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
3984 task->taskRef_ = ref;
3985 TaskInfo* taskInfo = new TaskInfo();
3986 task->pendingTaskInfos_.push_back(taskInfo);
3987 task->NotifyPendingTask();
3988 napi_value exception = nullptr;
3989 napi_get_and_clear_last_exception(env, &exception);
3990 ASSERT_TRUE(exception == nullptr);
3991 delete task;
3992 }
3993
3994 HWTEST_F(NativeEngineTest, TaskpoolTest205, testing::ext::TestSize.Level0)
3995 {
3996 napi_env env = (napi_env)engine_;
3997 Task* task = new Task();
3998 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
3999 napi_value thisValue = NapiHelper::CreateObject(env);
4000 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
4001 task->taskRef_ = ref;
4002 TaskInfo* taskInfo = new TaskInfo();
4003 napi_value promise = NapiHelper::CreatePromise(env, &taskInfo->deferred);
4004 task->pendingTaskInfos_.push_back(taskInfo);
4005 task->isPeriodicTask_ = false;
4006 task->CancelPendingTask(env);
4007 napi_value exception = nullptr;
4008 napi_get_and_clear_last_exception(env, &exception);
4009 ASSERT_TRUE(exception == nullptr);
4010
4011 TaskInfo* taskInfo1 = new TaskInfo();
4012 napi_value promise1 = NapiHelper::CreatePromise(env, &taskInfo1->deferred);
4013 task->pendingTaskInfos_.push_back(taskInfo1);
4014 task->isPeriodicTask_ = true;
4015 task->CancelPendingTask(env);
4016 napi_get_and_clear_last_exception(env, &exception);
4017 ASSERT_TRUE(exception == nullptr);
4018 delete task;
4019 }
4020
4021 HWTEST_F(NativeEngineTest, TaskpoolTest206, testing::ext::TestSize.Level0)
4022 {
4023 napi_env env = (napi_env)engine_;
4024 Task* task = new Task();
4025 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4026 napi_value thisValue = NapiHelper::CreateObject(env);
4027 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
4028 task->taskRef_ = ref;
4029 TaskInfo* taskInfo = new TaskInfo();
4030 task->taskType_ = TaskType::GROUP_FUNCTION_TASK;
4031 task->currentTaskInfo_ = taskInfo;
4032 task->taskRefCount_ = 1;
4033 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
4034 task->worker_ = worker;
4035
4036 napi_value func = nullptr;
4037 napi_value args = nullptr;
4038 task->DeserializeValue(env, &func, &args);
4039 napi_value exception = nullptr;
4040 napi_get_and_clear_last_exception(env, &exception);
4041 ASSERT_TRUE(exception == nullptr);
4042
4043 task->startTime_ = task->taskId_;
4044 task->ioTime_ = task->taskId_;
4045 task->StoreTaskDuration();
4046 napi_get_and_clear_last_exception(env, &exception);
4047 ASSERT_TRUE(exception == nullptr);
4048 delete task;
4049 }
4050
4051 HWTEST_F(NativeEngineTest, TaskpoolTest207, testing::ext::TestSize.Level0)
4052 {
4053 napi_env env = (napi_env)engine_;
4054 Task* task = new Task();
4055 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4056 task->taskType_ = TaskType::SEQRUNNER_TASK;
4057 task->hasDependency_ = false;
4058 task->isPeriodicTask_ = false;
4059 task->CanForSequenceRunner(env);
4060 napi_value exception = nullptr;
4061 napi_get_and_clear_last_exception(env, &exception);
4062 ASSERT_TRUE(exception != nullptr);
4063
4064 task->taskType_ = TaskType::COMMON_TASK;
4065 task->CanForSequenceRunner(env);
4066 napi_get_and_clear_last_exception(env, &exception);
4067 ASSERT_TRUE(exception != nullptr);
4068 delete task;
4069 }
4070
4071 HWTEST_F(NativeEngineTest, TaskpoolTest208, testing::ext::TestSize.Level0)
4072 {
4073 napi_env env = (napi_env)engine_;
4074 Task* task = new Task();
4075 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4076 task->hasDependency_ = false;
4077 task->isPeriodicTask_ = true;
4078 task->CanForTaskGroup(env);
4079 napi_value exception = nullptr;
4080 napi_get_and_clear_last_exception(env, &exception);
4081 ASSERT_TRUE(exception != nullptr);
4082
4083 task->isPeriodicTask_ = false;
4084 task->taskType_ = TaskType::COMMON_TASK;
4085 task->CanForTaskGroup(env);
4086 napi_get_and_clear_last_exception(env, &exception);
4087 ASSERT_TRUE(exception != nullptr);
4088
4089 task->taskType_ = TaskType::SEQRUNNER_TASK;
4090 task->CanForTaskGroup(env);
4091 napi_get_and_clear_last_exception(env, &exception);
4092 ASSERT_TRUE(exception != nullptr);
4093
4094 task->taskType_ = TaskType::GROUP_COMMON_TASK;
4095 task->CanForTaskGroup(env);
4096 napi_get_and_clear_last_exception(env, &exception);
4097 ASSERT_TRUE(exception != nullptr);
4098
4099 task->taskType_ = TaskType::TASK;
4100 task->isLongTask_ = true;
4101 task->CanForTaskGroup(env);
4102 napi_get_and_clear_last_exception(env, &exception);
4103 ASSERT_TRUE(exception != nullptr);
4104 delete task;
4105 }
4106
4107 HWTEST_F(NativeEngineTest, TaskpoolTest209, testing::ext::TestSize.Level0)
4108 {
4109 napi_env env = (napi_env)engine_;
4110 Task* task = new Task();
4111 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4112 task->taskType_ = TaskType::TASK;
4113 task->hasDependency_ = false;
4114 task->isLongTask_ = false;
4115 task->isPeriodicTask_ = true;
4116 task->CanExecute(env);
4117 napi_value exception = nullptr;
4118 napi_get_and_clear_last_exception(env, &exception);
4119 ASSERT_TRUE(exception != nullptr);
4120 delete task;
4121 }
4122
4123 HWTEST_F(NativeEngineTest, TaskpoolTest210, testing::ext::TestSize.Level0)
4124 {
4125 napi_env env = (napi_env)engine_;
4126 Task* task = new Task();
4127 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4128 task->taskType_ = TaskType::COMMON_TASK;
4129 task->hasDependency_ = true;
4130 task->CanExecuteDelayed(env);
4131 napi_value exception = nullptr;
4132 napi_get_and_clear_last_exception(env, &exception);
4133 ASSERT_TRUE(exception != nullptr);
4134
4135 task->taskType_ = TaskType::FUNCTION_TASK;
4136 task->isLongTask_ = true;
4137 task->hasDependency_ = false;
4138 task->CanExecuteDelayed(env);
4139 napi_get_and_clear_last_exception(env, &exception);
4140 ASSERT_TRUE(exception != nullptr);
4141
4142 task->taskType_ = TaskType::TASK;
4143 task->isPeriodicTask_ = true;
4144 task->CanExecuteDelayed(env);
4145 napi_get_and_clear_last_exception(env, &exception);
4146 ASSERT_TRUE(exception != nullptr);
4147 delete task;
4148 }
4149
4150 HWTEST_F(NativeEngineTest, TaskpoolTest211, testing::ext::TestSize.Level0)
4151 {
4152 napi_env env = (napi_env)engine_;
4153 Task* task = new Task();
4154 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4155 task->taskType_ = TaskType::COMMON_TASK;
4156 task->isPeriodicTask_ = false;
4157 task->CanExecutePeriodically(env);
4158 napi_value exception = nullptr;
4159 napi_get_and_clear_last_exception(env, &exception);
4160 ASSERT_TRUE(exception != nullptr);
4161
4162 task->taskType_ = TaskType::COMMON_TASK;
4163 task->isPeriodicTask_ = true;
4164 task->CanExecutePeriodically(env);
4165 napi_get_and_clear_last_exception(env, &exception);
4166 ASSERT_TRUE(exception != nullptr);
4167
4168 task->taskType_ = TaskType::TASK;
4169 task->isPeriodicTask_ = true;
4170 task->CanExecutePeriodically(env);
4171 napi_get_and_clear_last_exception(env, &exception);
4172 ASSERT_TRUE(exception != nullptr);
4173
4174 task->taskType_ = TaskType::TASK;
4175 task->isPeriodicTask_ = false;
4176 task->hasDependency_ = true;
4177 task->CanExecutePeriodically(env);
4178 napi_get_and_clear_last_exception(env, &exception);
4179 ASSERT_TRUE(exception != nullptr);
4180 delete task;
4181 }
4182
4183 HWTEST_F(NativeEngineTest, TaskpoolTest212, testing::ext::TestSize.Level0)
4184 {
4185 napi_env env = (napi_env)engine_;
4186 Task* task = new Task();
4187 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4188 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4189 uv_update_time(loop);
4190 uv_timer_t* timer = new uv_timer_t;
4191 uv_timer_init(loop, timer);
4192 TaskMessage* taskMessage = new TaskMessage();
4193 taskMessage->priority = Priority::DEFAULT;
4194 taskMessage->taskId = task->taskId_;
4195 napi_value promise = NapiHelper::CreatePromise(env, &taskMessage->deferred);
4196 timer->data = taskMessage;
4197 task->delayedTimers_.insert(nullptr);
4198 task->delayedTimers_.insert(timer);
4199 task->ClearDelayedTimers();
4200 napi_value exception = nullptr;
4201 napi_get_and_clear_last_exception(env, &exception);
4202 ASSERT_TRUE(exception == nullptr);
4203 delete task;
4204 }
4205
4206 HWTEST_F(NativeEngineTest, TaskpoolTest213, testing::ext::TestSize.Level0)
4207 {
4208 napi_env env = (napi_env)engine_;
4209 Task* task = new Task();
4210 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4211 task->TryClearHasDependency();
4212 napi_value exception = nullptr;
4213 napi_get_and_clear_last_exception(env, &exception);
4214 ASSERT_TRUE(exception == nullptr);
4215
4216 NativeEngineTest::StoreDependentId(task->taskId_, task->taskId_);
4217 task->TryClearHasDependency();
4218 napi_get_and_clear_last_exception(env, &exception);
4219 ASSERT_TRUE(exception == nullptr);
4220
4221 Task* task1 = new Task();
4222 task1->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task1));
4223 NativeEngineTest::StoreDependentTaskId(task1->taskId_, task1->taskId_);
4224 task1->TryClearHasDependency();
4225 napi_get_and_clear_last_exception(env, &exception);
4226 ASSERT_TRUE(exception == nullptr);
4227
4228 NativeEngineTest::StoreDependentId(task1->taskId_, task1->taskId_);
4229 task1->TryClearHasDependency();
4230 napi_get_and_clear_last_exception(env, &exception);
4231 ASSERT_TRUE(exception == nullptr);
4232 delete task;
4233 }
4234
4235 HWTEST_F(NativeEngineTest, TaskpoolTest214, testing::ext::TestSize.Level0)
4236 {
4237 napi_env env = (napi_env)engine_;
4238 NativeEngineTest::InitTaskManager(env);
4239 NativeEngineTest::NotifyDependencyTaskInfo(env);
4240 NativeEngineTest::StoreTaskDependency(env);
4241 NativeEngineTest::RemoveTaskDependency(env);
4242 NativeEngineTest::ReleaseTaskData(env);
4243 NativeEngineTest::CancelGroupTask(env);
4244 NativeEngineTest::TriggerSeqRunner(env);
4245 NativeEngineTest::UpdateGroupState(env);
4246 napi_value exception = nullptr;
4247 napi_get_and_clear_last_exception(env, &exception);
4248 ASSERT_TRUE(exception != nullptr);
4249 }
4250
4251 HWTEST_F(NativeEngineTest, TaskpoolTest215, testing::ext::TestSize.Level0)
4252 {
4253 napi_env env = (napi_env)engine_;
4254 ExceptionScope scope(env);
4255 std::string func = "SeqRunnerConstructor";
4256 napi_value callback = nullptr;
4257 napi_value result = nullptr;
4258 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
4259 napi_value argv[2] = {nullptr};
4260 napi_create_string_utf8(env, "seq04", NAPI_AUTO_LENGTH, &argv[0]);
4261 napi_create_uint32(env, 5, &argv[1]);
4262 result = nullptr;
4263 napi_call_function(env, nullptr, callback, 2, argv, &result);
4264 ASSERT_EQ(result, nullptr);
4265 napi_value exception = nullptr;
4266 napi_get_and_clear_last_exception(env, &exception);
4267
4268 napi_value argv1[1] = {nullptr};
4269 napi_create_string_utf8(env, "seq05", NAPI_AUTO_LENGTH, &argv1[0]);
4270
4271 result = nullptr;
4272 napi_call_function(env, nullptr, callback, 1, argv1, &result);
4273 ASSERT_NE(result, nullptr);
4274 exception = nullptr;
4275 napi_get_and_clear_last_exception(env, &exception);
4276
4277 napi_value argv2[1] = {nullptr};
4278 napi_create_uint32(env, 5, &argv2[0]);
4279 result = nullptr;
4280 napi_call_function(env, nullptr, callback, 1, argv2, &result);
4281 ASSERT_EQ(result, nullptr);
4282 exception = nullptr;
4283 napi_get_and_clear_last_exception(env, &exception);
4284
4285 napi_value argv3[1] = {nullptr};
4286 result = nullptr;
4287 napi_call_function(env, nullptr, callback, 1, argv3, &result);
4288 ASSERT_EQ(result, nullptr);
4289 exception = nullptr;
4290 napi_get_and_clear_last_exception(env, &exception);
4291
4292 napi_value argv4[1] = {nullptr};
4293 napi_create_string_utf8(env, "seq05", NAPI_AUTO_LENGTH, &argv4[0]);
4294 result = nullptr;
4295 napi_call_function(env, nullptr, callback, 1, argv4, &result);
4296 ASSERT_NE(result, nullptr);
4297 }
4298
4299 HWTEST_F(NativeEngineTest, TaskpoolTest216, testing::ext::TestSize.Level0)
4300 {
4301 napi_env env = (napi_env)engine_;
4302 ExceptionScope scope(env);
4303 std::string func = "SeqRunnerConstructor";
4304 napi_value SeqCallback = nullptr;
4305 napi_value SeqResult = nullptr;
4306 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4307 napi_value SeqArgv[1] = {nullptr};
4308 napi_create_string_utf8(env, "seq06", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4309 napi_call_function(env, nullptr, SeqCallback, 1, SeqArgv, &SeqResult);
4310
4311 std::string funcName = "Execute";
4312 napi_value callback = nullptr;
4313 napi_value result = nullptr;
4314 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4315
4316 napi_value napiSeqRunnerId = NapiHelper::GetNameProperty(env, SeqResult, "seqRunnerId");
4317 uint64_t seqId = NapiHelper::GetUint64Value(env, napiSeqRunnerId);
4318 SequenceRunner seq;
4319 SequenceRunnerManager::GetInstance().StoreSequenceRunner(seqId, &seq);
4320
4321 napi_value thisValue = NapiHelper::CreateObject(env);
4322 napi_value num = nullptr;
4323 napi_create_uint32(env, 1, &num);
4324 napi_set_named_property(env, thisValue, "taskId", num);
4325 napi_value argv[] = {thisValue};
4326 napi_call_function(env, nullptr, callback, 1, argv, &result);
4327 ASSERT_EQ(result, nullptr);
4328 napi_value exception = nullptr;
4329 napi_get_and_clear_last_exception(env, &exception);
4330
4331 thisValue = CreateTaskObject(env, TaskType::COMMON_TASK);
4332 napi_value argv1[] = {thisValue};
4333 napi_call_function(env, nullptr, callback, 1, argv1, &result);
4334 ASSERT_EQ(result, nullptr);
4335 exception = nullptr;
4336 napi_get_and_clear_last_exception(env, &exception);
4337
4338 SequenceRunner seq1;
4339 seq1.currentTaskId_ = 1;
4340 NativeEngineTest::RemoveSequenceRunner(seqId);
4341 SequenceRunnerManager::GetInstance().StoreSequenceRunner(seqId, &seq1);
4342 thisValue = CreateTaskObject(env);
4343 napi_value argv2[] = {thisValue};
4344 napi_call_function(env, nullptr, callback, 1, argv2, &result);
4345 ASSERT_NE(result, nullptr);
4346 }
4347
4348 HWTEST_F(NativeEngineTest, TaskpoolTest217, testing::ext::TestSize.Level0)
4349 {
4350 napi_env env = (napi_env)engine_;
4351 NativeEngineTest::NotifyHandleTaskResult(env);
4352 napi_value exception = nullptr;
4353 napi_get_and_clear_last_exception(env, &exception);
4354 ASSERT_TRUE(exception == nullptr);
4355 }
4356
4357 HWTEST_F(NativeEngineTest, TaskpoolTest217_1, testing::ext::TestSize.Level0)
4358 {
4359 napi_env env = (napi_env)engine_;
4360 NativeEngineTest::TaskResultCallback(env);
4361 napi_value exception = nullptr;
4362 napi_get_and_clear_last_exception(env, &exception);
4363 ASSERT_TRUE(exception == nullptr);
4364 }
4365
4366 HWTEST_F(NativeEngineTest, TaskpoolTest217_2, testing::ext::TestSize.Level0)
4367 {
4368 napi_env env = (napi_env)engine_;
4369 NativeEngineTest::HandleFunctionResult(env);
4370 napi_value exception = nullptr;
4371 napi_get_and_clear_last_exception(env, &exception);
4372 ASSERT_TRUE(exception == nullptr);
4373 }
4374
4375 HWTEST_F(NativeEngineTest, TaskpoolTest217_3, testing::ext::TestSize.Level0)
4376 {
4377 napi_env env = (napi_env)engine_;
4378 NativeEngineTest::DebuggerOnPostTask(env);
4379 napi_value exception = nullptr;
4380 napi_get_and_clear_last_exception(env, &exception);
4381 ASSERT_TRUE(exception == nullptr);
4382 }
4383
4384 HWTEST_F(NativeEngineTest, TaskpoolTest217_4, testing::ext::TestSize.Level0)
4385 {
4386 napi_env env = (napi_env)engine_;
4387 NativeEngineTest::ReleaseWorkerHandles(env);
4388 napi_value exception = nullptr;
4389 napi_get_and_clear_last_exception(env, &exception);
4390 ASSERT_TRUE(exception == nullptr);
4391 }
4392
4393 HWTEST_F(NativeEngineTest, TaskpoolTest218, testing::ext::TestSize.Level0)
4394 {
4395 napi_env env = (napi_env)engine_;
4396 ExceptionScope scope(env);
4397 napi_value exception = nullptr;
4398 napi_value thisVar = NapiHelper::CreateObject(env);
4399 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
4400 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
4401 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
4402
4403 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4404 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
4405 GroupInfo* groupInfo = new GroupInfo();
4406 groupInfo->priority = Priority::DEFAULT;
4407 group->currentGroupInfo_ = groupInfo;
4408 group->groupState_ = ExecuteState::FINISHED;
4409 taskGroupManager.StoreTaskGroup(groupId, group);
4410 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
4411 ASSERT_TRUE(result != nullptr);
4412 }
4413
4414 HWTEST_F(NativeEngineTest, TaskpoolTest219, testing::ext::TestSize.Level0)
4415 {
4416 napi_env env = (napi_env)engine_;
4417 ExceptionScope scope(env);
4418 napi_value exception = nullptr;
4419 napi_value thisVar = NapiHelper::CreateObject(env);
4420 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
4421 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
4422 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
4423
4424 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4425 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
4426 GroupInfo* groupInfo = new GroupInfo();
4427 groupInfo->priority = Priority::DEFAULT;
4428 group->currentGroupInfo_ = groupInfo;
4429 group->groupState_ = ExecuteState::CANCELED;
4430 taskGroupManager.StoreTaskGroup(groupId, group);
4431 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
4432 ASSERT_TRUE(result != nullptr);
4433 }
4434
4435 HWTEST_F(NativeEngineTest, TaskpoolTest220, testing::ext::TestSize.Level0)
4436 {
4437 napi_env env = (napi_env)engine_;
4438 ExceptionScope scope(env);
4439 size_t delayTime = 1000;
4440 napi_value result = nullptr;
4441 napi_value num = nullptr;
4442 napi_value priority = nullptr;
4443 napi_value exception = nullptr;
4444 napi_create_uint32(env, delayTime, &num);
4445 napi_create_uint32(env, 1, &priority);
4446
4447 napi_value obj = CreateTaskObject(env, TaskType::TASK, ExecuteState::FINISHED);
4448 napi_value argv[] = { num, obj, priority };
4449 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
4450 ASSERT_TRUE(result != nullptr);
4451
4452 obj = CreateTaskObject(env);
4453 napi_value argv1[] = { num, obj, priority };
4454 result = NativeEngineTest::ExecuteDelayed(env, argv1, 3);
4455 ASSERT_TRUE(result != nullptr);
4456 }
4457
4458 HWTEST_F(NativeEngineTest, TaskpoolTest221, testing::ext::TestSize.Level0)
4459 {
4460 napi_env env = (napi_env)engine_;
4461 ExceptionScope scope(env);
4462 size_t delayTime = 1000;
4463 napi_value result = nullptr;
4464 napi_value num = nullptr;
4465 napi_value priority = nullptr;
4466 napi_value exception = nullptr;
4467 napi_create_uint32(env, delayTime, &num);
4468 napi_create_uint32(env, 1, &priority);
4469
4470 napi_value obj = CreateTaskObject(env, TaskType::COMMON_TASK, ExecuteState::FINISHED);
4471 napi_value argv[] = { num, obj, priority };
4472 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
4473 ASSERT_TRUE(result != nullptr);
4474
4475 obj = CreateTaskObject(env);
4476 napi_value argv1[] = { num, obj, priority };
4477 result = NativeEngineTest::ExecuteDelayed(env, argv1, 3);
4478 ASSERT_TRUE(result != nullptr);
4479 }
4480
4481 HWTEST_F(NativeEngineTest, TaskpoolTest222, testing::ext::TestSize.Level0)
4482 {
4483 napi_env env = (napi_env)engine_;
4484 ExceptionScope scope(env);
4485
4486 napi_value thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
4487 napi_value argv[] = {thisValue};
4488 napi_value result = NativeEngineTest::Execute(env, argv, 1);
4489 ASSERT_TRUE(result == nullptr);
4490 napi_value exception = nullptr;
4491 napi_get_and_clear_last_exception(env, &exception);
4492
4493 napi_value obj = NapiHelper::CreateObject(env);
4494 auto group = GeneratorTaskGroup(env, obj);
4495 napi_value argv1[] = {group};
4496 result = NativeEngineTest::Execute(env, argv1, 1);
4497 ASSERT_TRUE(result != nullptr);
4498
4499 napi_value value = nullptr;
__anon5b19175e0b02(napi_env env, napi_callback_info info) 4500 auto func = [](napi_env env, napi_callback_info info) -> napi_value {
4501 return nullptr;
4502 };
4503 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &value);
4504 napi_value argv2[] = {value};
4505 result = NativeEngineTest::Execute(env, argv2, 1);
4506 ASSERT_TRUE(result == nullptr);
4507 }
4508
4509 HWTEST_F(NativeEngineTest, TaskpoolTest223, testing::ext::TestSize.Level0)
4510 {
4511 napi_env env = (napi_env)engine_;
4512 ExceptionScope scope(env);
4513 TaskManager &taskManager = TaskManager::GetInstance();
4514 napi_value exception = nullptr;
4515 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4516 uv_update_time(loop);
4517 uv_timer_t* handle = new uv_timer_t;
4518 uv_timer_init(loop, handle);
4519 TaskMessage* taskMessage = new TaskMessage();
4520
4521 napi_value global = NapiHelper::CreateObject(env);
4522 auto napiTask = GeneratorTask(env, global);
4523 Task* task = nullptr;
4524 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4525 task->taskState_ = ExecuteState::CANCELED;
4526
4527 taskMessage->taskId = task->taskId_;
4528 handle->data = taskMessage;
4529 NativeEngineTest::DelayTask(handle);
4530 ASSERT_TRUE(true);
4531 }
4532
4533 HWTEST_F(NativeEngineTest, TaskpoolTest224, testing::ext::TestSize.Level0)
4534 {
4535 napi_env env = (napi_env)engine_;
4536 ExceptionScope scope(env);
4537 TaskManager &taskManager = TaskManager::GetInstance();
4538 napi_value exception = nullptr;
4539 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4540 uv_update_time(loop);
4541 uv_timer_t* handle = new uv_timer_t;
4542 uv_timer_init(loop, handle);
4543 TaskMessage* taskMessage = new TaskMessage();
4544
4545 napi_value global = NapiHelper::CreateObject(env);
4546 auto napiTask = GeneratorTask(env, global);
4547 Task* task = nullptr;
4548 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4549 task->taskState_ = ExecuteState::DELAYED;
4550 taskMessage->taskId = task->taskId_;
4551 handle->data = taskMessage;
4552 NativeEngineTest::DelayTask(handle);
4553 ASSERT_TRUE(true);
4554 }
4555
4556 HWTEST_F(NativeEngineTest, TaskpoolTest225, testing::ext::TestSize.Level0)
4557 {
4558 napi_env env = (napi_env)engine_;
4559 ExceptionScope scope(env);
4560 TaskManager &taskManager = TaskManager::GetInstance();
4561 napi_value exception = nullptr;
4562 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4563 uv_update_time(loop);
4564 uv_timer_t* handle = new uv_timer_t;
4565 uv_timer_init(loop, handle);
4566 TaskMessage* taskMessage = new TaskMessage();
4567
4568 napi_value global = NapiHelper::CreateObject(env);
4569 auto napiTask = GeneratorTask(env, global);
4570 Task* task = nullptr;
4571 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4572 task->taskState_ = ExecuteState::FINISHED;
4573 taskMessage->taskId = task->taskId_;
4574 handle->data = taskMessage;
4575 NativeEngineTest::DelayTask(handle);
4576 ASSERT_TRUE(true);
4577 }
4578
4579 HWTEST_F(NativeEngineTest, TaskpoolTest226, testing::ext::TestSize.Level0)
4580 {
4581 napi_env env = (napi_env)engine_;
4582 ExceptionScope scope(env);
4583 napi_value global = NapiHelper::CreateObject(env);
4584 auto napiTask = GeneratorTask(env, global);
4585 Task* task = nullptr;
4586 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4587 task->taskType_ = TaskType::GROUP_COMMON_TASK;
4588 TaskPool::HandleTaskResult(task);
4589 ASSERT_TRUE(true);
4590 }
4591
4592 HWTEST_F(NativeEngineTest, TaskpoolTest227, testing::ext::TestSize.Level0)
4593 {
4594 napi_env env = (napi_env)engine_;
4595 ExceptionScope scope(env);
4596
4597 napi_value thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK, ExecuteState::CANCELED);
4598 Task* task = nullptr;
4599 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
4600 TaskInfo* taskInfo = new TaskInfo();
4601 task->currentTaskInfo_ = taskInfo;
4602 task->seqRunnerId_ = 1;
4603 napi_value num = nullptr;
4604 napi_create_uint32(env, 1, &num);
4605 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
4606 task->onExecutionFailedCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
4607 TaskPool::HandleTaskResult(task);
4608 ASSERT_TRUE(true);
4609 }
4610
4611 HWTEST_F(NativeEngineTest, TaskpoolTest228, testing::ext::TestSize.Level0)
4612 {
4613 napi_env env = (napi_env)engine_;
4614 ExceptionScope scope(env);
4615
4616 napi_value thisValue = CreateTaskObject(env);
4617 Task* task = nullptr;
4618 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
4619 TaskInfo* taskInfo = new TaskInfo();
4620 task->currentTaskInfo_ = taskInfo;
4621 task->success_ = true;
4622 napi_value num = nullptr;
4623 napi_create_uint32(env, 1, &num);
4624 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
4625 task->onExecutionSucceededCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
4626 void* resultData = nullptr;
4627 napi_value undefined = NapiHelper::GetUndefinedValue(env);
4628 napi_status status = napi_serialize_inner(env, num, undefined, undefined,
4629 true, false, &resultData);
4630 task->result_ = resultData;
4631 TaskPool::HandleTaskResult(task);
4632 ASSERT_TRUE(true);
4633 }
4634
4635 HWTEST_F(NativeEngineTest, TaskpoolTest229, testing::ext::TestSize.Level0)
4636 {
4637 napi_env env = (napi_env)engine_;
4638 ExceptionScope scope(env);
4639 Task* task = new Task();
4640 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4641 task->taskId_ = taskId;
4642 napi_value thisValue = NapiHelper::CreateObject(env);
4643 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
4644
4645 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref);
4646
4647 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
4648 void* args = nullptr;
4649 TaskResultInfo* resultInfo = new TaskResultInfo(env, taskId, args);
4650 TaskManager::GetInstance().ExecuteSendData(env, resultInfo, task);
4651 napi_value exception = nullptr;
4652 napi_get_and_clear_last_exception(env, &exception);
4653 ASSERT_TRUE(exception != nullptr);
4654 }
4655
4656 HWTEST_F(NativeEngineTest, TaskpoolTest230, testing::ext::TestSize.Level0)
4657 {
4658 napi_env env = (napi_env)engine_;
4659 uv_timer_t* handle = new uv_timer_t;
4660 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4661
4662 TaskGroup* group = new TaskGroup();
4663 uint64_t groupId = reinterpret_cast<uint64_t>(group);
4664 group->groupId_ = groupId;
4665 Task* task = new Task();
4666 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4667 task->taskId_ = taskId;
4668 task->groupId_ = groupId;
4669
4670 group->taskIds_.push_back(taskId);
4671 handle->data = task;
4672
4673 GroupInfo* groupInfo = new GroupInfo();
4674 groupInfo->priority = Priority::DEFAULT;
4675 napi_value resArr;
4676 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
4677 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
4678 groupInfo->resArr = arrRef;
4679 NapiHelper::CreatePromise(env, &groupInfo->deferred);
4680 group->currentGroupInfo_ = groupInfo;
4681 group->taskNum_ = 2;
4682 taskGroupManager.StoreTaskGroup(groupId, group);
4683 napi_value value = NapiHelper::CreateUint64(env, groupId);
4684 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
4685 taskGroupManager.AddTask(groupId, reference, taskId);
4686
4687 napi_value res = nullptr;
4688 napi_create_uint32(env, 1, &res);
4689 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
4690 ASSERT_TRUE(true);
4691 }
4692
4693 HWTEST_F(NativeEngineTest, TaskpoolTest231, testing::ext::TestSize.Level0)
4694 {
4695 napi_env env = (napi_env)engine_;
4696 ExceptionScope scope(env);
4697 napi_value undefined = NapiHelper::GetUndefinedValue(env);
4698 napi_value thisVar = NapiHelper::CreateObject(env);
4699 napi_value taskGroup = GeneratorTaskGroup(env, thisVar);
4700 napi_value argv[] = {taskGroup};
4701 NativeEngineTest::Cancel(env, argv, 1);
4702 ASSERT_TRUE(true);
4703 }
4704
4705 HWTEST_F(NativeEngineTest, TaskpoolTest232, testing::ext::TestSize.Level0)
4706 {
4707 napi_env env = (napi_env)engine_;
4708 NativeEngineTest::PerformTask(env);
4709 napi_value exception = nullptr;
4710 napi_get_and_clear_last_exception(env, &exception);
4711 ASSERT_TRUE(exception == nullptr);
4712 }
4713
4714 HWTEST_F(NativeEngineTest, TaskpoolTest233, testing::ext::TestSize.Level0)
4715 {
4716 napi_env env = (napi_env)engine_;
4717 Task* task = new Task();
4718 task->SetValid(false);
4719 bool res = task->ShouldDeleteTask();
4720 ASSERT_TRUE(res);
4721 task->SetValid(true);
4722 task->lifecycleCount_ = 1;
4723 res = task->ShouldDeleteTask();
4724 ASSERT_TRUE(res == false);
4725 ASSERT_TRUE(task->lifecycleCount_ == 0);
4726 }
4727
4728 HWTEST_F(NativeEngineTest, TaskpoolTest234, testing::ext::TestSize.Level0)
4729 {
4730 napi_env env = (napi_env)engine_;
4731 std::string funcName = "GetName";
4732 napi_value cb = nullptr;
4733 napi_value result = nullptr;
4734 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetName, nullptr, &cb);
4735 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
4736 std::string taskName = NapiHelper::GetString(env, result);
4737 ASSERT_STREQ(taskName.c_str(), "");
4738 napi_value exception = nullptr;
4739 napi_get_and_clear_last_exception(env, &exception);
4740 ASSERT_TRUE(exception == nullptr);
4741 }
4742
4743 HWTEST_F(NativeEngineTest, TaskpoolTest235, testing::ext::TestSize.Level0)
4744 {
4745 napi_env env = (napi_env)engine_;
4746 std::string funcName = "GetTotalDuration";
4747 napi_value cb = nullptr;
4748 napi_value result = nullptr;
4749 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetTotalDuration, nullptr, &cb);
4750 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
4751 napi_value exception = nullptr;
4752 napi_get_and_clear_last_exception(env, &exception);
4753 ASSERT_TRUE(exception == nullptr);
4754 }
4755
4756 HWTEST_F(NativeEngineTest, TaskpoolTest236, testing::ext::TestSize.Level0)
4757 {
4758 napi_env env = (napi_env)engine_;
4759 napi_value global = NapiHelper::CreateObject(env);
4760 napi_value thisValue = CreateTaskObject(env);
4761
4762 std::string funcName = "GetName";
4763 napi_value cb = nullptr;
4764 napi_value result = nullptr;
4765 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetName, nullptr, &cb);
4766 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
4767 std::string taskName = NapiHelper::GetString(env, result);
4768 ASSERT_STREQ(taskName.c_str(), "");
4769 napi_value exception = nullptr;
4770 napi_get_and_clear_last_exception(env, &exception);
4771 ASSERT_TRUE(exception == nullptr);
4772 }
4773
4774 HWTEST_F(NativeEngineTest, TaskpoolTest237, testing::ext::TestSize.Level0)
4775 {
4776 napi_env env = (napi_env)engine_;
4777 NativeEngineTest::WorkerPostTask(env);
4778 napi_value exception = nullptr;
4779 napi_get_and_clear_last_exception(env, &exception);
4780 ASSERT_TRUE(exception == nullptr);
4781 }
4782
4783 HWTEST_F(NativeEngineTest, TaskpoolTest238, testing::ext::TestSize.Level0)
4784 {
4785 napi_env env = (napi_env)engine_;
4786 Task* task = new Task();
4787 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4788 task->taskId_ = taskId;
4789 task->isMainThreadTask_ = true;
4790 task->taskType_ = TaskType::FUNCTION_TASK;
4791 napi_value obj = NapiHelper::CreateObject(env);
4792 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
4793 Task::TaskDestructor(env, task, nullptr);
4794 napi_value exception = nullptr;
4795 napi_get_and_clear_last_exception(env, &exception);
4796 ASSERT_TRUE(exception == nullptr);
4797 }
4798
4799 HWTEST_F(NativeEngineTest, TaskpoolTest239, testing::ext::TestSize.Level0)
4800 {
4801 napi_env env = (napi_env)engine_;
4802 Task* task = new Task();
4803 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4804 task->taskId_ = taskId;
4805 task->isMainThreadTask_ = false;
4806 task->taskType_ = TaskType::FUNCTION_TASK;
4807 napi_value obj = NapiHelper::CreateObject(env);
4808 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
4809 task->lifecycleCount_.fetch_add(1);
4810 napi_add_env_cleanup_hook(env, Task::CleanupHookFunc, task);
4811 Task::TaskDestructor(env, task, nullptr);
4812 napi_value exception = nullptr;
4813 napi_get_and_clear_last_exception(env, &exception);
4814 ASSERT_TRUE(exception == nullptr);
4815 }
4816
4817 HWTEST_F(NativeEngineTest, TaskpoolTest240, testing::ext::TestSize.Level0)
4818 {
4819 napi_env env = (napi_env)engine_;
4820 Task::CleanupHookFunc(nullptr);
4821 Task* task = new Task();
4822 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4823 task->taskId_ = taskId;
4824 auto loop = NapiHelper::GetLibUV(env);
4825 ConcurrentHelper::UvHandleInit(loop, task->onStartExecutionSignal_, NativeEngineTest::foo, task);
4826 task->taskType_ = TaskType::FUNCTION_TASK;
4827 Task::CleanupHookFunc(task);
4828 napi_value exception = nullptr;
4829 napi_get_and_clear_last_exception(env, &exception);
4830 ASSERT_TRUE(exception == nullptr);
4831 }
4832
4833 HWTEST_F(NativeEngineTest, TaskpoolTest241, testing::ext::TestSize.Level0)
4834 {
4835 napi_env env = (napi_env)engine_;
4836 Task* task = new Task();
4837 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4838 task->taskId_ = taskId;
4839 napi_value obj = NapiHelper::CreateObject(env);
4840 task->GetTaskInfoPromise(env, obj, TaskType::FUNCTION_TASK, Priority::DEFAULT);
4841 napi_value exception = nullptr;
4842 napi_get_and_clear_last_exception(env, &exception);
4843 ASSERT_TRUE(exception == nullptr);
4844 }
4845
4846 HWTEST_F(NativeEngineTest, TaskpoolTest242, testing::ext::TestSize.Level0)
4847 {
4848 napi_env env = (napi_env)engine_;
4849 napi_value func = nullptr;
4850 GetSendableFunction(env, "foo", func);
4851 napi_value argv[1] = { func };
4852 std::string funcName = "OnStartExecution";
4853 napi_value cb = nullptr;
4854 napi_value result = nullptr;
4855 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
4856 napi_call_function(env, nullptr, cb, 1, argv, &result);
4857 napi_value exception = nullptr;
4858 napi_get_and_clear_last_exception(env, &exception);
4859 ASSERT_TRUE(exception == nullptr);
4860 }
4861
4862 HWTEST_F(NativeEngineTest, TaskpoolTest243, testing::ext::TestSize.Level0)
4863 {
4864 napi_env env = (napi_env)engine_;
4865 Task* task = new Task();
4866 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4867 task->taskId_ = taskId;
4868 task->taskState_ = ExecuteState::CANCELED;
4869 task->UpdateTask(0, nullptr);
4870 task->isMainThreadTask_ = false;
4871 task->SetValid(false);
4872 Task::VerifyAndPostResult(task, Priority::DEFAULT);
4873 task->SetValid(true);
4874 Task::VerifyAndPostResult(task, Priority::DEFAULT);
4875 napi_value exception = nullptr;
4876 napi_get_and_clear_last_exception(env, &exception);
4877 ASSERT_TRUE(exception == nullptr);
4878 }
4879
4880 HWTEST_F(NativeEngineTest, TaskpoolTest244, testing::ext::TestSize.Level0)
4881 {
4882 napi_env env = (napi_env)engine_;
4883 Task* task = new Task();
4884 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4885 task->taskId_ = taskId;
4886 task->isMainThreadTask_ = true;
4887 Task::VerifyAndPostResult(task, Priority::DEFAULT);
4888 napi_value exception = nullptr;
4889 napi_get_and_clear_last_exception(env, &exception);
4890 ASSERT_TRUE(exception == nullptr);
4891 }
4892
4893 HWTEST_F(NativeEngineTest, TaskpoolTest245, testing::ext::TestSize.Level0)
4894 {
4895 napi_env env = (napi_env)engine_;
4896 Task* task = new Task();
4897 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4898 task->taskId_ = taskId;
4899 task->env_ = env;
4900 task->isMainThreadTask_ = false;
4901 task->onStartExecutionSignal_ = nullptr;
4902 task->CheckStartExecution(Priority::DEFAULT);
4903 auto loop = NapiHelper::GetLibUV(env);
4904 ConcurrentHelper::UvHandleInit(loop, task->onStartExecutionSignal_, NativeEngineTest::foo, task);
4905 task->SetValid(false);
4906 task->CheckStartExecution(Priority::DEFAULT);
4907 task->SetValid(true);
4908 task->CheckStartExecution(Priority::DEFAULT);
4909 napi_value exception = nullptr;
4910 napi_get_and_clear_last_exception(env, &exception);
4911 ASSERT_TRUE(exception == nullptr);
4912 }
4913
4914 HWTEST_F(NativeEngineTest, TaskpoolTest246, testing::ext::TestSize.Level0)
4915 {
4916 napi_env env = (napi_env)engine_;
4917 Task* task = new Task();
4918 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4919 task->taskId_ = taskId;
4920 task->env_ = env;
4921 task->isMainThreadTask_ = true;
4922 task->onStartExecutionCallBackInfo_ = nullptr;
4923 task->CheckStartExecution(Priority::DEFAULT);
4924 napi_value exception = nullptr;
4925 napi_get_and_clear_last_exception(env, &exception);
4926 ASSERT_TRUE(exception == nullptr);
4927 }
4928
4929 HWTEST_F(NativeEngineTest, TaskpoolTest247, testing::ext::TestSize.Level0)
4930 {
4931 napi_env env = (napi_env)engine_;
4932 Task* task = new Task();
4933 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
4934 task->taskId_ = taskId;
4935 task->env_ = env;
4936 task->isMainThreadTask_ = false;
4937 auto loop = NapiHelper::GetLibUV(env);
4938 ConcurrentHelper::UvHandleInit(loop, task->onStartExecutionSignal_, NativeEngineTest::foo, task);
4939 TaskManager::GetInstance().ReleaseCallBackInfo(task);
4940 napi_value exception = nullptr;
4941 napi_get_and_clear_last_exception(env, &exception);
4942 ASSERT_TRUE(exception == nullptr);
4943 }
4944
4945 HWTEST_F(NativeEngineTest, TaskpoolTest248, testing::ext::TestSize.Level0)
4946 {
4947 napi_env env = (napi_env)engine_;
4948 ExceptionScope scope(env);
4949 std::string func = "SeqRunnerConstructor";
4950 napi_value thisValue = NapiHelper::CreateObject(env);
4951 napi_value SeqCallback = nullptr;
4952 napi_value SeqResult = nullptr;
4953 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4954 napi_value SeqArgv[1] = {nullptr};
4955 napi_create_string_utf8(env, "seq248", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4956 napi_call_function(env, thisValue, SeqCallback, 1, SeqArgv, &SeqResult);
4957
4958 std::string funcName = "Execute";
4959 napi_value callback = nullptr;
4960 napi_value result = nullptr;
4961 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4962
4963 napi_value task = CreateTaskObject(env);
4964 napi_value argv[] = {task};
4965 napi_call_function(env, thisValue, callback, 1, argv, &result);
4966 ASSERT_NE(result, nullptr);
4967 }
4968
4969 HWTEST_F(NativeEngineTest, TaskpoolTest249, testing::ext::TestSize.Level0)
4970 {
4971 napi_env env = (napi_env)engine_;
4972 ExceptionScope scope(env);
4973 std::string func = "SeqRunnerConstructor";
4974 napi_value thisValue = NapiHelper::CreateObject(env);
4975 napi_value SeqCallback = nullptr;
4976 napi_value SeqResult = nullptr;
4977 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4978 napi_value SeqArgv[1] = {nullptr};
4979 napi_create_string_utf8(env, "seq249", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4980 napi_call_function(env, thisValue, SeqCallback, 1, SeqArgv, &SeqResult);
4981
4982 std::string funcName = "Execute";
4983 napi_value callback = nullptr;
4984 napi_value result = nullptr;
4985 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4986
4987 napi_value task = CreateTaskObject(env);
4988 napi_value argv[] = {task};
4989 napi_call_function(env, thisValue, callback, 1, argv, &result);
4990 ASSERT_NE(result, nullptr);
4991 }
4992
4993 HWTEST_F(NativeEngineTest, TaskpoolTest250, testing::ext::TestSize.Level0)
4994 {
4995 napi_env env = (napi_env)engine_;
4996 ExceptionScope scope(env);
4997 std::string funcName = "AsyncRunnerConstructor250";
4998 napi_value cb = nullptr;
4999 napi_value result = nullptr;
5000 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5001 napi_value nameNumber = NapiHelper::CreateUint32(env, 5);
5002 napi_value runningCapacity = NapiHelper::CreateUint32(env, 5);
5003 napi_value waitingCapacity = nullptr;
5004 napi_create_int32(env, -1, &waitingCapacity);
5005 napi_value argv[] = {nameNumber, runningCapacity, waitingCapacity};
5006 napi_call_function(env, nullptr, cb, 3, argv, &result);
5007 ASSERT_EQ(result, nullptr);
5008 napi_value exception = nullptr;
5009 napi_get_and_clear_last_exception(env, &exception);
5010
5011 napi_value argv2[] = {runningCapacity, waitingCapacity};
5012 napi_call_function(env, nullptr, cb, 2, argv2, &result);
5013 ASSERT_EQ(result, nullptr);
5014 }
5015
5016 HWTEST_F(NativeEngineTest, TaskpoolTest251, testing::ext::TestSize.Level0)
5017 {
5018 napi_env env = (napi_env)engine_;
5019 ExceptionScope scope(env);
5020 std::string funcName = "AsyncRunnerConstructor251";
5021 napi_value cb = nullptr;
5022 napi_value result = nullptr;
5023 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5024 napi_value runningCapacity = NapiHelper::CreateUint32(env, 5);
5025 napi_value argv[] = {nullptr, runningCapacity};
5026 napi_call_function(env, nullptr, cb, 2, argv, &result);
5027 ASSERT_EQ(result, nullptr);
5028 }
5029
5030 HWTEST_F(NativeEngineTest, TaskpoolTest252, testing::ext::TestSize.Level0)
5031 {
5032 napi_env env = (napi_env)engine_;
5033 ExceptionScope scope(env);
5034 std::string funcName = "AsyncRunnerConstructor252";
5035 napi_value cb = nullptr;
5036 napi_value result = nullptr;
5037 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5038 napi_value name = GetNapiString(env, "async252");
5039 napi_value argv[] = {name, name};
5040 napi_call_function(env, nullptr, cb, 2, argv, &result);
5041 ASSERT_EQ(result, nullptr);
5042 }
5043
5044 HWTEST_F(NativeEngineTest, TaskpoolTest253, testing::ext::TestSize.Level0)
5045 {
5046 napi_env env = (napi_env)engine_;
5047 ExceptionScope scope(env);
5048 std::string funcName = "AsyncRunnerConstructor253";
5049 napi_value cb = nullptr;
5050 napi_value result = nullptr;
5051 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5052 napi_value runningCapacity = NapiHelper::CreateUint32(env, 0);
5053 napi_value argv[] = {runningCapacity};
5054 napi_call_function(env, nullptr, cb, 1, argv, &result);
5055 ASSERT_EQ(result, nullptr);
5056 }
5057
5058 HWTEST_F(NativeEngineTest, TaskpoolTest254, testing::ext::TestSize.Level0)
5059 {
5060 napi_env env = (napi_env)engine_;
5061 ExceptionScope scope(env);
5062 std::string funcName = "AsyncRunnerConstructor254";
5063 napi_value cb = nullptr;
5064 napi_value result = nullptr;
5065 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5066 napi_value runningCapacity = NapiHelper::CreateUint32(env, 5);
5067 napi_value name = GetNapiString(env, "async254");
5068 napi_value argv[] = {runningCapacity, name};
5069 napi_call_function(env, nullptr, cb, 2, argv, &result);
5070 ASSERT_EQ(result, nullptr);
5071 }
5072
5073 HWTEST_F(NativeEngineTest, TaskpoolTest255, testing::ext::TestSize.Level0)
5074 {
5075 napi_env env = (napi_env)engine_;
5076 ExceptionScope scope(env);
5077 std::string funcName = "AsyncRunnerConstructor255";
5078 napi_value cb = nullptr;
5079 napi_value result = nullptr;
5080 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5081 napi_value runningCapacity = NapiHelper::CreateUint32(env, 5);
5082 napi_value argv[] = {runningCapacity};
5083 napi_value obj = NapiHelper::CreateObject(env);
5084 napi_call_function(env, obj, cb, 1, argv, &result);
5085 ASSERT_NE(result, nullptr);
5086 }
5087
5088 HWTEST_F(NativeEngineTest, TaskpoolTest256, testing::ext::TestSize.Level0)
5089 {
5090 napi_env env = (napi_env)engine_;
5091 ExceptionScope scope(env);
5092 NativeEngineTest::CheckAndCreateAsyncRunner(env, nullptr, nullptr, nullptr);
5093 napi_value exception = nullptr;
5094 napi_get_and_clear_last_exception(env, &exception);
5095 ASSERT_NE(exception, nullptr);
5096 }
5097
5098 HWTEST_F(NativeEngineTest, TaskpoolTest257, testing::ext::TestSize.Level0)
5099 {
5100 napi_env env = (napi_env)engine_;
5101 ExceptionScope scope(env);
5102
5103 std::string asyncName = "async257";
5104 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5105 napi_value global = NapiHelper::GetGlobalObject(env);
5106 uint32_t capacity = 5;
5107 asyncRunnerManager.CreateOrGetGlobalRunner(env, global, asyncName, capacity, capacity);
5108
5109 std::string funcName = "AsyncRunnerConstructor257";
5110 napi_value cb = nullptr;
5111 napi_value result = nullptr;
5112 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5113 napi_value runningCapacity = NapiHelper::CreateUint32(env, 3);
5114 napi_value name = GetNapiString(env, asyncName.c_str());
5115 napi_value argv1[] = {name, runningCapacity};
5116 napi_call_function(env, nullptr, cb, 2, argv1, &result);
5117 ASSERT_EQ(result, nullptr);
5118 napi_value exception = nullptr;
5119 napi_get_and_clear_last_exception(env, &exception);
5120
5121 result = nullptr;
5122 napi_value runningCapacity2 = NapiHelper::CreateUint32(env, 5);
5123 napi_value argv2[] = {name, runningCapacity2};
5124 napi_call_function(env, nullptr, cb, 2, argv2, &result);
5125 ASSERT_EQ(result, nullptr);
5126 exception = nullptr;
5127 napi_get_and_clear_last_exception(env, &exception);
5128
5129 asyncRunnerManager.CreateOrGetGlobalRunner(env, global, asyncName, capacity, capacity);
5130 exception = nullptr;
5131 napi_get_and_clear_last_exception(env, &exception);
5132 ASSERT_EQ(exception, nullptr);
5133 }
5134
5135 HWTEST_F(NativeEngineTest, TaskpoolTest258, testing::ext::TestSize.Level0)
5136 {
5137 napi_env env = (napi_env)engine_;
5138 ExceptionScope scope(env);
5139 std::string funcName = "Execute258";
5140 napi_value cb = nullptr;
5141 napi_value result = nullptr;
5142 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5143
5144 napi_value obj = NapiHelper::CreateObject(env);
5145 napi_value priority = NapiHelper::CreateUint32(env, 1);
5146 napi_value argv[] = {obj, priority};
5147 napi_call_function(env, nullptr, cb, 2, argv, &result);
5148 ASSERT_EQ(result, nullptr);
5149 }
5150
5151 HWTEST_F(NativeEngineTest, TaskpoolTest259, testing::ext::TestSize.Level0)
5152 {
5153 napi_env env = (napi_env)engine_;
5154 ExceptionScope scope(env);
5155 std::string funcName = "Execute259";
5156 napi_value cb = nullptr;
5157 napi_value result = nullptr;
5158 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5159
5160 napi_value argv1[] = {nullptr};
5161 napi_call_function(env, nullptr, cb, 0, argv1, &result);
5162 ASSERT_EQ(result, nullptr);
5163 napi_value exception = nullptr;
5164 napi_get_and_clear_last_exception(env, &exception);
5165
5166 napi_value priority = NapiHelper::CreateUint32(env, 1);
5167 napi_value argv2[] = {priority, priority, priority};
5168 result = nullptr;
5169 napi_call_function(env, nullptr, cb, 3, argv2, &result);
5170 ASSERT_EQ(result, nullptr);
5171 }
5172
5173 HWTEST_F(NativeEngineTest, TaskpoolTest260, testing::ext::TestSize.Level0)
5174 {
5175 napi_env env = (napi_env)engine_;
5176 ExceptionScope scope(env);
5177 std::string funcName = "Execute260";
5178 napi_value cb = nullptr;
5179 napi_value result = nullptr;
5180 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5181
5182 napi_value priority = NapiHelper::CreateUint32(env, 4);
5183 napi_value argv[] = {priority, priority};
5184 napi_call_function(env, nullptr, cb, 2, argv, &result);
5185 ASSERT_EQ(result, nullptr);
5186 }
5187
5188 HWTEST_F(NativeEngineTest, TaskpoolTest261, testing::ext::TestSize.Level0)
5189 {
5190 napi_env env = (napi_env)engine_;
5191 ExceptionScope scope(env);
5192 std::string funcName = "Execute261";
5193 napi_value cb = nullptr;
5194 napi_value result = nullptr;
5195 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5196
5197 napi_value obj = NapiHelper::CreateObject(env);
5198 napi_value task = GeneratorTask(env, obj);
5199 napi_value argv1[] = {task, task};
5200 napi_call_function(env, nullptr, cb, 2, argv1, &result);
5201 ASSERT_EQ(result, nullptr);
5202 napi_value exception = nullptr;
5203 napi_get_and_clear_last_exception(env, &exception);
5204
5205 napi_value priority = NapiHelper::CreateUint32(env, 4);
5206 napi_value argv2[] = {task, priority};
5207 result = nullptr;
5208 napi_call_function(env, nullptr, cb, 2, argv2, &result);
5209 ASSERT_EQ(result, nullptr);
5210 }
5211
5212 HWTEST_F(NativeEngineTest, TaskpoolTest262, testing::ext::TestSize.Level0)
5213 {
5214 napi_env env = (napi_env)engine_;
5215 ExceptionScope scope(env);
5216 std::string funcName = "Execute262";
5217 napi_value cb = nullptr;
5218 napi_value result = nullptr;
5219 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5220
5221 napi_value obj = NapiHelper::CreateObject(env);
5222 napi_value task = GeneratorTask(env, obj);
5223 napi_value priority = NapiHelper::CreateUint32(env, 1);
5224 napi_value argv[] = {task, priority};
5225 napi_call_function(env, nullptr, cb, 2, argv, &result);
5226 ASSERT_NE(result, nullptr);
5227 }
5228
5229 HWTEST_F(NativeEngineTest, TaskpoolTest263, testing::ext::TestSize.Level0)
5230 {
5231 napi_env env = (napi_env)engine_;
5232 ExceptionScope scope(env);
5233 napi_value asyncGlobal = NapiHelper::CreateObject(env);
5234 std::string conName = "AsyncRunnerConstructor263";
5235 napi_value callback = nullptr;
5236 napi_value asyncResult = nullptr;
5237 napi_create_function(env, conName.c_str(), conName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &callback);
5238 napi_value runningCapacity = NapiHelper::CreateUint32(env, 3);
5239 napi_value asyncArgv[] = {runningCapacity, runningCapacity};
5240 napi_call_function(env, asyncGlobal, callback, 2, asyncArgv, &asyncResult);
5241
5242 std::string funcName = "Execute263";
5243 napi_value cb = nullptr;
5244 napi_value result = nullptr;
5245 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5246 napi_value obj = NapiHelper::CreateObject(env);
5247 napi_value task = GeneratorTask(env, obj);
5248 napi_value priority = NapiHelper::CreateUint32(env, 1);
5249 napi_value argv[] = {task, priority};
5250 napi_call_function(env, asyncGlobal, cb, 2, argv, &result);
5251 ASSERT_NE(result, nullptr);
5252 napi_value exception = nullptr;
5253 napi_get_and_clear_last_exception(env, &exception);
5254
5255 napi_value task2 = CreateTaskObject(env, TaskType::ASYNCRUNNER_TASK);
5256 napi_value argv2[] = {task2, priority};
5257 result = nullptr;
5258 napi_call_function(env, asyncGlobal, cb, 2, argv2, &result);
5259 ASSERT_EQ(result, nullptr);
5260 }
5261
5262 HWTEST_F(NativeEngineTest, TaskpoolTest264, testing::ext::TestSize.Level0)
5263 {
5264 napi_env env = (napi_env)engine_;
5265 ExceptionScope scope(env);
5266 napi_value asyncGlobal = NapiHelper::CreateObject(env);
5267 std::string conName = "AsyncRunnerConstructor264";
5268 napi_value callback = nullptr;
5269 napi_value asyncResult = nullptr;
5270 napi_create_function(env, conName.c_str(), conName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &callback);
5271 napi_value runningCapacity = NapiHelper::CreateUint32(env, 1);
5272 napi_value asyncArgv[] = {runningCapacity, runningCapacity};
5273 napi_call_function(env, asyncGlobal, callback, 2, asyncArgv, &asyncResult);
5274
5275 std::string funcName = "Execute264";
5276 napi_value cb = nullptr;
5277 napi_value result = nullptr;
5278 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5279 napi_value task1 = CreateTaskObject(env);
5280 napi_value priority = NapiHelper::CreateUint32(env, 1);
5281 napi_value argv1[] = {task1, priority};
5282 napi_call_function(env, asyncGlobal, cb, 2, argv1, &result);
5283 ASSERT_NE(result, nullptr);
5284
5285 napi_value task2 = CreateTaskObject(env);
5286 napi_value argv2[] = {task2, priority};
5287 result = nullptr;
5288 napi_call_function(env, asyncGlobal, cb, 2, argv2, &result);
5289 ASSERT_NE(result, nullptr);
5290
5291 napi_value task3 = CreateTaskObject(env);
5292 napi_value argv3[] = {task3, priority};
5293 result = nullptr;
5294 napi_call_function(env, asyncGlobal, cb, 2, argv3, &result);
5295 ASSERT_NE(result, nullptr);
5296 }
5297
5298 HWTEST_F(NativeEngineTest, TaskpoolTest265, testing::ext::TestSize.Level0)
5299 {
5300 napi_env env = (napi_env)engine_;
5301 ExceptionScope scope(env);
5302 void* data = nullptr;
5303 NativeEngineTest::AsyncRunnerDestructor(nullptr, data);
5304 NativeEngineTest::AsyncRunnerDestructor(env, data);
5305 AsyncRunner* asyncRunner = new AsyncRunner();
5306 asyncRunner->asyncRunnerId_ = 265;
5307 void* data2 = static_cast<void*>(asyncRunner);
5308 NativeEngineTest::AsyncRunnerDestructor(env, data2);
5309 ASSERT_TRUE(true);
5310 }
5311
5312 HWTEST_F(NativeEngineTest, TaskpoolTest266, testing::ext::TestSize.Level0)
5313 {
5314 napi_env env = (napi_env)engine_;
5315 ExceptionScope scope(env);
5316 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5317 Task* task = new Task();
5318 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5319 asyncRunnerManager.TriggerAsyncRunner(env, task);
5320
5321 AsyncRunner* asyncRunner = new AsyncRunner();
5322 asyncRunner->runningCapacity_ = 1;
5323 asyncRunner->waitingCapacity_ = 1;
5324 asyncRunner->runningCount_ = 1;
5325 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5326 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5327 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5328
5329 Task* task2 = new Task();
5330 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5331 TaskInfo* taskInfo = new TaskInfo();
5332 task2->currentTaskInfo_ = taskInfo;
5333 void* data2 = reinterpret_cast<void*>(task2);
5334 void* async = reinterpret_cast<void*>(asyncRunner);
5335 NativeEngineTest::AddTasksToAsyncRunner(async, data2);
5336 asyncRunnerManager.TriggerAsyncRunner(env, task);
5337 delete task;
5338 ASSERT_TRUE(true);
5339 }
5340
5341 HWTEST_F(NativeEngineTest, TaskpoolTest267, testing::ext::TestSize.Level0)
5342 {
5343 napi_env env = (napi_env)engine_;
5344 ExceptionScope scope(env);
5345 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5346 Task* task = new Task();
5347 task->taskState_ = ExecuteState::FINISHED;
5348 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
5349 napi_value exception = nullptr;
5350 napi_get_and_clear_last_exception(env, &exception);
5351 ASSERT_NE(exception, nullptr);
5352
5353 task->taskState_ = ExecuteState::ENDING;
5354 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
5355 exception = nullptr;
5356 napi_get_and_clear_last_exception(env, &exception);
5357 ASSERT_NE(exception, nullptr);
5358
5359 task->taskState_ = ExecuteState::RUNNING;
5360 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
5361
5362 task->taskState_ = ExecuteState::WAITING;
5363 TaskInfo* taskInfo = new TaskInfo();
5364 task->currentTaskInfo_ = taskInfo;
5365 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
5366 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
5367 delete task;
5368 ASSERT_TRUE(true);
5369 }
5370
5371 HWTEST_F(NativeEngineTest, TaskpoolTest268, testing::ext::TestSize.Level0)
5372 {
5373 napi_env env = (napi_env)engine_;
5374 ExceptionScope scope(env);
5375 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5376 Task* task = new Task();
5377
5378 AsyncRunner* asyncRunner = new AsyncRunner();
5379 asyncRunner->runningCapacity_ = 1;
5380 asyncRunner->waitingCapacity_ = 1;
5381 asyncRunner->runningCount_ = 1;
5382 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5383 asyncRunner->IncreaseAsyncCount();
5384 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5385 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5386 bool flag = asyncRunnerManager.TriggerAsyncRunner(env, task);
5387 ASSERT_TRUE(flag);
5388 delete task;
5389 }
5390
5391 HWTEST_F(NativeEngineTest, TaskpoolTest269, testing::ext::TestSize.Level0)
5392 {
5393 napi_env env = (napi_env)engine_;
5394 ExceptionScope scope(env);
5395 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5396
5397 std::string asyncName = "async269";
5398 napi_value obj = NapiHelper::CreateObject(env);
5399 AsyncRunner* asyncRunner = asyncRunnerManager.CreateOrGetGlobalRunner(env, obj, asyncName, 5, 0);
5400 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5401 asyncRunner->isGlobalRunner_ = true;
5402 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5403
5404 Task* task = new Task();
5405 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5406
5407 Task* task2 = new Task();
5408 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5409 task2->taskState_ = ExecuteState::CANCELED;
5410 TaskInfo* taskInfo = new TaskInfo();
5411 task2->currentTaskInfo_ = taskInfo;
5412 void* data2 = reinterpret_cast<void*>(task2);
5413 void* async = reinterpret_cast<void*>(asyncRunner);
5414 NativeEngineTest::AddTasksToAsyncRunner(async, data2);
5415 asyncRunner->IncreaseAsyncCount();
5416
5417 Task* task3 = new Task();
5418 task3->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5419 task3->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task3));
5420 void* data3 = reinterpret_cast<void*>(task3);
5421 NativeEngineTest::AddTasksToAsyncRunner(async, data3);
5422 asyncRunner->IncreaseAsyncCount();
5423 bool flag = asyncRunnerManager.TriggerAsyncRunner(env, task);
5424 ASSERT_TRUE(flag);
5425
5426 delete task;
5427 delete task2;
5428 delete task3;
5429 }
5430
5431 HWTEST_F(NativeEngineTest, TaskpoolTest270, testing::ext::TestSize.Level0)
5432 {
5433 napi_env env = (napi_env)engine_;
5434 ExceptionScope scope(env);
5435
5436 napi_value asyncGlobal = NapiHelper::CreateObject(env);
5437 std::string conName = "AsyncRunnerConstructor270";
5438 napi_value callback = nullptr;
5439 napi_value asyncResult = nullptr;
5440 napi_create_function(env, conName.c_str(), conName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &callback);
5441 std::string asyncName = "async270";
5442 napi_value name = GetNapiString(env, asyncName.c_str());
5443 napi_value runningCapacity = NapiHelper::CreateUint32(env, 1);
5444 napi_value asyncArgv[] = {name, runningCapacity, runningCapacity};
5445 napi_call_function(env, asyncGlobal, callback, 3, asyncArgv, &asyncResult);
5446
5447 std::string funcName = "Execute270";
5448 napi_value cb = nullptr;
5449 napi_value result = nullptr;
5450 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::Execute, nullptr, &cb);
5451 napi_value task = CreateTaskObject(env);
5452 napi_value priority = NapiHelper::CreateUint32(env, 1);
5453 napi_value argv[] = {task, priority};
5454 napi_call_function(env, asyncGlobal, cb, 2, argv, &result);
5455 ASSERT_NE(result, nullptr);
5456
5457 std::string funcName2 = "Execute270-1";
5458 napi_value cb2 = nullptr;
5459 napi_value result2 = nullptr;
5460 napi_create_function(env, funcName2.c_str(), funcName2.size(), AsyncRunner::Execute, nullptr, &cb2);
5461 napi_value task2 = CreateTaskObject(env);
5462 napi_value argv2[] = {task2, priority};
5463 napi_call_function(env, asyncGlobal, cb2, 2, argv2, &result2);
5464 napi_value exception = nullptr;
5465 napi_get_and_clear_last_exception(env, &exception);
5466 ASSERT_EQ(exception, nullptr);
5467 }
5468
5469 HWTEST_F(NativeEngineTest, TaskpoolTest271, testing::ext::TestSize.Level0)
5470 {
5471 napi_env env = (napi_env)engine_;
5472 ExceptionScope scope(env);
5473 Task* task = new Task();
5474 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5475 bool flag = task->CanForSequenceRunner(env);
5476 ASSERT_FALSE(flag);
5477 napi_value exception = nullptr;
5478 napi_get_and_clear_last_exception(env, &exception);
5479
5480 flag = task->CanForTaskGroup(env);
5481 ASSERT_FALSE(flag);
5482 exception = nullptr;
5483 napi_get_and_clear_last_exception(env, &exception);
5484
5485 flag = task->CanExecute(env);
5486 ASSERT_FALSE(flag);
5487 exception = nullptr;
5488 napi_get_and_clear_last_exception(env, &exception);
5489
5490 flag = task->CanExecuteDelayed(env);
5491 ASSERT_FALSE(flag);
5492 exception = nullptr;
5493 napi_get_and_clear_last_exception(env, &exception);
5494
5495 flag = task->CanExecutePeriodically(env);
5496 ASSERT_FALSE(flag);
5497 delete task;
5498 }
5499
5500 HWTEST_F(NativeEngineTest, TaskpoolTest272, testing::ext::TestSize.Level0)
5501 {
5502 napi_env env = (napi_env)engine_;
5503 ExceptionScope scope(env);
5504 Task* task = new Task();
5505 task->hasDependency_ = true;
5506 bool flag = task->CanForAsyncRunner(env);
5507 ASSERT_FALSE(flag);
5508 napi_value exception = nullptr;
5509 napi_get_and_clear_last_exception(env, &exception);
5510
5511 task->hasDependency_ = false;
5512 task->isPeriodicTask_ = true;
5513 flag = task->CanForAsyncRunner(env);
5514 ASSERT_FALSE(flag);
5515 exception = nullptr;
5516 napi_get_and_clear_last_exception(env, &exception);
5517
5518 task->isPeriodicTask_ = false;
5519 task->taskType_ = TaskType::COMMON_TASK;
5520 flag = task->CanForAsyncRunner(env);
5521 ASSERT_FALSE(flag);
5522 exception = nullptr;
5523 napi_get_and_clear_last_exception(env, &exception);
5524
5525 task->taskType_ = TaskType::SEQRUNNER_TASK;
5526 flag = task->CanForAsyncRunner(env);
5527 ASSERT_FALSE(flag);
5528 exception = nullptr;
5529 napi_get_and_clear_last_exception(env, &exception);
5530
5531 task->taskType_ = TaskType::GROUP_COMMON_TASK;
5532 flag = task->CanForAsyncRunner(env);
5533 ASSERT_FALSE(flag);
5534 delete task;
5535 }
5536
5537 HWTEST_F(NativeEngineTest, TaskpoolTest273, testing::ext::TestSize.Level0)
5538 {
5539 napi_env env = (napi_env)engine_;
5540 ExceptionScope scope(env);
5541 napi_value thisValue = CreateTaskObject(env, TaskType::ASYNCRUNNER_TASK, ExecuteState::CANCELED);
5542 Task* task = nullptr;
5543 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
5544 TaskInfo* taskInfo = new TaskInfo();
5545 task->currentTaskInfo_ = taskInfo;
5546 task->asyncRunnerId_ = 1;
5547 napi_value num = nullptr;
5548 napi_create_int32(env, 1, &num);
5549 napi_ref callbackRef = NapiHelper::CreateReference(env, num, 1);
5550 task->onExecutionFailedCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
5551 TaskPool::HandleTaskResult(task);
5552 ASSERT_TRUE(true);
5553 }
5554
5555 HWTEST_F(NativeEngineTest, TaskpoolTest274, testing::ext::TestSize.Level0)
5556 {
5557 napi_env env = (napi_env)engine_;
5558 ExceptionScope scope(env);
5559 TaskManager& taskManager = TaskManager::GetInstance();
5560 Task* task = new Task();
5561 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5562 taskManager.StoreTask(task);
5563 uint32_t taskId = task->taskId_;
5564 taskManager.CancelTask(env, taskId);
5565 napi_value exception = nullptr;
5566 napi_get_and_clear_last_exception(env, &exception);
5567 ASSERT_EQ(exception, nullptr);
5568 taskManager.RemoveTask(taskId);
5569 delete task;
5570 }
5571
5572 HWTEST_F(NativeEngineTest, TaskpoolTest275, testing::ext::TestSize.Level0)
5573 {
5574 napi_env env = (napi_env)engine_;
5575 ExceptionScope scope(env);
5576 TaskManager& taskManager = TaskManager::GetInstance();
5577 AsyncRunnerManager& asyncRunnerManager = AsyncRunnerManager::GetInstance();
5578
5579 std::string asyncName = "async275";
5580 napi_value obj = NapiHelper::CreateObject(env);
5581 AsyncRunner* asyncRunner = asyncRunnerManager.CreateOrGetGlobalRunner(env, obj, asyncName, 5, 0);
5582 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5583 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5584
5585 Task* task = new Task();
5586 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5587 TaskInfo* taskInfo = new TaskInfo();
5588 task->currentTaskInfo_ = taskInfo;
5589 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5590 task->taskState_ = ExecuteState::WAITING;
5591 taskManager.StoreTask(task);
5592 taskManager.CancelTask(env, task->taskId_);
5593 napi_value exception = nullptr;
5594 napi_get_and_clear_last_exception(env, &exception);
5595 ASSERT_EQ(exception, nullptr);
5596 asyncRunner->waitingTasks_.push_back(task);
5597
5598 Task* task2 = new Task();
5599 task2->env_ = env;
5600 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5601 TaskInfo* taskInfo2 = new TaskInfo();
5602 task2->currentTaskInfo_ = taskInfo2;
5603 task2->taskType_ = TaskType::ASYNCRUNNER_TASK;
5604 task2->SetValid(false);
5605 asyncRunner->waitingTasks_.push_back(task2);
5606 taskManager.StoreTask(task2);
5607 taskManager.CancelTask(env, task2->taskId_);
5608 exception = nullptr;
5609 napi_get_and_clear_last_exception(env, &exception);
5610 ASSERT_EQ(exception, nullptr);
5611 }
5612
5613 HWTEST_F(NativeEngineTest, TaskpoolTest276, testing::ext::TestSize.Level0)
5614 {
5615 napi_env env = (napi_env)engine_;
5616 ExceptionScope scope(env);
5617 TaskManager& taskManager = TaskManager::GetInstance();
5618 AsyncRunner* asyncRunner = new AsyncRunner();
5619 asyncRunner->TriggerRejectErrorTimer(nullptr, 0);
5620 napi_value exception = nullptr;
5621 napi_get_and_clear_last_exception(env, &exception);
5622 ASSERT_EQ(exception, nullptr);
5623 delete asyncRunner;
5624
5625 Task* task = new Task();
5626 taskManager.StoreTask(task);
5627 DiscardTaskMessage* message = new DiscardTaskMessage(task->env_, task->taskId_, 0, true);
5628 task->DiscardAsyncRunnerTask(message);
5629 exception = nullptr;
5630 napi_get_and_clear_last_exception(env, &exception);
5631 ASSERT_EQ(exception, nullptr);
5632
5633 DiscardTaskMessage* message2 = new DiscardTaskMessage(task->env_, task->taskId_, 0, true);
5634 task->SetValid(false);
5635 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5636 task->DiscardAsyncRunnerTask(message2);
5637 exception = nullptr;
5638 napi_get_and_clear_last_exception(env, &exception);
5639 ASSERT_EQ(exception, nullptr);
5640
5641 task->SetValid(true);
5642 task->DiscardAsyncRunnerTask(nullptr);
5643 exception = nullptr;
5644 napi_get_and_clear_last_exception(env, &exception);
5645 ASSERT_EQ(exception, nullptr);
5646
5647 taskManager.RemoveTask(task->taskId_);
5648 delete task;
5649 }
5650
5651 HWTEST_F(NativeEngineTest, TaskpoolTest277, testing::ext::TestSize.Level0)
5652 {
5653 napi_env env = (napi_env)engine_;
5654 ExceptionScope scope(env);
5655 TaskManager& taskManager = TaskManager::GetInstance();
5656
5657 Task* task = new Task();
5658 TaskInfo* taskInfo = new TaskInfo();
5659 task->currentTaskInfo_ = taskInfo;
5660 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5661 task->isMainThreadTask_ = true;
5662 taskManager.StoreTask(task);
5663 DiscardTaskMessage* message = new DiscardTaskMessage(task->env_, 1, 0, true);
5664 task->DiscardAsyncRunnerTask(message);
5665 napi_value exception = nullptr;
5666 napi_get_and_clear_last_exception(env, &exception);
5667 ASSERT_EQ(exception, nullptr);
5668
5669 Task* task2 = new Task();
5670 TaskInfo* taskInfo2 = new TaskInfo();
5671 task2->currentTaskInfo_ = taskInfo2;
5672 task2->taskType_ = TaskType::ASYNCRUNNER_TASK;
5673 taskManager.StoreTask(task2);
5674 task2->DiscardInner(nullptr);
5675 exception = nullptr;
5676 napi_get_and_clear_last_exception(env, &exception);
5677 ASSERT_EQ(exception, nullptr);
5678
5679 task2->env_ = env;
5680 DiscardTaskMessage* message2 = new DiscardTaskMessage(nullptr, task2->taskId_, 0, true);
5681 task2->DiscardInner(message2);
5682 exception = nullptr;
5683 napi_get_and_clear_last_exception(env, &exception);
5684 ASSERT_EQ(exception, nullptr);
5685
5686 task2->SetValid(false);
5687 DiscardTaskMessage* message3 = new DiscardTaskMessage(task2->env_, task2->taskId_, 0, true);
5688 task2->DiscardInner(message3);
5689 exception = nullptr;
5690 napi_get_and_clear_last_exception(env, &exception);
5691 ASSERT_EQ(exception, nullptr);
5692 taskManager.RemoveTask(task->taskId_);
5693 taskManager.RemoveTask(task2->taskId_);
5694 delete task;
5695 delete task2;
5696 }
5697
5698 HWTEST_F(NativeEngineTest, TaskpoolTest278, testing::ext::TestSize.Level0)
5699 {
5700 napi_env env = (napi_env)engine_;
5701 ExceptionScope scope(env);
5702 TaskManager& taskManager = TaskManager::GetInstance();
5703 AsyncRunnerManager& asyncRunnerManager = AsyncRunnerManager::GetInstance();
5704
5705 napi_value obj = NapiHelper::CreateObject(env);
5706 AsyncRunner* asyncRunner = asyncRunnerManager.CreateOrGetGlobalRunner(env, obj, "", 5, 0);
5707 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5708 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5709
5710 Task* task = new Task();
5711 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5712 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5713 taskManager.StoreTask(task);
5714 asyncRunner->waitingTasks_.push_back(task);
5715 taskManager.CancelTask(env, task->taskId_);
5716 napi_value exception = nullptr;
5717 napi_get_and_clear_last_exception(env, &exception);
5718 ASSERT_EQ(exception, nullptr);
5719 taskManager.RemoveTask(task->taskId_);
5720 delete task;
5721 }
5722
5723 HWTEST_F(NativeEngineTest, TaskpoolTest279, testing::ext::TestSize.Level0)
5724 {
5725 napi_env env = (napi_env)engine_;
5726 ExceptionScope scope(env);
5727 napi_value argv[] = {nullptr};
5728 std::string funcName = "AsyncRunnerConstructor279";
5729 napi_value cb = nullptr;
5730 napi_value result = nullptr;
5731 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5732 napi_call_function(env, nullptr, cb, 0, argv, &result);
5733 ASSERT_EQ(result, nullptr);
5734 }
5735
5736 HWTEST_F(NativeEngineTest, TaskpoolTest280, testing::ext::TestSize.Level0)
5737 {
5738 napi_env env = (napi_env)engine_;
5739 ExceptionScope scope(env);
5740 std::string funcName = "AsyncRunnerConstructor280";
5741 napi_value cb = nullptr;
5742 napi_value result = nullptr;
5743 napi_create_function(env, funcName.c_str(), funcName.size(), AsyncRunner::AsyncRunnerConstructor, nullptr, &cb);
5744 napi_value name = GetNapiString(env, "async280");
5745 napi_value runningCapacity = NapiHelper::CreateUint32(env, 5);
5746 napi_value argv[] = {name, runningCapacity};
5747 napi_call_function(env, nullptr, cb, 2, argv, &result);
5748 ASSERT_NE(result, nullptr);
5749 }
5750
5751 HWTEST_F(NativeEngineTest, TaskpoolTest281, testing::ext::TestSize.Level0)
5752 {
5753 napi_env env = (napi_env)engine_;
5754 napi_value thisValue = CreateTaskObject(env);
5755 Task* task = nullptr;
5756 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
5757
5758 napi_value dependentTask = CreateTaskObject(env);
5759 Task* task1 = nullptr;
5760 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
5761 napi_value argv[] = { dependentTask };
5762 std::string funcName = "RemoveDependency";
5763 napi_value cb = nullptr;
5764 napi_value result = nullptr;
5765 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
5766 task->hasDependency_ = true;
5767 task->isPeriodicTask_ = false;
5768 task->taskType_ = TaskType::TASK;
5769 task1->hasDependency_ = true;
5770 task1->isPeriodicTask_ = false;
5771 task1->taskType_ = TaskType::ASYNCRUNNER_TASK;
5772 NativeEngineTest::StoreDependentId(task->taskId_, task1->taskId_);
5773 napi_call_function(env, thisValue, cb, 1, argv, &result);
5774 napi_value exception = nullptr;
5775 napi_get_and_clear_last_exception(env, &exception);
5776 ASSERT_TRUE(exception != nullptr);
5777 }
5778
5779 HWTEST_F(NativeEngineTest, TaskpoolTest282, testing::ext::TestSize.Level0)
5780 {
5781 napi_env env = (napi_env)engine_;
5782 ExceptionScope scope(env);
5783 TaskManager& taskManager = TaskManager::GetInstance();
5784 AsyncRunnerManager& asyncRunnerManager = AsyncRunnerManager::GetInstance();
5785
5786 Task* task = new Task();
5787 task->env_ = env;
5788 TaskInfo* taskInfo = new TaskInfo();
5789 task->currentTaskInfo_ = taskInfo;
5790 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5791 taskManager.StoreTask(task);
5792
5793 std::string asyncName = "";
5794 napi_value obj = NapiHelper::CreateObject(env);
5795 AsyncRunner* asyncRunner = asyncRunnerManager.CreateOrGetGlobalRunner(env, obj, asyncName, 5, 0);
5796 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5797 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5798 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5799 napi_value obj2 = NapiHelper::CreateObject(env);
5800 task->taskRef_ = NapiHelper::CreateReference(env, obj2, 1);
5801 DiscardTaskMessage* message = new DiscardTaskMessage(task->env_, task->taskId_, 0, false);
5802 task->DiscardInner(message);
5803 napi_value exception = nullptr;
5804 napi_get_and_clear_last_exception(env, &exception);
5805 ASSERT_EQ(exception, nullptr);
5806 taskManager.RemoveTask(task->taskId_);
5807 delete task;
5808 }
5809
5810 HWTEST_F(NativeEngineTest, TaskpoolTest283, testing::ext::TestSize.Level0)
5811 {
5812 napi_env env = (napi_env)engine_;
5813 ExceptionScope scope(env);
5814 TaskManager& taskManager = TaskManager::GetInstance();
5815 AsyncRunnerManager& asyncRunnerManager = AsyncRunnerManager::GetInstance();
5816
5817 uv_async_t* req = new uv_async_t;
5818 req->data = nullptr;
5819 Task::DiscardTask(req);
5820 napi_value exception = nullptr;
5821 napi_get_and_clear_last_exception(env, &exception);
5822 ASSERT_EQ(exception, nullptr);
5823
5824 Task* task = new Task();
5825 TaskInfo* taskInfo = new TaskInfo();
5826 task->currentTaskInfo_ = taskInfo;
5827 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5828 taskManager.StoreTask(task);
5829 DiscardTaskMessage* message = new DiscardTaskMessage(env, task->taskId_, 0, false);
5830 req->data = message;
5831 Task::DiscardTask(req);
5832 exception = nullptr;
5833 napi_get_and_clear_last_exception(env, &exception);
5834 ASSERT_EQ(exception, nullptr);
5835
5836 DiscardTaskMessage* message2 = new DiscardTaskMessage(nullptr, 283, 0, false);
5837 req->data = message2;
5838 Task::DiscardTask(req);
5839 exception = nullptr;
5840 napi_get_and_clear_last_exception(env, &exception);
5841 ASSERT_EQ(exception, nullptr);
5842
5843 task->env_ = env;
5844 task->SetValid(false);
5845 DiscardTaskMessage* message3 = new DiscardTaskMessage(env, task->taskId_, 0, false);
5846 req->data = message3;
5847 Task::DiscardTask(req);
5848 exception = nullptr;
5849 napi_get_and_clear_last_exception(env, &exception);
5850 ASSERT_EQ(exception, nullptr);
5851 taskManager.RemoveTask(task->taskId_);
5852 delete task;
5853 }
5854
5855 HWTEST_F(NativeEngineTest, TaskpoolTest284, testing::ext::TestSize.Level0)
5856 {
5857 napi_env env = (napi_env)engine_;
5858 ExceptionScope scope(env);
5859 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
5860 Task* task = new Task();
5861 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
5862 asyncRunnerManager.TriggerAsyncRunner(env, task);
5863
5864 AsyncRunner* asyncRunner = new AsyncRunner();
5865 asyncRunner->runningCapacity_ = 1;
5866 asyncRunner->waitingCapacity_ = 1;
5867 asyncRunner->runningCount_ = 1;
5868 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
5869 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5870 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
5871
5872 Task* task2 = new Task();
5873 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
5874 TaskInfo* taskInfo = new TaskInfo();
5875 task2->currentTaskInfo_ = taskInfo;
5876 task2->SetValid(false);
5877 void* data2 = reinterpret_cast<void*>(task2);
5878 void* async = reinterpret_cast<void*>(asyncRunner);
5879 NativeEngineTest::AddTasksToAsyncRunner(async, data2);
5880 asyncRunnerManager.TriggerAsyncRunner(env, task);
5881 delete task;
5882 delete task2;
5883 ASSERT_TRUE(true);
5884 }
5885
5886 HWTEST_F(NativeEngineTest, TaskpoolTest285, testing::ext::TestSize.Level0)
5887 {
5888 napi_env env = (napi_env)engine_;
5889 TaskGroup::HostEnvCleanupHook(nullptr);
5890 TaskGroup* group = new TaskGroup();
5891 TaskGroup::HostEnvCleanupHook(group);
5892 napi_value exception = nullptr;
5893 napi_get_and_clear_last_exception(env, &exception);
5894 ASSERT_EQ(exception, nullptr);
5895 delete group;
5896 }
5897
5898 HWTEST_F(NativeEngineTest, TaskpoolTest286, testing::ext::TestSize.Level0)
5899 {
5900 napi_env env = (napi_env)engine_;
5901 uv_async_t* req = new uv_async_t;
5902 req->data = nullptr;
5903 TaskGroup::StartRejectResult(req);
5904 TaskGroup* group = new TaskGroup(env);
5905 req->data = group;
5906 TaskGroup::StartRejectResult(req);
5907 napi_value exception = nullptr;
5908 napi_get_and_clear_last_exception(env, &exception);
5909 ASSERT_EQ(exception, nullptr);
5910 delete group;
5911 delete req;
5912 }
5913
5914 HWTEST_F(NativeEngineTest, TaskpoolTest287, testing::ext::TestSize.Level0)
5915 {
5916 napi_env env = (napi_env)engine_;
5917 TaskGroup* group = new TaskGroup(env);
5918 group->CancelGroupTask(env, 0);
5919 napi_env runtimeEnv = nullptr;
5920 napi_create_runtime(env, &runtimeEnv);
5921 group->CancelGroupTask(runtimeEnv, 0);
5922 napi_value exception = nullptr;
5923 napi_get_and_clear_last_exception(env, &exception);
5924 ASSERT_EQ(exception, nullptr);
5925 delete group;
5926 }
5927
5928 HWTEST_F(NativeEngineTest, TaskpoolTest288, testing::ext::TestSize.Level0)
5929 {
5930 napi_env env = (napi_env)engine_;
5931 TaskGroup* group = new TaskGroup(env);
5932 uint64_t groupId = reinterpret_cast<uint64_t>(group);
5933 group->groupId_ = groupId;
5934
5935 Task* task = new Task();
5936 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
5937 task->taskId_ = taskId;
5938 task->groupId_ = groupId;
5939 group->taskIds_.push_back(taskId);
5940 GroupInfo* groupInfo = new GroupInfo();
5941 groupInfo->priority = Priority::DEFAULT;
5942 napi_value resArr;
5943 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
5944 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
5945 groupInfo->resArr = arrRef;
5946 NapiHelper::CreatePromise(env, &groupInfo->deferred);
5947 group->currentGroupInfo_ = groupInfo;
5948 group->taskNum_ = 0;
5949 groupInfo->finishedTaskNum = 1;
5950 group->RejectResult(env);
5951
5952 group->taskNum_ = 1;
5953 napi_value obj = NapiHelper::CreateObject(env);
5954 napi_ref ref = NapiHelper::CreateReference(env, obj, 1);
5955 group->groupRef_ = ref;
5956 group->RejectResult(env);
5957 napi_value exception = nullptr;
5958 napi_get_and_clear_last_exception(env, &exception);
5959 ASSERT_EQ(exception, nullptr);
5960 delete group;
5961 delete task;
5962 }
5963
5964 HWTEST_F(NativeEngineTest, TaskpoolTest289, testing::ext::TestSize.Level0)
5965 {
5966 napi_env env = (napi_env)engine_;
5967 TaskGroup* group = new TaskGroup(env);
5968 uv_loop_t* loop = NapiHelper::GetLibUV(env);
5969 ConcurrentHelper::UvHandleInit(loop, group->onRejectResultSignal_, NativeEngineTest::foo);
5970 group->TriggerRejectResult();
5971 napi_value exception = nullptr;
5972 napi_get_and_clear_last_exception(env, &exception);
5973 ASSERT_EQ(exception, nullptr);
5974 delete group;
5975 }
5976
5977 HWTEST_F(NativeEngineTest, TaskpoolTest290, testing::ext::TestSize.Level0)
5978 {
5979 napi_env env = (napi_env)engine_;
5980 uint32_t id = 1;
5981 napi_value taskId = NapiHelper::CreateUint32(env, id);
5982 napi_value argv[] = { taskId };
5983 NativeEngineTest::Cancel(env, argv, 1);
5984 napi_value exception = nullptr;
5985 napi_get_and_clear_last_exception(env, &exception);
5986 ASSERT_TRUE(exception != nullptr);
5987 }
5988
5989 HWTEST_F(NativeEngineTest, TaskpoolTest291, testing::ext::TestSize.Level0)
5990 {
5991 napi_env env = (napi_env)engine_;
5992 TaskManager& taskManager = TaskManager::GetInstance();
5993 Task* task = new Task();
5994 taskManager.StoreTask(task);
5995 task->taskType_ = TaskType::GROUP_COMMON_TASK;
5996 taskManager.CancelTask(env, task->taskId_);
5997 napi_value exception = nullptr;
5998 napi_get_and_clear_last_exception(env, &exception);
5999 ASSERT_TRUE(exception != nullptr);
6000
6001 TaskInfo* taskInfo = new TaskInfo();
6002 task->currentTaskInfo_ = taskInfo;
6003 taskManager.CancelTask(env, task->taskId_);
6004 exception = nullptr;
6005 napi_get_and_clear_last_exception(env, &exception);
6006 ASSERT_TRUE(exception != nullptr);
6007 task->taskState_ = ExecuteState::FINISHED;
6008 taskManager.CancelTask(env, task->taskId_);
6009 exception = nullptr;
6010 napi_get_and_clear_last_exception(env, &exception);
6011 ASSERT_TRUE(exception != nullptr);
6012
6013 task->taskState_ = ExecuteState::ENDING;
6014 taskManager.CancelTask(env, task->taskId_);
6015 exception = nullptr;
6016 napi_get_and_clear_last_exception(env, &exception);
6017 ASSERT_TRUE(exception != nullptr);
6018
6019 task->taskState_ = ExecuteState::RUNNING;
6020 task->groupId_ = 1;
6021 taskManager.CancelTask(env, task->taskId_);
6022 TaskGroup* group = new TaskGroup(env);
6023 group->groupId_ = reinterpret_cast<uint64_t>(group);
6024 TaskGroupManager::GetInstance().StoreTaskGroup(group->groupId_, group);
6025 task->groupId_ = group->groupId_;
6026 taskManager.CancelTask(env, task->taskId_);
6027 exception = nullptr;
6028 napi_get_and_clear_last_exception(env, &exception);
6029 ASSERT_TRUE(exception == nullptr);
6030 TaskManager::GetInstance().RemoveTask(task->taskId_);
6031 TaskGroupManager::GetInstance().RemoveTaskGroup(group->groupId_);
6032 delete taskInfo;
6033 delete task;
6034 delete group;
6035 }
6036
6037 HWTEST_F(NativeEngineTest, TaskpoolTest292, testing::ext::TestSize.Level0)
6038 {
6039 napi_env env = (napi_env)engine_;
6040 Task* task = new Task();
6041 TaskManager::GetInstance().StoreTask(task);
6042 task->env_ = env;
6043 task->taskType_ = TaskType::COMMON_TASK;
6044 task->taskState_ = ExecuteState::RUNNING;
6045 task->isMainThreadTask_ = false;
6046 napi_env runtimeEnv = nullptr;
6047 napi_create_runtime(env, &runtimeEnv);
6048 TaskManager::GetInstance().CancelTask(runtimeEnv, task->taskId_);
6049 napi_value exception = nullptr;
6050 napi_get_and_clear_last_exception(env, &exception);
6051 ASSERT_TRUE(exception == nullptr);
6052 TaskManager::GetInstance().RemoveTask(task->taskId_);
6053 delete task;
6054 }
6055
6056 HWTEST_F(NativeEngineTest, TaskpoolTest293, testing::ext::TestSize.Level0)
6057 {
6058 napi_env env = (napi_env)engine_;
6059 Task* task = new Task();
6060 task->env_ = env;
6061 TaskManager::GetInstance().StoreTask(task);
6062 task->isMainThreadTask_ = true;
6063 CancelTaskMessage* message = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6064 task->TriggerCancel(message);
6065 usleep(100000); // 100000: is sleep 100ms
6066
6067 task->isMainThreadTask_ = false;
6068 CancelTaskMessage* message2 = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6069 task->SetValid(false);
6070 task->TriggerCancel(message2);
6071 CancelTaskMessage* message3 = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6072 task->SetValid(true);
6073 task->TriggerCancel(message3);
6074 uv_loop_t* loop = NapiHelper::GetLibUV(env);
6075 ConcurrentHelper::UvHandleInit(loop, task->onStartCancelSignal_, NativeEngineTest::foo);
6076 CancelTaskMessage* message4 = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6077 task->TriggerCancel(message4);
6078 napi_value exception = nullptr;
6079 napi_get_and_clear_last_exception(env, &exception);
6080 ASSERT_TRUE(exception == nullptr);
6081 task->ReleaseData();
6082 }
6083
6084 HWTEST_F(NativeEngineTest, TaskpoolTest294, testing::ext::TestSize.Level0)
6085 {
6086 napi_env env = (napi_env)engine_;
6087 Task* task = new Task();
6088 task->env_ = env;
6089 task->CancelInner(ExecuteState::RUNNING);
6090 task->CancelInner(ExecuteState::WAITING);
6091 napi_value exception = nullptr;
6092 napi_get_and_clear_last_exception(env, &exception);
6093 ASSERT_TRUE(exception == nullptr);
6094 delete task;
6095 }
6096
6097 HWTEST_F(NativeEngineTest, TaskpoolTest295, testing::ext::TestSize.Level0)
6098 {
6099 napi_env env = (napi_env)engine_;
6100 Task* task = new Task();
6101 task->env_ = env;
6102 task->CancelInner(ExecuteState::RUNNING);
6103 task->CancelInner(ExecuteState::WAITING);
6104 napi_value exception = nullptr;
6105 napi_get_and_clear_last_exception(env, &exception);
6106 ASSERT_TRUE(exception == nullptr);
6107 delete task;
6108 }
6109
6110 HWTEST_F(NativeEngineTest, TaskpoolTest296, testing::ext::TestSize.Level0)
6111 {
6112 napi_env env = (napi_env)engine_;
6113 Task* task = new Task();
6114 task->env_ = env;
6115 uv_async_t* req = new uv_async_t;
6116 req->data = nullptr;
6117 Task::Cancel(req);
6118 task->taskId_ = 1000; // 1000: test number
6119 CancelTaskMessage* message = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6120 req->data = message;
6121 Task::Cancel(req);
6122 TaskManager::GetInstance().StoreTask(task);
6123 CancelTaskMessage* message2 = new CancelTaskMessage(ExecuteState::RUNNING, task->taskId_);
6124 req->data = message2;
6125 Task::Cancel(req);
6126 napi_value exception = nullptr;
6127 napi_get_and_clear_last_exception(env, &exception);
6128 ASSERT_TRUE(exception == nullptr);
6129 delete req;
6130 }
6131
6132 HWTEST_F(NativeEngineTest, TaskpoolTest297, testing::ext::TestSize.Level0)
6133 {
6134 napi_env env = (napi_env)engine_;
6135 ExceptionScope scope(env);
6136
6137 AsyncRunner* asyncRunner = new AsyncRunner();
6138 asyncRunner->DecreaseAsyncCount();
6139 uint64_t refCount = asyncRunner->DecreaseAsyncCount();
6140 ASSERT_TRUE(refCount == 0);
6141 delete asyncRunner;
6142 }
6143
6144 HWTEST_F(NativeEngineTest, TaskpoolTest298, testing::ext::TestSize.Level0)
6145 {
6146 napi_env env = (napi_env)engine_;
6147 ExceptionScope scope(env);
6148
6149 Task* task = new Task();
6150 task->SetValid(false);
6151 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
6152 bool res = task->ShouldDeleteTask();
6153 ASSERT_TRUE(res);
6154
6155 AsyncRunner* asyncRunner = new AsyncRunner();
6156 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
6157 AsyncRunnerManager::GetInstance().StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
6158 task->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
6159 res = task->ShouldDeleteTask();
6160 ASSERT_TRUE(res);
6161 delete task;
6162 }
6163
6164 HWTEST_F(NativeEngineTest, TaskpoolTest299, testing::ext::TestSize.Level0)
6165 {
6166 napi_env env = (napi_env)engine_;
6167 ExceptionScope scope(env);
6168 SequenceRunnerManager& sequenceRunnerManager = SequenceRunnerManager::GetInstance();
6169 SequenceRunner* seqRunner = new SequenceRunner();
6170 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
6171 sequenceRunnerManager.StoreSequenceRunner(seqRunner->seqRunnerId_, seqRunner);
6172 Task* task = new Task();
6173 uint32_t taskId = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
6174 task->seqRunnerId_ = seqRunner->seqRunnerId_;
6175 task->taskId_ = taskId;
6176 task->taskType_ = TaskType::SEQRUNNER_TASK;
6177 sequenceRunnerManager.AddTaskToSeqRunner(seqRunner->seqRunnerId_, task);
6178 sequenceRunnerManager.RemoveWaitingTask(task);
6179 napi_value exception = nullptr;
6180 napi_get_and_clear_last_exception(env, &exception);
6181 ASSERT_TRUE(exception == nullptr);
6182 delete task;
6183 }
6184
6185 HWTEST_F(NativeEngineTest, TaskpoolTest300, testing::ext::TestSize.Level0)
6186 {
6187 napi_env env = (napi_env)engine_;
6188 ExceptionScope scope(env);
6189 SequenceRunnerManager& sequenceRunnerManager = SequenceRunnerManager::GetInstance();
6190 Task* task = new Task();
6191 task->seqRunnerId_ = 1;
6192 sequenceRunnerManager.RemoveWaitingTask(task);
6193 napi_value exception = nullptr;
6194 napi_get_and_clear_last_exception(env, &exception);
6195 ASSERT_TRUE(exception == nullptr);
6196 delete task;
6197 }
6198
6199 HWTEST_F(NativeEngineTest, TaskpoolTest301, testing::ext::TestSize.Level0)
6200 {
6201 napi_env env = (napi_env)engine_;
6202 ExceptionScope scope(env);
6203 SequenceRunner* seqRunner = new SequenceRunner();
6204 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
6205 Task* task = new Task();
6206 seqRunner->RemoveWaitingTask(task);
6207 napi_value exception = nullptr;
6208 napi_get_and_clear_last_exception(env, &exception);
6209 ASSERT_TRUE(exception == nullptr);
6210 Task* task2 = new Task();
6211 seqRunner->AddTask(task2);
6212 seqRunner->RemoveWaitingTask(task);
6213 napi_get_and_clear_last_exception(env, &exception);
6214 ASSERT_TRUE(exception == nullptr);
6215 delete task;
6216 delete task2;
6217 }
6218
6219 HWTEST_F(NativeEngineTest, TaskpoolTest302, testing::ext::TestSize.Level0)
6220 {
6221 napi_env env = (napi_env)engine_;
6222 ExceptionScope scope(env);
6223 bool isFalse = SequenceRunnerManager::GetInstance().FindRunnerAndRef(302);
6224 ASSERT_FALSE(isFalse);
6225 SequenceRunner* seqRunner = new SequenceRunner();
6226 seqRunner->DecreaseSeqCount();
6227 isFalse = seqRunner->DecreaseSeqCount();
6228 ASSERT_FALSE(isFalse);
6229 }
6230
6231 HWTEST_F(NativeEngineTest, TaskpoolTest303, testing::ext::TestSize.Level0)
6232 {
6233 napi_env env = (napi_env)engine_;
6234 ExceptionScope scope(env);
6235 SequenceRunner* seqRunner = new SequenceRunner();
6236 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
6237 SequenceRunnerManager::GetInstance().StoreSequenceRunner(seqRunner->seqRunnerId_, seqRunner);
6238 Task* task = new Task();
6239 task->seqRunnerId_ = seqRunner->seqRunnerId_;
6240 bool isFalse = SequenceRunnerManager::GetInstance().TriggerSeqRunner(env, task);
6241 ASSERT_FALSE(isFalse);
6242 delete task;
6243 }
6244
6245 HWTEST_F(NativeEngineTest, TaskpoolTest304, testing::ext::TestSize.Level0)
6246 {
6247 napi_env env = (napi_env)engine_;
6248 ExceptionScope scope(env);
6249 Task* task = new Task();
6250 task->seqRunnerId_ = 304;
6251 task->taskType_ = TaskType::SEQRUNNER_TASK;
6252 Task::CleanupHookFunc(task);
6253 napi_value exception = nullptr;
6254 napi_get_and_clear_last_exception(env, &exception);
6255 ASSERT_TRUE(exception == nullptr);
6256 delete task;
6257 }
6258
6259 HWTEST_F(NativeEngineTest, TaskpoolTest305, testing::ext::TestSize.Level0)
6260 {
6261 napi_env env = (napi_env)engine_;
6262 ExceptionScope scope(env);
6263 Task* task = new Task();
6264 task->seqRunnerId_ = 305;
6265 task->env_ = env;
6266 task->taskType_ = TaskType::SEQRUNNER_TASK;
6267 napi_value obj = NapiHelper::CreateObject(env);
6268 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
6269 task->CancelInner(ExecuteState::CANCELED);
6270 napi_value exception = nullptr;
6271 napi_get_and_clear_last_exception(env, &exception);
6272 ASSERT_TRUE(exception == nullptr);
6273 delete task;
6274 }
6275
6276 HWTEST_F(NativeEngineTest, TaskpoolTest306, testing::ext::TestSize.Level0)
6277 {
6278 napi_env env = (napi_env)engine_;
6279 ExceptionScope scope(env);
6280 Task* task = new Task();
6281 task->taskId_ = 306;
6282 task->SetHasDependency(true);
6283 task->env_ = env;
6284 task->CancelInner(ExecuteState::DELAYED);
6285 napi_value exception = nullptr;
6286 napi_get_and_clear_last_exception(env, &exception);
6287 ASSERT_TRUE(exception == nullptr);
6288 delete task;
6289 }
6290
6291 HWTEST_F(NativeEngineTest, TaskpoolTest307, testing::ext::TestSize.Level0)
6292 {
6293 napi_env env = (napi_env)engine_;
6294 ExceptionScope scope(env);
6295 uint32_t taskId = 307;
6296 std::set<uint32_t> taskIds{1};
6297 TaskManager::GetInstance().StoreTaskDependency(taskId, taskIds);
6298 TaskManager::GetInstance().ClearDependentTask(taskId);
6299 napi_value exception = nullptr;
6300 napi_get_and_clear_last_exception(env, &exception);
6301 ASSERT_TRUE(exception == nullptr);
6302 }
6303
6304 HWTEST_F(NativeEngineTest, TaskpoolTest308, testing::ext::TestSize.Level0)
6305 {
6306 napi_env env = (napi_env)engine_;
6307 ExceptionScope scope(env);
6308 uint32_t taskId = 308;
6309 uint32_t taskId2 = 1308;
6310 std::set<uint32_t> taskIds{taskId2};
6311 TaskManager::GetInstance().StoreDependentTaskInfo(taskIds, taskId);
6312 TaskManager::GetInstance().ClearDependentTask(taskId2);
6313 napi_value exception = nullptr;
6314 napi_get_and_clear_last_exception(env, &exception);
6315 ASSERT_TRUE(exception == nullptr);
6316 }
6317
6318 HWTEST_F(NativeEngineTest, TaskpoolTest309, testing::ext::TestSize.Level0)
6319 {
6320 napi_env env = (napi_env)engine_;
6321 ExceptionScope scope(env);
6322 uint32_t taskId = 309;
6323 Task* task = new Task();
6324 task->env_ = env;
6325 napi_value obj = NapiHelper::CreateObject(env);
6326 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
6327 TaskManager::GetInstance().StoreTask(task);
6328 std::set<uint32_t> taskIds{taskId};
6329 TaskManager::GetInstance().StoreDependentTaskInfo(taskIds, task->taskId_);
6330 TaskManager::GetInstance().ClearDependentTask(taskId);
6331 napi_value exception = nullptr;
6332 napi_get_and_clear_last_exception(env, &exception);
6333 ASSERT_TRUE(exception == nullptr);
6334 }
6335
6336 HWTEST_F(NativeEngineTest, TaskpoolTest310, testing::ext::TestSize.Level0)
6337 {
6338 napi_env env = (napi_env)engine_;
6339 ExceptionScope scope(env);
6340 uint32_t taskId = 310;
6341 Task* task = new Task();
6342 task->env_ = env;
6343 napi_value obj = NapiHelper::CreateObject(env);
6344 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
6345 task->currentTaskInfo_ = new TaskInfo();
6346 TaskManager::GetInstance().StoreTask(task);
6347 std::set<uint32_t> taskIds{taskId};
6348 TaskManager::GetInstance().StoreDependentTaskInfo(taskIds, task->taskId_);
6349 TaskManager::GetInstance().ClearDependentTask(taskId);
6350 napi_value exception = nullptr;
6351 napi_get_and_clear_last_exception(env, &exception);
6352 ASSERT_TRUE(exception == nullptr);
6353 }
6354
6355 HWTEST_F(NativeEngineTest, TaskpoolTest311, testing::ext::TestSize.Level0)
6356 {
6357 napi_env env = (napi_env)engine_;
6358 ExceptionScope scope(env);
6359 uint32_t taskId = 311;
6360 uint32_t taskId2 = 1311;
6361 std::set<uint32_t> taskIds{taskId2};
6362 TaskManager::GetInstance().StoreDependentTaskInfo(taskIds, taskId);
6363 TaskManager::GetInstance().RemoveDependentTaskInfo(taskId2, taskId);
6364 TaskManager::GetInstance().ClearDependentTask(taskId2);
6365 napi_value exception = nullptr;
6366 napi_get_and_clear_last_exception(env, &exception);
6367 ASSERT_TRUE(exception == nullptr);
6368 }
6369
6370 HWTEST_F(NativeEngineTest, TaskpoolTest312, testing::ext::TestSize.Level0)
6371 {
6372 napi_env env = (napi_env)engine_;
6373 ExceptionScope scope(env);
6374 napi_value napiTask = CreateTaskObject(env, TaskType::TASK, ExecuteState::FINISHED, true);
6375 napi_value argv[] = {napiTask};
6376 napi_value result = NativeEngineTest::Execute(env, argv, 1);
6377 ASSERT_TRUE(result != nullptr);
6378 Task* task = nullptr;
6379 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
6380 TaskManager::GetInstance().RemoveTask(task->taskId_);
6381 napi_value exception = nullptr;
6382 napi_get_and_clear_last_exception(env, &exception);
6383 ASSERT_TRUE(exception == nullptr);
6384
6385 napi_value napiTask2 = CreateTaskObject(env, TaskType::TASK, ExecuteState::CANCELED, true);
6386 Task* task2 = nullptr;
6387 napi_unwrap(env, napiTask2, reinterpret_cast<void**>(&task2));
6388 task2->isCancelToFinish_ = true;
6389 napi_value argv2[] = {napiTask2};
6390 result = NativeEngineTest::Execute(env, argv2, 1);
6391 ASSERT_TRUE(result != nullptr);
6392 TaskManager::GetInstance().RemoveTask(task2->taskId_);
6393 }
6394
6395 HWTEST_F(NativeEngineTest, TaskpoolTest313, testing::ext::TestSize.Level0)
6396 {
6397 napi_env env = (napi_env)engine_;
6398 ExceptionScope scope(env);
6399 napi_value result = nullptr;
6400 napi_create_string_utf8(env, "test313", NAPI_AUTO_LENGTH, &result);
6401 napi_value error = TaskManager::GetInstance().CancelError(env, 0, nullptr, result);
6402 ASSERT_TRUE(NapiHelper::IsNotUndefined(env, error));
6403
6404 napi_value obj = NapiHelper::CreateObject(env);
6405 napi_value result2 = nullptr;
6406 napi_create_string_utf8(env, "this is error", NAPI_AUTO_LENGTH, &result2);
6407 napi_set_named_property(env, obj, "error", result2);
6408 error = TaskManager::GetInstance().CancelError(env, 0, nullptr, obj);
6409 ASSERT_TRUE(NapiHelper::IsNotUndefined(env, error));
6410 }
6411
6412 HWTEST_F(NativeEngineTest, TaskpoolTest314, testing::ext::TestSize.Level0)
6413 {
6414 napi_env env = (napi_env)engine_;
6415 ExceptionScope scope(env);
6416 TaskManager &taskManager = TaskManager::GetInstance();
6417 Task* task = new Task();
6418 uint32_t taskId = taskManager.CalculateTaskId(reinterpret_cast<uint64_t>(task));
6419 task->taskId_ = taskId;
6420 task->isValid_ = false;
6421 task->asyncTaskPriority_ = Priority::MEDIUM;
6422 void* data = reinterpret_cast<void*>(task);
6423 NativeEngineTest::PerformTask(env, data);
6424 napi_value exception = nullptr;
6425 napi_get_and_clear_last_exception(env, &exception);
6426 ASSERT_TRUE(exception == nullptr);
6427 }
6428
6429 HWTEST_F(NativeEngineTest, TaskpoolTest315, testing::ext::TestSize.Level0)
6430 {
6431 napi_env env = (napi_env)engine_;
6432 ExceptionScope scope(env);
6433 NativeEngineTest::GetIdleTaskByPriority(env);
6434 napi_value exception = nullptr;
6435 napi_get_and_clear_last_exception(env, &exception);
6436 ASSERT_TRUE(exception == nullptr);
6437 }
6438
6439 HWTEST_F(NativeEngineTest, TaskpoolTest316, testing::ext::TestSize.Level0)
6440 {
6441 napi_env env = (napi_env)engine_;
6442 ExceptionScope scope(env);
6443 NativeEngineTest::WorkerRunningScope(env);
6444 napi_value exception = nullptr;
6445 napi_get_and_clear_last_exception(env, &exception);
6446 ASSERT_TRUE(exception == nullptr);
6447 }
6448
6449 HWTEST_F(NativeEngineTest, TaskpoolTest317, testing::ext::TestSize.Level0)
6450 {
6451 napi_env env = (napi_env)engine_;
6452 ExceptionScope scope(env);
6453 NativeEngineTest::SetNonIdleTaskNum(0);
6454 void* data = nullptr;
6455 NativeEngineTest::PerformTask(env, data);
6456 napi_value exception = nullptr;
6457 napi_get_and_clear_last_exception(env, &exception);
6458 ASSERT_TRUE(exception == nullptr);
6459 }
6460
6461 HWTEST_F(NativeEngineTest, TaskpoolTest318, testing::ext::TestSize.Level0)
6462 {
6463 napi_env env = (napi_env)engine_;
6464 ExceptionScope scope(env);
6465 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
6466 TaskManager &taskManager = TaskManager::GetInstance();
6467 Task* task = new Task();
6468 task->taskId_ = taskManager.CalculateTaskId(reinterpret_cast<uint64_t>(task));
6469 task->taskState_ = ExecuteState::RUNNING;
6470 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
6471 napi_value exception = nullptr;
6472 napi_get_and_clear_last_exception(env, &exception);
6473 ASSERT_TRUE(exception == nullptr);
6474 delete task;
6475
6476 Task* task2 = new Task();
6477 task2->taskId_ = taskManager.CalculateTaskId(reinterpret_cast<uint64_t>(task2));
6478 task2->taskState_ = ExecuteState::WAITING;
6479 asyncRunnerManager.CancelAsyncRunnerTask(env, task2);
6480 exception = nullptr;
6481 napi_get_and_clear_last_exception(env, &exception);
6482 ASSERT_TRUE(exception == nullptr);
6483 delete task2;
6484
6485 Task* task3 = new Task();
6486 task3->taskId_ = taskManager.CalculateTaskId(reinterpret_cast<uint64_t>(task3));
6487 TaskInfo* taskInfo = new TaskInfo();
6488 task3->currentTaskInfo_ = taskInfo;
6489 task3->taskType_ = TaskType::ASYNCRUNNER_TASK;
6490 task3->taskState_ = ExecuteState::WAITING;
6491 asyncRunnerManager.CancelAsyncRunnerTask(env, task3);
6492 exception = nullptr;
6493 napi_get_and_clear_last_exception(env, &exception);
6494 ASSERT_TRUE(exception == nullptr);
6495 delete task3;
6496 delete taskInfo;
6497 }
6498
6499 HWTEST_F(NativeEngineTest, TaskpoolTest319, testing::ext::TestSize.Level0)
6500 {
6501 napi_env env = (napi_env)engine_;
6502 ExceptionScope scope(env);
6503 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
6504 TaskManager &taskManager = TaskManager::GetInstance();
6505
6506 Task* task = new Task();
6507 TaskInfo* taskInfo = new TaskInfo();
6508 task->currentTaskInfo_ = taskInfo;
6509 task->taskType_ = TaskType::ASYNCRUNNER_TASK;
6510 task->taskState_ = ExecuteState::WAITING;
6511 taskManager.StoreTask(task);
6512 NativeEngineTest::EnqueueTaskIdToQueue(reinterpret_cast<void*>(task));
6513 asyncRunnerManager.CancelAsyncRunnerTask(env, task);
6514 napi_value exception = nullptr;
6515 napi_get_and_clear_last_exception(env, &exception);
6516 ASSERT_TRUE(exception == nullptr);
6517 taskManager.RemoveTask(task->taskId_);
6518 delete task;
6519
6520 AsyncRunner* asyncRunner = new AsyncRunner();
6521 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
6522 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
6523 Task* task2 = new Task();
6524 TaskInfo* taskInfo2 = new TaskInfo();
6525 task2->currentTaskInfo_ = taskInfo2;
6526 task2->taskType_ = TaskType::ASYNCRUNNER_TASK;
6527 task2->taskState_ = ExecuteState::WAITING;
6528 taskManager.StoreTask(task2);
6529 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
6530 NativeEngineTest::EnqueueTaskIdToQueue(reinterpret_cast<void*>(task2));
6531 asyncRunnerManager.CancelAsyncRunnerTask(env, task2);
6532 exception = nullptr;
6533 napi_get_and_clear_last_exception(env, &exception);
6534 ASSERT_TRUE(exception == nullptr);
6535 taskManager.RemoveTask(task2->taskId_);
6536 }
6537
6538 HWTEST_F(NativeEngineTest, TaskpoolTest320, testing::ext::TestSize.Level0)
6539 {
6540 napi_env env = (napi_env)engine_;
6541 ExceptionScope scope(env);
6542 AsyncRunnerManager &asyncRunnerManager = AsyncRunnerManager::GetInstance();
6543 TaskManager &taskManager = TaskManager::GetInstance();
6544 Task* task = new Task();
6545 asyncRunnerManager.RemoveWaitingTask(task);
6546 napi_value exception = nullptr;
6547 napi_get_and_clear_last_exception(env, &exception);
6548 ASSERT_TRUE(exception == nullptr);
6549
6550 AsyncRunner* asyncRunner = new AsyncRunner();
6551 asyncRunner->asyncRunnerId_ = reinterpret_cast<uint64_t>(asyncRunner);
6552 asyncRunnerManager.StoreAsyncRunner(asyncRunner->asyncRunnerId_, asyncRunner);
6553 Task* task2 = new Task();
6554 task2->asyncRunnerId_ = asyncRunner->asyncRunnerId_;
6555 asyncRunnerManager.RemoveWaitingTask(task2);
6556 exception = nullptr;
6557 napi_get_and_clear_last_exception(env, &exception);
6558 ASSERT_TRUE(exception == nullptr);
6559
6560 delete task;
6561 delete task2;
6562 }
6563
6564 HWTEST_F(NativeEngineTest, TaskpoolTest321, testing::ext::TestSize.Level0)
6565 {
6566 napi_env env = (napi_env)engine_;
6567 ExceptionScope scope(env);
6568 SequenceRunnerManager& sequenceRunnerManager = SequenceRunnerManager::GetInstance();
6569 SequenceRunner* seqRunner = new SequenceRunner();
6570 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
6571 sequenceRunnerManager.StoreSequenceRunner(seqRunner->seqRunnerId_, seqRunner);
6572 Task* task = new Task();
6573 task->seqRunnerId_ = seqRunner->seqRunnerId_;
6574 sequenceRunnerManager.RemoveWaitingTask(task);
6575 sequenceRunnerManager.SequenceRunnerDestructor(seqRunner);
6576 napi_value exception = nullptr;
6577 napi_get_and_clear_last_exception(env, &exception);
6578 ASSERT_TRUE(exception == nullptr);
6579 delete task;
6580 }
6581
6582 HWTEST_F(NativeEngineTest, TaskpoolTest322, testing::ext::TestSize.Level0)
6583 {
6584 napi_env env = (napi_env)engine_;
6585 ExceptionScope scope(env);
6586 SequenceRunnerManager& sequenceRunnerManager = SequenceRunnerManager::GetInstance();
6587 napi_value thisVar = nullptr;
6588 size_t argc = 1;
6589 uint32_t priority = 1;
6590 std::string name = "TaskpoolTest322";
6591 SequenceRunner* seqRunner = sequenceRunnerManager.CreateOrGetGlobalRunner(env, thisVar, argc, name, priority);
6592 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
6593 Task* task = new Task();
6594 task->seqRunnerId_ = seqRunner->seqRunnerId_;
6595 seqRunner->AddTask(task);
6596 sequenceRunnerManager.CreateOrGetGlobalRunner(env, thisVar, argc, name, priority);
6597 napi_value exception = nullptr;
6598 napi_get_and_clear_last_exception(env, &exception);
6599 ASSERT_TRUE(exception == nullptr);
6600 seqRunner->RemoveWaitingTask(task);
6601 sequenceRunnerManager.StoreSequenceRunner(seqRunner->seqRunnerId_, seqRunner);
6602 sequenceRunnerManager.SequenceRunnerDestructor(seqRunner);
6603 delete task;
6604 }
6605
6606 HWTEST_F(NativeEngineTest, TaskpoolTest323, testing::ext::TestSize.Level0)
6607 {
6608 napi_env env = (napi_env)engine_;
6609 ExceptionScope scope(env);
6610 TaskManager &taskManager = TaskManager::GetInstance();
6611 uint32_t taskId = taskManager.CalculateTaskId(0);
6612 ASSERT_TRUE(taskId != 0);
6613 }
6614
6615 HWTEST_F(NativeEngineTest, TaskpoolTest324, testing::ext::TestSize.Level0)
6616 {
6617 napi_env env = (napi_env)engine_;
6618 ExceptionScope scope(env);
6619 NativeEngineTest::DecreaseTaskNum();
6620 napi_value exception = nullptr;
6621 napi_get_and_clear_last_exception(env, &exception);
6622 ASSERT_TRUE(exception == nullptr);
6623 }
6624
6625 HWTEST_F(NativeEngineTest, TaskpoolTest325, testing::ext::TestSize.Level0)
6626 {
6627 napi_env env = (napi_env)engine_;
6628 ExceptionScope scope(env);
6629 NativeEngineTest::ResetPerformIdleState(env);
6630 napi_value exception = nullptr;
6631 napi_get_and_clear_last_exception(env, &exception);
6632 ASSERT_TRUE(exception == nullptr);
6633 }
6634
6635 HWTEST_F(NativeEngineTest, TaskpoolTest326, testing::ext::TestSize.Level0)
6636 {
6637 napi_env env = (napi_env)engine_;
6638 ExceptionScope scope(env);
6639 NativeEngineTest::SetTotalTaskNum(0);
6640 void* data = nullptr;
6641 NativeEngineTest::PerformTask(env, data);
6642 napi_value exception = nullptr;
6643 napi_get_and_clear_last_exception(env, &exception);
6644 ASSERT_TRUE(exception == nullptr);
6645 }
6646
6647 HWTEST_F(NativeEngineTest, TaskpoolTest327, testing::ext::TestSize.Level0)
6648 {
6649 napi_env env = (napi_env)engine_;
6650 ExceptionScope scope(env);
6651 Task* task = new Task();
6652 task->taskId_ = 327;
6653 task->env_ = env;
6654 task->taskType_ = TaskType::SEQRUNNER_TASK;
6655 napi_value obj = NapiHelper::CreateObject(env);
6656 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
6657 task->CancelInner(ExecuteState::CANCELED);
6658 napi_value exception = nullptr;
6659 napi_get_and_clear_last_exception(env, &exception);
6660 ASSERT_TRUE(exception == nullptr);
6661 delete task;
6662 }
6663
6664 HWTEST_F(NativeEngineTest, TaskpoolTest328, testing::ext::TestSize.Level0)
6665 {
6666 napi_env env = (napi_env)engine_;
6667 ExceptionScope scope(env);
6668 Task* task = new Task();
6669 task->taskId_ = 328;
6670 task->env_ = env;
6671 task->taskType_ = TaskType::SEQRUNNER_TASK;
6672 napi_value obj = NapiHelper::CreateObject(env);
6673 task->taskRef_ = NapiHelper::CreateReference(env, obj, 1);
6674 TaskInfo* taskInfo = new TaskInfo();
6675 NapiHelper::CreatePromise(env, &taskInfo->deferred);
6676 task->currentTaskInfo_ = taskInfo;
6677 task->CancelInner(ExecuteState::CANCELED);
6678 napi_value exception = nullptr;
6679 napi_get_and_clear_last_exception(env, &exception);
6680 ASSERT_TRUE(exception == nullptr);
6681 }
6682
6683 HWTEST_F(NativeEngineTest, TaskpoolTest329, testing::ext::TestSize.Level0)
6684 {
6685 napi_env env = (napi_env)engine_;
6686 ExceptionScope scope(env);
6687 Task* task = new Task();
6688 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
6689 task->env_ = env;
6690 task->taskState_ = ExecuteState::CANCELED;
6691 TaskInfo* taskInfo = new TaskInfo();
6692 task->currentTaskInfo_ = taskInfo;
6693 SequenceRunner* seqRunner = new SequenceRunner();
6694 uint64_t seqRunnerId = reinterpret_cast<uint64_t>(seqRunner);
6695 task->seqRunnerId_ = seqRunnerId;
6696 seqRunner->seqRunnerTasks_.push_back(task);
6697 seqRunner->DecreaseSeqCount();
6698 seqRunner->TriggerTask(env);
6699 napi_value exception = nullptr;
6700 napi_get_and_clear_last_exception(env, &exception);
6701 ASSERT_TRUE(exception == nullptr);
6702 }
6703
6704 HWTEST_F(NativeEngineTest, TaskpoolTest330, testing::ext::TestSize.Level0)
6705 {
6706 napi_env env = (napi_env)engine_;
6707 ExceptionScope scope(env);
6708 Task* task = new Task();
6709 task->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task));
6710 napi_value thisValue = NapiHelper::CreateObject(env);
6711 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
6712 task->taskRef_ = ref;
6713 TaskInfo* taskInfo = new TaskInfo();
6714 task->pendingTaskInfos_.push_back(taskInfo);
6715 task->isPeriodicTask_ = true;
6716 task->NotifyPendingTask();
6717 napi_value exception = nullptr;
6718 napi_get_and_clear_last_exception(env, &exception);
6719 ASSERT_TRUE(exception == nullptr);
6720
6721 Task* task2 = new Task();
6722 task2->taskId_ = TaskManager::GetInstance().CalculateTaskId(reinterpret_cast<uint64_t>(task2));
6723 napi_value thisValue2 = NapiHelper::CreateObject(env);
6724 napi_ref ref2 = NapiHelper::CreateReference(env, thisValue2, 0);
6725 task2->taskRef_ = ref;
6726 TaskInfo* taskInfo2 = new TaskInfo();
6727 task2->pendingTaskInfos_.push_back(taskInfo2);
6728 task2->taskState_ = ExecuteState::CANCELED;
6729 task2->NotifyPendingTask();
6730 exception = nullptr;
6731 napi_get_and_clear_last_exception(env, &exception);
6732 ASSERT_TRUE(exception == nullptr);
6733
6734 Task* task3 = new Task();
6735 TaskInfo* taskInfo3 = new TaskInfo();
6736 task3->pendingTaskInfos_.push_back(taskInfo3);
6737 task3->taskState_ = ExecuteState::CANCELED;
6738 task3->isPeriodicTask_ = true;
6739 task3->NotifyPendingTask();
6740 exception = nullptr;
6741 napi_get_and_clear_last_exception(env, &exception);
6742 ASSERT_TRUE(exception == nullptr);
6743 delete task;
6744 delete task2;
6745 delete task3;
6746 }
6747
6748 HWTEST_F(NativeEngineTest, TaskpoolTest331, testing::ext::TestSize.Level0)
6749 {
6750 napi_env env = (napi_env)engine_;
6751 ExceptionScope scope(env);
6752 Task* task = new Task();
6753 task->taskType_ = TaskType::SEQRUNNER_TASK;
6754 task->taskState_ = ExecuteState::FINISHED;
6755 bool flag = task->UpdateTaskStateToWaiting();
6756 ASSERT_FALSE(flag);
6757
6758 task->taskType_ = TaskType::COMMON_TASK;
6759 task->isPeriodicTask_ = true;
6760 flag = task->UpdateTaskStateToWaiting();
6761 ASSERT_TRUE(flag);
6762
6763 task->taskState_ = ExecuteState::NOT_FOUND;
6764 flag = task->UpdateTaskStateToWaiting();
6765 ASSERT_TRUE(flag);
6766
6767 task->taskState_ = ExecuteState::CANCELED;
6768 flag = task->UpdateTaskStateToWaiting();
6769 ASSERT_FALSE(flag);
6770
6771 task->taskState_ = ExecuteState::ENDING;
6772 task->isPeriodicTask_ = false;
6773 flag = task->UpdateTaskStateToWaiting();
6774 ASSERT_FALSE(flag);
6775
6776 flag = task->UpdateTaskStateToCanceled();
6777 ASSERT_FALSE(flag);
6778
6779 task->taskState_ = ExecuteState::NOT_FOUND;
6780 flag = task->UpdateTaskStateToCanceled();
6781 ASSERT_FALSE(flag);
6782
6783 task->taskState_ = ExecuteState::CANCELED;
6784 flag = task->UpdateTaskStateToCanceled();
6785 ASSERT_FALSE(flag);
6786
6787 task->taskState_ = ExecuteState::FINISHED;
6788 flag = task->UpdateTaskStateToCanceled();
6789 ASSERT_FALSE(flag);
6790
6791 task->taskState_ = ExecuteState::WAITING;
6792 flag = task->UpdateTaskStateToCanceled();
6793 ASSERT_TRUE(flag);
6794 delete task;
6795 }
6796
6797 HWTEST_F(NativeEngineTest, TaskpoolTest332, testing::ext::TestSize.Level0)
6798 {
6799 napi_env env = (napi_env)engine_;
6800 ExceptionScope scope(env);
6801 Task* task = new Task();
6802 task->taskType_ = TaskType::COMMON_TASK;
6803 task->taskState_ = ExecuteState::CANCELED;
6804 task->isCancelToFinish_ = true;
6805 bool flag = task->UpdateTaskStateToDelayed();
6806 ASSERT_TRUE(flag);
6807
6808 task->taskState_ = ExecuteState::RUNNING;
6809 task->isCancelToFinish_ = false;
6810 flag = task->UpdateTaskStateToEnding();
6811 ASSERT_TRUE(flag);
6812
6813 task->taskState_ = ExecuteState::CANCELED;
6814 task->isPeriodicTask_ = true;
6815 flag = task->UpdateTaskStateToEnding();
6816 ASSERT_FALSE(flag);
6817
6818 task->taskState_ = ExecuteState::WAITING;
6819 task->isPeriodicTask_ = false;
6820 flag = task->UpdateTaskStateToEnding();
6821 ASSERT_FALSE(flag);
6822
6823 task->taskState_ = ExecuteState::CANCELED;
6824 flag = task->UpdateTaskStateToDelayed();
6825 ASSERT_FALSE(flag);
6826
6827 task->taskState_ = ExecuteState::WAITING;
6828 task->isPeriodicTask_ = true;
6829 flag = task->UpdateTaskStateToDelayed();
6830 ASSERT_FALSE(flag);
6831 delete task;
6832 }
6833
6834 HWTEST_F(NativeEngineTest, TaskpoolTest333, testing::ext::TestSize.Level0)
6835 {
6836 napi_env env = (napi_env)engine_;
6837 ExceptionScope scope(env);
6838 napi_value napiTask = CreateTaskObject(env, TaskType::TASK, ExecuteState::RUNNING, true);
6839 napi_value argv[] = {napiTask};
6840 napi_value result = NativeEngineTest::Execute(env, argv, 1);
6841 ASSERT_TRUE(result != nullptr);
6842 Task* task = nullptr;
6843 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
6844 TaskManager::GetInstance().RemoveTask(task->taskId_);
6845 napi_value exception = nullptr;
6846 napi_get_and_clear_last_exception(env, &exception);
6847 ASSERT_TRUE(exception == nullptr);
6848 }
6849
6850 HWTEST_F(NativeEngineTest, TaskpoolTest334, testing::ext::TestSize.Level0)
6851 {
6852 napi_env env = (napi_env)engine_;
6853 ExceptionScope scope(env);
6854 Task* task = new Task();
6855 task->taskType_ = TaskType::COMMON_TASK;
6856 task->taskState_ = ExecuteState::ENDING;
6857 task->isPeriodicTask_ = true;
6858 task->env_ = env;
6859 task->taskId_ = 334;
6860 void* data = reinterpret_cast<void*>(task);
6861 NativeEngineTest::TriggerTask(data, false);
6862 delete task;
6863
6864 Task* task2 = new Task();
6865 task2->taskType_ = TaskType::COMMON_TASK;
6866 task2->taskState_ = ExecuteState::ENDING;
6867 task2->isPeriodicTask_ = true;
6868 task2->env_ = env;
6869 task2->taskId_ = 3341;
6870 void* data2 = reinterpret_cast<void*>(task2);
6871 NativeEngineTest::TriggerTask(data2, true);
6872 delete task2;
6873 napi_value exception = nullptr;
6874 napi_get_and_clear_last_exception(env, &exception);
6875 ASSERT_TRUE(exception == nullptr);
6876 }
6877
6878 HWTEST_F(NativeEngineTest, TaskpoolTest335, testing::ext::TestSize.Level0)
6879 {
6880 napi_env env = (napi_env)engine_;
6881 ExceptionScope scope(env);
6882 uv_timer_t* handle = new uv_timer_t;
6883 Task* task = new Task();
6884 task->isPeriodicTask_ = true;
6885 task->taskState_ = ExecuteState::CANCELED;
6886 task->env_ = env;
6887 task->currentTaskInfo_ = new TaskInfo();
6888 handle->data = task;
6889 NativeEngineTest::PeriodicTaskCallback(handle);
6890 delete handle;
6891 delete task;
6892 ASSERT_TRUE(true);
6893 }