diff --git a/js_concurrent_module/worker/test/test_worker.cpp b/js_concurrent_module/worker/test/test_worker.cpp index 72cf98b41f1409638bb91cd59a8843c5790e09a2..09ee9c25ba0dad116c7d04bbd65d0a19b93422dd 100644 --- a/js_concurrent_module/worker/test/test_worker.cpp +++ b/js_concurrent_module/worker/test/test_worker.cpp @@ -254,6 +254,7 @@ public: uv_async_init(workerLoop, worker->workerOnMessageSignal_, reinterpret_cast(WorkerOnMessage)); worker->workerOnMessageSignal_->data = worker; worker->Loop(); + delete reinterpret_cast(workerEnv); } static void UpdateMainThreadWorkerFlag(Worker *worker, bool isMainThreadWorker) @@ -1223,12 +1224,10 @@ void WorkerChecker::CreateWorkerList(bool limited, uint32_t workerNum) napi_value workerGlobal = nullptr; napi_get_global(workerHostEnv_, &workerGlobal); + napi_value exception = nullptr; for (int k = 0; k < workerNum; k++) { - TryCatch tryCatch(workerHostEnv_); napi_value result = WorkerChecker::CreateWorker(limited, workerHostEnv_, workerGlobal); - if (tryCatch.HasCaught()) { - tryCatch.ClearException(); - } + napi_get_and_clear_last_exception(workerHostEnv_, &exception); if (result == nullptr) { failCount_++; } else { @@ -1685,6 +1684,7 @@ HWTEST_F(WorkersTest, ParentPortRemoveAllListenerTest001, testing::ext::TestSize Worker::ParentPortRemoveAllListener, worker, &cb); WorkersTest::UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -1729,6 +1729,7 @@ HWTEST_F(WorkersTest, ParentPortDispatchEventTest001, testing::ext::TestSize.Lev Worker::ParentPortDispatchEvent, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -1771,6 +1772,7 @@ HWTEST_F(WorkersTest, ParentPortRemoveEventListenerTest001, testing::ext::TestSi Worker::ParentPortRemoveEventListener, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -1810,6 +1812,7 @@ HWTEST_F(WorkersTest, GlobalCallTest001, testing::ext::TestSize.Level0) Worker::GlobalCall, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); uv_async_t* req = new uv_async_t; @@ -1879,6 +1882,7 @@ HWTEST_F(WorkersTest, WorkerTest001, testing::ext::TestSize.Level0) napi_value exports = nullptr; napi_create_object(workerEnv, &exports); Worker::InitWorker(workerEnv, exports); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -1987,6 +1991,7 @@ HWTEST_F(WorkersTest, WorkerTest004, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2035,10 +2040,10 @@ HWTEST_F(WorkersTest, WorkerTest005, testing::ext::TestSize.Level0) ClearWorkerHandle(worker); result = Worker_Terminate(workerEnv, workerGlobal); NativeEngine::GetMainThreadEngine()->CheckAndSetWorkerVersion(WorkerVersion::NEW, WorkerVersion::OLD); - ASSERT_TRUE(result != nullptr); if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2257,16 +2262,20 @@ HWTEST_F(WorkersTest, CloseWorkerTest002, testing::ext::TestSize.Level0) napi_unwrap(env, result, reinterpret_cast(&worker)); ASSERT_TRUE(worker != nullptr); - std::string funcName = "CloseWorker"; - napi_value cb = nullptr; - napi_create_function(env, funcName.c_str(), funcName.size(), Worker::CloseWorker, worker, &cb); std::thread t([&env, &worker] { napi_env workerEnv = nullptr; napi_create_runtime(env, &workerEnv); SetCloseWorkerProp(worker, workerEnv); + std::string funcName = "CloseWorker"; + napi_value cb = nullptr; + napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::CloseWorker, worker, &cb); + napi_value global; + napi_get_global(workerEnv, &global); + napi_value result; + napi_call_function(workerEnv, global, cb, 0, nullptr, &result); + delete reinterpret_cast(workerEnv); }); t.join(); - napi_call_function(env, global, cb, 0, nullptr, &result); worker->EraseWorker(); ClearWorkerHandle(worker); ASSERT_TRUE(result != nullptr); @@ -2324,10 +2333,10 @@ HWTEST_F(WorkersTest, InitWorkerTest002, testing::ext::TestSize.Level0) worker->EraseWorker(); ClearWorkerHandle(worker); NativeEngine::GetMainThreadEngine()->CheckAndSetWorkerVersion(WorkerVersion::NEW, WorkerVersion::OLD); - ASSERT_TRUE(result != nullptr); if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2378,6 +2387,7 @@ HWTEST_F(WorkersTest, InitWorkerTest003, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2428,6 +2438,7 @@ HWTEST_F(WorkersTest, InitWorkerTest004, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2479,6 +2490,7 @@ HWTEST_F(WorkersTest, InitWorkerTest005, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2585,6 +2597,7 @@ HWTEST_F(WorkersTest, ConstructorTest004, testing::ext::TestSize.Level0) if (result == nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2626,6 +2639,7 @@ HWTEST_F(WorkersTest, ConstructorTest005, testing::ext::TestSize.Level0) if (result == nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2653,6 +2667,7 @@ HWTEST_F(WorkersTest, ConstructorTest006, testing::ext::TestSize.Level0) if (exception != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2681,6 +2696,7 @@ HWTEST_F(WorkersTest, ConstructorTest007, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2712,6 +2728,7 @@ HWTEST_F(WorkersTest, ConstructorTest008, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -2747,6 +2764,7 @@ HWTEST_F(WorkersTest, ConstructorTest009, testing::ext::TestSize.Level0) napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &result); uv_sleep(200); ASSERT_TRUE(result != nullptr); + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -3582,6 +3600,7 @@ HWTEST_F(WorkersTest, WorkerTest040, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::GlobalCall, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, 0, nullptr, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -3622,6 +3641,7 @@ HWTEST_F(WorkersTest, WorkerTest041, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::GlobalCall, nullptr, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, nullptr, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -3662,6 +3682,7 @@ HWTEST_F(WorkersTest, WorkerTest042, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::GlobalCall, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::TERMINATED); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -3702,6 +3723,7 @@ HWTEST_F(WorkersTest, WorkerTest043, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::GlobalCall, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -3742,6 +3764,7 @@ HWTEST_F(WorkersTest, WorkerTest044, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::GlobalCall, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -3783,6 +3806,7 @@ HWTEST_F(WorkersTest, WorkerTest045, testing::ext::TestSize.Level0) UpdateWorkerState(worker, Worker::RunnerState::RUNNING); UpdateHostState(worker, Worker::HostState::INACTIVE); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -3834,6 +3858,7 @@ HWTEST_F(WorkersTest, WorkerTest046, testing::ext::TestSize.Level0) SetMainThread(worker, true); SetLimitedWorker(worker, true); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); napi_value exception = nullptr; @@ -4192,6 +4217,7 @@ HWTEST_F(WorkersTest, WorkerTest058, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::ParentPortDispatchEvent, worker, &cb); napi_call_function(workerEnv, workerGlobal, cb, 0, nullptr, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4227,6 +4253,7 @@ HWTEST_F(WorkersTest, WorkerTest059, testing::ext::TestSize.Level0) napi_create_function(workerEnv, funcName.c_str(), funcName.size(), Worker::ParentPortDispatchEvent, worker, &cb); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4268,6 +4295,7 @@ HWTEST_F(WorkersTest, WorkerTest060, testing::ext::TestSize.Level0) Worker::ParentPortDispatchEvent, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4312,6 +4340,7 @@ HWTEST_F(WorkersTest, WorkerTest061, testing::ext::TestSize.Level0) Worker::ParentPortDispatchEvent, nullptr, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, nullptr, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4356,6 +4385,7 @@ HWTEST_F(WorkersTest, WorkerTest062, testing::ext::TestSize.Level0) Worker::ParentPortDispatchEvent, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::TERMINATED); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4548,6 +4578,7 @@ HWTEST_F(WorkersTest, WorkerTest068, testing::ext::TestSize.Level0) Worker::ParentPortRemoveAllListener, nullptr, &cb); UpdateWorkerState(worker, Worker::RunnerState::RUNNING); napi_call_function(workerEnv, nullptr, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -4585,6 +4616,7 @@ HWTEST_F(WorkersTest, WorkerTest069, testing::ext::TestSize.Level0) Worker::ParentPortRemoveAllListener, worker, &cb); UpdateWorkerState(worker, Worker::RunnerState::TERMINATED); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &callResult); + delete reinterpret_cast(workerEnv); }); t.join(); worker->EraseWorker(); @@ -5353,27 +5385,20 @@ HWTEST_F(WorkersTest, QOSTest003, testing::ext::TestSize.Level0) napi_create_uint32(workerEnv, static_cast(-1), &priorityValue); napi_set_named_property(workerEnv, object, "priority", priorityValue); argv[1] = object; - TryCatch tryCatch(workerEnv); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &result); - ASSERT_TRUE(tryCatch.HasCaught()); - tryCatch.ClearException(); - ArkNativeEngine* engine = (ArkNativeEngine*)workerEnv; - if (!engine->lastException_.IsEmpty()) { - engine->lastException_.Empty(); - } + napi_value exception = nullptr; + napi_get_and_clear_last_exception(workerEnv, &exception); + ASSERT_TRUE(exception != nullptr); std::string strpriority = "kkk"; napi_create_string_utf8(workerEnv, strpriority.c_str(), strpriority.length(), &priorityValue); napi_set_named_property(workerEnv, object, "priority", priorityValue); - TryCatch tryCatch2(workerEnv); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &result); - ASSERT_TRUE(tryCatch2.HasCaught()); - tryCatch2.ClearException(); - if (!engine->lastException_.IsEmpty()) { - engine->lastException_.Empty(); - } + napi_get_and_clear_last_exception(workerEnv, &exception); + ASSERT_TRUE(exception != nullptr); Worker_Terminate(workerEnv, workerGlobal); NativeEngine::GetMainThreadEngine()->CheckAndSetWorkerVersion(WorkerVersion::NEW, WorkerVersion::OLD); success = true; + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -5423,6 +5448,7 @@ HWTEST_F(WorkersTest, QOSTest004, testing::ext::TestSize.Level0) if (result != nullptr) { success = true; } + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -5450,17 +5476,19 @@ HWTEST_F(WorkersTest, QOSTest005, testing::ext::TestSize.Level0) napi_create_uint32(workerEnv, static_cast(-1), &priorityValue); napi_set_named_property(workerEnv, object, "priority", priorityValue); argv[1] = object; - TryCatch tryCatch(workerEnv); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &result); - ASSERT_FALSE(tryCatch.HasCaught()); + napi_value exception = nullptr; + napi_get_and_clear_last_exception(workerEnv, &exception); + ASSERT_TRUE(exception == nullptr); std::string strpriority = "kkk"; napi_create_string_utf8(workerEnv, strpriority.c_str(), strpriority.length(), &priorityValue); napi_set_named_property(workerEnv, object, "priority", priorityValue); - TryCatch tryCatch2(workerEnv); napi_call_function(workerEnv, workerGlobal, cb, sizeof(argv) / sizeof(argv[0]), argv, &result); - ASSERT_FALSE(tryCatch2.HasCaught()); + napi_get_and_clear_last_exception(workerEnv, &exception); + ASSERT_TRUE(exception == nullptr); uv_sleep(200); success = true; + delete reinterpret_cast(workerEnv); }); t.join(); ASSERT_TRUE(success); @@ -5769,6 +5797,7 @@ HWTEST_F(WorkersTest, RegisterCallbackForWorkerEnvTest001, testing::ext::TestSiz napi_env workerEnv = nullptr; napi_create_runtime(env, &workerEnv); worker->SetWorkerEnv(workerEnv); + delete reinterpret_cast(workerEnv); }); t.join(); @@ -5786,6 +5815,7 @@ HWTEST_F(WorkersTest, RegisterCallbackForWorkerEnvTest002, testing::ext::TestSiz napi_env workerEnv = nullptr; napi_create_runtime(env, &workerEnv); worker->SetWorkerEnv(workerEnv); + delete reinterpret_cast(workerEnv); }); t.join(); @@ -5819,6 +5849,7 @@ HWTEST_F(WorkersTest, RegisterCallbackForWorkerEnvTest003, testing::ext::TestSiz napi_env workerEnv = nullptr; napi_create_runtime(env, &workerEnv); worker->SetWorkerEnv(workerEnv); + delete reinterpret_cast(workerEnv); }); t.join(); @@ -5844,6 +5875,7 @@ HWTEST_F(WorkersTest, RegisterCallbackForWorkerEnvTest004, testing::ext::TestSiz napi_create_runtime(env, &workerEnv); worker->SetWorkerEnv(workerEnv); ASSERT_EQ(capturedEnv, workerEnv); + delete reinterpret_cast(workerEnv); }); t.join(); @@ -5860,6 +5892,7 @@ HWTEST_F(WorkersTest, RegisterCallbackForWorkerEnvTest005, testing::ext::TestSiz napi_env workerEnv = nullptr; napi_create_runtime(env, &workerEnv); worker->SetWorkerEnv(workerEnv); + delete reinterpret_cast(workerEnv); }); t.join();