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 "helper/napi_helper.h"
21 #include "queue.h"
22 #include "task.h"
23 #include "taskpool.h"
24 #include "task_manager.h"
25 #include "task_runner.h"
26 #include "thread.h"
27 #include "tools/log.h"
28 #include "uv.h"
29 #include "worker.h"
30
31 using namespace Commonlibrary::Concurrent::TaskPoolModule;
GetSendableFunction(napi_env env,const char * str,napi_value & result)32 void GetSendableFunction(napi_env env, const char* str, napi_value& result)
33 {
34 napi_value instance = SendableUtils::CreateSendableInstance(env);
35 napi_value name = nullptr;
36 napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &name);
37 napi_get_property(env, instance, name, &result);
38 }
39
GeneratorTask(napi_env env,napi_value thisVar)40 napi_value GeneratorTask(napi_env env, napi_value thisVar)
41 {
42 napi_value func = nullptr;
43 GetSendableFunction(env, "foo", func);
44 napi_value argv[] = { func };
45 std::string funcName = "TaskConstructor";
46 napi_value cb = nullptr;
47 napi_value task = nullptr;
48 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
49 napi_call_function(env, thisVar, cb, 1, argv, &task);
50 return task;
51 }
52
GeneratorTaskGroup(napi_env env,napi_value thisVar)53 napi_value GeneratorTaskGroup(napi_env env, napi_value thisVar)
54 {
55 std::string funcName = "TaskGroupConstructor";
56 napi_value argv[] = {};
57 napi_value cb = nullptr;
58 napi_value group = nullptr;
59 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
60 napi_call_function(env, thisVar, cb, 0, argv, &group);
61 return group;
62 }
63
GeneratorTaskGroupWithName(napi_env env,napi_value thisVar,const char * name)64 napi_value GeneratorTaskGroupWithName(napi_env env, napi_value thisVar, const char* name)
65 {
66 std::string funcName = "TaskGroupConstructor";
67 napi_value str = nullptr;
68 napi_create_string_utf8(env, name, NAPI_AUTO_LENGTH, &str);
69 napi_value argv[] = { str };
70 napi_value cb = nullptr;
71 napi_value group = nullptr;
72 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
73 napi_call_function(env, thisVar, cb, 1, argv, &group);
74 return group;
75 }
76
CreateTaskObject(napi_env env,TaskType taskType=TaskType::TASK,ExecuteState state=ExecuteState::NOT_FOUND,bool needStoreTask=false)77 napi_value CreateTaskObject(napi_env env, TaskType taskType = TaskType::TASK,
78 ExecuteState state = ExecuteState::NOT_FOUND, bool needStoreTask = false)
79 {
80 napi_value thisValue = NapiHelper::CreateObject(env);
81 size_t argc = 0;
82 napi_value func = nullptr;
83 napi_create_string_utf8(env, "testFunc", NAPI_AUTO_LENGTH, &func);
84 napi_value* args = new napi_value[1];
85 ObjectScope<napi_value> objScope(args, true);
86 napi_value taskName = NapiHelper::CreateEmptyString(env);
87 Task* task = Task::GenerateTask(env, thisValue, func, taskName, args, argc);
88 task->UpdateTaskType(taskType);
89 if (state != ExecuteState::NOT_FOUND) {
90 task->taskState_ = state;
91 }
92 if (needStoreTask) {
93 TaskManager &taskManager = TaskManager::GetInstance();
94 taskManager.StoreTask(task->taskId_, task);
95 }
96 if (napi_wrap(
97 env, thisValue, task,
98 [](napi_env environment, void* data, void* hint) {
99 auto obj = reinterpret_cast<Task*>(data);
100 if (obj != nullptr) {
101 delete obj;
102 }
103 }, nullptr, nullptr) != napi_ok) {
104 delete task;
105 task = nullptr;
106 return nullptr;
107 }
108 return thisValue;
109 }
110
CreateNullTaskObject(napi_env env)111 napi_value CreateNullTaskObject(napi_env env)
112 {
113 napi_value thisValue = NapiHelper::CreateObject(env);
114 Task* task = nullptr;
115 napi_wrap(
116 env, thisValue, task,
117 [](napi_env environment, void* data, void* hint) {
118 auto obj = reinterpret_cast<Task*>(data);
119 if (obj != nullptr) {
120 delete obj;
121 }
122 }, nullptr, nullptr);
123 return thisValue;
124 }
125
126 HWTEST_F(NativeEngineTest, TaskpoolTest001, testing::ext::TestSize.Level0)
127 {
128 TaskManager &taskManager = TaskManager::GetInstance();
129 uint32_t result = taskManager.GetThreadNum();
130 ASSERT_TRUE(result == 0);
131 }
132
133 HWTEST_F(NativeEngineTest, TaskpoolTest002, testing::ext::TestSize.Level0)
134 {
135 napi_env env = reinterpret_cast<napi_env>(engine_);
136 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
137 ASSERT_NE(worker, nullptr);
138 }
139
140 HWTEST_F(NativeEngineTest, TaskpoolTest003, testing::ext::TestSize.Level0)
141 {
142 napi_env env = reinterpret_cast<napi_env>(engine_);
143 napi_value taskClass = nullptr;
144 napi_value result = TaskPool::InitTaskPool(env, taskClass);
145 usleep(50000);
146 ASSERT_TRUE(result == nullptr);
147 }
148
149 HWTEST_F(NativeEngineTest, TaskpoolTest004, testing::ext::TestSize.Level0)
150 {
151 napi_env env = reinterpret_cast<napi_env>(engine_);
152 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
153 ASSERT_NE(worker, nullptr);
154 uint32_t workers = TaskManager::GetInstance().GetRunningWorkers();
155 ASSERT_TRUE(workers == 0);
156 }
157
158 HWTEST_F(NativeEngineTest, TaskpoolTest005, testing::ext::TestSize.Level0)
159 {
160 uint64_t taskId = 10;
161 TaskManager &taskManager = TaskManager::GetInstance();
162 Task* task = taskManager.GetTask(taskId);
163 ASSERT_TRUE(task == nullptr);
164 }
165
166 HWTEST_F(NativeEngineTest, TaskpoolTest006, testing::ext::TestSize.Level0)
167 {
168 TaskManager &taskManager = TaskManager::GetInstance();
169 std::pair<uint64_t, Priority> result = taskManager.DequeueTaskId();
170 ASSERT_TRUE(result.first == 0);
171 ASSERT_TRUE(result.second == Priority::LOW);
172 }
173
174 HWTEST_F(NativeEngineTest, TaskpoolTest007, testing::ext::TestSize.Level0)
175 {
176 TaskManager &taskManager = TaskManager::GetInstance();
177 uint32_t result = taskManager.GetTaskNum();
178 ASSERT_TRUE(result == 0);
179 }
180
181 HWTEST_F(NativeEngineTest, TaskpoolTest008, testing::ext::TestSize.Level0)
182 {
183 ExecuteQueue executeQueue;
184 uint64_t result = executeQueue.DequeueTaskId();
185 ASSERT_TRUE(result == 0);
186 }
187
188 HWTEST_F(NativeEngineTest, TaskpoolTest009, testing::ext::TestSize.Level0)
189 {
190 ExecuteQueue executeQueue;
191 bool result = executeQueue.IsEmpty();
192 ASSERT_TRUE(result);
193 }
194
195 HWTEST_F(NativeEngineTest, TaskpoolTest010, testing::ext::TestSize.Level0)
196 {
197 ExecuteQueue executeQueue;
198 uint32_t result = executeQueue.GetTaskNum();
199 ASSERT_TRUE(result == 0);
200 }
201
202 HWTEST_F(NativeEngineTest, TaskpoolTest011, testing::ext::TestSize.Level0)
203 {
204 napi_env env = (napi_env)engine_;
205 ExceptionScope scope(env);
206 napi_value argv[] = {nullptr};
207 std::string funcName = "TaskGroupConstructor";
208 napi_value cb = nullptr;
209 napi_value result = nullptr;
210 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
211 napi_call_function(env, nullptr, cb, 0, argv, &result);
212 ASSERT_TRUE(result != nullptr);
213 }
214
215 HWTEST_F(NativeEngineTest, TaskpoolTest012, testing::ext::TestSize.Level0)
216 {
217 napi_env env = (napi_env)engine_;
218 ExceptionScope scope(env);
219 napi_value argv[] = {nullptr};
220 std::string funcName = "TaskGroupConstructor";
221 napi_value cb = nullptr;
222 napi_value result = nullptr;
223 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
224 napi_call_function(env, nullptr, cb, 0, argv, &result);
225 ASSERT_TRUE(result != nullptr);
226 napi_value exception;
227 napi_get_and_clear_last_exception(env, &exception);
228
229 size_t argc1 = 0;
230 napi_value argv1[] = {nullptr};
231 funcName = "AddTask";
232 cb = nullptr;
233 napi_value result1 = nullptr;
234 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
235 napi_call_function(env, nullptr, cb, argc1, argv1, &result1);
236 ASSERT_TRUE(result1 == nullptr);
237 }
238
239 HWTEST_F(NativeEngineTest, TaskpoolTest013, testing::ext::TestSize.Level0)
240 {
241 uint32_t number = 10;
242 napi_env env = reinterpret_cast<napi_env>(engine_);
243 napi_value value = NapiHelper::CreateUint32(env, number);
244 napi_value result = TaskPool::InitTaskPool(env, value);
245 usleep(50000);
246 ASSERT_TRUE(result != nullptr);
247 }
248
TestFunction(napi_env env)249 napi_value TestFunction(napi_env env)
250 {
251 napi_value result = nullptr;
252 const char* message = "test taskpool";
253 size_t length = strlen(message);
254 napi_create_string_utf8(env, message, length, &result);
255 return result;
256 }
257
258 HWTEST_F(NativeEngineTest, TaskpoolTest014, testing::ext::TestSize.Level0)
259 {
260 napi_env env = reinterpret_cast<napi_env>(engine_);
261 TaskManager& taskManager = TaskManager::GetInstance();
262 taskManager.InitTaskManager(env);
263 usleep(50000);
264 uint32_t taskNum = taskManager.GetTaskNum();
265 ASSERT_TRUE(taskNum == 0);
266 uint32_t threadNum = taskManager.GetThreadNum();
267 ASSERT_TRUE(threadNum != 0);
268 uint32_t idleWorkers = taskManager.GetIdleWorkers();
269 ASSERT_TRUE(idleWorkers != 0);
270 uint32_t runningWorkers = taskManager.GetRunningWorkers();
271 ASSERT_TRUE(runningWorkers == 0);
272 uint32_t timeoutWorkers = taskManager.GetTimeoutWorkers();
273 ASSERT_TRUE(timeoutWorkers == 0);
274 }
275
276 HWTEST_F(NativeEngineTest, TaskpoolTest015, testing::ext::TestSize.Level0)
277 {
278 napi_env env = reinterpret_cast<napi_env>(engine_);
279 TaskManager& taskManager = TaskManager::GetInstance();
280 taskManager.InitTaskManager(env);
281 std::pair<uint64_t, Priority> result = taskManager.DequeueTaskId();
282 ASSERT_TRUE(result.first == 0);
283 ASSERT_TRUE(result.second == Priority::LOW);
284 }
285
286 HWTEST_F(NativeEngineTest, TaskpoolTest016, testing::ext::TestSize.Level0)
287 {
288 napi_env env = reinterpret_cast<napi_env>(engine_);
289 ExceptionScope scope(env);
290 TaskManager& taskManager = TaskManager::GetInstance();
291 taskManager.InitTaskManager(env);
292 Task* task = new Task();
293 uint64_t taskId = reinterpret_cast<uint64_t>(task);
294 taskManager.CancelTask(env, taskId);
295 ASSERT_TRUE(taskId != 0);
296 delete task;
297 }
298
299 HWTEST_F(NativeEngineTest, TaskpoolTest017, testing::ext::TestSize.Level0)
300 {
301 napi_env env = reinterpret_cast<napi_env>(engine_);
302 TaskManager& taskManager = TaskManager::GetInstance();
303 taskManager.InitTaskManager(env);
304 Task* task = new Task();
305 uint64_t taskId = reinterpret_cast<uint64_t>(task);
306 taskManager.TryTriggerExpand();
307 ASSERT_TRUE(taskId != 0);
308 delete task;
309 }
310
311 HWTEST_F(NativeEngineTest, TaskpoolTest018, testing::ext::TestSize.Level0)
312 {
313 napi_env env = reinterpret_cast<napi_env>(engine_);
314 TaskManager& taskManager = TaskManager::GetInstance();
315 taskManager.InitTaskManager(env);
316 Task* task = new Task();
317 uint64_t taskId = reinterpret_cast<uint64_t>(task);
318 uint64_t duration = 10;
319 taskManager.UpdateExecutedInfo(duration);
320 ASSERT_TRUE(taskId != 0);
321 delete task;
322 }
323
324 HWTEST_F(NativeEngineTest, TaskpoolTest019, testing::ext::TestSize.Level0)
325 {
326 napi_env env = (napi_env)engine_;
327 ExceptionScope scope(env);
328 napi_value argv[] = {nullptr};
329 std::string funcName = "TaskConstructor";
330 napi_value cb = nullptr;
331 napi_value result = nullptr;
332 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
333 napi_call_function(env, nullptr, cb, 0, argv, &result);
334 ASSERT_TRUE(result == nullptr);
335 }
336
337 HWTEST_F(NativeEngineTest, TaskpoolTest020, testing::ext::TestSize.Level0)
338 {
339 napi_env env = (napi_env)engine_;
340 ExceptionScope scope(env);
341 napi_value argv[] = {nullptr};
342 std::string funcName = "TaskConstructor";
343 napi_value cb = nullptr;
344 napi_value result = nullptr;
345 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
346 napi_call_function(env, nullptr, cb, 0, argv, &result);
347 ASSERT_TRUE(result == nullptr);
348 napi_value exception = nullptr;
349 napi_get_and_clear_last_exception(env, &exception);
350
351 cb = nullptr;
352 napi_value result1 = nullptr;
353 funcName = "SetTransferList";
354 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
355 napi_call_function(env, nullptr, cb, 0, argv, &result1);
356 ASSERT_TRUE(result1 != nullptr);
357 }
358
359 HWTEST_F(NativeEngineTest, TaskpoolTest021, testing::ext::TestSize.Level0)
360 {
361 napi_env env = (napi_env)engine_;
362 ExceptionScope scope(env);
363 size_t argc = 10;
364 napi_value argv[] = {nullptr};
365 std::string funcName = "TaskConstructor";
366 napi_value cb = nullptr;
367 napi_value result = nullptr;
368 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
369 napi_call_function(env, nullptr, cb, 0, argv, &result);
370 ASSERT_TRUE(result == nullptr);
371
372 napi_value func = TestFunction(env);
373 uint32_t number = 10;
374 napi_value value = NapiHelper::CreateUint32(env, number);
375 napi_value* args = new napi_value[argc];
376 ObjectScope<napi_value> objScope(args, true);
377 napi_value taskName = NapiHelper::CreateEmptyString(env);
378 Task::GenerateTask(env, value, func, taskName, args, argc);
379 ASSERT_TRUE(args != nullptr);
380 }
381
382 HWTEST_F(NativeEngineTest, TaskpoolTest022, testing::ext::TestSize.Level0)
383 {
384 napi_env env = reinterpret_cast<napi_env>(engine_);
385 ExceptionScope scope(env);
386 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
387 TaskGroup* group = new TaskGroup();
388 uint64_t groupId = reinterpret_cast<uint64_t>(group);
389 Task* task = new Task();
390 uint64_t taskId = reinterpret_cast<uint64_t>(task);
391 napi_value value = NapiHelper::CreateUint64(env, groupId);
392 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
393 taskGroupManager.AddTask(groupId, reference, taskId);
394 ASSERT_NE(reference, nullptr);
395 delete task;
396 delete group;
397 }
398
399 HWTEST_F(NativeEngineTest, TaskpoolTest023, testing::ext::TestSize.Level0)
400 {
401 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
402 TaskGroup* group = new TaskGroup();
403 uint64_t groupId = reinterpret_cast<uint64_t>(group);
404 TaskGroup* taskGroup = taskGroupManager.GetTaskGroup(groupId);
405 ASSERT_TRUE(taskGroup == nullptr);
406 }
407
408 HWTEST_F(NativeEngineTest, TaskpoolTest024, testing::ext::TestSize.Level0)
409 {
410 MessageQueue<int*> mesQueue;
411 int testData = 42;
412 mesQueue.EnQueue(&testData);
413
414 auto result = mesQueue.DeQueue();
415 ASSERT_EQ(testData, *result);
416 }
417
418 HWTEST_F(NativeEngineTest, TaskpoolTest025, testing::ext::TestSize.Level0)
419 {
420 MessageQueue<std::string> mesQueue;
421 ASSERT_EQ(mesQueue.IsEmpty(), true);
422
423 std::string testStr = "hello";
424 mesQueue.EnQueue(testStr);
425 ASSERT_EQ(mesQueue.IsEmpty(), false);
426 }
427
428 HWTEST_F(NativeEngineTest, TaskpoolTest026, testing::ext::TestSize.Level0)
429 {
430 napi_env env = (napi_env)engine_;
431 ExceptionScope scope(env);
432 napi_value argv[] = {nullptr};
433 std::string funcName = "SeqRunnerConstructor";
434 napi_value cb = nullptr;
435 napi_value result = nullptr;
436 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &cb);
437 napi_call_function(env, nullptr, cb, 0, argv, &result);
438 ASSERT_NE(result, nullptr);
439 }
440
441 HWTEST_F(NativeEngineTest, TaskpoolTest027, testing::ext::TestSize.Level0)
442 {
443 napi_env env = (napi_env)engine_;
444 ExceptionScope scope(env);
445 napi_value argv[] = {nullptr};
446 std::string func = "SeqRunnerConstructor";
447 napi_value callback = nullptr;
448 napi_value result = nullptr;
449 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
450 napi_call_function(env, nullptr, callback, 0, argv, &result);
451 ASSERT_NE(result, nullptr);
452
453 size_t argc1 = 0;
454 napi_value argv1[] = {nullptr};
455 func = "Execute";
456 callback = nullptr;
457 napi_value result1 = nullptr;
458 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::Execute, nullptr, &callback);
459 napi_call_function(env, nullptr, callback, argc1, argv1, &result1);
460 ASSERT_TRUE(result1 == nullptr);
461 }
462
463 HWTEST_F(NativeEngineTest, TaskpoolTest028, testing::ext::TestSize.Level0)
464 {
465 TaskGroup taskGroup;
466 uint32_t taskId = 10;
467 uint32_t index = taskGroup.GetTaskIndex(taskId);
468 ASSERT_EQ(index, 0);
469 }
470
471 HWTEST_F(NativeEngineTest, TaskpoolTest029, testing::ext::TestSize.Level0)
472 {
473 napi_env env = (napi_env)engine_;
474 TaskGroup taskGroup;
475 taskGroup.NotifyGroupTask(env);
476 TaskManager &taskManager = TaskManager::GetInstance();
477 taskManager.InitTaskManager(env);
478 uint32_t taskId = 11;
479 ASSERT_EQ(taskId, 11);
480 }
481
482 HWTEST_F(NativeEngineTest, TaskpoolTest030, testing::ext::TestSize.Level0)
483 {
484 napi_env env = (napi_env)engine_;
485 TaskGroup taskGroup;
486 taskGroup.CancelPendingGroup(env);
487 TaskManager &taskManager = TaskManager::GetInstance();
488 taskManager.InitTaskManager(env);
489 uint32_t taskId = 12;
490 ASSERT_EQ(taskId, 12);
491 }
492
493 HWTEST_F(NativeEngineTest, TaskpoolTest031, testing::ext::TestSize.Level0)
494 {
495 napi_env env = reinterpret_cast<napi_env>(engine_);
496 TaskManager& taskManager = TaskManager::GetInstance();
497 taskManager.InitTaskManager(env);
498 Task* task = new Task();
499 auto id = reinterpret_cast<uint64_t>(task);
500 taskManager.StoreTask(id, task);
501 Task* res = taskManager.GetTask(id);
502 ASSERT_EQ(task, res);
503 }
504
505 HWTEST_F(NativeEngineTest, TaskpoolTest032, testing::ext::TestSize.Level0)
506 {
507 napi_env env = reinterpret_cast<napi_env>(engine_);
508 TaskManager& taskManager = TaskManager::GetInstance();
509 taskManager.InitTaskManager(env);
510 uint64_t taskId = 14;
511 taskManager.RemoveTask(taskId);
512 ASSERT_EQ(taskId, 14);
513 }
514
515 HWTEST_F(NativeEngineTest, TaskpoolTest033, testing::ext::TestSize.Level0)
516 {
517 napi_env env = reinterpret_cast<napi_env>(engine_);
518 TaskManager& taskManager = TaskManager::GetInstance();
519 taskManager.InitTaskManager(env);
520 usleep(50000);
521 // the task will freed in the taskManager's Destuctor and will not cause memory leak
522 Task* task = new Task();
523 auto taskId = reinterpret_cast<uint64_t>(task);
524 taskManager.EnqueueTaskId(taskId, Priority::HIGH);
525 std::pair<uint64_t, Priority> result = taskManager.DequeueTaskId();
526 ASSERT_TRUE(result.first == taskId);
527 ASSERT_TRUE(result.second == Priority::HIGH);
528 }
529
530 HWTEST_F(NativeEngineTest, TaskpoolTest034, testing::ext::TestSize.Level0)
531 {
532 napi_env env = reinterpret_cast<napi_env>(engine_);
533 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
534 TaskManager& taskManager = TaskManager::GetInstance();
535 taskManager.InitTaskManager(env);
536 taskManager.NotifyWorkerIdle(worker);
537 ASSERT_NE(worker, nullptr);
538 taskManager.NotifyWorkerCreated(worker);
539 ASSERT_NE(worker, nullptr);
540 taskManager.NotifyWorkerRunning(worker);
541 ASSERT_NE(worker, nullptr);
542 taskManager.RestoreWorker(worker);
543 ASSERT_NE(worker, nullptr);
544 taskManager.RemoveWorker(worker);
545 ASSERT_NE(worker, nullptr);
546 }
547
548 HWTEST_F(NativeEngineTest, TaskpoolTest035, testing::ext::TestSize.Level0)
549 {
550 napi_env env = reinterpret_cast<napi_env>(engine_);
551 TaskManager& taskManager = TaskManager::GetInstance();
552 taskManager.InitTaskManager(env);
553 uint32_t step = 8;
554 taskManager.GetIdleWorkersList(step);
555 ASSERT_EQ(step, 8);
556 }
557
558 HWTEST_F(NativeEngineTest, TaskpoolTest036, testing::ext::TestSize.Level0)
559 {
560 napi_env env = reinterpret_cast<napi_env>(engine_);
561 TaskManager& taskManager = TaskManager::GetInstance();
562 taskManager.InitTaskManager(env);
563 napi_value res = taskManager.GetThreadInfos(env);
564 ASSERT_NE(res, nullptr);
565 }
566
567 HWTEST_F(NativeEngineTest, TaskpoolTest037, testing::ext::TestSize.Level0)
568 {
569 napi_env env = reinterpret_cast<napi_env>(engine_);
570 TaskManager& taskManager = TaskManager::GetInstance();
571 taskManager.InitTaskManager(env);
572 uint64_t taskId = 16;
573 std::shared_ptr<CallbackInfo> res = taskManager.GetCallbackInfo(taskId);
574 ASSERT_EQ(res, nullptr);
575 }
576
577 HWTEST_F(NativeEngineTest, TaskpoolTest038, testing::ext::TestSize.Level0)
578 {
579 napi_env env = reinterpret_cast<napi_env>(engine_);
580 TaskManager& taskManager = TaskManager::GetInstance();
581 taskManager.InitTaskManager(env);
582 uint64_t taskId = 16;
583 taskManager.RegisterCallback(env, taskId, nullptr);
584 ASSERT_EQ(taskId, 16);
585 }
586
587 HWTEST_F(NativeEngineTest, TaskpoolTest039, testing::ext::TestSize.Level0)
588 {
589 napi_env env = reinterpret_cast<napi_env>(engine_);
590 TaskManager& taskManager = TaskManager::GetInstance();
591 taskManager.InitTaskManager(env);
592 uint64_t taskId = 17;
593 taskManager.IncreaseRefCount(taskId);
594 ASSERT_EQ(taskId, 17);
595 }
596
597 HWTEST_F(NativeEngineTest, TaskpoolTest040, testing::ext::TestSize.Level0)
598 {
599 napi_env env = reinterpret_cast<napi_env>(engine_);
600 TaskManager& taskManager = TaskManager::GetInstance();
601 taskManager.InitTaskManager(env);
602 uint64_t taskId = 18;
603 taskManager.DecreaseRefCount(env, taskId);
604 ASSERT_EQ(taskId, 18);
605 }
606
607 HWTEST_F(NativeEngineTest, TaskpoolTest041, testing::ext::TestSize.Level0)
608 {
609 napi_env env = reinterpret_cast<napi_env>(engine_);
610 TaskManager& taskManager = TaskManager::GetInstance();
611 taskManager.InitTaskManager(env);
612 uint64_t taskId = 19;
613 bool res = taskManager.IsDependendByTaskId(taskId);
614 ASSERT_EQ(res, false);
615 }
616
617 HWTEST_F(NativeEngineTest, TaskpoolTest042, testing::ext::TestSize.Level0)
618 {
619 napi_env env = reinterpret_cast<napi_env>(engine_);
620 TaskManager& taskManager = TaskManager::GetInstance();
621 taskManager.InitTaskManager(env);
622 uint64_t taskId = 20;
623 taskManager.NotifyDependencyTaskInfo(taskId);
624 ASSERT_EQ(taskId, 20);
625 }
626
627 HWTEST_F(NativeEngineTest, TaskpoolTest043, testing::ext::TestSize.Level0)
628 {
629 napi_env env = reinterpret_cast<napi_env>(engine_);
630 TaskManager& taskManager = TaskManager::GetInstance();
631 taskManager.InitTaskManager(env);
632 uint64_t taskId = 21;
633 std::set<uint64_t> taskSet;
634 taskSet.emplace(1);
635 taskSet.emplace(2);
636 bool res = taskManager.StoreTaskDependency(taskId, taskSet);
637 ASSERT_EQ(res, true);
638 }
639
640 HWTEST_F(NativeEngineTest, TaskpoolTest044, testing::ext::TestSize.Level0)
641 {
642 napi_env env = reinterpret_cast<napi_env>(engine_);
643 TaskManager& taskManager = TaskManager::GetInstance();
644 taskManager.InitTaskManager(env);
645 uint64_t taskId = 22;
646 uint64_t dependentId = 0;
647 bool res = taskManager.RemoveTaskDependency(taskId, dependentId);
648 ASSERT_EQ(res, false);
649 }
650
651 HWTEST_F(NativeEngineTest, TaskpoolTest045, testing::ext::TestSize.Level0)
652 {
653 napi_env env = reinterpret_cast<napi_env>(engine_);
654 TaskManager& taskManager = TaskManager::GetInstance();
655 taskManager.InitTaskManager(env);
656 uint64_t taskId = 23;
657 std::set<uint64_t> dependentIdSet;
658 dependentIdSet.emplace(1);
659 std::set<uint64_t> idSet;
660 idSet.emplace(2);
661 bool res = taskManager.CheckCircularDependency(dependentIdSet, idSet, taskId);
662 ASSERT_EQ(res, true);
663 }
664
665 HWTEST_F(NativeEngineTest, TaskpoolTest046, testing::ext::TestSize.Level0)
666 {
667 napi_env env = reinterpret_cast<napi_env>(engine_);
668 TaskManager& taskManager = TaskManager::GetInstance();
669 taskManager.InitTaskManager(env);
670 uint64_t taskId = 24;
671 taskManager.EnqueuePendingTaskInfo(taskId, Priority::NUMBER);
672 std::pair<uint64_t, Priority> res = taskManager.DequeuePendingTaskInfo(taskId);
673 ASSERT_EQ(res.first, 24);
674 ASSERT_EQ(res.second, Priority::NUMBER);
675 }
676
677 HWTEST_F(NativeEngineTest, TaskpoolTest047, testing::ext::TestSize.Level0)
678 {
679 napi_env env = reinterpret_cast<napi_env>(engine_);
680 TaskManager& taskManager = TaskManager::GetInstance();
681 taskManager.InitTaskManager(env);
682 uint64_t taskId = 24;
683 taskManager.RemovePendingTaskInfo(taskId);
684 ASSERT_EQ(taskId, 24);
685 }
686
687 HWTEST_F(NativeEngineTest, TaskpoolTest048, testing::ext::TestSize.Level0)
688 {
689 napi_env env = reinterpret_cast<napi_env>(engine_);
690 TaskManager& taskManager = TaskManager::GetInstance();
691 taskManager.InitTaskManager(env);
692 uint64_t taskId = 25;
693 std::set<uint64_t> dependTaskIdSet;
694 taskManager.StoreDependentTaskInfo(dependTaskIdSet, taskId);
695 ASSERT_EQ(taskId, 25);
696 }
697
698 HWTEST_F(NativeEngineTest, TaskpoolTest049, testing::ext::TestSize.Level0)
699 {
700 napi_env env = reinterpret_cast<napi_env>(engine_);
701 TaskManager& taskManager = TaskManager::GetInstance();
702 taskManager.InitTaskManager(env);
703 uint64_t taskId = 26;
704 uint64_t dependentTaskId = 26;
705 taskManager.RemoveDependentTaskInfo(dependentTaskId, taskId);
706 ASSERT_EQ(taskId, 26);
707 ASSERT_EQ(dependentTaskId, 26);
708 }
709
710 HWTEST_F(NativeEngineTest, TaskpoolTest050, testing::ext::TestSize.Level0)
711 {
712 napi_env env = reinterpret_cast<napi_env>(engine_);
713 TaskManager& taskManager = TaskManager::GetInstance();
714 taskManager.InitTaskManager(env);
715 uint64_t taskId = 27;
716 uint64_t totalDuration = 25;
717 uint64_t cpuDuration = 8;
718 taskManager.StoreTaskDuration(taskId, totalDuration, cpuDuration);
719 ASSERT_EQ(taskId, 27);
720 ASSERT_EQ(totalDuration, 25);
721 ASSERT_EQ(cpuDuration, 8);
722 }
723
724 HWTEST_F(NativeEngineTest, TaskpoolTest051, testing::ext::TestSize.Level0)
725 {
726 napi_env env = reinterpret_cast<napi_env>(engine_);
727 TaskManager& taskManager = TaskManager::GetInstance();
728 taskManager.InitTaskManager(env);
729 uint64_t taskId = 28;
730 std::string str = "testTaskpool";
731 taskManager.GetTaskDuration(taskId, str);
732 ASSERT_EQ(taskId, 28);
733 }
734
735 HWTEST_F(NativeEngineTest, TaskpoolTest052, testing::ext::TestSize.Level0)
736 {
737 napi_env env = reinterpret_cast<napi_env>(engine_);
738 TaskManager& taskManager = TaskManager::GetInstance();
739 taskManager.InitTaskManager(env);
740 uint64_t taskId = 29;
741 taskManager.RemoveTaskDuration(taskId);
742 ASSERT_EQ(taskId, 29);
743 }
744
745 HWTEST_F(NativeEngineTest, TaskpoolTest053, testing::ext::TestSize.Level0)
746 {
747 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
748 uint64_t groupId = 30;
749 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
750 taskGroupManager.StoreTaskGroup(groupId, group);
751 ASSERT_EQ(groupId, 30);
752 }
753
754 HWTEST_F(NativeEngineTest, TaskpoolTest054, testing::ext::TestSize.Level0)
755 {
756 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
757 uint64_t groupId = 31;
758 taskGroupManager.RemoveTaskGroup(groupId);
759 ASSERT_EQ(groupId, 31);
760 }
761
762 HWTEST_F(NativeEngineTest, TaskpoolTest055, testing::ext::TestSize.Level0)
763 {
764 napi_env env = reinterpret_cast<napi_env>(engine_);
765 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
766 uint64_t groupId = 32;
767 taskGroupManager.CancelGroup(env, groupId);
768 ASSERT_EQ(groupId, 32);
769 }
770
771 HWTEST_F(NativeEngineTest, TaskpoolTest056, testing::ext::TestSize.Level0)
772 {
773 napi_env env = reinterpret_cast<napi_env>(engine_);
774 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
775 uint64_t taskId = 33;
776 TaskGroup* group = taskGroupManager.GetTaskGroup(taskId);
777 taskGroupManager.CancelGroupTask(env, taskId, group);
778 ASSERT_EQ(taskId, 33);
779 }
780
781 HWTEST_F(NativeEngineTest, TaskpoolTest057, testing::ext::TestSize.Level0)
782 {
783 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
784 uint64_t groupId = 34;
785 taskGroupManager.UpdateGroupState(groupId);
786 ASSERT_EQ(groupId, 34);
787 }
788
789 HWTEST_F(NativeEngineTest, TaskpoolTest058, testing::ext::TestSize.Level0)
790 {
791 napi_env env = reinterpret_cast<napi_env>(engine_);
792 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
793 uint64_t seqRunnerId = 35;
794 Task *task = new Task();
795 ASSERT_NE(task, nullptr);
796 taskGroupManager.AddTaskToSeqRunner(seqRunnerId, task);
797 taskGroupManager.TriggerSeqRunner(env, task);
798 SequenceRunner sequenceRunner;
799 taskGroupManager.StoreSequenceRunner(seqRunnerId, &sequenceRunner);
800 taskGroupManager.RemoveSequenceRunner(seqRunnerId);
801 ASSERT_EQ(seqRunnerId, 35);
802 SequenceRunner *res = taskGroupManager.GetSeqRunner(seqRunnerId);
803 ASSERT_EQ(res, nullptr);
804 }
805
806 HWTEST_F(NativeEngineTest, TaskpoolTest059, testing::ext::TestSize.Level0)
807 {
808 napi_env env = reinterpret_cast<napi_env>(engine_);
809 TaskManager& taskManager = TaskManager::GetInstance();
810 taskManager.InitTaskManager(env);
811 taskManager.TryTriggerExpand();
812 usleep(50000);
813 uint32_t result = taskManager.GetIdleWorkers();
814 ASSERT_TRUE(result != 0);
815 NativeEngineTest::TriggerShrink(env);
816 }
817
818 HWTEST_F(NativeEngineTest, TaskpoolTest060, testing::ext::TestSize.Level0)
819 {
820 napi_env env = reinterpret_cast<napi_env>(engine_);
821 TaskManager& taskManager = TaskManager::GetInstance();
822 taskManager.InitTaskManager(env);
823 uint64_t taskId = 36;
824 taskManager.EnqueueTaskId(taskId, Priority::LOW);
825 ASSERT_EQ(taskId, 36);
826
827 std::pair<uint64_t, Priority> result = taskManager.DequeueTaskId();
828 ASSERT_TRUE(result.first == 36);
829 ASSERT_TRUE(result.second == Priority::LOW);
830
831 taskId = 37;
832 taskManager.EnqueueTaskId(taskId, Priority::IDLE);
833 ASSERT_EQ(taskId, 37);
834
835 result = taskManager.DequeueTaskId();
836 ASSERT_TRUE(result.first == 37);
837 ASSERT_TRUE(result.second == Priority::IDLE);
838 result = taskManager.DequeueTaskId();
839 ASSERT_TRUE(result.first == 0);
840 ASSERT_TRUE(result.second == Priority::LOW);
841 }
842
843 HWTEST_F(NativeEngineTest, TaskpoolTest061, testing::ext::TestSize.Level0)
844 {
845 napi_env env = (napi_env)engine_;
846 ExceptionScope scope(env);
847 napi_value argv[] = {nullptr, nullptr};
848 std::string funcName = "TaskGroupConstructor";
849 napi_value cb = nullptr;
850 napi_value result = nullptr;
851 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
852
853 napi_call_function(env, nullptr, cb, 2, argv, &result);
854 ASSERT_TRUE(result == nullptr);
855 }
856
857 HWTEST_F(NativeEngineTest, TaskpoolTest062, testing::ext::TestSize.Level0)
858 {
859 napi_env env = (napi_env)engine_;
860 ExceptionScope scope(env);
861 napi_value argv[] = {nullptr};
862 std::string funcName = "TaskGroupConstructor";
863 napi_value cb = nullptr;
864 napi_value result = nullptr;
865 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &cb);
866
867 napi_call_function(env, nullptr, cb, 1, argv, &result);
868 ASSERT_TRUE(result == nullptr);
869 }
870
871 HWTEST_F(NativeEngineTest, TaskpoolTest063, testing::ext::TestSize.Level0)
872 {
873 napi_env env = (napi_env)engine_;
874 TaskGroup taskGroup;
875 uint32_t taskId = 10;
876 taskGroup.taskIds_.push_back(taskId);
877 uint32_t index = taskGroup.GetTaskIndex(taskId);
878 ASSERT_EQ(index, 0);
879 }
880
881 HWTEST_F(NativeEngineTest, TaskpoolTest064, testing::ext::TestSize.Level0)
882 {
883 napi_env env = (napi_env)engine_;
884 TaskGroup taskGroup;
885 uint32_t taskId = 11;
886 taskGroup.taskIds_.push_back(taskId);
887 uint32_t index = taskGroup.GetTaskIndex(1);
888 ASSERT_EQ(index, 1);
889 }
890
891 HWTEST_F(NativeEngineTest, TaskpoolTest065, testing::ext::TestSize.Level0)
892 {
893 napi_env env = (napi_env)engine_;
894 TaskGroup taskGroup;
895 GroupInfo* groupInfo = new GroupInfo();
896 taskGroup.pendingGroupInfos_.push_back(groupInfo);
897 taskGroup.NotifyGroupTask(env);
898 delete groupInfo;
899 groupInfo = nullptr;
900 ASSERT_TRUE(taskGroup.pendingGroupInfos_.empty());
901 }
902
903 HWTEST_F(NativeEngineTest, TaskpoolTest066, testing::ext::TestSize.Level0)
904 {
905 napi_env env = (napi_env)engine_;
906 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
907 TaskGroup* taskGroup = new TaskGroup();
908 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
909 taskGroup->groupId_ = groupId;
910 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
911
912 GroupInfo* groupInfo = new GroupInfo();
913 groupInfo->priority = Priority::DEFAULT;
914 taskGroup->pendingGroupInfos_.push_back(groupInfo);
915 taskGroup->NotifyGroupTask(env);
916 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
917 }
918
919 HWTEST_F(NativeEngineTest, TaskpoolTest067, testing::ext::TestSize.Level0)
920 {
921 napi_env env = (napi_env)engine_;
922 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
923 TaskGroup* taskGroup = new TaskGroup();
924 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
925 taskGroup->groupId_ = groupId;
926 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
927
928 Task* task = new Task();
929 task->taskType_ = TaskType::COMMON_TASK;
930 task->groupId_ = groupId;
931 task->taskId_ = reinterpret_cast<uint64_t>(task);
932 napi_reference_ref(env, task->taskRef_, nullptr);
933 napi_value thisValue = NapiHelper::CreateObject(env);
934 napi_wrap(
935 env, thisValue, task,
__anon15dbeb740302(napi_env environment, void* data, void* hint) 936 [](napi_env environment, void* data, void* hint) {
937 auto obj = reinterpret_cast<Task*>(data);
938 if (obj != nullptr) {
939 delete obj;
940 }
941 }, nullptr, nullptr);
942 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
943 taskGroupManager.AddTask(groupId, ref, task->taskId_);
944
945 GroupInfo* groupInfo = new GroupInfo();
946 groupInfo->priority = Priority::DEFAULT;
947 taskGroup->pendingGroupInfos_.push_back(groupInfo);
948 taskGroup->NotifyGroupTask(env);
949 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
950 }
951
952 HWTEST_F(NativeEngineTest, TaskpoolTest068, testing::ext::TestSize.Level0)
953 {
954 napi_env env = (napi_env)engine_;
955 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
956 TaskGroup taskGroup;
957
958 GroupInfo* groupInfo = new GroupInfo();
959 groupInfo->priority = Priority::DEFAULT;
960 taskGroup.pendingGroupInfos_.push_back(groupInfo);
961 uint64_t taskId = 68;
962 taskGroup.taskIds_.push_back(taskId);
963 taskGroup.CancelPendingGroup(env);
964
965 ASSERT_TRUE(taskGroup.pendingGroupInfos_.empty());
966 }
967
968 HWTEST_F(NativeEngineTest, TaskpoolTest069, testing::ext::TestSize.Level0)
969 {
970 napi_env env = (napi_env)engine_;
971 TaskManager& taskManager = TaskManager::GetInstance();
972 Task* pointer = new Task();
973 auto task = reinterpret_cast<uint64_t>(pointer);
974 auto worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
975 taskManager.StoreLongTaskInfo(task, worker);
976 auto res = taskManager.GetLongTaskInfo(task);
977 ASSERT_TRUE(worker == res);
978 taskManager.TerminateTask(task);
979 res = taskManager.GetLongTaskInfo(task);
980 ASSERT_TRUE(res == nullptr);
981 }
982
983 HWTEST_F(NativeEngineTest, TaskpoolTest070, testing::ext::TestSize.Level0)
984 {
985 napi_env env = (napi_env)engine_;
986 TaskManager& taskManager = TaskManager::GetInstance();
987 Task* task = new Task();
988 auto id = reinterpret_cast<uint64_t>(task);
989 task->isLongTask_ = true;
990 task->taskId_ = id;
991 taskManager.StoreTask(id, task);
992 taskManager.EnqueueTaskId(id);
993 usleep(50000);
994 auto res = taskManager.GetLongTaskInfo(id);
995 ASSERT_NE(res, nullptr);
996 }
997
998 HWTEST_F(NativeEngineTest, TaskpoolTest071, testing::ext::TestSize.Level0)
999 {
1000 napi_env env = (napi_env)engine_;
1001 TaskManager& taskManager = TaskManager::GetInstance();
1002 char buf[4096]; // 4096: buffer length for thread state
1003 auto worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
1004 uv_timer_t* handle = new uv_timer_t;
1005 handle->data = worker;
1006 auto tid = NativeEngineTest::GetWorkerTid(handle);
1007 bool res = taskManager.ReadThreadInfo(tid, buf, sizeof(buf));
1008 ASSERT_TRUE(res == true);
1009 }
1010
1011 HWTEST_F(NativeEngineTest, TaskpoolTest072, testing::ext::TestSize.Level0)
1012 {
1013 napi_env env = (napi_env)engine_;
1014 TaskManager& taskManager = TaskManager::GetInstance();
1015 Task* task = new Task();
1016 auto id = reinterpret_cast<uint64_t>(task);
1017 bool res = taskManager.IsDependendByTaskId(id);
1018 ASSERT_NE(res, true);
1019 }
1020
1021 HWTEST_F(NativeEngineTest, TaskpoolTest073, testing::ext::TestSize.Level0)
1022 {
1023 napi_env env = (napi_env)engine_;
1024 TaskManager& taskManager = TaskManager::GetInstance();
1025 Task* task = new Task();
1026 auto id = reinterpret_cast<uint64_t>(task);
1027 taskManager.StoreTask(id, task);
1028 bool res = taskManager.CheckTask(id);
1029 ASSERT_TRUE(res == true);
1030 }
1031
1032 HWTEST_F(NativeEngineTest, TaskpoolTest074, testing::ext::TestSize.Level0)
1033 {
1034 napi_env env = (napi_env)engine_;
1035 TaskManager& taskManager = TaskManager::GetInstance();
1036 auto res = taskManager.GetThreadInfos(env);
1037 ASSERT_TRUE(res != nullptr);
1038 }
1039
1040 HWTEST_F(NativeEngineTest, TaskpoolTest075, testing::ext::TestSize.Level0)
1041 {
1042 napi_env env = (napi_env)engine_;
1043 TaskManager& taskManager = TaskManager::GetInstance();
1044 auto res = taskManager.GetTaskInfos(env);
1045 ASSERT_TRUE(res != nullptr);
1046 }
1047
1048 HWTEST_F(NativeEngineTest, TaskpoolTest076, testing::ext::TestSize.Level0)
1049 {
1050 napi_env env = (napi_env)engine_;
1051 TaskManager& taskManager = TaskManager::GetInstance();
1052 Task* task = new Task();
1053 auto id = reinterpret_cast<uint64_t>(task);
1054 taskManager.StoreTaskDuration(id, 0, 0);
1055 auto totalTime = taskManager.GetTaskDuration(id, TASK_TOTAL_TIME);
1056 auto cpuTime = taskManager.GetTaskDuration(id, TASK_CPU_TIME);
1057 ASSERT_TRUE(totalTime == 0);
1058 ASSERT_TRUE(cpuTime == 0);
1059 taskManager.StoreTaskDuration(id, 100, 100); // 100: 100 seconds
1060 totalTime = taskManager.GetTaskDuration(id, TASK_TOTAL_TIME);
1061 cpuTime = taskManager.GetTaskDuration(id, TASK_CPU_TIME);
1062 ASSERT_TRUE(totalTime == 100);
1063 ASSERT_TRUE(cpuTime == 100);
1064 }
1065
1066 HWTEST_F(NativeEngineTest, TaskpoolTest077, testing::ext::TestSize.Level0)
1067 {
1068 napi_env env = (napi_env)engine_;
1069 TaskManager& taskManager = TaskManager::GetInstance();
1070 Task* task = new Task(env, TaskType::COMMON_TASK, "test");
1071 auto id = reinterpret_cast<uint64_t>(task);
1072 taskManager.StoreTask(id, task);
1073 auto res = task->name_;
1074 ASSERT_TRUE(strcmp(res.c_str(), "test") == 0);
1075 }
1076
1077 HWTEST_F(NativeEngineTest, TaskpoolTest078, testing::ext::TestSize.Level0)
1078 {
1079 napi_env env = (napi_env)engine_;
1080 ExceptionScope scope(env);
1081 napi_value argv[] = {};
1082 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 0);
1083 ASSERT_TRUE(result == nullptr);
1084 }
1085
1086 HWTEST_F(NativeEngineTest, TaskpoolTest079, testing::ext::TestSize.Level0)
1087 {
1088 napi_env env = (napi_env)engine_;
1089 ExceptionScope scope(env);
1090 napi_value argv[] = { nullptr };
1091 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 1);
1092 ASSERT_TRUE(result == nullptr);
1093 }
1094
1095 HWTEST_F(NativeEngineTest, TaskpoolTest080, testing::ext::TestSize.Level0)
1096 {
1097 napi_env env = (napi_env)engine_;
1098 ExceptionScope scope(env);
1099 napi_value argv[] = { nullptr, nullptr };
1100 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 2);
1101 ASSERT_TRUE(result == nullptr);
1102 }
1103
1104 HWTEST_F(NativeEngineTest, TaskpoolTest081, testing::ext::TestSize.Level0)
1105 {
1106 napi_env env = (napi_env)engine_;
1107 ExceptionScope scope(env);
1108 napi_value func = nullptr;
1109 GetSendableFunction(env, "foo", func);
1110 napi_value argv[] = { func };
1111 napi_value result = NativeEngineTest::IsConcurrent(env, argv, 1);
1112 bool res = true;
1113 napi_get_value_bool(env, result, &res);
1114 ASSERT_TRUE(res == false);
1115 }
1116
1117 HWTEST_F(NativeEngineTest, TaskpoolTest082, testing::ext::TestSize.Level0)
1118 {
1119 napi_env env = (napi_env)engine_;
1120 ExceptionScope scope(env);
1121 napi_value argv[] = { nullptr };
1122 napi_value result = NativeEngineTest::GetTaskPoolInfo(env, argv, 1);
1123 ASSERT_TRUE(result != nullptr);
1124 }
1125
1126 HWTEST_F(NativeEngineTest, TaskpoolTest083, testing::ext::TestSize.Level0)
1127 {
1128 napi_env env = (napi_env)engine_;
1129 ExceptionScope scope(env);
1130 napi_value argv[] = { nullptr };
1131 napi_value result = NativeEngineTest::TerminateTask(env, argv, 1);
1132 ASSERT_TRUE(result == nullptr);
1133 }
1134
1135 HWTEST_F(NativeEngineTest, TaskpoolTest084, testing::ext::TestSize.Level0)
1136 {
1137 napi_env env = (napi_env)engine_;
1138 ExceptionScope scope(env);
1139 napi_value func = nullptr;
1140 GetSendableFunction(env, "foo", func);
1141 napi_value argv[] = { func };
1142 napi_value result = NativeEngineTest::Execute(env, argv, 1);
1143 ASSERT_TRUE(result != nullptr);
1144 }
1145
1146 HWTEST_F(NativeEngineTest, TaskpoolTest085, testing::ext::TestSize.Level0)
1147 {
1148 napi_env env = (napi_env)engine_;
1149 ExceptionScope scope(env);
1150 napi_value func = nullptr;
1151 GetSendableFunction(env, "foo", func);
1152
1153 size_t delay = 1000;
1154 napi_value result = nullptr;
1155 napi_create_uint32(env, delay, &result);
1156
1157 napi_value argv[] = { result, func };
1158 std::string funcName = "ExecuteDelayed";
1159 result = NativeEngineTest::ExecuteDelayed(env, argv, 2);
1160 ASSERT_TRUE(result == nullptr);
1161 }
1162
1163 HWTEST_F(NativeEngineTest, TaskpoolTest086, testing::ext::TestSize.Level0)
1164 {
1165 napi_env env = (napi_env)engine_;
1166 ExceptionScope scope(env);
1167 std::string func = "SeqRunnerConstructor";
1168 napi_value callback = nullptr;
1169 napi_value result = nullptr;
1170 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
1171
1172 napi_value argv1[] = {nullptr};
1173 napi_create_uint32(env, 1, &argv1[0]);
1174 napi_call_function(env, nullptr, callback, 1, argv1, &result);
1175 ASSERT_NE(result, nullptr);
1176
1177 napi_value argv2[2] = {nullptr};
1178 napi_create_uint32(env, 1, &argv2[0]);
1179 napi_create_string_utf8(env, "seq01", NAPI_AUTO_LENGTH, &argv2[1]);
1180 result = nullptr;
1181 napi_call_function(env, nullptr, callback, 2, argv2, &result);
1182 ASSERT_EQ(result, nullptr);
1183 napi_value exception = nullptr;
1184 napi_get_and_clear_last_exception(env, &exception);
1185
1186 napi_value argv3[2] = {nullptr};
1187 napi_create_string_utf8(env, "seq02", NAPI_AUTO_LENGTH, &argv3[0]);
1188 napi_create_uint32(env, 1, &argv3[1]);
1189 result = nullptr;
1190 napi_call_function(env, nullptr, callback, 2, argv3, &result);
1191 ASSERT_NE(result, nullptr);
1192 }
1193
1194 HWTEST_F(NativeEngineTest, TaskpoolTest087, testing::ext::TestSize.Level0)
1195 {
1196 napi_env env = (napi_env)engine_;
1197 ExceptionScope scope(env);
1198 std::string func = "SeqRunnerConstructor";
1199 napi_value callback = nullptr;
1200 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
1201
1202 napi_value argv[2] = {nullptr};
1203 napi_create_string_utf8(env, "seq03", NAPI_AUTO_LENGTH, &argv[0]);
1204 napi_create_uint32(env, 1, &argv[1]);
1205 napi_value result = nullptr;
1206 napi_call_function(env, nullptr, callback, 2, argv, &result);
1207 ASSERT_NE(result, nullptr);
1208
1209 func = "Execute";
1210 napi_value cb = nullptr;
1211 napi_value res = nullptr;
1212 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::Execute, nullptr, &cb);
1213
1214 napi_value argv1[] = {nullptr};
1215 napi_create_uint32(env, 1, &argv1[0]);
1216 napi_call_function(env, nullptr, cb, 1, argv1, &res);
1217 ASSERT_EQ(res, nullptr);
1218 napi_value exception = nullptr;
1219 napi_get_and_clear_last_exception(env, &exception);
1220
1221 napi_value thisValue = CreateTaskObject(env);
1222 napi_value argv2[] = {thisValue};
1223 res = nullptr;
1224 napi_call_function(env, nullptr, cb, 1, argv2, &res);
1225 ASSERT_NE(res, nullptr);
1226 exception = nullptr;
1227 napi_get_and_clear_last_exception(env, &exception);
1228
1229 napi_value napiSeqRunnerId = NapiHelper::GetNameProperty(env, result, "seqRunnerId");
1230 uint64_t seqId = NapiHelper::GetUint64Value(env, napiSeqRunnerId);
1231 SequenceRunner seq;
1232 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
1233 taskGroupManager.StoreSequenceRunner(seqId, &seq);
1234
1235 res = nullptr;
1236 napi_call_function(env, nullptr, cb, 1, argv2, &res);
1237 ASSERT_NE(res, nullptr);
1238 }
1239
1240 HWTEST_F(NativeEngineTest, TaskpoolTest088, testing::ext::TestSize.Level0)
1241 {
1242 napi_env env = (napi_env)engine_;
1243 ExceptionScope scope(env);
1244 napi_value argv[] = {nullptr};
1245 std::string func = "TaskGroupConstructor";
1246 napi_value callback = nullptr;
1247 napi_value taskGroupResult = nullptr;
1248 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1249 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1250
1251 func = "AddTask";
1252 napi_value cb = nullptr;
1253 napi_value result = nullptr;
1254 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
1255
1256 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
1257 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
1258
1259 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
1260 TaskGroup* group = new TaskGroup();
1261 group->groupId_ = groupId;
1262 taskGroupManager.StoreTaskGroup(groupId, group);
1263
1264 napi_value thisValue = CreateTaskObject(env);
1265 napi_value argv1[] = {thisValue};
1266 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1267 ASSERT_NE(result, nullptr);
1268
1269 napi_value thisValue2 = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
1270 napi_value argv2[] = {thisValue2};
1271 result = nullptr;
1272 napi_call_function(env, nullptr, cb, 1, argv2, &result);
1273 ASSERT_EQ(result, nullptr);
1274 }
1275
1276 HWTEST_F(NativeEngineTest, TaskpoolTest089, testing::ext::TestSize.Level0)
1277 {
1278 napi_env env = (napi_env)engine_;
1279 ExceptionScope scope(env);
1280 napi_value argv[] = {nullptr};
1281 std::string func = "TaskGroupConstructor";
1282 napi_value callback = nullptr;
1283 napi_value taskGroupResult = nullptr;
1284 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1285 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1286
1287 napi_value thisValue = NapiHelper::CreateObject(env);
1288 napi_value argv1[] = {thisValue};
1289 func = "AddTask";
1290 napi_value cb = nullptr;
1291 napi_value result = nullptr;
1292 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
1293 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1294 ASSERT_EQ(result, nullptr);
1295 }
1296
1297 HWTEST_F(NativeEngineTest, TaskpoolTest090, testing::ext::TestSize.Level0)
1298 {
1299 napi_env env = (napi_env)engine_;
1300 ExceptionScope scope(env);
1301 napi_value argv[] = {nullptr};
1302 std::string funcName = "TaskGroupConstructor";
1303 napi_value callback = nullptr;
1304 napi_value taskGroupResult = nullptr;
1305 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1306 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1307
__anon15dbeb740402(napi_env environment, napi_callback_info info) 1308 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
1309 return nullptr;
1310 };
1311 napi_value thisValue = nullptr;
1312 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &thisValue);
1313 napi_value argv1[] = {thisValue};
1314 funcName = "AddTask";
1315 napi_value cb = nullptr;
1316 napi_value result = nullptr;
1317 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1318 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1319 ASSERT_EQ(result, nullptr);
1320 }
1321
1322 HWTEST_F(NativeEngineTest, TaskpoolTest091, testing::ext::TestSize.Level0)
1323 {
1324 napi_env env = (napi_env)engine_;
1325 ExceptionScope scope(env);
1326 napi_value argv[] = {nullptr};
1327 std::string funcName = "TaskGroupConstructor";
1328 napi_value callback = nullptr;
1329 napi_value taskGroupResult = nullptr;
1330 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
1331 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
1332
1333 napi_value argv1[] = {};
1334 napi_create_uint32(env, 1, &argv1[0]);
1335 funcName = "AddTask";
1336 napi_value cb = nullptr;
1337 napi_value result = nullptr;
1338 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1339 napi_call_function(env, nullptr, cb, 1, argv1, &result);
1340 ASSERT_EQ(result, nullptr);
1341 }
1342
1343 HWTEST_F(NativeEngineTest, TaskpoolTest092, testing::ext::TestSize.Level0)
1344 {
1345 napi_env env = (napi_env)engine_;
1346 napi_value global;
1347 napi_get_global(env, &global);
1348 napi_value argv[2] = {};
1349 std::string funcName = "OnReceiveData";
1350 napi_value cb = nullptr;
1351 napi_value result = nullptr;
1352 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
1353 napi_call_function(env, global, cb, 0, argv, &result);
1354 napi_value exception = nullptr;
1355 napi_get_and_clear_last_exception(env, &exception);
1356 ExceptionScope scope(env);
1357 argv[0] = nullptr;
1358 argv[1] = nullptr;
1359 result = nullptr;
1360 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
1361 napi_call_function(env, global, cb, 2, argv, &result);
1362 ASSERT_TRUE(result == nullptr);
1363 }
1364
1365 HWTEST_F(NativeEngineTest, TaskpoolTest093, testing::ext::TestSize.Level0)
1366 {
1367 napi_env env = (napi_env)engine_;
1368 napi_value global;
1369 napi_get_global(env, &global);
1370 ExceptionScope scope(env);
1371 napi_value func = nullptr;
1372 GetSendableFunction(env, "foo", func);
1373 napi_value argv[] = { func };
1374 std::string funcName = "TaskConstructor";
1375 napi_value cb = nullptr;
1376 napi_value task = nullptr;
1377 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1378 napi_call_function(env, global, cb, 1, argv, &task);
1379 auto& taskManager = TaskManager::GetInstance();
1380 Task* pointer = nullptr;
1381 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1382 taskManager.StoreTask(pointer->taskId_, pointer);
1383
1384 funcName = "OnReceiveData";
1385 cb = nullptr;
1386 napi_value result = nullptr;
1387 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
1388 napi_call_function(env, global, cb, 1, argv, &result);
1389 auto res = taskManager.GetCallbackInfo(pointer->taskId_);
1390 ASSERT_TRUE(res != nullptr);
1391 }
1392
1393 HWTEST_F(NativeEngineTest, TaskpoolTest094, testing::ext::TestSize.Level0)
1394 {
1395 napi_env env = (napi_env)engine_;
1396 ExceptionScope scope(env);
1397 napi_value argv[] = { nullptr, nullptr };
1398 std::string funcName = "TaskConstructor";
1399 napi_value cb = nullptr;
1400 napi_value result = nullptr;
1401 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1402 napi_call_function(env, nullptr, cb, 2, argv, &result);
1403 ASSERT_TRUE(result == nullptr);
1404 }
1405
1406 HWTEST_F(NativeEngineTest, TaskpoolTest095, testing::ext::TestSize.Level0)
1407 {
1408 napi_env env = (napi_env)engine_;
1409 ExceptionScope scope(env);
1410 const char* str = "Task";
1411 napi_value name = nullptr;
1412 napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &name);
1413 napi_value argv[] = { name, nullptr };
1414 std::string funcName = "TaskConstructor";
1415 napi_value cb = nullptr;
1416 napi_value result = nullptr;
1417 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1418 napi_call_function(env, nullptr, cb, 2, argv, &result);
1419 ASSERT_TRUE(result == nullptr);
1420 }
1421
1422 HWTEST_F(NativeEngineTest, TaskpoolTest096, testing::ext::TestSize.Level0)
1423 {
1424 napi_env env = (napi_env)engine_;
1425 napi_value global;
1426 napi_get_global(env, &global);
1427 ExceptionScope scope(env);
1428 napi_value func = nullptr;
1429 GetSendableFunction(env, "foo", func);
1430 napi_value argv[] = { func };
1431 std::string funcName = "TaskConstructor";
1432 napi_value cb = nullptr;
1433 napi_value result = nullptr;
1434 napi_create_function(env, funcName.c_str(), funcName.size(), Task::TaskConstructor, nullptr, &cb);
1435 napi_call_function(env, global, cb, 1, argv, &result);
1436 ASSERT_TRUE(result != nullptr);
1437 }
1438
1439 HWTEST_F(NativeEngineTest, TaskpoolTest097, testing::ext::TestSize.Level0)
1440 {
1441 napi_env env = (napi_env)engine_;
1442 napi_value global;
1443 napi_get_global(env, &global);
1444 ExceptionScope scope(env);
1445 napi_value func = nullptr;
1446 GetSendableFunction(env, "bar", func);
1447 napi_value argv[] = { func };
1448 std::string funcName = "LongTaskConstructor";
1449 napi_value cb = nullptr;
1450 napi_value result = nullptr;
1451 napi_create_function(env, funcName.c_str(), funcName.size(), Task::LongTaskConstructor, nullptr, &cb);
1452 napi_call_function(env, global, cb, 1, argv, &result);
1453 ASSERT_TRUE(result != nullptr);
1454 }
1455
1456 HWTEST_F(NativeEngineTest, TaskpoolTest098, testing::ext::TestSize.Level0)
1457 {
1458 napi_env env = (napi_env)engine_;
1459 ExceptionScope scope(env);
1460 napi_value argv[] = { nullptr };
1461 std::string funcName = "SendData";
1462 napi_value cb = nullptr;
1463 napi_value result = nullptr;
1464 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
1465 napi_call_function(env, nullptr, cb, 1, argv, &result);
1466 ASSERT_TRUE(result == nullptr);
1467 }
1468
1469 HWTEST_F(NativeEngineTest, TaskpoolTest099, testing::ext::TestSize.Level0)
1470 {
1471 napi_env env = (napi_env)engine_;
1472 napi_value argv[] = {};
1473 std::string funcName = "AddDependency";
1474 napi_value cb = nullptr;
1475 napi_value result = nullptr;
1476 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1477 napi_call_function(env, nullptr, cb, 0, argv, &result);
1478 napi_value exception = nullptr;
1479 napi_get_and_clear_last_exception(env, &exception);
1480 ASSERT_TRUE(exception != nullptr);
1481 }
1482
1483 HWTEST_F(NativeEngineTest, TaskpoolTest100, testing::ext::TestSize.Level0)
1484 {
1485 napi_env env = (napi_env)engine_;
1486 napi_value global;
1487 napi_get_global(env, &global);
1488 auto task = GeneratorTask(env, global);
1489 Task* pointer = nullptr;
1490 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1491 pointer->isPeriodicTask_ = true;
1492
1493 napi_value argv[] = { nullptr };
1494 std::string funcName = "AddDependency";
1495 napi_value cb = nullptr;
1496 napi_value result = nullptr;
1497 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1498 napi_call_function(env, task, cb, 1, argv, &result);
1499 napi_value exception = nullptr;
1500 napi_get_and_clear_last_exception(env, &exception);
1501 ASSERT_TRUE(exception != nullptr);
1502 }
1503
1504 HWTEST_F(NativeEngineTest, TaskpoolTest101, testing::ext::TestSize.Level0)
1505 {
1506 napi_env env = (napi_env)engine_;
1507 napi_value global;
1508 napi_get_global(env, &global);
1509 auto task = GeneratorTask(env, global);
1510 Task* pointer = nullptr;
1511 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1512 pointer->taskType_ = TaskType::COMMON_TASK;
1513
1514 napi_value argv[] = { nullptr };
1515 std::string funcName = "AddDependency";
1516 napi_value cb = nullptr;
1517 napi_value result = nullptr;
1518 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1519 napi_call_function(env, task, cb, 1, argv, &result);
1520 napi_value exception = nullptr;
1521 napi_get_and_clear_last_exception(env, &exception);
1522 ASSERT_TRUE(exception != nullptr);
1523 }
1524
1525 HWTEST_F(NativeEngineTest, TaskpoolTest102, testing::ext::TestSize.Level0)
1526 {
1527 napi_env env = (napi_env)engine_;
1528 napi_value global;
1529 napi_get_global(env, &global);
1530 auto task = GeneratorTask(env, global);
1531 auto dependentTask = GeneratorTask(env, global);
1532
1533 napi_value argv[] = { task };
1534 std::string funcName = "AddDependency";
1535 napi_value cb = nullptr;
1536 napi_value result = nullptr;
1537 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1538 napi_call_function(env, task, cb, 1, argv, &result);
1539 napi_value exception = nullptr;
1540 napi_get_and_clear_last_exception(env, &exception);
1541 ASSERT_TRUE(exception != nullptr);
1542 }
1543
1544 HWTEST_F(NativeEngineTest, TaskpoolTest103, testing::ext::TestSize.Level0)
1545 {
1546 napi_env env = (napi_env)engine_;
1547 napi_value global;
1548 napi_get_global(env, &global);
1549 auto task = GeneratorTask(env, global);
1550 napi_value obj;
1551 napi_create_object(env, &obj);
1552 auto dependentTask = GeneratorTask(env, obj);
1553
1554 napi_value argv[] = { dependentTask };
1555 std::string funcName = "AddDependency";
1556 napi_value cb = nullptr;
1557 napi_value result = nullptr;
1558 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
1559 napi_call_function(env, task, cb, 1, argv, &result);
1560 napi_value exception = nullptr;
1561 napi_get_and_clear_last_exception(env, &exception);
1562 ASSERT_TRUE(exception == nullptr);
1563 }
1564
1565 HWTEST_F(NativeEngineTest, TaskpoolTest104, testing::ext::TestSize.Level0)
1566 {
1567 napi_env env = (napi_env)engine_;
1568 ExceptionScope scope(env);
1569 napi_value obj;
1570 napi_create_object(env, &obj);
1571 auto task = GeneratorTask(env, obj);
1572 napi_value argv[] = { task };
1573 NativeEngineTest::Execute(env, argv, 1);
1574 napi_value exception = nullptr;
1575 napi_get_and_clear_last_exception(env, &exception);
1576 ASSERT_TRUE(exception == nullptr);
1577 }
1578
1579 HWTEST_F(NativeEngineTest, TaskpoolTest105, testing::ext::TestSize.Level0)
1580 {
1581 napi_env env = (napi_env)engine_;
1582 ExceptionScope scope(env);
1583 napi_value obj;
1584 napi_create_object(env, &obj);
1585 auto task = GeneratorTask(env, obj);
1586 napi_value argv[] = { task };
1587 NativeEngineTest::TerminateTask(env, argv, 1);
1588 napi_value exception = nullptr;
1589 napi_get_and_clear_last_exception(env, &exception);
1590 ASSERT_TRUE(exception != nullptr);
1591 }
1592
1593 HWTEST_F(NativeEngineTest, TaskpoolTest106, testing::ext::TestSize.Level0)
1594 {
1595 napi_env env = (napi_env)engine_;
1596 ExceptionScope scope(env);
1597 napi_value argv[] = {};
1598 NativeEngineTest::TerminateTask(env, argv, 0);
1599 napi_value exception = nullptr;
1600 napi_get_and_clear_last_exception(env, &exception);
1601 ASSERT_TRUE(exception != nullptr);
1602 }
1603
1604 HWTEST_F(NativeEngineTest, TaskpoolTest107, testing::ext::TestSize.Level0)
1605 {
1606 napi_env env = (napi_env)engine_;
1607 ExceptionScope scope(env);
1608 napi_value obj;
1609 napi_create_object(env, &obj);
1610 auto task = GeneratorTask(env, obj);
1611 Task* pointer = nullptr;
1612 napi_unwrap(env, task, reinterpret_cast<void**>(&pointer));
1613 ASSERT_TRUE(pointer != nullptr);
1614 pointer->isLongTask_ = true;
1615 napi_value argv[] = { task };
1616 NativeEngineTest::TerminateTask(env, argv, 1);
1617 napi_value exception = nullptr;
1618 napi_get_and_clear_last_exception(env, &exception);
1619 ASSERT_TRUE(exception == nullptr);
1620 }
1621
1622 HWTEST_F(NativeEngineTest, TaskpoolTest108, testing::ext::TestSize.Level0)
1623 {
1624 napi_env env = (napi_env)engine_;
1625 ExceptionScope scope(env);
1626 napi_value argv[] = {};
1627 NativeEngineTest::Execute(env, argv, 0);
1628 napi_value exception = nullptr;
1629 napi_get_and_clear_last_exception(env, &exception);
1630 ASSERT_TRUE(exception != nullptr);
1631 }
1632
1633 HWTEST_F(NativeEngineTest, TaskpoolTest109, testing::ext::TestSize.Level0)
1634 {
1635 napi_env env = (napi_env)engine_;
1636 ExceptionScope scope(env);
1637 napi_value obj;
1638 napi_create_object(env, &obj);
1639 auto task = GeneratorTask(env, obj);
1640 napi_value priority = nullptr;
1641 napi_create_uint32(env, 2, &priority); // 2: LOW priority
1642 napi_value argv[] = { task, priority };
1643 NativeEngineTest::Execute(env, argv, 2);
1644 napi_value exception = nullptr;
1645 napi_get_and_clear_last_exception(env, &exception);
1646 ASSERT_TRUE(exception == nullptr);
1647 }
1648
1649 HWTEST_F(NativeEngineTest, TaskpoolTest110, testing::ext::TestSize.Level0)
1650 {
1651 napi_env env = (napi_env)engine_;
1652 ExceptionScope scope(env);
1653 napi_value obj;
1654 napi_create_object(env, &obj);
1655 auto task = GeneratorTask(env, obj);
1656 napi_value priority = nullptr;
1657 napi_create_uint32(env, 10, &priority); // 10: invalid priority
1658 napi_value argv[] = { task, priority };
1659 NativeEngineTest::Execute(env, argv, 2);
1660 napi_value exception = nullptr;
1661 napi_get_and_clear_last_exception(env, &exception);
1662 ASSERT_TRUE(exception != nullptr);
1663 }
1664
1665 HWTEST_F(NativeEngineTest, TaskpoolTest111, testing::ext::TestSize.Level0)
1666 {
1667 napi_env env = (napi_env)engine_;
1668 ExceptionScope scope(env);
1669 napi_value obj;
1670 napi_create_object(env, &obj);
1671 auto group = GeneratorTaskGroup(env, obj);
1672 napi_value taskObj;
1673 napi_create_object(env, &taskObj);
1674 auto task = GeneratorTask(env, taskObj);
1675 napi_value argv[] = { task };
1676 std::string funcName = "AddTask";
1677 napi_value cb = nullptr;
1678 napi_value result = nullptr;
1679 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1680 napi_call_function(env, group, cb, 1, argv, &result);
1681 napi_value exception = nullptr;
1682 napi_get_and_clear_last_exception(env, &exception);
1683 ASSERT_TRUE(exception == nullptr);
1684 }
1685
1686 HWTEST_F(NativeEngineTest, TaskpoolTest112, testing::ext::TestSize.Level0)
1687 {
1688 napi_env env = (napi_env)engine_;
1689 ExceptionScope scope(env);
1690 napi_value obj;
1691 napi_create_object(env, &obj);
1692 auto group = GeneratorTaskGroup(env, obj);
1693 napi_value func = nullptr;
1694 GetSendableFunction(env, "foo", func);
1695 napi_value argv[] = { func };
1696 std::string funcName = "AddTask";
1697 napi_value cb = nullptr;
1698 napi_value result = nullptr;
1699 napi_create_function(env, funcName.c_str(), funcName.size(), TaskGroup::AddTask, nullptr, &cb);
1700 napi_call_function(env, group, cb, 1, argv, &result);
1701 napi_value exception = nullptr;
1702 napi_get_and_clear_last_exception(env, &exception);
1703 ASSERT_TRUE(exception == nullptr);
1704 }
1705
1706 HWTEST_F(NativeEngineTest, TaskpoolTest113, testing::ext::TestSize.Level0)
1707 {
1708 napi_env env = (napi_env)engine_;
1709 ExceptionScope scope(env);
1710 napi_value argv[] = {};
1711 NativeEngineTest::Cancel(env, argv, 0);
1712 napi_value exception = nullptr;
1713 napi_get_and_clear_last_exception(env, &exception);
1714 ASSERT_TRUE(exception != nullptr);
1715 }
1716
1717 HWTEST_F(NativeEngineTest, TaskpoolTest114, testing::ext::TestSize.Level0)
1718 {
1719 napi_env env = (napi_env)engine_;
1720 ExceptionScope scope(env);
1721 napi_value argv[] = { nullptr };
1722 NativeEngineTest::Cancel(env, argv, 1);
1723 napi_value exception = nullptr;
1724 napi_get_and_clear_last_exception(env, &exception);
1725 ASSERT_TRUE(exception != nullptr);
1726 }
1727
1728 HWTEST_F(NativeEngineTest, TaskpoolTest115, testing::ext::TestSize.Level0)
1729 {
1730 napi_env env = (napi_env)engine_;
1731 ExceptionScope scope(env);
1732 napi_value obj = nullptr;
1733 napi_create_object(env, &obj);
1734 auto task = GeneratorTask(env, obj);
1735 napi_value argv[] = { task };
1736 NativeEngineTest::Cancel(env, argv, 1);
1737 napi_value exception = nullptr;
1738 napi_get_and_clear_last_exception(env, &exception);
1739 ASSERT_TRUE(exception != nullptr);
1740 }
1741
1742 HWTEST_F(NativeEngineTest, TaskpoolTest116, testing::ext::TestSize.Level0)
1743 {
1744 napi_env env = (napi_env)engine_;
1745 ExceptionScope scope(env);
1746 napi_value obj = nullptr;
1747 napi_create_object(env, &obj);
1748 auto task = GeneratorTask(env, obj);
1749 napi_value argv[] = { task };
1750 NativeEngineTest::Execute(env, argv, 1);
1751 NativeEngineTest::Cancel(env, argv, 1);
1752 napi_value exception = nullptr;
1753 napi_get_and_clear_last_exception(env, &exception);
1754 ASSERT_TRUE(exception == nullptr);
1755 }
1756
1757
1758 HWTEST_F(NativeEngineTest, TaskpoolTest117, testing::ext::TestSize.Level0)
1759 {
1760 napi_env env = (napi_env)engine_;
1761 napi_value obj;
1762 napi_create_object(env, &obj);
1763 auto task = GeneratorTask(env, obj);
1764 napi_value argv[] = { nullptr, nullptr };
1765 std::string funcName = "SetTransferList";
1766 napi_value cb = nullptr;
1767 napi_value result = nullptr;
1768 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
1769 napi_call_function(env, task, cb, 2, argv, &result);
1770 napi_value exception = nullptr;
1771 napi_get_and_clear_last_exception(env, &exception);
1772 ASSERT_TRUE(exception != nullptr);
1773 }
1774
1775 HWTEST_F(NativeEngineTest, TaskpoolTest118, testing::ext::TestSize.Level0)
1776 {
1777 napi_env env = (napi_env)engine_;
1778 napi_value obj;
1779 napi_create_object(env, &obj);
1780 auto task = GeneratorTask(env, obj);
1781 napi_value array;
1782 napi_create_array_with_length(env, 1, &array);
1783
1784 napi_value argv[] = { array };
1785 std::string funcName = "SetTransferList";
1786 napi_value cb = nullptr;
1787 napi_value result = nullptr;
1788 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
1789 napi_call_function(env, task, cb, 1, argv, &result);
1790 napi_value exception = nullptr;
1791 napi_get_and_clear_last_exception(env, &exception);
1792 ASSERT_TRUE(exception != nullptr);
1793 }
1794
1795 HWTEST_F(NativeEngineTest, TaskpoolTest119, testing::ext::TestSize.Level0)
1796 {
1797 napi_env env = (napi_env)engine_;
1798 napi_value obj;
1799 napi_create_object(env, &obj);
1800 auto task = GeneratorTask(env, obj);
1801 napi_value argv[] = { nullptr, nullptr };
1802 std::string funcName = "SetCloneList";
1803 napi_value cb = nullptr;
1804 napi_value result = nullptr;
1805 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1806 napi_call_function(env, task, cb, 2, argv, &result);
1807 napi_value exception = nullptr;
1808 napi_get_and_clear_last_exception(env, &exception);
1809 ASSERT_TRUE(exception != nullptr);
1810 }
1811
1812 HWTEST_F(NativeEngineTest, TaskpoolTest120, testing::ext::TestSize.Level0)
1813 {
1814 napi_env env = (napi_env)engine_;
1815 napi_value obj;
1816 napi_create_object(env, &obj);
1817 auto task = GeneratorTask(env, obj);
1818 napi_value argv[] = { nullptr };
1819 std::string funcName = "SetCloneList";
1820 napi_value cb = nullptr;
1821 napi_value result = nullptr;
1822 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1823 napi_call_function(env, task, cb, 1, argv, &result);
1824 napi_value exception = nullptr;
1825 napi_get_and_clear_last_exception(env, &exception);
1826 ASSERT_TRUE(exception != nullptr);
1827 }
1828
1829 HWTEST_F(NativeEngineTest, TaskpoolTest121, testing::ext::TestSize.Level0)
1830 {
1831 napi_env env = (napi_env)engine_;
1832 napi_value obj;
1833 napi_create_object(env, &obj);
1834 auto task = GeneratorTask(env, obj);
1835 napi_value array;
1836 napi_create_array_with_length(env, 1, &array);
1837 napi_value argv[] = { array };
1838 std::string funcName = "SetCloneList";
1839 napi_value cb = nullptr;
1840 napi_value result = nullptr;
1841 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
1842 napi_call_function(env, task, cb, 1, argv, &result);
1843 napi_value exception = nullptr;
1844 napi_get_and_clear_last_exception(env, &exception);
1845 ASSERT_TRUE(exception == nullptr);
1846 }
1847
1848 HWTEST_F(NativeEngineTest, TaskpoolTest122, testing::ext::TestSize.Level0)
1849 {
1850 napi_env env = (napi_env)engine_;
1851 napi_value argv[] = {};
1852 std::string funcName = "IsCanceled";
1853 napi_value cb = nullptr;
1854 napi_value result = nullptr;
1855 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
1856 napi_call_function(env, nullptr, cb, 0, argv, &result);
1857 bool value = true;
1858 napi_get_value_bool(env, result, &value);
1859 ASSERT_TRUE(value == false);
1860 }
1861
1862 HWTEST_F(NativeEngineTest, TaskpoolTest123, testing::ext::TestSize.Level0)
1863 {
1864 auto task = std::make_unique<Task>();
1865 task->taskId_ = reinterpret_cast<uint64_t>(task.get());
1866 task->ioTime_ = 100;
1867 task->startTime_ = 0;
1868 task->StoreTaskDuration();
1869 auto& taskManager = TaskManager::GetInstance();
1870 auto res = taskManager.GetTaskDuration(task->taskId_, "totalDuration");
1871 ASSERT_TRUE(res != 0);
1872 res = taskManager.GetTaskDuration(task->taskId_, "cpuDuration");
1873 ASSERT_TRUE(res != 0);
1874 res = taskManager.GetTaskDuration(task->taskId_, "ioDuration");
1875 ASSERT_TRUE(res == 0);
1876 }
1877
1878 HWTEST_F(NativeEngineTest, TaskpoolTest124, testing::ext::TestSize.Level0)
1879 {
1880 napi_env env = (napi_env)engine_;
1881 ExceptionScope scope(env);
1882 auto task = std::make_unique<Task>();
1883 task->taskId_ = reinterpret_cast<uint64_t>(task.get());
1884 task->SetHasDependency(true);
1885 auto res = task->CanForSequenceRunner(env);
1886 ASSERT_TRUE(res == false);
1887 task->TryClearHasDependency();
1888 res = task->CanForSequenceRunner(env);
1889 ASSERT_TRUE(res == true);
1890 task->taskType_ = TaskType::SEQRUNNER_TASK;
1891 res = task->CanForSequenceRunner(env);
1892 ASSERT_TRUE(res == false);
1893 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1894 res = task->CanForSequenceRunner(env);
1895 ASSERT_TRUE(res == false);
1896 task->UpdatePeriodicTask();
1897 res = task->CanForSequenceRunner(env);
1898 ASSERT_TRUE(res == false);
1899 }
1900
1901 HWTEST_F(NativeEngineTest, TaskpoolTest125, testing::ext::TestSize.Level0)
1902 {
1903 napi_env env = (napi_env)engine_;
1904 ExceptionScope scope(env);
1905 auto task = std::make_unique<Task>();
1906 task->ThrowNoDependencyError(env);
1907 napi_value exception = nullptr;
1908 napi_get_and_clear_last_exception(env, &exception);
1909 ASSERT_TRUE(exception!= nullptr);
1910 auto res = task->CanExecutePeriodically(env);
1911 ASSERT_TRUE(res == true);
1912 task->UpdatePeriodicTask();
1913 res = task->CanExecutePeriodically(env);
1914 ASSERT_TRUE(res == false);
1915 }
1916
1917 HWTEST_F(NativeEngineTest, TaskpoolTest126, testing::ext::TestSize.Level0)
1918 {
1919 napi_env env = (napi_env)engine_;
1920 ExceptionScope scope(env);
1921 auto task = std::make_unique<Task>();
1922 auto res = task->CanForTaskGroup(env);
1923 ASSERT_TRUE(res == true);
1924 task->taskId_ = reinterpret_cast<uint64_t>(task.get());
1925 task->SetHasDependency(true);
1926 res = task->CanForTaskGroup(env);
1927 ASSERT_TRUE(res == false);
1928 task->taskType_ = TaskType::SEQRUNNER_TASK;
1929 res = task->CanForTaskGroup(env);
1930 ASSERT_TRUE(res == false);
1931 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1932 res = task->CanForTaskGroup(env);
1933 ASSERT_TRUE(res == false);
1934 task->isLongTask_ = true;
1935 res = task->CanForTaskGroup(env);
1936 ASSERT_TRUE(res == false);
1937 task->UpdatePeriodicTask();
1938 res = task->CanForTaskGroup(env);
1939 ASSERT_TRUE(res == false);
1940 }
1941
1942 HWTEST_F(NativeEngineTest, TaskpoolTest127, testing::ext::TestSize.Level0)
1943 {
1944 napi_env env = (napi_env)engine_;
1945 ExceptionScope scope(env);
1946 auto task = std::make_unique<Task>();
1947 auto res = task->CanExecute(env);
1948 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1949 res = task->CanExecute(env);
1950 ASSERT_TRUE(res == false);
1951 task->taskType_ = TaskType::SEQRUNNER_TASK;
1952 res = task->CanExecute(env);
1953 ASSERT_TRUE(res == false);
1954 task->taskType_ = TaskType::COMMON_TASK;
1955 res = task->CanExecute(env);
1956 ASSERT_TRUE(res == true);
1957 task->SetHasDependency(true);
1958 res = task->CanExecute(env);
1959 ASSERT_TRUE(res == false);
1960 task->TryClearHasDependency();
1961 task->isLongTask_ = true;
1962 res = task->CanExecute(env);
1963 ASSERT_TRUE(res == false);
1964 task->UpdatePeriodicTask();
1965 res = task->CanExecute(env);
1966 ASSERT_TRUE(res == false);
1967 }
1968
1969 HWTEST_F(NativeEngineTest, TaskpoolTest128, testing::ext::TestSize.Level0)
1970 {
1971 napi_env env = (napi_env)engine_;
1972 ExceptionScope scope(env);
1973 auto task = std::make_unique<Task>();
1974 auto res = task->CanExecuteDelayed(env);
1975 task->taskType_ = TaskType::GROUP_COMMON_TASK;
1976 res = task->CanExecuteDelayed(env);
1977 ASSERT_TRUE(res == false);
1978 task->taskType_ = TaskType::SEQRUNNER_TASK;
1979 res = task->CanExecuteDelayed(env);
1980 ASSERT_TRUE(res == false);
1981 task->taskType_ = TaskType::COMMON_TASK;
1982 res = task->CanExecuteDelayed(env);
1983 ASSERT_TRUE(res == true);
1984 task->isLongTask_ = true;
1985 res = task->CanExecute(env);
1986 ASSERT_TRUE(res == false);
1987 task->UpdatePeriodicTask();
1988 res = task->CanExecute(env);
1989 ASSERT_TRUE(res == false);
1990 }
1991
1992 HWTEST_F(NativeEngineTest, TaskpoolTest129, testing::ext::TestSize.Level0)
1993 {
1994 napi_env env = (napi_env)engine_;
1995 ExceptionScope scope(env);
1996 SequenceRunner* seqRunner = new SequenceRunner();
1997 seqRunner->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner);
1998 seqRunner->seqName_ = "seq01";
1999 void* data = static_cast<void*>(seqRunner);
2000 NativeEngineTest::SequenceRunnerDestructor(env, data);
2001
2002 SequenceRunner* seqRunner2 = new SequenceRunner();
2003 seqRunner2->seqRunnerId_ = reinterpret_cast<uint64_t>(seqRunner2);
2004 seqRunner2->seqName_ = "seq02";
2005 seqRunner2->isGlobalRunner_ = true;
2006 seqRunner2->count_ = 0;
2007 void* data2 = static_cast<void*>(seqRunner2);
2008 NativeEngineTest::SequenceRunnerDestructor(env, data2);
2009
2010 ASSERT_TRUE(true);
2011 }
2012
2013 HWTEST_F(NativeEngineTest, TaskpoolTest130, testing::ext::TestSize.Level0)
2014 {
2015 napi_env env = (napi_env)engine_;
2016 ExceptionScope scope(env);
2017 TaskGroup* taskGroup = new TaskGroup();
2018 Task* task = new Task(env, TaskType::COMMON_TASK, "groupTask");
2019 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2020 taskGroup->taskIds_.push_back(taskId);
2021 task->taskId_ = taskId;
2022 napi_reference_ref(env, task->taskRef_, nullptr);
2023 TaskManager &taskManager = TaskManager::GetInstance();
2024 taskManager.StoreTask(taskId, task);
2025 taskGroup->taskIds_.push_back(2);
2026
2027 GroupInfo* groupInfo = new GroupInfo();
2028 taskGroup->currentGroupInfo_ = groupInfo;
2029
2030 void* data = static_cast<void*>(taskGroup);
2031 NativeEngineTest::TaskGroupDestructor(env, data);
2032 ASSERT_TRUE(true);
2033 }
2034
2035 HWTEST_F(NativeEngineTest, TaskpoolTest131, testing::ext::TestSize.Level0)
2036 {
2037 napi_env env = (napi_env)engine_;
2038 ExceptionScope scope(env);
2039 Task* task = new Task();
2040 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2041 task->taskId_ = taskId;
2042 napi_value thisValue = NapiHelper::CreateObject(env);
2043 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2044
2045 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref, task);
2046 uv_async_t* req = new uv_async_t;
2047 req->data = cbInfo;
2048
2049 TaskPool::ExecuteCallback(req);
2050 ASSERT_TRUE(true);
2051
2052 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2053 void* args = nullptr;
2054 TaskResultInfo* resultInfo = new TaskResultInfo(env, env, taskId, args);
2055 worker->Enqueue(env, resultInfo);
2056 TaskResultInfo* resultInfo2 = nullptr;
2057 worker->Enqueue(env, resultInfo2);
2058
2059 TaskManager &taskManager = TaskManager::GetInstance();
2060 taskManager.RegisterCallback(env, taskId, nullptr);
2061 cbInfo->worker = worker;
2062 TaskPool::ExecuteCallback(req);
2063 ASSERT_TRUE(true);
2064 }
2065
2066 HWTEST_F(NativeEngineTest, TaskpoolTest132, testing::ext::TestSize.Level0)
2067 {
2068 napi_env env = (napi_env)engine_;
2069 ExceptionScope scope(env);
2070 Task* task = new Task();
2071 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2072 task->taskId_ = taskId;
2073 napi_value thisValue = NapiHelper::CreateObject(env);
2074 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2075
2076 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref, task);
2077 uv_async_t* req = new uv_async_t;
2078 req->data = cbInfo;
2079
2080 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2081 void* args = nullptr;
2082 TaskResultInfo* resultInfo = new TaskResultInfo(env, env, taskId, args);
2083 worker->Enqueue(env, resultInfo);
2084
2085 TaskManager &taskManager = TaskManager::GetInstance();
__anon15dbeb740502(napi_env environment, napi_callback_info info) 2086 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
2087 return nullptr;
2088 };
2089 napi_value funValue = nullptr;
2090 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &funValue);
2091 napi_value argv[] = {funValue};
2092 napi_ref callbackRef = NapiHelper::CreateReference(env, argv[0], 1);
2093 std::shared_ptr<CallbackInfo> callbackInfo = std::make_shared<CallbackInfo>(env, 1, callbackRef, task);
2094 taskManager.RegisterCallback(env, taskId, callbackInfo);
2095 cbInfo->worker = worker;
2096 TaskPool::ExecuteCallback(req);
2097 ASSERT_TRUE(true);
2098 }
2099
2100 HWTEST_F(NativeEngineTest, TaskpoolTest133, testing::ext::TestSize.Level0)
2101 {
2102 napi_env env = (napi_env)engine_;
2103 ExceptionScope scope(env);
2104 Task* task = new Task();
2105 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2106 task->taskId_ = taskId;
2107 napi_value thisValue = NapiHelper::CreateObject(env);
2108 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2109
2110 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref, task);
2111 uv_async_t* req = new uv_async_t;
2112 req->data = cbInfo;
2113
2114 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2115 size_t argc = 1;
2116 napi_value argv[] = {nullptr};
2117 napi_create_uint32(env, 1, &argv[0]);
2118 napi_value argsArray;
2119 napi_create_array_with_length(env, argc, &argsArray);
2120 for (size_t i = 0; i < argc; i++) {
2121 napi_set_element(env, argsArray, i, argv[i]);
2122 }
2123 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2124 void* serializationArgs = nullptr;
2125 napi_serialize_inner(env, argsArray, undefined, undefined, true, false, &serializationArgs);
2126 TaskResultInfo* resultInfo = new TaskResultInfo(env, env, taskId, serializationArgs);
2127 worker->Enqueue(env, resultInfo);
2128
2129 TaskManager &taskManager = TaskManager::GetInstance();
__anon15dbeb740602(napi_env environment, napi_callback_info info) 2130 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
2131 return nullptr;
2132 };
2133 napi_value funValue = nullptr;
2134 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &funValue);
2135 napi_value argv1[] = {funValue};
2136 napi_ref callbackRef = NapiHelper::CreateReference(env, argv1[0], 1);
2137 std::shared_ptr<CallbackInfo> callbackInfo = std::make_shared<CallbackInfo>(env, 1, callbackRef, task);
2138 taskManager.RegisterCallback(env, taskId, callbackInfo);
2139 cbInfo->worker = worker;
2140 TaskPool::ExecuteCallback(req);
2141 ASSERT_TRUE(true);
2142 }
2143
2144 HWTEST_F(NativeEngineTest, TaskpoolTest134, testing::ext::TestSize.Level0)
2145 {
2146 napi_env env = (napi_env)engine_;
2147 ExceptionScope scope(env);
2148 Task* task = new Task();
2149 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2150 task->taskId_ = taskId;
2151 napi_value thisValue = NapiHelper::CreateObject(env);
2152 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
2153
2154 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref, task);
2155 TaskPool::ExecuteCallbackTask(cbInfo);
2156 ASSERT_TRUE(true);
2157
2158 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
2159 void* args = nullptr;
2160 TaskResultInfo* resultInfo = new TaskResultInfo(env, env, taskId, args);
2161 worker->Enqueue(env, resultInfo);
2162 cbInfo->worker = worker;
2163 TaskPool::ExecuteCallbackTask(cbInfo);
2164 ASSERT_TRUE(true);
2165 }
2166
2167 HWTEST_F(NativeEngineTest, TaskpoolTest135, testing::ext::TestSize.Level0)
2168 {
2169 napi_env env = (napi_env)engine_;
2170 ExceptionScope scope(env);
2171 napi_value argv[] = {};
2172 napi_value result = NativeEngineTest::TerminateTask(env, argv, 0);
2173 ASSERT_TRUE(result == nullptr);
2174 napi_value exception = nullptr;
2175 napi_get_and_clear_last_exception(env, &exception);
2176
2177 napi_value thisValue = NapiHelper::CreateObject(env);
2178 napi_value argv1[] = {thisValue};
2179 result = NativeEngineTest::TerminateTask(env, argv1, 1);
2180 ASSERT_TRUE(result == nullptr);
2181 exception = nullptr;
2182 napi_get_and_clear_last_exception(env, &exception);
2183
2184 size_t argc = 0;
2185 napi_value func = nullptr;
2186 napi_create_string_utf8(env, "testLongFunc", NAPI_AUTO_LENGTH, &func);
2187 napi_value* args = new napi_value[1];
2188 ObjectScope<napi_value> objScope(args, true);
2189 napi_value taskName = NapiHelper::CreateEmptyString(env);
2190 Task* task = Task::GenerateTask(env, thisValue, func, taskName, args, argc);
2191 task->isLongTask_ = true;
2192 TaskManager &taskManager = TaskManager::GetInstance();
2193 taskManager.StoreTask(task->taskId_, task);
2194 napi_value argv2[] = {thisValue};
2195 result = NativeEngineTest::TerminateTask(env, argv2, 1);
2196 ASSERT_TRUE(result != nullptr);
2197 }
2198
2199 HWTEST_F(NativeEngineTest, TaskpoolTest136, testing::ext::TestSize.Level0)
2200 {
2201 napi_env env = (napi_env)engine_;
2202 ExceptionScope scope(env);
2203 napi_value argv[] = {};
2204 napi_value result = NativeEngineTest::Execute(env, argv, 0);
2205 ASSERT_TRUE(result == nullptr);
2206 napi_value exception = nullptr;
2207 napi_get_and_clear_last_exception(env, &exception);
2208
2209 napi_value thisValue = NapiHelper::CreateObject(env);
2210 napi_value argv1[] = {thisValue};
2211 result = NativeEngineTest::Execute(env, argv1, 1);
2212 ASSERT_TRUE(result == nullptr);
2213 exception = nullptr;
2214 napi_get_and_clear_last_exception(env, &exception);
2215
2216 thisValue = CreateTaskObject(env);
2217 napi_value argv2[] = {thisValue};
2218 result = NativeEngineTest::Execute(env, argv2, 1);
2219 ASSERT_TRUE(result != nullptr);
2220 exception = nullptr;
2221 napi_get_and_clear_last_exception(env, &exception);
2222
2223 napi_create_string_utf8(env, "test", NAPI_AUTO_LENGTH, &argv2[0]);
2224 result = NativeEngineTest::Execute(env, argv2, 1);
2225 ASSERT_TRUE(result == nullptr);
2226 exception = nullptr;
2227 napi_get_and_clear_last_exception(env, &exception);
2228
2229 thisValue = CreateTaskObject(env);
2230 napi_value argv3[2] = {};
2231 argv3[0] = thisValue;
2232 napi_create_string_utf8(env, "test", NAPI_AUTO_LENGTH, &argv[1]);
2233 result = NativeEngineTest::Execute(env, argv3, 2);
2234 ASSERT_TRUE(result == nullptr);
2235 }
2236
2237 HWTEST_F(NativeEngineTest, TaskpoolTest137, testing::ext::TestSize.Level0)
2238 {
2239 napi_env env = (napi_env)engine_;
2240 ExceptionScope scope(env);
2241 napi_value thisValue = CreateTaskObject(env);
2242 napi_value argv[2] = {};
2243 argv[0] = thisValue;
2244 napi_create_uint32(env, 1, &argv[1]);
2245 napi_value result = NativeEngineTest::Execute(env, argv, 2);
2246 ASSERT_TRUE(result != nullptr);
2247
2248 thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
2249 napi_value argv1[2] = {};
2250 argv1[0] = thisValue;
2251 napi_create_uint32(env, 1, &argv[1]);
2252 result = NativeEngineTest::Execute(env, argv1, 2);
2253 ASSERT_TRUE(result == nullptr);
2254 napi_value exception = nullptr;
2255 napi_get_and_clear_last_exception(env, &exception);
2256
2257 napi_value func = nullptr;
2258 GetSendableFunction(env, "foo", func);
2259 napi_value argv2[] = {func};
2260 result = NativeEngineTest::Execute(env, argv2, 1);
2261 ASSERT_TRUE(result != nullptr);
2262
2263 thisValue = CreateTaskObject(env);
2264 napi_value argv3[2] = {};
2265 argv3[0] = thisValue;
2266 napi_create_uint32(env, 5, &argv3[1]);
2267 result = NativeEngineTest::Execute(env, argv3, 2);
2268 ASSERT_TRUE(result == nullptr);
2269 }
2270
2271 HWTEST_F(NativeEngineTest, TaskpoolTest138, testing::ext::TestSize.Level0)
2272 {
2273 napi_env env = (napi_env)engine_;
2274 ExceptionScope scope(env);
2275 size_t delayTime = 1000;
2276
2277 napi_value argv[] = {nullptr};
2278 napi_value result = NativeEngineTest::ExecuteDelayed(env, argv, 1);
2279 ASSERT_TRUE(result == nullptr);
2280 napi_value exception = nullptr;
2281 napi_get_and_clear_last_exception(env, &exception);
2282
2283 napi_value func = nullptr;
2284 GetSendableFunction(env, "foo", func);
2285 napi_value num = nullptr;
2286 napi_create_uint32(env, delayTime, &num);
2287 napi_value argv1[] = { func, num };
2288 result = NativeEngineTest::ExecuteDelayed(env, argv1, 2);
2289 ASSERT_TRUE(result == nullptr);
2290 exception = nullptr;
2291 napi_get_and_clear_last_exception(env, &exception);
2292
2293 napi_value obj = NapiHelper::CreateObject(env);
2294 num = nullptr;
2295 napi_create_uint32(env, -100, &num);
2296 napi_value argv2[] = { num, obj };
2297 result = NativeEngineTest::ExecuteDelayed(env, argv2, 2);
2298 ASSERT_TRUE(result == nullptr);
2299 exception = nullptr;
2300 napi_get_and_clear_last_exception(env, &exception);
2301
2302 num = nullptr;
2303 napi_create_uint32(env, delayTime, &num);
2304 napi_value argv3[] = { num, obj, obj };
2305 result = NativeEngineTest::ExecuteDelayed(env, argv3, 3);
2306 ASSERT_TRUE(result == nullptr);
2307 exception = nullptr;
2308 napi_get_and_clear_last_exception(env, &exception);
2309
2310 napi_value argv4[] = { num, func};
2311 result = NativeEngineTest::ExecuteDelayed(env, argv4, 2);
2312 ASSERT_TRUE(result == nullptr);
2313 }
2314
2315 HWTEST_F(NativeEngineTest, TaskpoolTest139, testing::ext::TestSize.Level0)
2316 {
2317 napi_env env = (napi_env)engine_;
2318 ExceptionScope scope(env);
2319 size_t delayTime = 1000;
2320 napi_value result = nullptr;
2321 napi_value num = nullptr;
2322 napi_value priority = nullptr;
2323 napi_value exception = nullptr;
2324
2325 napi_value obj = NapiHelper::CreateObject(env);
2326 napi_create_uint32(env, delayTime, &num);
2327 napi_create_uint32(env, 5, &priority);
2328 napi_value argv[] = { num, obj, priority };
2329 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
2330 ASSERT_TRUE(result == nullptr);
2331 exception = nullptr;
2332 napi_get_and_clear_last_exception(env, &exception);
2333
2334 obj = CreateNullTaskObject(env);
2335 napi_create_uint32(env, 1, &priority);
2336 napi_value argv2[] = { num, obj, priority };
2337 result = NativeEngineTest::ExecuteDelayed(env, argv2, 3);
2338 ASSERT_TRUE(result == nullptr);
2339 exception = nullptr;
2340 napi_get_and_clear_last_exception(env, &exception);
2341
2342 obj = CreateTaskObject(env, TaskType::GROUP_COMMON_TASK);
2343 napi_value argv3[] = { num, obj, priority };
2344 result = NativeEngineTest::ExecuteDelayed(env, argv3, 3);
2345 exception = nullptr;
2346 napi_get_and_clear_last_exception(env, &exception);
2347 ASSERT_TRUE(result == nullptr);
2348
2349 obj = CreateTaskObject(env, TaskType::TASK, ExecuteState::CANCELED);
2350 napi_value argv4[] = { num, obj, priority };
2351 result = NativeEngineTest::ExecuteDelayed(env, argv4, 3);
2352 ASSERT_TRUE(result != nullptr);
2353 }
2354
2355 HWTEST_F(NativeEngineTest, TaskpoolTest140, testing::ext::TestSize.Level0)
2356 {
2357 napi_env env = (napi_env)engine_;
2358 ExceptionScope scope(env);
2359 TaskManager &taskManager = TaskManager::GetInstance();
2360 napi_value exception = nullptr;
2361 uv_loop_t* loop = NapiHelper::GetLibUV(env);
2362 uv_update_time(loop);
2363 uv_timer_t* handle = new uv_timer_t;
2364 uv_timer_init(loop, handle);
2365 TaskMessage *taskMessage = new TaskMessage();
__anon15dbeb740702(napi_env environment, napi_callback_info info) 2366 auto func = [](napi_env environment, napi_callback_info info) -> napi_value {
2367 return nullptr;
2368 };
2369 size_t argc = 1;
2370 napi_value funcValue = nullptr;
2371 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &funcValue);
2372 napi_value* args = new napi_value[argc];
2373 ObjectScope<napi_value> objScope(args, true);
2374 napi_value taskName = NapiHelper::CreateEmptyString(env);
2375 napi_value obj = NapiHelper::CreateObject(env);
2376 Task* task = Task::GenerateTask(env, obj, funcValue, taskName, args, argc);
2377
2378 taskMessage->taskId = task->taskId_;
2379 handle->data = taskMessage;
2380 taskManager.StoreTask(task->taskId_, task);
2381 NativeEngineTest::DelayTask(handle);
2382 ASSERT_TRUE(true);
2383 }
2384
2385 HWTEST_F(NativeEngineTest, TaskpoolTest141, testing::ext::TestSize.Level0)
2386 {
2387 napi_env env = (napi_env)engine_;
2388 ExceptionScope scope(env);
2389 napi_value exception = nullptr;
2390 napi_value thisVar = NapiHelper::CreateObject(env);
2391 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2392 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2393 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2394
2395 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2396 TaskGroup* group = new TaskGroup();
2397 group->groupId_ = groupId;
2398 taskGroupManager.StoreTaskGroup(groupId, group);
2399 napi_value value = NapiHelper::CreateUint64(env, groupId);
2400 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
2401 taskGroupManager.AddTask(groupId, reference, 1);
2402 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2403 ASSERT_TRUE(result == nullptr);
2404 }
2405
2406 HWTEST_F(NativeEngineTest, TaskpoolTest142, testing::ext::TestSize.Level0)
2407 {
2408 napi_env env = (napi_env)engine_;
2409 ExceptionScope scope(env);
2410 napi_value exception = nullptr;
2411 napi_value thisVar = NapiHelper::CreateObject(env);
2412 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2413 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2414 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2415
2416 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2417 TaskGroup* group = new TaskGroup();
2418 group->groupId_ = groupId;
2419 taskGroupManager.StoreTaskGroup(groupId, group);
2420 Task* task = new Task();
2421 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2422 task->groupId_ = groupId;
2423 task->taskId_ = reinterpret_cast<uint64_t>(task);
2424 napi_reference_ref(env, task->taskRef_, nullptr);
2425 napi_value thisValue = NapiHelper::CreateObject(env);
2426 napi_wrap(
2427 env, thisValue, task,
__anon15dbeb740802(napi_env environment, void* data, void* hint) 2428 [](napi_env environment, void* data, void* hint) {
2429 auto obj = reinterpret_cast<Task*>(data);
2430 if (obj != nullptr) {
2431 delete obj;
2432 }
2433 }, nullptr, nullptr);
2434 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2435 taskGroupManager.AddTask(groupId, ref, task->taskId_);
2436 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2437 ASSERT_TRUE(result != nullptr);
2438 }
2439
2440 HWTEST_F(NativeEngineTest, TaskpoolTest143, testing::ext::TestSize.Level0)
2441 {
2442 napi_env env = (napi_env)engine_;
2443 ExceptionScope scope(env);
2444 napi_value exception = nullptr;
2445 napi_value thisVar = NapiHelper::CreateObject(env);
2446 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
2447 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2448 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2449
2450 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2451 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
2452 GroupInfo* groupInfo = new GroupInfo();
2453 groupInfo->priority = Priority::DEFAULT;
2454 group->currentGroupInfo_ = groupInfo;
2455 taskGroupManager.StoreTaskGroup(groupId, group);
2456 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
2457 ASSERT_TRUE(result != nullptr);
2458 }
2459
2460 HWTEST_F(NativeEngineTest, TaskpoolTest144, testing::ext::TestSize.Level0)
2461 {
2462 napi_env env = (napi_env)engine_;
2463 ExceptionScope scope(env);
2464 size_t delayTime = 1000;
2465
2466 napi_value argv[] = {nullptr};
2467 napi_value result = NativeEngineTest::ExecutePeriodically(env, argv, 1);
2468 ASSERT_TRUE(result == nullptr);
2469 napi_value exception = nullptr;
2470 napi_get_and_clear_last_exception(env, &exception);
2471
2472 napi_value func = nullptr;
2473 GetSendableFunction(env, "foo", func);
2474 napi_value num = nullptr;
2475 napi_create_uint32(env, delayTime, &num);
2476 napi_value argv1[] = { func, num };
2477 result = NativeEngineTest::ExecutePeriodically(env, argv1, 2);
2478 ASSERT_TRUE(result == nullptr);
2479 exception = nullptr;
2480 napi_get_and_clear_last_exception(env, &exception);
2481
2482 napi_value obj = NapiHelper::CreateObject(env);
2483 num = nullptr;
2484 napi_create_uint32(env, -100, &num);
2485 napi_value argv2[] = { num, obj };
2486 result = NativeEngineTest::ExecutePeriodically(env, argv2, 2);
2487 ASSERT_TRUE(result == nullptr);
2488 exception = nullptr;
2489 napi_get_and_clear_last_exception(env, &exception);
2490
2491 num = nullptr;
2492 napi_create_uint32(env, delayTime, &num);
2493 napi_value argv3[] = { num, obj, obj };
2494 result = NativeEngineTest::ExecutePeriodically(env, argv3, 3);
2495 ASSERT_TRUE(result == nullptr);
2496 exception = nullptr;
2497 napi_get_and_clear_last_exception(env, &exception);
2498
2499 napi_value argv4[] = { num, num };
2500 result = NativeEngineTest::ExecutePeriodically(env, argv4, 2);
2501 ASSERT_TRUE(result == nullptr);
2502 }
2503
2504 HWTEST_F(NativeEngineTest, TaskpoolTest145, testing::ext::TestSize.Level0)
2505 {
2506 napi_env env = (napi_env)engine_;
2507 ExceptionScope scope(env);
2508 size_t delayTime = 1000;
2509 napi_value result = nullptr;
2510 napi_value num = nullptr;
2511 napi_value priority = nullptr;
2512 napi_value exception = nullptr;
2513
2514 napi_value obj = NapiHelper::CreateObject(env);
2515 napi_create_uint32(env, delayTime, &num);
2516 napi_create_uint32(env, 5, &priority);
2517 napi_value argv[] = { num, obj, priority };
2518 result = NativeEngineTest::ExecutePeriodically(env, argv, 3);
2519 ASSERT_TRUE(result == nullptr);
2520 exception = nullptr;
2521 napi_get_and_clear_last_exception(env, &exception);
2522
2523 obj = CreateNullTaskObject(env);
2524 napi_create_uint32(env, 1, &priority);
2525 napi_value argv2[] = { num, obj, priority };
2526 result = NativeEngineTest::ExecutePeriodically(env, argv2, 3);
2527 ASSERT_TRUE(result == nullptr);
2528 exception = nullptr;
2529 napi_get_and_clear_last_exception(env, &exception);
2530
2531 obj = CreateTaskObject(env, TaskType::GROUP_COMMON_TASK);
2532 napi_value argv3[] = { num, obj, priority };
2533 result = NativeEngineTest::ExecutePeriodically(env, argv3, 3);
2534 exception = nullptr;
2535 napi_get_and_clear_last_exception(env, &exception);
2536 ASSERT_TRUE(result == nullptr);
2537
2538 obj = CreateTaskObject(env, TaskType::TASK);
2539 napi_value argv4[] = { num, obj, priority };
2540 result = NativeEngineTest::ExecutePeriodically(env, argv4, 3);
2541 ASSERT_TRUE(result == nullptr);
2542 }
2543
2544 HWTEST_F(NativeEngineTest, TaskpoolTest146, testing::ext::TestSize.Level0)
2545 {
2546 napi_env env = (napi_env)engine_;
2547 ExceptionScope scope(env);
2548 napi_value global;
2549 napi_get_global(env, &global);
2550 auto task = GeneratorTask(env, global);
2551 size_t delayTime = 1000;
2552 napi_value result = nullptr;
2553 napi_value num = nullptr;
2554 napi_value priority = nullptr;
2555 napi_create_uint32(env, delayTime, &num);
2556 napi_create_uint32(env, 1, &priority);
2557 napi_value argv[] = { num, global, priority };
2558 result = NativeEngineTest::ExecutePeriodically(env, argv, 3);
2559 ASSERT_TRUE(result != nullptr);
2560 }
2561
2562 HWTEST_F(NativeEngineTest, TaskpoolTest147, testing::ext::TestSize.Level0)
2563 {
2564 napi_env env = (napi_env)engine_;
2565 uv_timer_t* handle = new uv_timer_t;
2566
2567 handle->data = nullptr;
2568 NativeEngineTest::PeriodicTaskCallback(handle);
2569 ASSERT_TRUE(true);
2570 Task* task = new Task();
2571 handle->data = task;
2572 NativeEngineTest::PeriodicTaskCallback(handle);
2573 ASSERT_TRUE(true);
2574
2575 task->isPeriodicTask_ = true;
2576 handle->data = task;
2577 NativeEngineTest::PeriodicTaskCallback(handle);
2578 ASSERT_TRUE(true);
2579
2580 task->taskState_ = ExecuteState::CANCELED;
2581 handle->data = task;
2582 NativeEngineTest::PeriodicTaskCallback(handle);
2583 ASSERT_TRUE(true);
2584 }
2585
2586 HWTEST_F(NativeEngineTest, TaskpoolTest148, testing::ext::TestSize.Level0)
2587 {
2588 napi_env env = (napi_env)engine_;
2589 uv_timer_t* handle = new uv_timer_t;
2590
2591 Task* task = new Task();
2592 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2593 task->taskId_ = taskId;
2594 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2595 napi_value num = nullptr;
2596 napi_create_uint32(env, 1, &num);
2597 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
2598 task->onExecutionFailedCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
2599 handle->data = task;
2600 napi_value res = nullptr;
2601 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2602 ASSERT_TRUE(true);
2603
2604 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2605 TaskGroup* group = new TaskGroup();
2606 uint64_t groupId = reinterpret_cast<uint64_t>(group);
2607 group->groupId_ = groupId;
2608 task->groupId_ = groupId;
2609 taskGroupManager.StoreTaskGroup(groupId, group);
2610 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2611 ASSERT_TRUE(true);
2612
2613 group->taskIds_.push_back(taskId);
2614 GroupInfo* groupInfo = new GroupInfo();
2615 napi_value resArr;
2616 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
2617 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
2618 groupInfo->resArr = arrRef;
2619 NapiHelper::CreatePromise(env, &groupInfo->deferred);
2620 group->currentGroupInfo_ = groupInfo;
2621 taskGroupManager.StoreTaskGroup(groupId, group);
2622 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, false);
2623 ASSERT_TRUE(true);
2624 }
2625
2626 HWTEST_F(NativeEngineTest, TaskpoolTest149, testing::ext::TestSize.Level0)
2627 {
2628 napi_env env = (napi_env)engine_;
2629 uv_timer_t* handle = new uv_timer_t;
2630 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2631 TaskManager& taskManager = TaskManager::GetInstance();
2632
2633 TaskGroup* group = new TaskGroup();
2634 uint64_t groupId = reinterpret_cast<uint64_t>(group);
2635 group->groupId_ = groupId;
2636 Task* task = new Task();
2637 uint64_t taskId = reinterpret_cast<uint64_t>(task);
2638 task->taskId_ = taskId;
2639 task->groupId_ = groupId;
2640 napi_value num = nullptr;
2641 napi_create_uint32(env, 1, &num);
2642 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
2643 task->onExecutionSucceededCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
2644 group->taskIds_.push_back(taskId);
2645 taskManager.StoreTask(taskId, task);
2646 handle->data = task;
2647
2648 GroupInfo* groupInfo = new GroupInfo();
2649 groupInfo->priority = Priority::DEFAULT;
2650 napi_value resArr;
2651 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
2652 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
2653 groupInfo->resArr = arrRef;
2654 NapiHelper::CreatePromise(env, &groupInfo->deferred);
2655 group->currentGroupInfo_ = groupInfo;
2656
2657 taskGroupManager.StoreTaskGroup(groupId, group);
2658 napi_value value = NapiHelper::CreateUint64(env, groupId);
2659 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
2660 taskGroupManager.AddTask(groupId, reference, taskId);
2661
2662 napi_value res = nullptr;
2663 napi_create_uint32(env, 1, &res);
2664 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
2665 ASSERT_TRUE(true);
2666 }
2667
2668 HWTEST_F(NativeEngineTest, TaskpoolTest150, testing::ext::TestSize.Level0)
2669 {
2670 napi_env env = (napi_env)engine_;
2671 NativeEngineTest::TryTriggerExpand();
2672 NativeEngineTest::CheckForBlockedWorkers(env);
2673 NativeEngineTest::TriggerShrink(env);
2674 NativeEngineTest::NotifyShrink(env);
2675 NativeEngineTest::TryExpand(env);
2676 NativeEngineTest::CancelTask(env);
2677 NativeEngineTest::NotifyWorkerIdle(env);
2678 NativeEngineTest::EnqueueTaskId(env);
2679 NativeEngineTest::GetTaskByPriority(env);
2680 NativeEngineTest::RestoreWorker(env);
2681 ASSERT_TRUE(true);
2682 }
2683
2684 HWTEST_F(NativeEngineTest, TaskpoolTest151, testing::ext::TestSize.Level0)
2685 {
2686 napi_env env = (napi_env)engine_;
2687 ExceptionScope scope(env);
2688 napi_value argv[] = {nullptr};
2689 std::string func = "TaskGroupConstructor";
2690 napi_value callback = nullptr;
2691 napi_value taskGroupResult = nullptr;
2692 napi_create_function(env, func.c_str(), func.size(), TaskGroup::TaskGroupConstructor, nullptr, &callback);
2693 napi_call_function(env, nullptr, callback, 0, argv, &taskGroupResult);
2694
2695 func = "AddTask";
2696 napi_value cb = nullptr;
2697 napi_value result = nullptr;
2698
2699 napi_create_function(env, func.c_str(), func.size(), TaskGroup::AddTask, nullptr, &cb);
2700 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
2701 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
2702 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2703 TaskGroup* group = new TaskGroup();
2704 group->groupId_ = groupId;
2705 group->groupState_ = ExecuteState::RUNNING;
2706 taskGroupManager.StoreTaskGroup(groupId, group);
2707 napi_value argv1[] = {taskGroupResult};
2708 napi_call_function(env, nullptr, cb, 1, argv1, &result);
2709 ASSERT_TRUE(result == nullptr);
2710 }
2711
2712 HWTEST_F(NativeEngineTest, TaskpoolTest152, testing::ext::TestSize.Level0)
2713 {
2714 napi_env env = (napi_env)engine_;
2715 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2716 TaskGroup* taskGroup = new TaskGroup();
2717 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
2718 taskGroup->groupId_ = groupId;
2719 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
2720
2721 Task* task = new Task();
2722 task->taskType_ = TaskType::COMMON_TASK;
2723 task->groupId_ = groupId;
2724 task->taskId_ = reinterpret_cast<uint64_t>(task);
2725 napi_reference_ref(env, task->taskRef_, nullptr);
2726 napi_value thisValue = NapiHelper::CreateObject(env);
2727 napi_wrap(
2728 env, thisValue, task,
__anon15dbeb740902(napi_env environment, void* data, void* hint) 2729 [](napi_env environment, void* data, void* hint) {
2730 auto obj = reinterpret_cast<Task*>(data);
2731 if (obj != nullptr) {
2732 delete obj;
2733 }
2734 }, nullptr, nullptr);
2735 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2736 taskGroupManager.AddTask(groupId, nullptr, task->taskId_);
2737
2738 GroupInfo* groupInfo = new GroupInfo();
2739 groupInfo->priority = Priority::DEFAULT;
2740 taskGroup->pendingGroupInfos_.push_back(groupInfo);
2741 taskGroup->NotifyGroupTask(env);
2742 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
2743 }
2744
2745 HWTEST_F(NativeEngineTest, TaskpoolTest153, testing::ext::TestSize.Level0)
2746 {
2747 napi_env env = (napi_env)engine_;
2748 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
2749 TaskGroup* taskGroup = new TaskGroup();
2750 uint64_t groupId = reinterpret_cast<uint64_t>(taskGroup);
2751 taskGroup->groupId_ = groupId;
2752 taskGroupManager.StoreTaskGroup(groupId, taskGroup);
2753
2754 Task* task = new Task();
2755 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2756 task->groupId_ = groupId;
2757 task->taskId_ = reinterpret_cast<uint64_t>(task);
2758 napi_reference_ref(env, task->taskRef_, nullptr);
2759 napi_value thisValue = NapiHelper::CreateObject(env);
2760 napi_wrap(
2761 env, thisValue, task,
__anon15dbeb740a02(napi_env environment, void* data, void* hint) 2762 [](napi_env environment, void* data, void* hint) {
2763 auto obj = reinterpret_cast<Task*>(data);
2764 if (obj != nullptr) {
2765 delete obj;
2766 }
2767 }, nullptr, nullptr);
2768 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 1);
2769 taskGroupManager.AddTask(groupId, ref, task->taskId_);
2770
2771 GroupInfo* groupInfo = new GroupInfo();
2772 groupInfo->priority = Priority::DEFAULT;
2773 taskGroup->pendingGroupInfos_.push_back(groupInfo);
2774 taskGroup->NotifyGroupTask(env);
2775 ASSERT_TRUE(taskGroup->pendingGroupInfos_.empty());
2776 }
2777
2778 HWTEST_F(NativeEngineTest, TaskpoolTest154, testing::ext::TestSize.Level0)
2779 {
2780 napi_env env = (napi_env)engine_;
2781 Task* task = new Task();
2782 task->taskType_ = TaskType::GROUP_COMMON_TASK;
2783 task->taskId_ = reinterpret_cast<uint64_t>(task);
2784 napi_value args[2] = {nullptr};
2785 napi_create_string_utf8(env, "generate", NAPI_AUTO_LENGTH, &args[0]);
2786 napi_value obj;
2787 napi_create_object(env, &obj);
2788 args[1] = obj;
2789 task = task->GenerateFunctionTask(env, nullptr, args, 2, TaskType::GROUP_FUNCTION_TASK);
2790 napi_value exception = nullptr;
2791 napi_get_and_clear_last_exception(env, &exception);
2792 ASSERT_TRUE(exception != nullptr);
2793 }
2794
2795 HWTEST_F(NativeEngineTest, TaskpoolTest155, testing::ext::TestSize.Level0)
2796 {
2797 napi_env env = (napi_env)engine_;
2798 Task* task = new Task();
2799 napi_value result = CreateTaskObject(env);
2800 std::string func = "func";
2801 std::string name = "Task";
2802 napi_value funcValue = nullptr;
2803 napi_value nameValue = nullptr;
2804 napi_create_string_utf8(env, name.c_str(), name.length(), &nameValue);
2805 napi_create_string_utf8(env, func.c_str(), func.length(), &funcValue);
2806 napi_value undefined = nullptr;
2807 napi_get_undefined(env, &undefined);
2808 napi_set_named_property(env, result, ARGUMENTS_STR, nameValue);
2809
2810 napi_set_named_property(env, result, FUNCTION_STR, funcValue);
2811 napi_set_named_property(env, result, NAME, nameValue);
2812 napi_value trueVal = NapiHelper::CreateBooleanValue(env, true);
2813 napi_set_named_property(env, result, DEFAULT_TRANSFER_STR, trueVal);
2814 napi_set_named_property(env, result, DEFAULT_CLONE_SENDABLE_STR, trueVal);
2815
2816 napi_set_named_property(env, result, TRANSFERLIST_STR, nameValue);
2817 napi_set_named_property(env, result, TRANSFERLIST_STR, nameValue);
2818 TaskInfo* info = task->GetTaskInfo(env, result, Priority::DEFAULT);
2819 ASSERT_TRUE(info == nullptr);
2820 delete task;
2821 }
2822
2823 HWTEST_F(NativeEngineTest, TaskpoolTest156, testing::ext::TestSize.Level0)
2824 {
2825 napi_env env = (napi_env)engine_;
2826 napi_value global = NapiHelper::GetGlobalObject(env);
2827 napi_value thisValue = CreateTaskObject(env);
2828 Task* task = nullptr;
2829 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2830 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2831 napi_status status = napi_set_named_property(env, thisValue, CLONE_LIST_STR, undefined);
2832 napi_value array;
2833 napi_create_array_with_length(env, 1, &array);
2834
2835 napi_value argv[] = { array };
2836 std::string funcName = "SetTransferList";
2837 napi_value cb = nullptr;
2838 napi_value result = nullptr;
2839 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2840 napi_call_function(env, thisValue, cb, 1, argv, &result);
2841 napi_value exception = nullptr;
2842 napi_get_and_clear_last_exception(env, &exception);
2843 ASSERT_TRUE(exception != nullptr);
2844 }
2845
2846 HWTEST_F(NativeEngineTest, TaskpoolTest157, testing::ext::TestSize.Level0)
2847 {
2848 napi_env env = (napi_env)engine_;
2849 napi_value global = NapiHelper::GetGlobalObject(env);
2850 napi_value thisValue = CreateTaskObject(env);
2851 Task* task = nullptr;
2852 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2853
2854 napi_value array;
2855 napi_create_array_with_length(env, 1, &array);
2856
2857 std::string funcName = "SetTransferList";
2858 napi_value cb = nullptr;
2859 napi_value result = nullptr;
2860 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2861 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
2862 napi_value exception = nullptr;
2863 napi_get_and_clear_last_exception(env, &exception);
2864 ASSERT_TRUE(exception == nullptr);
2865 }
2866
2867 HWTEST_F(NativeEngineTest, TaskpoolTest158, testing::ext::TestSize.Level0)
2868 {
2869 napi_env env = (napi_env)engine_;
2870 napi_value global = NapiHelper::GetGlobalObject(env);
2871 napi_value thisValue = CreateTaskObject(env);
2872 Task* task = nullptr;
2873 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2874
2875 napi_value argv[1] = { nullptr };
2876 std::string funcName = "SetTransferList";
2877 napi_create_string_utf8(env, funcName.c_str(), funcName.size(), &argv[0]);
2878 napi_value cb = nullptr;
2879 napi_value result = nullptr;
2880 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2881 napi_call_function(env, thisValue, cb, 1, argv, &result);
2882 napi_value exception = nullptr;
2883 napi_get_and_clear_last_exception(env, &exception);
2884 ASSERT_TRUE(exception != nullptr);
2885 }
2886
2887 HWTEST_F(NativeEngineTest, TaskpoolTest159, testing::ext::TestSize.Level0)
2888 {
2889 napi_env env = (napi_env)engine_;
2890 napi_value global = NapiHelper::GetGlobalObject(env);
2891 napi_value thisValue = CreateTaskObject(env);
2892 Task* task = nullptr;
2893 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2894 napi_value array;
2895 napi_create_array_with_length(env, 0, &array);
2896
2897 napi_value argv[] = { array };
2898 std::string funcName = "SetTransferList";
2899 napi_value cb = nullptr;
2900 napi_value result = nullptr;
2901 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetTransferList, nullptr, &cb);
2902 napi_call_function(env, thisValue, cb, 1, argv, &result);
2903 napi_value exception = nullptr;
2904 napi_get_and_clear_last_exception(env, &exception);
2905 ASSERT_TRUE(exception == nullptr);
2906 }
2907
2908 HWTEST_F(NativeEngineTest, TaskpoolTest160, testing::ext::TestSize.Level0)
2909 {
2910 napi_env env = (napi_env)engine_;
2911 napi_value global = NapiHelper::GetGlobalObject(env);
2912 napi_value thisValue = CreateTaskObject(env);
2913 Task* task = nullptr;
2914 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2915 napi_value undefined = NapiHelper::GetUndefinedValue(env);
2916 napi_status status = napi_set_named_property(env, thisValue, TRANSFERLIST_STR, undefined);
2917 ASSERT_TRUE(status == napi_ok);
2918 napi_value argv[] = { nullptr, nullptr };
2919 std::string funcName = "SetCloneList";
2920 napi_value cb = nullptr;
2921 napi_value result = nullptr;
2922 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
2923 napi_call_function(env, nullptr, cb, 2, argv, &result);
2924 napi_value exception = nullptr;
2925 napi_get_and_clear_last_exception(env, &exception);
2926 ASSERT_TRUE(exception != nullptr);
2927 }
2928
2929 HWTEST_F(NativeEngineTest, TaskpoolTest161, testing::ext::TestSize.Level0)
2930 {
2931 napi_env env = (napi_env)engine_;
2932 napi_value global = NapiHelper::GetGlobalObject(env);
2933 napi_value thisValue = CreateTaskObject(env);
2934 Task* task = nullptr;
2935 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2936
2937 napi_value array;
2938 napi_create_array_with_length(env, 0, &array);
2939 napi_value argv[] = { array };
2940 std::string funcName = "SetCloneList";
2941 napi_value cb = nullptr;
2942 napi_value result = nullptr;
2943 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
2944 napi_call_function(env, nullptr, cb, 1, argv, &result);
2945 napi_value exception = nullptr;
2946 napi_get_and_clear_last_exception(env, &exception);
2947 ASSERT_TRUE(exception == nullptr);
2948 }
2949
2950 HWTEST_F(NativeEngineTest, TaskpoolTest162, testing::ext::TestSize.Level0)
2951 {
2952 napi_env env = (napi_env)engine_;
2953 napi_value global = NapiHelper::GetGlobalObject(env);
2954 napi_value thisValue = CreateTaskObject(env);
2955 Task* task = nullptr;
2956 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2957
2958 napi_value array;
2959 napi_create_array_with_length(env, 0, &array);
2960 napi_value argv[] = { array };
2961 std::string funcName = "SetCloneList";
2962 napi_value cb = nullptr;
2963 napi_value result = nullptr;
2964 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
2965 napi_call_function(env, thisValue, cb, 1, argv, &result);
2966 napi_value exception = nullptr;
2967 napi_get_and_clear_last_exception(env, &exception);
2968 ASSERT_TRUE(exception == nullptr);
2969 }
2970
2971 HWTEST_F(NativeEngineTest, TaskpoolTest163, testing::ext::TestSize.Level0)
2972 {
2973 napi_env env = (napi_env)engine_;
2974 napi_value global = NapiHelper::GetGlobalObject(env);
2975 napi_value thisValue = CreateTaskObject(env);
2976 Task* task = nullptr;
2977 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
2978
2979 napi_value array;
2980 napi_create_array_with_length(env, 0, &array);
2981 napi_value argv[] = { array };
2982 std::string funcName = "SetCloneList";
2983 napi_value cb = nullptr;
2984 napi_value result = nullptr;
2985 napi_create_function(env, funcName.c_str(), funcName.size(), Task::SetCloneList, nullptr, &cb);
2986 napi_call_function(env, thisValue, cb, 1, argv, &result);
2987 napi_value exception = nullptr;
2988 napi_get_and_clear_last_exception(env, &exception);
2989 ASSERT_TRUE(exception == nullptr);
2990 }
2991
2992 HWTEST_F(NativeEngineTest, TaskpoolTest164, testing::ext::TestSize.Level0)
2993 {
2994 napi_env env = (napi_env)engine_;
2995 napi_env taskEnv = nullptr;
2996 napi_create_runtime(env, &taskEnv);
2997 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
2998 taskEngine->MarkTaskPoolThread();
2999 napi_value global = NapiHelper::GetGlobalObject(env);
3000 napi_value thisValue = CreateTaskObject(taskEnv);
3001
3002 std::string funcName = "IsCanceled";
3003 napi_value cb = nullptr;
3004 napi_value result = nullptr;
3005 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
3006 napi_call_function(taskEnv, thisValue, cb, 0, nullptr, &result);
3007 napi_value exception = nullptr;
3008 napi_get_and_clear_last_exception(taskEnv, &exception);
3009 ASSERT_TRUE(exception == nullptr);
3010 }
3011
3012 HWTEST_F(NativeEngineTest, TaskpoolTest165, testing::ext::TestSize.Level0)
3013 {
3014 napi_env env = (napi_env)engine_;
3015 napi_env taskEnv = nullptr;
3016 napi_create_runtime(env, &taskEnv);
3017 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3018 taskEngine->MarkTaskPoolThread();
3019 napi_value global = NapiHelper::GetGlobalObject(env);
3020 napi_value thisValue = CreateTaskObject(taskEnv);
3021 std::string funcName = "IsCanceled";
3022 napi_value cb = nullptr;
3023 napi_value result = nullptr;
3024 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::IsCanceled, nullptr, &cb);
3025 napi_call_function(taskEnv, thisValue, cb, 0, nullptr, &result);
3026 napi_value exception = nullptr;
3027 napi_get_and_clear_last_exception(taskEnv, &exception);
3028 ASSERT_TRUE(exception == nullptr);
3029 }
3030
3031 HWTEST_F(NativeEngineTest, TaskpoolTest166, testing::ext::TestSize.Level0)
3032 {
3033 napi_env env = (napi_env)engine_;
3034 napi_value global = NapiHelper::GetGlobalObject(env);
3035 napi_value argv[1] = { nullptr };
3036 napi_value undefined = NapiHelper::GetUndefinedValue(env);
3037 argv[0] = undefined;
3038 std::string funcName = "OnReceiveData";
3039 napi_value cb = nullptr;
3040 napi_value result = nullptr;
3041
3042 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnReceiveData, nullptr, &cb);
3043 napi_call_function(env, global, cb, 1, argv, &result);
3044
3045 napi_value exception = nullptr;
3046 napi_get_and_clear_last_exception(env, &exception);
3047 ASSERT_TRUE(exception != nullptr);
3048 }
3049
3050 HWTEST_F(NativeEngineTest, TaskpoolTest167, testing::ext::TestSize.Level0)
3051 {
3052 napi_env env = (napi_env)engine_;
3053 ExceptionScope scope(env);
3054 napi_env taskEnv = nullptr;
3055 napi_create_runtime(env, &taskEnv);
3056 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3057 taskEngine->MarkTaskPoolThread();
3058 napi_value global = NapiHelper::GetGlobalObject(env);
3059
3060 napi_value argv[] = { nullptr };
3061 std::string funcName = "SendData";
3062 napi_value cb = nullptr;
3063 napi_value result = nullptr;
3064 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
3065 napi_call_function(taskEnv, global, cb, 1, argv, &result);
3066 napi_value exception = nullptr;
3067 napi_get_and_clear_last_exception(env, &exception);
3068 ASSERT_TRUE(exception == nullptr);
3069 }
3070
3071 HWTEST_F(NativeEngineTest, TaskpoolTest168, testing::ext::TestSize.Level0)
3072 {
3073 napi_env env = (napi_env)engine_;
3074 ExceptionScope scope(env);
3075 napi_env taskEnv = nullptr;
3076 napi_create_runtime(env, &taskEnv);
3077 NativeEngine* taskEngine = reinterpret_cast<NativeEngine*>(taskEnv);
3078 taskEngine->MarkTaskPoolThread();
3079 napi_value global = NapiHelper::GetGlobalObject(env);
3080 napi_value argv[] = { nullptr };
3081 std::string funcName = "SendData";
3082 napi_value cb = nullptr;
3083 napi_value result = nullptr;
3084 napi_create_function(taskEnv, funcName.c_str(), funcName.size(), Task::SendData, nullptr, &cb);
3085 napi_call_function(taskEnv, global, cb, 1, argv, &result);
3086 napi_value exception = nullptr;
3087 napi_get_and_clear_last_exception(env, &exception);
3088 ASSERT_TRUE(exception == nullptr);
3089 }
3090
3091 HWTEST_F(NativeEngineTest, TaskpoolTest169, testing::ext::TestSize.Level0)
3092 {
3093 napi_env env = (napi_env)engine_;
3094 napi_value global;
3095 napi_get_global(env, &global);
3096 napi_value thisValue = CreateTaskObject(env);
3097
3098 napi_value dependentTask = CreateTaskObject(env);
3099 napi_value argv[] = { dependentTask };
3100 std::string funcName = "AddDependency";
3101 napi_value cb = nullptr;
3102 napi_value result = nullptr;
3103 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3104 napi_call_function(env, nullptr, cb, 1, argv, &result);
3105 napi_value exception = nullptr;
3106 napi_get_and_clear_last_exception(env, &exception);
3107 ASSERT_TRUE(exception == nullptr);
3108 }
3109
3110 HWTEST_F(NativeEngineTest, TaskpoolTest170, testing::ext::TestSize.Level0)
3111 {
3112 napi_env env = (napi_env)engine_;
3113 napi_value global;
3114 napi_get_global(env, &global);
3115 napi_value thisValue = CreateTaskObject(env);
3116 Task* task = nullptr;
3117 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3118 ASSERT_TRUE(task != nullptr);
3119
3120 napi_value dependentTask = CreateTaskObject(env);
3121 napi_value argv[] = { dependentTask };
3122 std::string funcName = "AddDependency";
3123 napi_value cb = nullptr;
3124 napi_value result = nullptr;
3125 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3126 task->isPeriodicTask_ = false;
3127 task->taskType_ = TaskType::GROUP_COMMON_TASK;
3128 napi_call_function(env, thisValue, cb, 1, argv, &result);
3129 napi_value exception = nullptr;
3130 napi_get_and_clear_last_exception(env, &exception);
3131 ASSERT_TRUE(exception != nullptr);
3132 }
3133
3134 HWTEST_F(NativeEngineTest, TaskpoolTest171, testing::ext::TestSize.Level0)
3135 {
3136 napi_env env = (napi_env)engine_;
3137 napi_value global;
3138 napi_get_global(env, &global);
3139 napi_value thisValue = CreateTaskObject(env);
3140 Task* task = nullptr;
3141 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3142
3143 napi_value undefined = NapiHelper::GetUndefinedValue(env);
3144 napi_value dependentTask = CreateTaskObject(env);
3145 napi_set_named_property(env, dependentTask, TASKID_STR, undefined);
3146 napi_value argv[] = { dependentTask };
3147 std::string funcName = "AddDependency";
3148 napi_value cb = nullptr;
3149 napi_value result = nullptr;
3150 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3151 task->taskType_ = TaskType::TASK;
3152 task->isPeriodicTask_ = false;
3153 napi_call_function(env, thisValue, cb, 1, argv, &result);
3154 napi_value exception = nullptr;
3155 napi_get_and_clear_last_exception(env, &exception);
3156 ASSERT_TRUE(exception == nullptr);
3157 }
3158
3159 HWTEST_F(NativeEngineTest, TaskpoolTest172, testing::ext::TestSize.Level0)
3160 {
3161 napi_env env = (napi_env)engine_;
3162 napi_value global;
3163 napi_get_global(env, &global);
3164 napi_value thisValue = CreateTaskObject(env);
3165 Task* task = nullptr;
3166 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3167
3168 napi_value argv[] = { nullptr };
3169 std::string funcName = "AddDependency";
3170 napi_value cb = nullptr;
3171 napi_value result = nullptr;
3172 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3173 task->taskType_ = TaskType::TASK;
3174 task->isPeriodicTask_ = false;
3175 napi_call_function(env, thisValue, cb, 1, argv, &result);
3176 napi_value exception = nullptr;
3177 napi_get_and_clear_last_exception(env, &exception);
3178 ASSERT_TRUE(exception != nullptr);
3179 }
3180
3181 HWTEST_F(NativeEngineTest, TaskpoolTest173, testing::ext::TestSize.Level0)
3182 {
3183 napi_env env = (napi_env)engine_;
3184 napi_value global;
3185 napi_get_global(env, &global);
3186 napi_value thisValue = CreateTaskObject(env);
3187 Task* task = nullptr;
3188 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3189
3190 napi_value dependentTask = CreateTaskObject(env);
3191 Task* task1 = nullptr;
3192 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3193 task1->isPeriodicTask_ = true;
3194 napi_value argv[] = { dependentTask };
3195 std::string funcName = "AddDependency";
3196 napi_value cb = nullptr;
3197 napi_value result = nullptr;
3198 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3199 task->taskType_ = TaskType::TASK;
3200 task->isPeriodicTask_ = false;
3201 napi_call_function(env, thisValue, cb, 1, argv, &result);
3202 napi_value exception = nullptr;
3203 napi_get_and_clear_last_exception(env, &exception);
3204 ASSERT_TRUE(exception != nullptr);
3205 }
3206
3207 HWTEST_F(NativeEngineTest, TaskpoolTest174, testing::ext::TestSize.Level0)
3208 {
3209 napi_env env = (napi_env)engine_;
3210 napi_value global;
3211 napi_get_global(env, &global);
3212 napi_value thisValue = CreateTaskObject(env);
3213 Task* task = nullptr;
3214 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3215
3216 napi_value dependentTask = CreateTaskObject(env);
3217 Task* task1 = nullptr;
3218 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3219 task1->taskType_ = TaskType::COMMON_TASK;
3220 napi_value argv[] = { dependentTask };
3221 std::string funcName = "AddDependency";
3222 napi_value cb = nullptr;
3223 napi_value result = nullptr;
3224 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3225 task->taskType_ = TaskType::TASK;
3226 task1->taskType_ = TaskType::COMMON_TASK;
3227 task->isPeriodicTask_ = false;
3228 task1->isPeriodicTask_ = false;
3229 napi_call_function(env, thisValue, cb, 1, argv, &result);
3230 napi_value exception = nullptr;
3231 napi_get_and_clear_last_exception(env, &exception);
3232 ASSERT_TRUE(exception != nullptr);
3233
3234 task1->taskType_ = TaskType::SEQRUNNER_TASK;
3235 napi_call_function(env, thisValue, cb, 1, argv, &result);
3236 napi_get_and_clear_last_exception(env, &exception);
3237 ASSERT_TRUE(exception != nullptr);
3238
3239 task1->taskType_ = TaskType::GROUP_COMMON_TASK;
3240 napi_call_function(env, thisValue, cb, 1, argv, &result);
3241 napi_get_and_clear_last_exception(env, &exception);
3242 ASSERT_TRUE(exception != nullptr);
3243 }
3244
3245 HWTEST_F(NativeEngineTest, TaskpoolTest175, testing::ext::TestSize.Level0)
3246 {
3247 napi_env env = (napi_env)engine_;
3248 napi_value global;
3249 napi_get_global(env, &global);
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 napi_value argv[] = { dependentTask };
3256 std::string funcName = "AddDependency";
3257 napi_value cb = nullptr;
3258 napi_value result = nullptr;
3259 napi_create_function(env, funcName.c_str(), funcName.size(), Task::AddDependency, nullptr, &cb);
3260 task->isPeriodicTask_ = false;
3261 task->taskType_ = TaskType::SEQRUNNER_TASK;
3262 napi_call_function(env, thisValue, cb, 1, argv, &result);
3263 napi_value exception = nullptr;
3264 napi_get_and_clear_last_exception(env, &exception);
3265 ASSERT_TRUE(exception != nullptr);
3266 }
3267
3268 HWTEST_F(NativeEngineTest, TaskpoolTest176, testing::ext::TestSize.Level0)
3269 {
3270 napi_env env = (napi_env)engine_;
3271 std::string funcName = "RemoveDependency";
3272 napi_value cb = nullptr;
3273 napi_value result = nullptr;
3274 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3275
3276 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
3277 napi_value exception = nullptr;
3278 napi_get_and_clear_last_exception(env, &exception);
3279 ASSERT_TRUE(exception != nullptr);
3280 }
3281
3282 HWTEST_F(NativeEngineTest, TaskpoolTest177, testing::ext::TestSize.Level0)
3283 {
3284 napi_env env = (napi_env)engine_;
3285 napi_value thisValue = CreateTaskObject(env);
3286 Task* task = nullptr;
3287 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3288
3289 napi_value dependentTask = CreateTaskObject(env);
3290 napi_value argv[] = { dependentTask };
3291 std::string funcName = "RemoveDependency";
3292 napi_value cb = nullptr;
3293 napi_value result = nullptr;
3294 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3295 napi_call_function(env, nullptr, cb, 1, argv, &result);
3296 napi_value exception = nullptr;
3297 napi_get_and_clear_last_exception(env, &exception);
3298 ASSERT_TRUE(exception != nullptr);
3299 }
3300
3301 HWTEST_F(NativeEngineTest, TaskpoolTest178, testing::ext::TestSize.Level0)
3302 {
3303 napi_env env = (napi_env)engine_;
3304 napi_value thisValue = CreateTaskObject(env);
3305 Task* task = nullptr;
3306 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3307
3308 napi_value undefined = NapiHelper::GetUndefinedValue(env);
3309 napi_value dependentTask = CreateTaskObject(env);
3310 napi_set_named_property(env, dependentTask, TASKID_STR, undefined);
3311 napi_value argv[] = { dependentTask };
3312 std::string funcName = "RemoveDependency";
3313 napi_value cb = nullptr;
3314 napi_value result = nullptr;
3315 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3316 task->hasDependency_ = false;
3317 napi_call_function(env, thisValue, cb, 1, argv, &result);
3318 napi_value exception = nullptr;
3319 napi_get_and_clear_last_exception(env, &exception);
3320 ASSERT_TRUE(exception != nullptr);
3321
3322 task->hasDependency_ = true;
3323 task->isPeriodicTask_ = true;
3324 napi_call_function(env, thisValue, cb, 1, argv, &result);
3325 napi_get_and_clear_last_exception(env, &exception);
3326 ASSERT_TRUE(exception != nullptr);
3327
3328 task->isPeriodicTask_ = false;
3329 task->taskType_ = TaskType::COMMON_TASK;
3330 napi_call_function(env, thisValue, cb, 1, argv, &result);
3331 napi_get_and_clear_last_exception(env, &exception);
3332 ASSERT_TRUE(exception != nullptr);
3333
3334 task->taskType_ = TaskType::TASK;
3335 napi_call_function(env, thisValue, cb, 1, argv, &result);
3336 napi_get_and_clear_last_exception(env, &exception);
3337 ASSERT_TRUE(exception != nullptr);
3338 }
3339
3340 HWTEST_F(NativeEngineTest, TaskpoolTest179, testing::ext::TestSize.Level0)
3341 {
3342 napi_env env = (napi_env)engine_;
3343 napi_value thisValue = CreateTaskObject(env);
3344 Task* task = nullptr;
3345 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3346
3347 napi_value dependentTask = CreateTaskObject(env);
3348 Task* task1 = nullptr;
3349 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3350 napi_value argv[] = { dependentTask };
3351 std::string funcName = "RemoveDependency";
3352 napi_value cb = nullptr;
3353 napi_value result = nullptr;
3354 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3355 task->hasDependency_ = true;
3356 task->isPeriodicTask_ = false;
3357 task->taskType_ = TaskType::TASK;
3358 task1->hasDependency_ = false;
3359 napi_call_function(env, thisValue, cb, 1, argv, &result);
3360 napi_value exception = nullptr;
3361 napi_get_and_clear_last_exception(env, &exception);
3362 ASSERT_TRUE(exception != nullptr);
3363
3364 task1->hasDependency_ = true;
3365 task1->isPeriodicTask_ = true;
3366 napi_call_function(env, thisValue, cb, 1, argv, &result);
3367 napi_get_and_clear_last_exception(env, &exception);
3368 ASSERT_TRUE(exception != nullptr);
3369
3370 task1->isPeriodicTask_ = false;
3371 task1->taskType_ = TaskType::COMMON_TASK;
3372 napi_call_function(env, thisValue, cb, 1, argv, &result);
3373 napi_get_and_clear_last_exception(env, &exception);
3374 ASSERT_TRUE(exception != nullptr);
3375
3376 task1->taskType_ = TaskType::TASK;
3377 napi_call_function(env, thisValue, cb, 1, argv, &result);
3378 napi_get_and_clear_last_exception(env, &exception);
3379 ASSERT_TRUE(exception != nullptr);
3380 }
3381
3382 HWTEST_F(NativeEngineTest, TaskpoolTest180, testing::ext::TestSize.Level0)
3383 {
3384 napi_env env = (napi_env)engine_;
3385 napi_value thisValue = CreateTaskObject(env);
3386 Task* task = nullptr;
3387 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3388
3389 napi_value dependentTask = CreateTaskObject(env);
3390 Task* task1 = nullptr;
3391 napi_unwrap(env, dependentTask, reinterpret_cast<void**>(&task1));
3392 napi_value argv[] = { dependentTask };
3393 std::string funcName = "RemoveDependency";
3394 napi_value cb = nullptr;
3395 napi_value result = nullptr;
3396 napi_create_function(env, funcName.c_str(), funcName.size(), Task::RemoveDependency, nullptr, &cb);
3397 task->hasDependency_ = true;
3398 task->isPeriodicTask_ = false;
3399 task->taskType_ = TaskType::TASK;
3400 task1->hasDependency_ = true;
3401 task1->isPeriodicTask_ = false;
3402 task1->taskType_ = TaskType::TASK;
3403 task1->hasDependency_ = false;
3404 NativeEngineTest::StoreDependentId(task->taskId_, task1->taskId_);
3405 napi_call_function(env, thisValue, cb, 1, argv, &result);
3406 napi_value exception = nullptr;
3407 napi_get_and_clear_last_exception(env, &exception);
3408 ASSERT_TRUE(exception != nullptr);
3409 }
3410
3411 HWTEST_F(NativeEngineTest, TaskpoolTest181, testing::ext::TestSize.Level0)
3412 {
3413 napi_env env = (napi_env)engine_;
3414 napi_value func = nullptr;
3415 GetSendableFunction(env, "foo", func);
3416 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, func, 1);
3417 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, callbackRef, nullptr);
3418
3419 uv_async_t* req = new uv_async_t;
3420 req->data = cbInfo;
3421 Task::StartExecutionCallback(req);
3422 napi_value exception = nullptr;
3423 napi_get_and_clear_last_exception(env, &exception);
3424 ASSERT_TRUE(exception == nullptr);
3425 }
3426
3427 HWTEST_F(NativeEngineTest, TaskpoolTest182, testing::ext::TestSize.Level0)
3428 {
3429 napi_env env = (napi_env)engine_;
3430 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, nullptr, nullptr);
3431
3432 uv_async_t* req = new uv_async_t;
3433 req->data = cbInfo;
3434 Task::StartExecutionCallback(req);
3435 napi_value exception = nullptr;
3436 napi_get_and_clear_last_exception(env, &exception);
3437 ASSERT_TRUE(exception == nullptr);
3438 }
3439
3440 HWTEST_F(NativeEngineTest, TaskpoolTest183, testing::ext::TestSize.Level0)
3441 {
3442 napi_env env = (napi_env)engine_;
3443 ListenerCallBackInfo* cbInfo = new ListenerCallBackInfo(env, nullptr, nullptr);
3444
3445 Task::ExecuteListenerCallback(cbInfo);
3446 napi_value exception = nullptr;
3447 napi_get_and_clear_last_exception(env, &exception);
3448 ASSERT_TRUE(exception == nullptr);
3449
3450 napi_value func = nullptr;
3451 GetSendableFunction(env, "foo", func);
3452 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, func, 1);
3453 cbInfo = new ListenerCallBackInfo(env, callbackRef, nullptr);
3454 Task::ExecuteListenerCallback(cbInfo);
3455 napi_get_and_clear_last_exception(env, &exception);
3456 ASSERT_TRUE(exception == nullptr);
3457
3458 napi_value error = NapiHelper::CreateObject(env);
3459 cbInfo = new ListenerCallBackInfo(env, callbackRef, error);
3460 Task::ExecuteListenerCallback(cbInfo);
3461 napi_get_and_clear_last_exception(env, &exception);
3462 ASSERT_TRUE(exception == nullptr);
3463 }
3464
3465 HWTEST_F(NativeEngineTest, TaskpoolTest184, testing::ext::TestSize.Level0)
3466 {
3467 napi_env env = (napi_env)engine_;
3468 napi_value thisValue = CreateTaskObject(env);
3469 Task* task = nullptr;
3470 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3471
3472 std::string funcName = "OnEnqueued";
3473 napi_value cb = nullptr;
3474 napi_value result = nullptr;
3475 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3476 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3477 napi_value exception = nullptr;
3478 napi_get_and_clear_last_exception(env, &exception);
3479 ASSERT_TRUE(exception == nullptr);
3480 }
3481
3482 HWTEST_F(NativeEngineTest, TaskpoolTest185, testing::ext::TestSize.Level0)
3483 {
3484 napi_env env = (napi_env)engine_;
3485 napi_value thisValue = CreateTaskObject(env);
3486 Task* task = nullptr;
3487 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3488
3489 napi_value object = NapiHelper::CreateObject(env);
3490 napi_value argv[1] = { object };
3491 std::string funcName = "OnEnqueued";
3492 napi_value cb = nullptr;
3493 napi_value result = nullptr;
3494 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3495 napi_call_function(env, thisValue, cb, 1, argv, &result);
3496 napi_value exception = nullptr;
3497 napi_get_and_clear_last_exception(env, &exception);
3498 ASSERT_TRUE(exception != nullptr);
3499 }
3500
3501 HWTEST_F(NativeEngineTest, TaskpoolTest186, testing::ext::TestSize.Level0)
3502 {
3503 napi_env env = (napi_env)engine_;
3504 napi_value thisValue = CreateTaskObject(env);
3505 Task* task = nullptr;
3506 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3507
3508 napi_value func = nullptr;
3509 GetSendableFunction(env, "foo", func);
3510 napi_value argv[1] = { func };
3511 std::string funcName = "OnEnqueued";
3512 napi_value cb = nullptr;
3513 napi_value result = nullptr;
3514 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3515 napi_call_function(env, nullptr, cb, 1, argv, &result);
3516 napi_value exception = nullptr;
3517 napi_get_and_clear_last_exception(env, &exception);
3518 ASSERT_TRUE(exception == nullptr);
3519 }
3520
3521 HWTEST_F(NativeEngineTest, TaskpoolTest187, testing::ext::TestSize.Level0)
3522 {
3523 napi_env env = (napi_env)engine_;
3524 napi_value thisValue = CreateTaskObject(env);
3525 Task* task = nullptr;
3526 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3527
3528 napi_value func = nullptr;
3529 GetSendableFunction(env, "foo", func);
3530 napi_value argv[1] = { func };
3531 std::string funcName = "OnEnqueued";
3532 napi_value cb = nullptr;
3533 napi_value result = nullptr;
3534 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnEnqueued, nullptr, &cb);
3535 task->taskState_ = ExecuteState::WAITING;
3536 napi_call_function(env, thisValue, cb, 1, argv, &result);
3537 napi_value exception = nullptr;
3538 napi_get_and_clear_last_exception(env, &exception);
3539 ASSERT_TRUE(exception != nullptr);
3540
3541 task->taskState_ = ExecuteState::NOT_FOUND;
3542 napi_call_function(env, thisValue, cb, 1, argv, &result);
3543 napi_get_and_clear_last_exception(env, &exception);
3544 ASSERT_TRUE(exception != nullptr);
3545 }
3546
3547 HWTEST_F(NativeEngineTest, TaskpoolTest188, testing::ext::TestSize.Level0)
3548 {
3549 napi_env env = (napi_env)engine_;
3550 napi_value thisValue = CreateTaskObject(env);
3551 Task* task = nullptr;
3552 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3553
3554 std::string funcName = "OnStartExecution";
3555 napi_value cb = nullptr;
3556 napi_value result = nullptr;
3557 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3558 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3559 napi_value exception = nullptr;
3560 napi_get_and_clear_last_exception(env, &exception);
3561 ASSERT_TRUE(exception == nullptr);
3562 }
3563
3564 HWTEST_F(NativeEngineTest, TaskpoolTest189, testing::ext::TestSize.Level0)
3565 {
3566 napi_env env = (napi_env)engine_;
3567 napi_value thisValue = CreateTaskObject(env);
3568 Task* task = nullptr;
3569 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3570
3571 napi_value object = NapiHelper::CreateObject(env);
3572 napi_value argv[1] = { object };
3573 std::string funcName = "OnStartExecution";
3574 napi_value cb = nullptr;
3575 napi_value result = nullptr;
3576 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3577 napi_call_function(env, thisValue, cb, 1, argv, &result);
3578 napi_value exception = nullptr;
3579 napi_get_and_clear_last_exception(env, &exception);
3580 ASSERT_TRUE(exception != nullptr);
3581 }
3582
3583 HWTEST_F(NativeEngineTest, TaskpoolTest190, testing::ext::TestSize.Level0)
3584 {
3585 napi_env env = (napi_env)engine_;
3586 napi_value thisValue = CreateTaskObject(env);
3587 Task* task = nullptr;
3588 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3589
3590 napi_value func = nullptr;
3591 GetSendableFunction(env, "foo", func);
3592 napi_value argv[1] = { func };
3593 std::string funcName = "OnStartExecution";
3594 napi_value cb = nullptr;
3595 napi_value result = nullptr;
3596 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3597 napi_call_function(env, thisValue, cb, 1, argv, &result);
3598 napi_value exception = nullptr;
3599 napi_get_and_clear_last_exception(env, &exception);
3600 ASSERT_TRUE(exception == nullptr);
3601 }
3602
3603 HWTEST_F(NativeEngineTest, TaskpoolTest191, testing::ext::TestSize.Level0)
3604 {
3605 napi_env env = (napi_env)engine_;
3606 napi_value thisValue = CreateTaskObject(env);
3607 Task* task = nullptr;
3608 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3609
3610 napi_value func = nullptr;
3611 GetSendableFunction(env, "foo", func);
3612 napi_value argv[1] = { func };
3613 std::string funcName = "OnStartExecution";
3614 napi_value cb = nullptr;
3615 napi_value result = nullptr;
3616 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnStartExecution, nullptr, &cb);
3617 task->taskState_ = ExecuteState::WAITING;
3618 napi_call_function(env, thisValue, cb, 1, argv, &result);
3619 napi_value exception = nullptr;
3620 napi_get_and_clear_last_exception(env, &exception);
3621 ASSERT_TRUE(exception != nullptr);
3622
3623 task->taskState_ = ExecuteState::NOT_FOUND;
3624 task->isMainThreadTask_ = false;
3625 napi_call_function(env, thisValue, cb, 1, argv, &result);
3626 napi_get_and_clear_last_exception(env, &exception);
3627 ASSERT_TRUE(exception != nullptr);
3628
3629 task->isMainThreadTask_ = true;
3630 napi_call_function(env, thisValue, cb, 1, argv, &result);
3631 napi_get_and_clear_last_exception(env, &exception);
3632 ASSERT_TRUE(exception != nullptr);
3633 }
3634
3635 HWTEST_F(NativeEngineTest, TaskpoolTest192, testing::ext::TestSize.Level0)
3636 {
3637 napi_env env = (napi_env)engine_;
3638 napi_value thisValue = CreateTaskObject(env);
3639 Task* task = nullptr;
3640 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3641
3642 std::string funcName = "OnExecutionFailed";
3643 napi_value cb = nullptr;
3644 napi_value result = nullptr;
3645 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3646 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3647 napi_value exception = nullptr;
3648 napi_get_and_clear_last_exception(env, &exception);
3649 ASSERT_TRUE(exception == nullptr);
3650 }
3651
3652 HWTEST_F(NativeEngineTest, TaskpoolTest193, testing::ext::TestSize.Level0)
3653 {
3654 napi_env env = (napi_env)engine_;
3655 napi_value thisValue = CreateTaskObject(env);
3656 Task* task = nullptr;
3657 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3658
3659 napi_value object = NapiHelper::CreateObject(env);
3660 napi_value argv[1] = { object };
3661 std::string funcName = "OnExecutionFailed";
3662 napi_value cb = nullptr;
3663 napi_value result = nullptr;
3664 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3665 napi_call_function(env, thisValue, cb, 1, argv, &result);
3666 napi_value exception = nullptr;
3667 napi_get_and_clear_last_exception(env, &exception);
3668 ASSERT_TRUE(exception != nullptr);
3669 }
3670
3671 HWTEST_F(NativeEngineTest, TaskpoolTest194, testing::ext::TestSize.Level0)
3672 {
3673 napi_env env = (napi_env)engine_;
3674 napi_value thisValue = CreateTaskObject(env);
3675 Task* task = nullptr;
3676 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3677
3678 napi_value func = nullptr;
3679 GetSendableFunction(env, "foo", func);
3680 napi_value argv[1] = { func };
3681 std::string funcName = "OnExecutionFailed";
3682 napi_value cb = nullptr;
3683 napi_value result = nullptr;
3684 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3685 napi_call_function(env, nullptr, cb, 1, argv, &result);
3686 napi_value exception = nullptr;
3687 napi_get_and_clear_last_exception(env, &exception);
3688 ASSERT_TRUE(exception == nullptr);
3689 }
3690
3691 HWTEST_F(NativeEngineTest, TaskpoolTest195, testing::ext::TestSize.Level0)
3692 {
3693 napi_env env = (napi_env)engine_;
3694 napi_value thisValue = CreateTaskObject(env);
3695 Task* task = nullptr;
3696 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3697
3698 napi_value func = nullptr;
3699 GetSendableFunction(env, "foo", func);
3700 napi_value argv[1] = { func };
3701 std::string funcName = "OnExecutionFailed";
3702 napi_value cb = nullptr;
3703 napi_value result = nullptr;
3704 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionFailed, nullptr, &cb);
3705 task->taskState_ = ExecuteState::WAITING;
3706 napi_call_function(env, thisValue, cb, 1, argv, &result);
3707 napi_value exception = nullptr;
3708 napi_get_and_clear_last_exception(env, &exception);
3709 ASSERT_TRUE(exception != nullptr);
3710
3711 task->taskState_ = ExecuteState::NOT_FOUND;
3712 napi_call_function(env, thisValue, cb, 1, argv, &result);
3713 napi_get_and_clear_last_exception(env, &exception);
3714 ASSERT_TRUE(exception != nullptr);
3715 }
3716
3717 HWTEST_F(NativeEngineTest, TaskpoolTest196, testing::ext::TestSize.Level0)
3718 {
3719 napi_env env = (napi_env)engine_;
3720 napi_value thisValue = CreateTaskObject(env);
3721 Task* task = nullptr;
3722 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3723
3724 std::string funcName = "OnExecutionSucceeded";
3725 napi_value cb = nullptr;
3726 napi_value result = nullptr;
3727 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3728 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3729 napi_value exception = nullptr;
3730 napi_get_and_clear_last_exception(env, &exception);
3731 ASSERT_TRUE(exception == nullptr);
3732 }
3733
3734 HWTEST_F(NativeEngineTest, TaskpoolTest197, testing::ext::TestSize.Level0)
3735 {
3736 napi_env env = (napi_env)engine_;
3737 napi_value thisValue = CreateTaskObject(env);
3738 Task* task = nullptr;
3739 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3740
3741 napi_value object = NapiHelper::CreateObject(env);
3742 napi_value argv[1] = { object };
3743 std::string funcName = "OnExecutionSucceeded";
3744 napi_value cb = nullptr;
3745 napi_value result = nullptr;
3746 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3747 napi_call_function(env, thisValue, cb, 1, argv, &result);
3748 napi_value exception = nullptr;
3749 napi_get_and_clear_last_exception(env, &exception);
3750 ASSERT_TRUE(exception != nullptr);
3751 }
3752
3753 HWTEST_F(NativeEngineTest, TaskpoolTest198, testing::ext::TestSize.Level0)
3754 {
3755 napi_env env = (napi_env)engine_;
3756 napi_value thisValue = CreateTaskObject(env);
3757 Task* task = nullptr;
3758 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3759
3760 napi_value func = nullptr;
3761 GetSendableFunction(env, "foo", func);
3762 napi_value argv[1] = { func };
3763 std::string funcName = "OnExecutionSucceeded";
3764 napi_value cb = nullptr;
3765 napi_value result = nullptr;
3766 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3767 napi_call_function(env, nullptr, cb, 1, argv, &result);
3768 napi_value exception = nullptr;
3769 napi_get_and_clear_last_exception(env, &exception);
3770 ASSERT_TRUE(exception == nullptr);
3771 }
3772
3773 HWTEST_F(NativeEngineTest, TaskpoolTest199, testing::ext::TestSize.Level0)
3774 {
3775 napi_env env = (napi_env)engine_;
3776 napi_value thisValue = CreateTaskObject(env);
3777 Task* task = nullptr;
3778 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3779
3780 napi_value func = nullptr;
3781 GetSendableFunction(env, "foo", func);
3782 napi_value argv[1] = { func };
3783 std::string funcName = "OnExecutionSucceeded";
3784 napi_value cb = nullptr;
3785 napi_value result = nullptr;
3786 napi_create_function(env, funcName.c_str(), funcName.size(), Task::OnExecutionSucceeded, nullptr, &cb);
3787 task->taskState_ = ExecuteState::WAITING;
3788 napi_call_function(env, thisValue, cb, 1, argv, &result);
3789 napi_value exception = nullptr;
3790 napi_get_and_clear_last_exception(env, &exception);
3791 ASSERT_TRUE(exception != nullptr);
3792
3793 task->taskState_ = ExecuteState::NOT_FOUND;
3794 napi_call_function(env, thisValue, cb, 1, argv, &result);
3795 napi_get_and_clear_last_exception(env, &exception);
3796 ASSERT_TRUE(exception != nullptr);
3797 }
3798
3799 HWTEST_F(NativeEngineTest, TaskpoolTest200, testing::ext::TestSize.Level0)
3800 {
3801 napi_env env = (napi_env)engine_;
3802 napi_value thisValue = CreateTaskObject(env);
3803 Task* task = nullptr;
3804 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3805
3806 std::string funcName = "IsDone";
3807 napi_value cb = nullptr;
3808 napi_value result = nullptr;
3809 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsDone, nullptr, &cb);
3810 napi_call_function(env, nullptr, cb, 0, nullptr, &result);
3811 napi_value exception = nullptr;
3812 napi_get_and_clear_last_exception(env, &exception);
3813 ASSERT_TRUE(exception == nullptr);
3814 }
3815
3816 HWTEST_F(NativeEngineTest, TaskpoolTest201, testing::ext::TestSize.Level0)
3817 {
3818 napi_env env = (napi_env)engine_;
3819 napi_value thisValue = CreateTaskObject(env);
3820 Task* task = nullptr;
3821 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3822
3823 std::string funcName = "IsDone";
3824 napi_value cb = nullptr;
3825 napi_value result = nullptr;
3826 napi_create_function(env, funcName.c_str(), funcName.size(), Task::IsDone, nullptr, &cb);
3827 task->taskState_ = ExecuteState::WAITING;
3828 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3829 napi_value exception = nullptr;
3830 napi_get_and_clear_last_exception(env, &exception);
3831 ASSERT_TRUE(exception == nullptr);
3832
3833 task->taskState_ = ExecuteState::FINISHED;
3834 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3835 napi_get_and_clear_last_exception(env, &exception);
3836 ASSERT_TRUE(exception == nullptr);
3837
3838 task->taskState_ = ExecuteState::ENDING;
3839 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3840 napi_get_and_clear_last_exception(env, &exception);
3841 ASSERT_TRUE(exception == nullptr);
3842 }
3843
3844 HWTEST_F(NativeEngineTest, TaskpoolTest202, testing::ext::TestSize.Level0)
3845 {
3846 napi_env env = (napi_env)engine_;
3847 napi_value thisValue = CreateTaskObject(env);
3848 Task* task = nullptr;
3849 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
3850 NativeEngineTest::StoreTaskDuration(task->taskId_);
3851 std::string funcName = "GetTotalDuration";
3852 napi_value cb = nullptr;
3853 napi_value result = nullptr;
3854 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetTotalDuration, nullptr, &cb);
3855 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3856 napi_value exception = nullptr;
3857 napi_get_and_clear_last_exception(env, &exception);
3858 ASSERT_TRUE(exception == nullptr);
3859
3860 funcName = "GetCPUDuration";
3861 cb = nullptr;
3862 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetCPUDuration, nullptr, &cb);
3863 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3864 napi_get_and_clear_last_exception(env, &exception);
3865 ASSERT_TRUE(exception == nullptr);
3866
3867 funcName = "GetIODuration";
3868 cb = nullptr;
3869 napi_create_function(env, funcName.c_str(), funcName.size(), Task::GetIODuration, nullptr, &cb);
3870 napi_call_function(env, thisValue, cb, 0, nullptr, &result);
3871 napi_get_and_clear_last_exception(env, &exception);
3872 ASSERT_TRUE(exception == nullptr);
3873 }
3874
3875 HWTEST_F(NativeEngineTest, TaskpoolTest203, testing::ext::TestSize.Level0)
3876 {
3877 Task* task = new Task();
3878 task->IncreaseRefCount();
3879 task->DecreaseRefCount();
3880 task->taskType_ = TaskType::COMMON_TASK;
3881 ASSERT_TRUE(task->IsRepeatableTask());
3882 task->taskType_ = TaskType::GROUP_COMMON_TASK;
3883 ASSERT_TRUE(task->IsRepeatableTask());
3884 task->taskType_ = TaskType::GROUP_FUNCTION_TASK;
3885 ASSERT_TRUE(task->IsRepeatableTask());
3886 task->taskType_ = TaskType::TASK;
3887 ASSERT_TRUE(!task->IsRepeatableTask());
3888 delete task;
3889 }
3890
3891 HWTEST_F(NativeEngineTest, TaskpoolTest204, testing::ext::TestSize.Level0)
3892 {
3893 napi_env env = (napi_env)engine_;
3894 Task* task = new Task();
3895 task->taskId_ = reinterpret_cast<uint64_t>(task);
3896 napi_value thisValue = NapiHelper::CreateObject(env);
3897 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
3898 task->taskRef_ = ref;
3899 TaskInfo* taskInfo = new TaskInfo();
3900 task->pendingTaskInfos_.push_back(taskInfo);
3901 task->NotifyPendingTask();
3902 napi_value exception = nullptr;
3903 napi_get_and_clear_last_exception(env, &exception);
3904 ASSERT_TRUE(exception == nullptr);
3905 delete task;
3906 }
3907
3908 HWTEST_F(NativeEngineTest, TaskpoolTest205, testing::ext::TestSize.Level0)
3909 {
3910 napi_env env = (napi_env)engine_;
3911 Task* task = new Task();
3912 task->taskId_ = reinterpret_cast<uint64_t>(task);
3913 napi_value thisValue = NapiHelper::CreateObject(env);
3914 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
3915 task->taskRef_ = ref;
3916 TaskInfo* taskInfo = new TaskInfo();
3917 napi_value promise = NapiHelper::CreatePromise(env, &taskInfo->deferred);
3918 task->pendingTaskInfos_.push_back(taskInfo);
3919 task->isPeriodicTask_ = false;
3920 task->CancelPendingTask(env);
3921 napi_value exception = nullptr;
3922 napi_get_and_clear_last_exception(env, &exception);
3923 ASSERT_TRUE(exception == nullptr);
3924
3925 TaskInfo* taskInfo1 = new TaskInfo();
3926 napi_value promise1 = NapiHelper::CreatePromise(env, &taskInfo1->deferred);
3927 task->pendingTaskInfos_.push_back(taskInfo1);
3928 task->isPeriodicTask_ = true;
3929 task->CancelPendingTask(env);
3930 napi_get_and_clear_last_exception(env, &exception);
3931 ASSERT_TRUE(exception == nullptr);
3932 delete task;
3933 }
3934
3935 HWTEST_F(NativeEngineTest, TaskpoolTest206, testing::ext::TestSize.Level0)
3936 {
3937 napi_env env = (napi_env)engine_;
3938 Task* task = new Task();
3939 task->taskId_ = reinterpret_cast<uint64_t>(task);
3940 napi_value thisValue = NapiHelper::CreateObject(env);
3941 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
3942 task->taskRef_ = ref;
3943 TaskInfo* taskInfo = new TaskInfo();
3944 task->taskType_ = TaskType::GROUP_FUNCTION_TASK;
3945 task->currentTaskInfo_ = taskInfo;
3946 task->taskRefCount_ = 1;
3947 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
3948 task->worker_ = worker;
3949
3950 napi_value func = nullptr;
3951 napi_value args = nullptr;
3952 task->DeserializeValue(env, &func, &args);
3953 napi_value exception = nullptr;
3954 napi_get_and_clear_last_exception(env, &exception);
3955 ASSERT_TRUE(exception == nullptr);
3956
3957 task->startTime_ = task->taskId_;
3958 task->ioTime_ = task->taskId_;
3959 task->StoreTaskDuration();
3960 napi_get_and_clear_last_exception(env, &exception);
3961 ASSERT_TRUE(exception == nullptr);
3962 delete task;
3963 }
3964
3965 HWTEST_F(NativeEngineTest, TaskpoolTest207, testing::ext::TestSize.Level0)
3966 {
3967 napi_env env = (napi_env)engine_;
3968 Task* task = new Task();
3969 task->taskId_ = reinterpret_cast<uint64_t>(task);
3970 task->taskType_ = TaskType::SEQRUNNER_TASK;
3971 task->hasDependency_ = false;
3972 task->isPeriodicTask_ = false;
3973 task->CanForSequenceRunner(env);
3974 napi_value exception = nullptr;
3975 napi_get_and_clear_last_exception(env, &exception);
3976 ASSERT_TRUE(exception != nullptr);
3977
3978 task->taskType_ = TaskType::COMMON_TASK;
3979 task->CanForSequenceRunner(env);
3980 napi_get_and_clear_last_exception(env, &exception);
3981 ASSERT_TRUE(exception != nullptr);
3982 delete task;
3983 }
3984
3985 HWTEST_F(NativeEngineTest, TaskpoolTest208, testing::ext::TestSize.Level0)
3986 {
3987 napi_env env = (napi_env)engine_;
3988 Task* task = new Task();
3989 task->taskId_ = reinterpret_cast<uint64_t>(task);
3990 task->hasDependency_ = false;
3991 task->isPeriodicTask_ = true;
3992 task->CanForTaskGroup(env);
3993 napi_value exception = nullptr;
3994 napi_get_and_clear_last_exception(env, &exception);
3995 ASSERT_TRUE(exception != nullptr);
3996
3997 task->isPeriodicTask_ = false;
3998 task->taskType_ = TaskType::COMMON_TASK;
3999 task->CanForTaskGroup(env);
4000 napi_get_and_clear_last_exception(env, &exception);
4001 ASSERT_TRUE(exception != nullptr);
4002
4003 task->taskType_ = TaskType::SEQRUNNER_TASK;
4004 task->CanForTaskGroup(env);
4005 napi_get_and_clear_last_exception(env, &exception);
4006 ASSERT_TRUE(exception != nullptr);
4007
4008 task->taskType_ = TaskType::GROUP_COMMON_TASK;
4009 task->CanForTaskGroup(env);
4010 napi_get_and_clear_last_exception(env, &exception);
4011 ASSERT_TRUE(exception != nullptr);
4012
4013 task->taskType_ = TaskType::TASK;
4014 task->isLongTask_ = true;
4015 task->CanForTaskGroup(env);
4016 napi_get_and_clear_last_exception(env, &exception);
4017 ASSERT_TRUE(exception != nullptr);
4018 delete task;
4019 }
4020
4021 HWTEST_F(NativeEngineTest, TaskpoolTest209, testing::ext::TestSize.Level0)
4022 {
4023 napi_env env = (napi_env)engine_;
4024 Task* task = new Task();
4025 task->taskId_ = reinterpret_cast<uint64_t>(task);
4026 task->taskType_ = TaskType::TASK;
4027 task->hasDependency_ = false;
4028 task->isLongTask_ = false;
4029 task->isPeriodicTask_ = true;
4030 task->CanExecute(env);
4031 napi_value exception = nullptr;
4032 napi_get_and_clear_last_exception(env, &exception);
4033 ASSERT_TRUE(exception != nullptr);
4034 delete task;
4035 }
4036
4037 HWTEST_F(NativeEngineTest, TaskpoolTest210, testing::ext::TestSize.Level0)
4038 {
4039 napi_env env = (napi_env)engine_;
4040 Task* task = new Task();
4041 task->taskId_ = reinterpret_cast<uint64_t>(task);
4042 task->taskType_ = TaskType::COMMON_TASK;
4043 task->hasDependency_ = true;
4044 task->CanExecuteDelayed(env);
4045 napi_value exception = nullptr;
4046 napi_get_and_clear_last_exception(env, &exception);
4047 ASSERT_TRUE(exception != nullptr);
4048
4049 task->taskType_ = TaskType::FUNCTION_TASK;
4050 task->isLongTask_ = true;
4051 task->hasDependency_ = false;
4052 task->CanExecuteDelayed(env);
4053 napi_get_and_clear_last_exception(env, &exception);
4054 ASSERT_TRUE(exception != nullptr);
4055
4056 task->taskType_ = TaskType::TASK;
4057 task->isPeriodicTask_ = true;
4058 task->CanExecuteDelayed(env);
4059 napi_get_and_clear_last_exception(env, &exception);
4060 ASSERT_TRUE(exception != nullptr);
4061 delete task;
4062 }
4063
4064 HWTEST_F(NativeEngineTest, TaskpoolTest211, testing::ext::TestSize.Level0)
4065 {
4066 napi_env env = (napi_env)engine_;
4067 Task* task = new Task();
4068 task->taskId_ = reinterpret_cast<uint64_t>(task);
4069 task->taskType_ = TaskType::COMMON_TASK;
4070 task->isPeriodicTask_ = false;
4071 task->CanExecutePeriodically(env);
4072 napi_value exception = nullptr;
4073 napi_get_and_clear_last_exception(env, &exception);
4074 ASSERT_TRUE(exception != nullptr);
4075
4076 task->taskType_ = TaskType::COMMON_TASK;
4077 task->isPeriodicTask_ = true;
4078 task->CanExecutePeriodically(env);
4079 napi_get_and_clear_last_exception(env, &exception);
4080 ASSERT_TRUE(exception != nullptr);
4081
4082 task->taskType_ = TaskType::TASK;
4083 task->isPeriodicTask_ = true;
4084 task->CanExecutePeriodically(env);
4085 napi_get_and_clear_last_exception(env, &exception);
4086 ASSERT_TRUE(exception != nullptr);
4087
4088 task->taskType_ = TaskType::TASK;
4089 task->isPeriodicTask_ = false;
4090 task->hasDependency_ = true;
4091 task->CanExecutePeriodically(env);
4092 napi_get_and_clear_last_exception(env, &exception);
4093 ASSERT_TRUE(exception != nullptr);
4094 delete task;
4095 }
4096
4097 HWTEST_F(NativeEngineTest, TaskpoolTest212, testing::ext::TestSize.Level0)
4098 {
4099 napi_env env = (napi_env)engine_;
4100 Task* task = new Task();
4101 task->taskId_ = reinterpret_cast<uint64_t>(task);
4102 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4103 uv_update_time(loop);
4104 uv_timer_t* timer = new uv_timer_t;
4105 uv_timer_init(loop, timer);
4106 TaskMessage *taskMessage = new TaskMessage();
4107 taskMessage->priority = Priority::DEFAULT;
4108 taskMessage->taskId = task->taskId_;
4109 napi_value promise = NapiHelper::CreatePromise(env, &taskMessage->deferred);
4110 timer->data = taskMessage;
4111 task->delayedTimers_.insert(nullptr);
4112 task->delayedTimers_.insert(timer);
4113 task->ClearDelayedTimers();
4114 napi_value exception = nullptr;
4115 napi_get_and_clear_last_exception(env, &exception);
4116 ASSERT_TRUE(exception == nullptr);
4117 delete task;
4118 }
4119
4120 HWTEST_F(NativeEngineTest, TaskpoolTest213, testing::ext::TestSize.Level0)
4121 {
4122 napi_env env = (napi_env)engine_;
4123 Task* task = new Task();
4124 task->taskId_ = reinterpret_cast<uint64_t>(task);
4125 task->TryClearHasDependency();
4126 napi_value exception = nullptr;
4127 napi_get_and_clear_last_exception(env, &exception);
4128 ASSERT_TRUE(exception == nullptr);
4129
4130 NativeEngineTest::StoreDependentId(task->taskId_, task->taskId_);
4131 task->TryClearHasDependency();
4132 napi_get_and_clear_last_exception(env, &exception);
4133 ASSERT_TRUE(exception == nullptr);
4134
4135 Task* task1 = new Task();
4136 task1->taskId_ = reinterpret_cast<uint64_t>(task1);
4137 NativeEngineTest::StoreDependentTaskId(task1->taskId_, task1->taskId_);
4138 task1->TryClearHasDependency();
4139 napi_get_and_clear_last_exception(env, &exception);
4140 ASSERT_TRUE(exception == nullptr);
4141
4142 NativeEngineTest::StoreDependentId(task1->taskId_, task1->taskId_);
4143 task1->TryClearHasDependency();
4144 napi_get_and_clear_last_exception(env, &exception);
4145 ASSERT_TRUE(exception == nullptr);
4146 delete task;
4147 }
4148
4149 HWTEST_F(NativeEngineTest, TaskpoolTest214, testing::ext::TestSize.Level0)
4150 {
4151 napi_env env = (napi_env)engine_;
4152 NativeEngineTest::InitTaskManager(env);
4153 NativeEngineTest::NotifyDependencyTaskInfo(env);
4154 NativeEngineTest::StoreTaskDependency(env);
4155 NativeEngineTest::RemoveTaskDependency(env);
4156 NativeEngineTest::ReleaseTaskData(env);
4157 NativeEngineTest::CheckTask(env);
4158 NativeEngineTest::CancelGroupTask(env);
4159 NativeEngineTest::TriggerSeqRunner(env);
4160 NativeEngineTest::UpdateGroupState(env);
4161 napi_value exception = nullptr;
4162 napi_get_and_clear_last_exception(env, &exception);
4163 ASSERT_TRUE(exception != nullptr);
4164 }
4165
4166 HWTEST_F(NativeEngineTest, TaskpoolTest215, testing::ext::TestSize.Level0)
4167 {
4168 napi_env env = (napi_env)engine_;
4169 ExceptionScope scope(env);
4170 std::string func = "SeqRunnerConstructor";
4171 napi_value callback = nullptr;
4172 napi_value result = nullptr;
4173 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &callback);
4174 napi_value argv[2] = {nullptr};
4175 napi_create_string_utf8(env, "seq04", NAPI_AUTO_LENGTH, &argv[0]);
4176 napi_create_uint32(env, 5, &argv[1]);
4177 result = nullptr;
4178 napi_call_function(env, nullptr, callback, 2, argv, &result);
4179 ASSERT_EQ(result, nullptr);
4180 napi_value exception = nullptr;
4181 napi_get_and_clear_last_exception(env, &exception);
4182
4183 napi_value argv1[1] = {nullptr};
4184 napi_create_string_utf8(env, "seq05", NAPI_AUTO_LENGTH, &argv1[0]);
4185
4186 result = nullptr;
4187 napi_call_function(env, nullptr, callback, 1, argv1, &result);
4188 ASSERT_NE(result, nullptr);
4189 exception = nullptr;
4190 napi_get_and_clear_last_exception(env, &exception);
4191
4192 napi_value argv2[1] = {nullptr};
4193 napi_create_uint32(env, 5, &argv2[0]);
4194 result = nullptr;
4195 napi_call_function(env, nullptr, callback, 1, argv2, &result);
4196 ASSERT_EQ(result, nullptr);
4197 exception = nullptr;
4198 napi_get_and_clear_last_exception(env, &exception);
4199
4200 napi_value argv3[1] = {nullptr};
4201 result = nullptr;
4202 napi_call_function(env, nullptr, callback, 1, argv3, &result);
4203 ASSERT_EQ(result, nullptr);
4204 exception = nullptr;
4205 napi_get_and_clear_last_exception(env, &exception);
4206
4207 napi_value argv4[1] = {nullptr};
4208 napi_create_string_utf8(env, "seq05", NAPI_AUTO_LENGTH, &argv4[0]);
4209 result = nullptr;
4210 napi_call_function(env, nullptr, callback, 1, argv4, &result);
4211 ASSERT_NE(result, nullptr);
4212 }
4213
4214 HWTEST_F(NativeEngineTest, TaskpoolTest216, testing::ext::TestSize.Level0)
4215 {
4216 napi_env env = (napi_env)engine_;
4217 ExceptionScope scope(env);
4218 std::string func = "SeqRunnerConstructor";
4219 napi_value SeqCallback = nullptr;
4220 napi_value SeqResult = nullptr;
4221 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4222 napi_value SeqArgv[1] = {nullptr};
4223 napi_create_string_utf8(env, "seq06", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4224 napi_call_function(env, nullptr, SeqCallback, 1, SeqArgv, &SeqResult);
4225
4226 std::string funcName = "Execute";
4227 napi_value callback = nullptr;
4228 napi_value result = nullptr;
4229 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4230
4231 napi_value napiSeqRunnerId = NapiHelper::GetNameProperty(env, SeqResult, "seqRunnerId");
4232 uint64_t seqId = NapiHelper::GetUint64Value(env, napiSeqRunnerId);
4233 SequenceRunner seq;
4234 TaskGroupManager &taskGroupManager = TaskGroupManager::GetInstance();
4235 taskGroupManager.StoreSequenceRunner(seqId, &seq);
4236
4237 napi_value thisValue = NapiHelper::CreateObject(env);
4238 napi_value num = nullptr;
4239 napi_create_uint32(env, 1, &num);
4240 napi_set_named_property(env, thisValue, "taskId", num);
4241 napi_value argv[] = {thisValue};
4242 napi_call_function(env, nullptr, callback, 1, argv, &result);
4243 ASSERT_EQ(result, nullptr);
4244 napi_value exception = nullptr;
4245 napi_get_and_clear_last_exception(env, &exception);
4246
4247 thisValue = CreateTaskObject(env, TaskType::COMMON_TASK);
4248 napi_value argv1[] = {thisValue};
4249 napi_call_function(env, nullptr, callback, 1, argv1, &result);
4250 ASSERT_EQ(result, nullptr);
4251 exception = nullptr;
4252 napi_get_and_clear_last_exception(env, &exception);
4253
4254 SequenceRunner seq1;
4255 seq1.currentTaskId_ = 1;
4256 taskGroupManager.RemoveSequenceRunner(seqId);
4257 taskGroupManager.StoreSequenceRunner(seqId, &seq1);
4258 thisValue = CreateTaskObject(env);
4259 napi_value argv2[] = {thisValue};
4260 napi_call_function(env, nullptr, callback, 1, argv2, &result);
4261 ASSERT_NE(result, nullptr);
4262 }
4263
4264 HWTEST_F(NativeEngineTest, TaskpoolTest217, testing::ext::TestSize.Level0)
4265 {
4266 napi_env env = (napi_env)engine_;
4267 NativeEngineTest::NotifyHandleTaskResult(env);
4268 NativeEngineTest::TaskResultCallback(env);
4269 NativeEngineTest::HandleFunctionException(env);
4270 NativeEngineTest::DebuggerOnPostTask(env);
4271 NativeEngineTest::ReleaseWorkerHandles(env);
4272 napi_value exception = nullptr;
4273 napi_get_and_clear_last_exception(env, &exception);
4274 ASSERT_TRUE(exception == nullptr);
4275 }
4276
4277 HWTEST_F(NativeEngineTest, TaskpoolTest218, testing::ext::TestSize.Level0)
4278 {
4279 napi_env env = (napi_env)engine_;
4280 ExceptionScope scope(env);
4281 napi_value exception = nullptr;
4282 napi_value thisVar = NapiHelper::CreateObject(env);
4283 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
4284 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
4285 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
4286
4287 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4288 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
4289 GroupInfo* groupInfo = new GroupInfo();
4290 groupInfo->priority = Priority::DEFAULT;
4291 group->currentGroupInfo_ = groupInfo;
4292 group->groupState_ = ExecuteState::FINISHED;
4293 taskGroupManager.StoreTaskGroup(groupId, group);
4294 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
4295 ASSERT_TRUE(result != nullptr);
4296 }
4297
4298 HWTEST_F(NativeEngineTest, TaskpoolTest219, testing::ext::TestSize.Level0)
4299 {
4300 napi_env env = (napi_env)engine_;
4301 ExceptionScope scope(env);
4302 napi_value exception = nullptr;
4303 napi_value thisVar = NapiHelper::CreateObject(env);
4304 napi_value taskGroupResult = GeneratorTaskGroup(env, thisVar);
4305 napi_value napiGroupId = NapiHelper::GetNameProperty(env, taskGroupResult, "groupId");
4306 uint64_t groupId = NapiHelper::GetUint64Value(env, napiGroupId);
4307
4308 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4309 TaskGroup* group = taskGroupManager.GetTaskGroup(groupId);
4310 GroupInfo* groupInfo = new GroupInfo();
4311 groupInfo->priority = Priority::DEFAULT;
4312 group->currentGroupInfo_ = groupInfo;
4313 group->groupState_ = ExecuteState::CANCELED;
4314 taskGroupManager.StoreTaskGroup(groupId, group);
4315 napi_value result = NativeEngineTest::ExecuteGroup(env, taskGroupResult);
4316 ASSERT_TRUE(result != nullptr);
4317 }
4318
4319 HWTEST_F(NativeEngineTest, TaskpoolTest220, testing::ext::TestSize.Level0)
4320 {
4321 napi_env env = (napi_env)engine_;
4322 ExceptionScope scope(env);
4323 size_t delayTime = 1000;
4324 napi_value result = nullptr;
4325 napi_value num = nullptr;
4326 napi_value priority = nullptr;
4327 napi_value exception = nullptr;
4328 napi_create_uint32(env, delayTime, &num);
4329 napi_create_uint32(env, 1, &priority);
4330
4331 napi_value obj = CreateTaskObject(env, TaskType::TASK, ExecuteState::FINISHED);
4332 napi_value argv[] = { num, obj, priority };
4333 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
4334 ASSERT_TRUE(result != nullptr);
4335
4336 obj = CreateTaskObject(env);
4337 napi_value argv1[] = { num, obj, priority };
4338 result = NativeEngineTest::ExecuteDelayed(env, argv1, 3);
4339 ASSERT_TRUE(result != nullptr);
4340 }
4341
4342 HWTEST_F(NativeEngineTest, TaskpoolTest221, testing::ext::TestSize.Level0)
4343 {
4344 napi_env env = (napi_env)engine_;
4345 ExceptionScope scope(env);
4346 size_t delayTime = 1000;
4347 napi_value result = nullptr;
4348 napi_value num = nullptr;
4349 napi_value priority = nullptr;
4350 napi_value exception = nullptr;
4351 napi_create_uint32(env, delayTime, &num);
4352 napi_create_uint32(env, 1, &priority);
4353
4354 napi_value obj = CreateTaskObject(env, TaskType::TASK, ExecuteState::FINISHED);
4355 napi_value argv[] = { num, obj, priority };
4356 result = NativeEngineTest::ExecuteDelayed(env, argv, 3);
4357 ASSERT_TRUE(result != nullptr);
4358
4359 obj = CreateTaskObject(env);
4360 napi_value argv1[] = { num, obj, priority };
4361 result = NativeEngineTest::ExecuteDelayed(env, argv1, 3);
4362 ASSERT_TRUE(result != nullptr);
4363 }
4364
4365 HWTEST_F(NativeEngineTest, TaskpoolTest222, testing::ext::TestSize.Level0)
4366 {
4367 napi_env env = (napi_env)engine_;
4368 ExceptionScope scope(env);
4369
4370 napi_value thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK);
4371 napi_value argv[] = {thisValue};
4372 napi_value result = NativeEngineTest::Execute(env, argv, 1);
4373 ASSERT_TRUE(result == nullptr);
4374 napi_value exception = nullptr;
4375 napi_get_and_clear_last_exception(env, &exception);
4376
4377 napi_value obj = NapiHelper::CreateObject(env);
4378 auto group = GeneratorTaskGroup(env, obj);
4379 napi_value argv1[] = {group};
4380 result = NativeEngineTest::Execute(env, argv1, 1);
4381 ASSERT_TRUE(result != nullptr);
4382
4383 napi_value value = nullptr;
__anon15dbeb740b02(napi_env env, napi_callback_info info) 4384 auto func = [](napi_env env, napi_callback_info info) -> napi_value {
4385 return nullptr;
4386 };
4387 napi_create_function(env, "testFunc", NAPI_AUTO_LENGTH, func, nullptr, &value);
4388 napi_value argv2[] = {value};
4389 result = NativeEngineTest::Execute(env, argv2, 1);
4390 ASSERT_TRUE(result == nullptr);
4391 }
4392
4393 HWTEST_F(NativeEngineTest, TaskpoolTest223, testing::ext::TestSize.Level0)
4394 {
4395 napi_env env = (napi_env)engine_;
4396 ExceptionScope scope(env);
4397 TaskManager &taskManager = TaskManager::GetInstance();
4398 napi_value exception = nullptr;
4399 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4400 uv_update_time(loop);
4401 uv_timer_t* handle = new uv_timer_t;
4402 uv_timer_init(loop, handle);
4403 TaskMessage *taskMessage = new TaskMessage();
4404
4405 napi_value global;
4406 napi_get_global(env, &global);
4407 auto napiTask = GeneratorTask(env, global);
4408 Task* task = nullptr;
4409 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4410 task->taskState_ = ExecuteState::CANCELED;
4411
4412 taskMessage->taskId = task->taskId_;
4413 handle->data = taskMessage;
4414 taskManager.StoreTask(task->taskId_, task);
4415 NativeEngineTest::DelayTask(handle);
4416 ASSERT_TRUE(true);
4417 }
4418
4419 HWTEST_F(NativeEngineTest, TaskpoolTest224, testing::ext::TestSize.Level0)
4420 {
4421 napi_env env = (napi_env)engine_;
4422 ExceptionScope scope(env);
4423 TaskManager &taskManager = TaskManager::GetInstance();
4424 napi_value exception = nullptr;
4425 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4426 uv_update_time(loop);
4427 uv_timer_t* handle = new uv_timer_t;
4428 uv_timer_init(loop, handle);
4429 TaskMessage *taskMessage = new TaskMessage();
4430
4431 napi_value global;
4432 napi_get_global(env, &global);
4433 auto napiTask = GeneratorTask(env, global);
4434 Task* task = nullptr;
4435 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4436 task->taskState_ = ExecuteState::DELAYED;
4437 taskMessage->taskId = task->taskId_;
4438 handle->data = taskMessage;
4439 taskManager.StoreTask(task->taskId_, task);
4440 NativeEngineTest::DelayTask(handle);
4441 ASSERT_TRUE(true);
4442 }
4443
4444 HWTEST_F(NativeEngineTest, TaskpoolTest225, testing::ext::TestSize.Level0)
4445 {
4446 napi_env env = (napi_env)engine_;
4447 ExceptionScope scope(env);
4448 TaskManager &taskManager = TaskManager::GetInstance();
4449 napi_value exception = nullptr;
4450 uv_loop_t* loop = NapiHelper::GetLibUV(env);
4451 uv_update_time(loop);
4452 uv_timer_t* handle = new uv_timer_t;
4453 uv_timer_init(loop, handle);
4454 TaskMessage *taskMessage = new TaskMessage();
4455
4456 napi_value global;
4457 napi_get_global(env, &global);
4458 auto napiTask = GeneratorTask(env, global);
4459 Task* task = nullptr;
4460 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4461 task->taskState_ = ExecuteState::FINISHED;
4462 taskMessage->taskId = task->taskId_;
4463 handle->data = taskMessage;
4464 taskManager.StoreTask(task->taskId_, task);
4465 NativeEngineTest::DelayTask(handle);
4466 ASSERT_TRUE(true);
4467 }
4468
4469 HWTEST_F(NativeEngineTest, TaskpoolTest226, testing::ext::TestSize.Level0)
4470 {
4471 napi_env env = (napi_env)engine_;
4472 ExceptionScope scope(env);
4473 napi_value global;
4474 napi_get_global(env, &global);
4475 auto napiTask = GeneratorTask(env, global);
4476 Task* task = nullptr;
4477 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task));
4478 task->taskType_ = TaskType::GROUP_COMMON_TASK;
4479 TaskPool::HandleTaskResultCallback(task);
4480 ASSERT_TRUE(true);
4481 }
4482
4483 HWTEST_F(NativeEngineTest, TaskpoolTest227, testing::ext::TestSize.Level0)
4484 {
4485 napi_env env = (napi_env)engine_;
4486 ExceptionScope scope(env);
4487
4488 napi_value thisValue = CreateTaskObject(env, TaskType::SEQRUNNER_TASK, ExecuteState::CANCELED);
4489 Task* task = nullptr;
4490 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
4491 TaskInfo* taskInfo = new TaskInfo();
4492 task->currentTaskInfo_ = taskInfo;
4493 task->seqRunnerId_ = 1;
4494 napi_value num = nullptr;
4495 napi_create_uint32(env, 1, &num);
4496 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
4497 task->onExecutionFailedCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
4498 TaskPool::HandleTaskResultCallback(task);
4499 ASSERT_TRUE(true);
4500 }
4501
4502 HWTEST_F(NativeEngineTest, TaskpoolTest228, testing::ext::TestSize.Level0)
4503 {
4504 napi_env env = (napi_env)engine_;
4505 ExceptionScope scope(env);
4506
4507 napi_value thisValue = CreateTaskObject(env);
4508 Task* task = nullptr;
4509 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&task));
4510 TaskInfo* taskInfo = new TaskInfo();
4511 task->currentTaskInfo_ = taskInfo;
4512 task->success_ = true;
4513 napi_value num = nullptr;
4514 napi_create_uint32(env, 1, &num);
4515 napi_ref callbackRef = Helper::NapiHelper::CreateReference(env, num, 1);
4516 task->onExecutionSucceededCallBackInfo_ = new ListenerCallBackInfo(env, callbackRef, nullptr);
4517 void* resultData = nullptr;
4518 napi_value undefined = NapiHelper::GetUndefinedValue(env);
4519 napi_status status = napi_serialize_inner(env, num, undefined, undefined,
4520 true, false, &resultData);
4521 task->result_ = resultData;
4522 TaskPool::HandleTaskResultCallback(task);
4523 ASSERT_TRUE(true);
4524 }
4525
4526 HWTEST_F(NativeEngineTest, TaskpoolTest229, testing::ext::TestSize.Level0)
4527 {
4528 napi_env env = (napi_env)engine_;
4529 ExceptionScope scope(env);
4530 Task* task = new Task();
4531 uint64_t taskId = reinterpret_cast<uint64_t>(task);
4532 task->taskId_ = taskId;
4533 napi_value thisValue = NapiHelper::CreateObject(env);
4534 napi_ref ref = NapiHelper::CreateReference(env, thisValue, 0);
4535
4536 CallbackInfo* cbInfo = new CallbackInfo(env, 1, ref, task);
4537
4538 Worker* worker = reinterpret_cast<Worker*>(NativeEngineTest::WorkerConstructor(env));
4539 void* args = nullptr;
4540 TaskResultInfo* resultInfo = new TaskResultInfo(nullptr, env, taskId, args);
4541 worker->Enqueue(env, resultInfo);
4542 cbInfo->worker = worker;
4543 TaskPool::ExecuteCallbackTask(cbInfo);
4544 ASSERT_TRUE(true);
4545 }
4546
4547 HWTEST_F(NativeEngineTest, TaskpoolTest230, testing::ext::TestSize.Level0)
4548 {
4549 napi_env env = (napi_env)engine_;
4550 uv_timer_t* handle = new uv_timer_t;
4551 TaskGroupManager& taskGroupManager = TaskGroupManager::GetInstance();
4552
4553 TaskGroup* group = new TaskGroup();
4554 uint64_t groupId = reinterpret_cast<uint64_t>(group);
4555 group->groupId_ = groupId;
4556 Task* task = new Task();
4557 uint64_t taskId = reinterpret_cast<uint64_t>(task);
4558 task->taskId_ = taskId;
4559 task->groupId_ = groupId;
4560
4561 group->taskIds_.push_back(taskId);
4562 handle->data = task;
4563
4564 GroupInfo* groupInfo = new GroupInfo();
4565 groupInfo->priority = Priority::DEFAULT;
4566 napi_value resArr;
4567 napi_create_array_with_length(env, group->taskIds_.size(), &resArr);
4568 napi_ref arrRef = NapiHelper::CreateReference(env, resArr, 1);
4569 groupInfo->resArr = arrRef;
4570 NapiHelper::CreatePromise(env, &groupInfo->deferred);
4571 group->currentGroupInfo_ = groupInfo;
4572 group->taskNum_ = 2;
4573 taskGroupManager.StoreTaskGroup(groupId, group);
4574 napi_value value = NapiHelper::CreateUint64(env, groupId);
4575 napi_ref reference = NapiHelper::CreateReference(env, value, 0);
4576 taskGroupManager.AddTask(groupId, reference, taskId);
4577
4578 napi_value res = nullptr;
4579 napi_create_uint32(env, 1, &res);
4580 NativeEngineTest::UpdateGroupInfoByResult(env, handle, res, true);
4581 ASSERT_TRUE(true);
4582 }
4583
4584 HWTEST_F(NativeEngineTest, TaskpoolTest231, testing::ext::TestSize.Level0)
4585 {
4586 napi_env env = (napi_env)engine_;
4587 ExceptionScope scope(env);
4588 napi_value undefined = NapiHelper::GetUndefinedValue(env);
4589 napi_value thisVar = NapiHelper::CreateObject(env);
4590 napi_value taskGroup = GeneratorTaskGroup(env, thisVar);
4591 napi_value argv[] = {taskGroup};
4592 NativeEngineTest::Cancel(env, argv, 1);
4593 ASSERT_TRUE(true);
4594 }
4595
4596 HWTEST_F(NativeEngineTest, TaskpoolTest232, testing::ext::TestSize.Level0)
4597 {
4598 napi_env env = (napi_env)engine_;
4599 NativeEngineTest::PerformTask(env);
4600 napi_value exception = nullptr;
4601 napi_get_and_clear_last_exception(env, &exception);
4602 ASSERT_TRUE(exception == nullptr);
4603 }
4604
4605 HWTEST_F(NativeEngineTest, TaskpoolTest233, testing::ext::TestSize.Level0)
4606 {
4607 napi_env env = (napi_env)engine_;
4608 Task* task = new Task();
4609 task->SetValid(false);
4610 bool res = task->ShouldDeleteTask();
4611 ASSERT_TRUE(res);
4612 task->SetValid(true);
4613 task->refCount_ = 1;
4614 res = task->ShouldDeleteTask();
4615 ASSERT_TRUE(res == false);
4616 ASSERT_TRUE(task->refCount_ == 0);
4617 }
4618
4619 HWTEST_F(NativeEngineTest, TaskpoolTest248, testing::ext::TestSize.Level0)
4620 {
4621 napi_env env = (napi_env)engine_;
4622 ExceptionScope scope(env);
4623 std::string func = "SeqRunnerConstructor";
4624 napi_value thisValue = NapiHelper::CreateObject(env);
4625 napi_value SeqCallback = nullptr;
4626 napi_value SeqResult = nullptr;
4627 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4628 napi_value SeqArgv[1] = {nullptr};
4629 napi_create_string_utf8(env, "seq248", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4630 napi_call_function(env, thisValue, SeqCallback, 1, SeqArgv, &SeqResult);
4631
4632 std::string funcName = "Execute";
4633 napi_value callback = nullptr;
4634 napi_value result = nullptr;
4635 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4636
4637 napi_value task = CreateTaskObject(env);
4638 napi_value argv[] = {task};
4639 napi_call_function(env, thisValue, callback, 1, argv, &result);
4640 ASSERT_NE(result, nullptr);
4641 }
4642
4643 HWTEST_F(NativeEngineTest, TaskpoolTest249, testing::ext::TestSize.Level0)
4644 {
4645 napi_env env = (napi_env)engine_;
4646 ExceptionScope scope(env);
4647 std::string func = "SeqRunnerConstructor";
4648 napi_value thisValue = NapiHelper::CreateObject(env);
4649 napi_value SeqCallback = nullptr;
4650 napi_value SeqResult = nullptr;
4651 napi_create_function(env, func.c_str(), func.size(), SequenceRunner::SeqRunnerConstructor, nullptr, &SeqCallback);
4652 napi_value SeqArgv[1] = {nullptr};
4653 napi_create_string_utf8(env, "seq249", NAPI_AUTO_LENGTH, &SeqArgv[0]);
4654 napi_call_function(env, thisValue, SeqCallback, 1, SeqArgv, &SeqResult);
4655
4656 std::string funcName = "Execute";
4657 napi_value callback = nullptr;
4658 napi_value result = nullptr;
4659 napi_create_function(env, funcName.c_str(), funcName.size(), SequenceRunner::Execute, nullptr, &callback);
4660
4661 SequenceRunner* seqRunner = nullptr;
4662 napi_unwrap(env, thisValue, reinterpret_cast<void**>(&seqRunner));
4663 SequenceRunnerManager::GetInstance().RemoveGlobalSeqRunnerRef(env, seqRunner);
4664
4665 napi_value task = CreateTaskObject(env);
4666 napi_value argv[] = {task};
4667 napi_call_function(env, thisValue, callback, 1, argv, &result);
4668 ASSERT_NE(result, nullptr);
4669 }