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