• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }