1 /*
2 * Copyright (c) 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 <gtest/gtest.h>
17 #include "cj_environment.h"
18 #include "dynamic_loader.h"
19
20 #include <string>
21
22 #include "cj_invoker.h"
23 #ifdef __OHOS__
24 #include <dlfcn.h>
25 #endif
26 #include "dynamic_loader.h"
27 #ifdef WITH_EVENT_HANDLER
28 #include "event_handler.h"
29 #endif
30
31 using namespace OHOS;
32 using namespace testing;
33 using namespace testing::ext;
34
35
36 class CjEnvironmentTest : public testing::Test {
37 public:
CjEnvironmentTest()38 CjEnvironmentTest()
39 {}
~CjEnvironmentTest()40 ~CjEnvironmentTest()
41 {}
42 static void SetUpTestCase(void);
43 static void TearDownTestCase(void);
44 void SetUp() override;
45 void TearDown() override;
46 };
47
SetUpTestCase(void)48 void CjEnvironmentTest::SetUpTestCase(void)
49 {}
50
TearDownTestCase(void)51 void CjEnvironmentTest::TearDownTestCase(void)
52 {}
53
SetUp(void)54 void CjEnvironmentTest::SetUp(void)
55 {}
56
TearDown(void)57 void CjEnvironmentTest::TearDown(void)
58 {}
59
TestFunc()60 void TestFunc()
61 {}
62
RegisterCJUncaughtExceptionHandlerTest(const CJUncaughtExceptionInfo & handle)63 void RegisterCJUncaughtExceptionHandlerTest(const CJUncaughtExceptionInfo &handle)
64 {}
65
DumpHeapSnapshot(int fd)66 void DumpHeapSnapshot(int fd)
67 {}
68
ForceFullGC()69 void ForceFullGC()
70 {}
71
InitCJLibrary(const char * dlName)72 int InitCJLibrary(const char* dlName)
73 {
74 return E_OK;
75 }
76
RegisterStackInfoCallbacks(UpdateStackInfoFuncType uFunc)77 void RegisterStackInfoCallbacks(UpdateStackInfoFuncType uFunc)
78 {}
79
RegisterArkVMInRuntime(unsigned long long externalVM)80 void RegisterArkVMInRuntime(unsigned long long externalVM)
81 {}
82
InitUIScheduler()83 void* InitUIScheduler()
84 {
85 return nullptr;
86 }
87
RegisterEventHandlerCallbacks(PostTaskType,HasHigherPriorityType)88 void RegisterEventHandlerCallbacks(PostTaskType, HasHigherPriorityType)
89 {}
90
91 /**
92 * @tc.name: CjEnvironmentTestPostTask_001
93 * @tc.desc: CjEnvironmentTest test for PostTask.
94 * @tc.type: FUNC
95 */
96 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestPostTask_001, TestSize.Level2)
97 {
98 CJEnvironment::GetInstance()->PostTask(nullptr);
99 void (*func)() = TestFunc;
100 auto ret = CJEnvironment::GetInstance()->PostTask(func);
101 EXPECT_EQ(ret, true);
102 }
103
104 /**
105 * @tc.name: CjEnvironmentTestHasHigherPriorityTask_001
106 * @tc.desc: CjEnvironmentTest test for HasHigherPriorityTask.
107 * @tc.type: FUNC
108 */
109 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestHasHigherPriorityTask_001, TestSize.Level2)
110 {
111 auto ret = CJEnvironment::GetInstance()->HasHigherPriorityTask();
112 EXPECT_EQ(ret, false);
113 }
114
115 /**
116 * @tc.name: CjEnvironmentTestStartRuntime_001
117 * @tc.desc: CjEnvironmentTest test for StartRuntime.
118 * @tc.type: FUNC
119 */
120 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStartRuntime_001, TestSize.Level2)
121 {
122 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
123 CJUncaughtExceptionInfo handle;
124 handle.hapPath = "/test1/";
__anon07869acc0102(const char* summary, const CJErrorObject errorObj) 125 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
126
127 CJRuntimeAPI api;
128 api.RegisterCJUncaughtExceptionHandler = RegisterCJUncaughtExceptionHandlerTest;
129 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
130 cJEnvironment.SetLazyApis(lazyApis_);
131 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
132 auto ret = cJEnvironment.StartRuntime();
133 EXPECT_EQ(ret, false);
134 }
135
136 /**
137 * @tc.name: CjEnvironmentTestStopRuntime_001
138 * @tc.desc: CjEnvironmentTest test for StopRuntime.
139 * @tc.type: FUNC
140 */
141 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStopRuntime_001, TestSize.Level2)
142 {
143 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
144 CJUncaughtExceptionInfo handle;
145 handle.hapPath = "/test1/";
__anon07869acc0202(const char* summary, const CJErrorObject errorObj) 146 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
147
148 CJRuntimeAPI api;
149 api.RegisterCJUncaughtExceptionHandler = RegisterCJUncaughtExceptionHandlerTest;
150 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
151 cJEnvironment.SetLazyApis(lazyApis_);
152 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
153 cJEnvironment.StopRuntime();
154 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
155 }
156
157 /**
158 * @tc.name: CjEnvironmentTestStopUIScheduler_001
159 * @tc.desc: CjEnvironmentTest test for StopUIScheduler.
160 * @tc.type: FUNC
161 */
162 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStopUIScheduler_001, TestSize.Level2)
163 {
164 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
165 CJUncaughtExceptionInfo handle;
166 handle.hapPath = "/test1/";
__anon07869acc0302(const char* summary, const CJErrorObject errorObj) 167 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
168
169 CJRuntimeAPI api;
170 api.RegisterCJUncaughtExceptionHandler = RegisterCJUncaughtExceptionHandlerTest;
171 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
172 cJEnvironment.SetLazyApis(lazyApis_);
173 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
174 cJEnvironment.StopUIScheduler();
175 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
176 }
177
178 /**
179 * @tc.name: CjEnvironmentTestLoadCJLibrary_001
180 * @tc.desc: CjEnvironmentTest test for LoadCJLibrary.
181 * @tc.type: FUNC
182 */
183 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadCJLibrary_001, TestSize.Level2)
184 {
185 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
186 auto ret = cJEnvironment.LoadCJLibrary("dlName");
187 EXPECT_EQ(ret, nullptr);
188 }
189
190 /**
191 * @tc.name: CjEnvironmentTestLoadCJLibrary_002
192 * @tc.desc: CjEnvironmentTest test for LoadCJLibrary.
193 * @tc.type: FUNC
194 */
195 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadCJLibrary_002, TestSize.Level2)
196 {
197 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
198 cJEnvironment.LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::APP, "dlName");
199 cJEnvironment.LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::SYSTEM, "dlName");
200 cJEnvironment.LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::SDK, "dlName");
201 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
202 }
203
204 /**
205 * @tc.name: CjEnvironmentTestLoadCJLibrary_003
206 * @tc.desc: CjEnvironmentTest test for LoadCJLibrary.
207 * @tc.type: FUNC
208 */
209 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadCJLibrary_003, TestSize.Level2)
210 {
211 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
212 auto result = cJEnvironment.LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::SDK, "dlName");
213 EXPECT_EQ(result, nullptr);
214 }
215
216 /**
217 * @tc.name: CjEnvironmentTestStartDebugger_001
218 * @tc.desc: CjEnvironmentTest test for StartDebugger.
219 * @tc.type: FUNC
220 */
221 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStartDebugger_001, TestSize.Level2)
222 {
223 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
224 auto ret = cJEnvironment.StartDebugger();
225 EXPECT_EQ(ret, false);
226 }
227
228 /**
229 * @tc.name: CjEnvironmentTestGetSymbol_001
230 * @tc.desc: CjEnvironmentTest test for GetSymbol.
231 * @tc.type: FUNC
232 */
233 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestGetSymbol_001, TestSize.Level2)
234 {
235 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
236 auto ret = cJEnvironment.GetSymbol(nullptr, "dlName");
237 EXPECT_EQ(ret, nullptr);
238 }
239
240 /**
241 * @tc.name: InitCJNS_0100
242 * @tc.desc: Test InitCJNS.
243 * @tc.type: FUNC
244 */
245 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJNS_0100, TestSize.Level2)
246 {
247 CJEnvironment cJEnvironment(CJEnvironment::NSMode::APP);
248 std::string appPath = "com/ohos/unittest/test/";
249 cJEnvironment.InitCJNS(appPath);
250 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
251 }
252
253 /**
254 * @tc.name: SanitizerKindRuntimeVersion_001
255 * @tc.desc: Test SanitizerKindRuntimeVersion.
256 * @tc.type: FUNC
257 */
258 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestSanitizerKindRuntimeVersion_001, TestSize.Level2)
259 {
260 CJEnvMethods* cjEnv = CJEnvironment::CreateEnvMethods();
261 SanitizerKind kind = SanitizerKind::ASAN;
262 cjEnv->setSanitizerKindRuntimeVersion(kind);
263 EXPECT_NE(OHOS::CJEnvironment::sanitizerKind, SanitizerKind::NONE);
264 }
265
266 /**
267 * @tc.name: SanitizerKindRuntimeVersion_002
268 * @tc.desc: Test SanitizerKindRuntimeVersion.
269 * @tc.type: FUNC
270 */
271 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestSanitizerKindRuntimeVersion_002, TestSize.Level2)
272 {
273 CJEnvMethods* cjEnv = CJEnvironment::CreateEnvMethods();
274 SanitizerKind kind = SanitizerKind::NONE;
275 cjEnv->setSanitizerKindRuntimeVersion(kind);
276 EXPECT_EQ(OHOS::CJEnvironment::sanitizerKind, SanitizerKind::NONE);
277 }
278
279 /**
280 * @tc.name: CjEnvironmentTestDetectAppNSMode_001
281 * @tc.desc: Test DetectAppNSMode.
282 * @tc.type: FUNC
283 */
284 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDetectAppNSMode_001, TestSize.Level2)
285 {
286 EXPECT_EQ(OHOS::CJEnvironment::DetectAppNSMode(), OHOS::CJEnvironment::NSMode::SINK);
287 }
288
289 /**
290 * @tc.name: CjEnvironmentTestDynamicInherit_001
291 * @tc.desc: Test DynamicInherit.
292 * @tc.type: FUNC
293 */
294 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDynamicInherit_001, TestSize.Level2)
295 {
296 Dl_namespace ns;
297 dlns_get("cj_test_namespace", &ns);
298 DynamicInherit(&ns, "cj_test_namespace_2", "allow_all_shared_libs");
299 DynamicInheritByName("cj_test_namespace", "cj_test_namespace_2", "allow_all_shared_libs");
300 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
301 }
302
303 /**
304 * @tc.name: CjEnvironmentTestDynamicInherit_002
305 * @tc.desc: Test DynamicInherit.
306 * @tc.type: FUNC
307 */
308 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDynamicInherit_002, TestSize.Level2)
309 {
310 Dl_namespace ns;
311 dlns_get("cj_test_namespace", &ns);
312 DynamicInherit(&ns, "default", "allow_all_shared_libs");
313 DynamicInheritByName("cj_test_namespace", "default", "allow_all_shared_libs");
314 DynamicInheritByName("default", "cj_test_namespace", "allow_all_shared_libs");
315 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
316 }
317
318 /**
319 * @tc.name: CjEnvironmentTestDynamicInherit_003
320 * @tc.desc: Test DynamicInherit.
321 * @tc.type: FUNC
322 */
323 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDynamicInherit_003, TestSize.Level2)
324 {
325 Dl_namespace ns;
326 dlns_get("cj_test_namespace", &ns);
327 DynamicInherit(&ns, nullptr, nullptr);
328 DynamicInheritByName(nullptr, nullptr, nullptr);
329 DynamicInheritByName("cj_test_namespace", nullptr, nullptr);
330 DynamicInheritByName("cj_test_namespace", "cj_test_namespace", nullptr);
331 EXPECT_EQ(CJEnvironment::GetInstance(), nullptr);
332 }
333
334 /**
335 * @tc.name: CjEnvironmentTestSetAppPath_001
336 * @tc.desc: CjEnvironmentTest test for SetAppPath.
337 * @tc.type: FUNC
338 */
339 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestSetAppPath_001, TestSize.Level2)
340 {
341 CJEnvironment::SetSanitizerKindRuntimeVersion(OHOS::SanitizerKind::ASAN);
342 CJEnvironment::SetAppPath("path/to/hap");
343 EXPECT_NE(CJEnvironment::GetInstance()->cjAppNSName, nullptr);
344 }
345
346 /**
347 * @tc.name: CjEnvironmentTestLoadRuntimeLib_001
348 * @tc.desc: CjEnvironmentTest test for LoadRuntimeLib.
349 * @tc.type: FUNC
350 */
351 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadRuntimeLib_001, TestSize.Level2)
352 {
353 CJEnvironment::SetAppPath("");
354 EXPECT_EQ(CJEnvironment::GetInstance()->LoadRuntimeLib("test.so"), nullptr);
355 }
356
357 /**
358 * @tc.name: CjEnvironmentTestInitCJLibrary_001
359 * @tc.desc: CjEnvironmentTest test for InitCJLibrary.
360 * @tc.type: FUNC
361 */
362 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJLibrary_001, TestSize.Level2)
363 {
364 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
365 auto res = cJEnvironment.InitCJLibrary(nullptr);
366 EXPECT_EQ(res, E_FAILED);
367 }
368
369 /**
370 * @tc.name: CjEnvironmentTestInitCJLibrary_002
371 * @tc.desc: CjEnvironmentTest test for InitCJLibrary.
372 * @tc.type: FUNC
373 */
374 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJLibrary_002, TestSize.Level2)
375 {
376 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
377 cJEnvironment.UnLoadRuntimeApis();
378 auto res = cJEnvironment.InitCJLibrary("lib_cj_test.so");
379 EXPECT_EQ(res, E_FAILED);
380 }
381
382 /**
383 * @tc.name: CjEnvironmentTestInitCJLibrary_003
384 * @tc.desc: CjEnvironmentTest test for InitCJLibrary.
385 * @tc.type: FUNC
386 */
387 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJLibrary_003, TestSize.Level2)
388 {
389 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
390 CJRuntimeAPI api;
391 api.InitCJLibrary = InitCJLibrary;
392 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
393 cJEnvironment.SetLazyApis(lazyApis_);
394 auto res = cJEnvironment.InitCJLibrary("lib_cj_test.so");
395 EXPECT_EQ(res, E_OK);
396 }
397
398 /**
399 * @tc.name: CjEnvironmentTestInitCJLibrary_004
400 * @tc.desc: CjEnvironmentTest test for InitCJLibrary.
401 * @tc.type: FUNC
402 */
403 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJLibrary_004, TestSize.Level2)
404 {
405 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
406 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
407 cJEnvironment.SetLazyApis(lazyApis_);
408 auto res = cJEnvironment.InitCJLibrary("lib_cj_test.so");
409 EXPECT_EQ(res, E_FAILED);
410 }
411
412 /**
413 * @tc.name: CjEnvironmentTestFiniCJRuntime_001
414 * @tc.desc: CjEnvironmentTest test for FiniCJRuntime.
415 * @tc.type: FUNC
416 */
417 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestFiniCJRuntime_001, TestSize.Level2)
418 {
419 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
420 cJEnvironment.UnLoadRuntimeApis();
421 auto res = cJEnvironment.FiniCJRuntime();
422 EXPECT_EQ(res, E_FAILED);
423 }
424
425 /**
426 * @tc.name: CjEnvironmentTestFiniCJRuntime_002
427 * @tc.desc: CjEnvironmentTest test for FiniCJRuntime.
428 * @tc.type: FUNC
429 */
430 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestFiniCJRuntime_002, TestSize.Level2)
431 {
432 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
433 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
434 cJEnvironment.SetLazyApis(lazyApis_);
435 auto res = cJEnvironment.FiniCJRuntime();
436 EXPECT_EQ(res, E_FAILED);
437 }
438
439 /**
440 * @tc.name: CjEnvironmentTestInitUIScheduler_001
441 * @tc.desc: CjEnvironmentTest test for InitUIScheduler.
442 * @tc.type: FUNC
443 */
444 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitUIScheduler_001, TestSize.Level2)
445 {
446 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
447 cJEnvironment.UnLoadRuntimeApis();
448 auto res = cJEnvironment.InitUIScheduler();
449 EXPECT_EQ(res, nullptr);
450 }
451
452 /**
453 * @tc.name: CjEnvironmentTestInitUIScheduler_002
454 * @tc.desc: CjEnvironmentTest test for InitUIScheduler.
455 * @tc.type: FUNC
456 */
457 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitUIScheduler_002, TestSize.Level2)
458 {
459 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
460 CJRuntimeAPI api;
461 api.InitUIScheduler = InitUIScheduler;
462 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
463 cJEnvironment.SetLazyApis(lazyApis_);
464 auto res = cJEnvironment.InitUIScheduler();
465 EXPECT_EQ(res, nullptr);
466 }
467
468 /**
469 * @tc.name: CjEnvironmentTestInitUIScheduler_003
470 * @tc.desc: CjEnvironmentTest test for InitUIScheduler.
471 * @tc.type: FUNC
472 */
473 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitUIScheduler_003, TestSize.Level2)
474 {
475 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
476 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
477 cJEnvironment.SetLazyApis(lazyApis_);
478 auto res = cJEnvironment.InitUIScheduler();
479 EXPECT_EQ(res, nullptr);
480 }
481
482 /**
483 * @tc.name: CjEnvironmentTestDumpHeapSnapshot_001
484 * @tc.desc: CjEnvironmentTest test for DumpHeapSnapshot.
485 * @tc.type: FUNC
486 */
487 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDumpHeapSnapshot_001, TestSize.Level2)
488 {
489 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
490 cJEnvironment.UnLoadRuntimeApis();
491 cJEnvironment.DumpHeapSnapshot(0);
492 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
493 }
494
495 /**
496 * @tc.name: CjEnvironmentTestDumpHeapSnapshot_002
497 * @tc.desc: CjEnvironmentTest test for DumpHeapSnapshot.
498 * @tc.type: FUNC
499 */
500 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDumpHeapSnapshot_002, TestSize.Level2)
501 {
502 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
503 CJRuntimeAPI api;
504 api.DumpHeapSnapshot = DumpHeapSnapshot;
505 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
506 cJEnvironment.SetLazyApis(lazyApis_);
507 cJEnvironment.DumpHeapSnapshot(0);
508 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
509 }
510
511 /**
512 * @tc.name: CjEnvironmentTestDumpHeapSnapshot_003
513 * @tc.desc: CjEnvironmentTest test for DumpHeapSnapshot.
514 * @tc.type: FUNC
515 */
516 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestDumpHeapSnapshot_003, TestSize.Level2)
517 {
518 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
519 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
520 cJEnvironment.SetLazyApis(lazyApis_);
521 cJEnvironment.DumpHeapSnapshot(0);
522 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
523 }
524
525 /**
526 * @tc.name: CjEnvironmentTestForceFullGC_001
527 * @tc.desc: CjEnvironmentTest test for ForceFullGC.
528 * @tc.type: FUNC
529 */
530 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestForceFullGC_001, TestSize.Level2)
531 {
532 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
533 cJEnvironment.UnLoadRuntimeApis();
534 cJEnvironment.ForceFullGC();
535 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
536 }
537
538 /**
539 * @tc.name: CjEnvironmentTestForceFullGC_002
540 * @tc.desc: CjEnvironmentTest test for ForceFullGC.
541 * @tc.type: FUNC
542 */
543 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestForceFullGC_002, TestSize.Level2)
544 {
545 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
546 CJRuntimeAPI api;
547 api.ForceFullGC = ForceFullGC;
548 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
549 cJEnvironment.SetLazyApis(lazyApis_);
550 cJEnvironment.ForceFullGC();
551 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
552 }
553
554 /**
555 * @tc.name: CjEnvironmentTestForceFullGC_003
556 * @tc.desc: CjEnvironmentTest test for ForceFullGC.
557 * @tc.type: FUNC
558 */
559 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestForceFullGC_003, TestSize.Level2)
560 {
561 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
562 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
563 cJEnvironment.SetLazyApis(lazyApis_);
564 cJEnvironment.ForceFullGC();
565 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
566 }
567
568 /**
569 * @tc.name: CjEnvironmentTestRegisterStackInfoCallbacks_001
570 * @tc.desc: CjEnvironmentTest test for RegisterStackInfoCallbacks.
571 * @tc.type: FUNC
572 */
573 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterStackInfoCallbacks_001, TestSize.Level2)
574 {
575 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
576 cJEnvironment.UnLoadRuntimeApis();
577 cJEnvironment.RegisterStackInfoCallbacks(nullptr);
578 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
579 }
580
581 /**
582 * @tc.name: CjEnvironmentTestRegisterStackInfoCallbacks_002
583 * @tc.desc: CjEnvironmentTest test for RegisterStackInfoCallbacks.
584 * @tc.type: FUNC
585 */
586 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterStackInfoCallbacks_002, TestSize.Level2)
587 {
588 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
589 CJRuntimeAPI api;
590 api.RegisterStackInfoCallbacks = RegisterStackInfoCallbacks;
591 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
592 cJEnvironment.SetLazyApis(lazyApis_);
593 cJEnvironment.RegisterStackInfoCallbacks(nullptr);
594 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
595 }
596
597 /**
598 * @tc.name: CjEnvironmentTestRegisterStackInfoCallbacks_003
599 * @tc.desc: CjEnvironmentTest test for RegisterStackInfoCallbacks.
600 * @tc.type: FUNC
601 */
602 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterStackInfoCallbacks_003, TestSize.Level2)
603 {
604 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
605 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
606 cJEnvironment.SetLazyApis(lazyApis_);
607 cJEnvironment.RegisterStackInfoCallbacks(nullptr);
608 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
609 }
610
611 /**
612 * @tc.name: CjEnvironmentTestRegisterArkVMInRuntime_001
613 * @tc.desc: CjEnvironmentTest test for RegisterArkVMInRuntime.
614 * @tc.type: FUNC
615 */
616 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterArkVMInRuntime_001, TestSize.Level2)
617 {
618 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
619 cJEnvironment.UnLoadRuntimeApis();
620 cJEnvironment.RegisterArkVMInRuntime(0);
621 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
622 }
623
624 /**
625 * @tc.name: CjEnvironmentTestRegisterArkVMInRuntime_002
626 * @tc.desc: CjEnvironmentTest test for RegisterArkVMInRuntime.
627 * @tc.type: FUNC
628 */
629 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterArkVMInRuntime_002, TestSize.Level2)
630 {
631 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
632 CJRuntimeAPI api;
633 api.RegisterArkVMInRuntime = RegisterArkVMInRuntime;
634 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
635 cJEnvironment.SetLazyApis(lazyApis_);
636 cJEnvironment.RegisterArkVMInRuntime(0);
637 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
638 }
639
640 /**
641 * @tc.name: CjEnvironmentTestRegisterArkVMInRuntime_003
642 * @tc.desc: CjEnvironmentTest test for RegisterArkVMInRuntime.
643 * @tc.type: FUNC
644 */
645 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterArkVMInRuntime_003, TestSize.Level2)
646 {
647 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
648 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
649 cJEnvironment.SetLazyApis(lazyApis_);
650 cJEnvironment.RegisterArkVMInRuntime(0);
651 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
652 }
653
654 /**
655 * @tc.name: CjEnvironmentTestRegisterEventHandlerCallbacks_001
656 * @tc.desc: CjEnvironmentTest test for RegisterEventHandlerCallbacks.
657 * @tc.type: FUNC
658 */
659 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterEventHandlerCallbacks_001, TestSize.Level2)
660 {
661 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
662 cJEnvironment.UnLoadRuntimeApis();
663 cJEnvironment.RegisterEventHandlerCallbacks();
664 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
665 }
666
667 /**
668 * @tc.name: CjEnvironmentTestRegisterEventHandlerCallbacks_002
669 * @tc.desc: CjEnvironmentTest test for RegisterEventHandlerCallbacks.
670 * @tc.type: FUNC
671 */
672 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterEventHandlerCallbacks_002, TestSize.Level2)
673 {
674 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
675 CJRuntimeAPI api;
676 api.RegisterEventHandlerCallbacks = RegisterEventHandlerCallbacks;
677 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
678 cJEnvironment.SetLazyApis(lazyApis_);
679 cJEnvironment.RegisterEventHandlerCallbacks();
680 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
681 }
682
683 /**
684 * @tc.name: CjEnvironmentTestRegisterEventHandlerCallbacks_003
685 * @tc.desc: CjEnvironmentTest test for RegisterEventHandlerCallbacks.
686 * @tc.type: FUNC
687 */
688 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterEventHandlerCallbacks_003, TestSize.Level2)
689 {
690 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
691 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
692 cJEnvironment.SetLazyApis(lazyApis_);
693 cJEnvironment.RegisterEventHandlerCallbacks();
694 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
695 }
696
697 /**
698 * @tc.name: CjEnvironmentTestRegisterCJUncaughtExceptionHandler_001
699 * @tc.desc: CjEnvironmentTest test for RegisterCJUncaughtExceptionHandler.
700 * @tc.type: FUNC
701 */
702 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterCJUncaughtExceptionHandler_001, TestSize.Level2)
703 {
704 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
705 CJUncaughtExceptionInfo handle;
706 handle.hapPath = "/test1/";
__anon07869acc0402(const char* summary, const CJErrorObject errorObj) 707 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
708 cJEnvironment.UnLoadRuntimeApis();
709 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
710 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
711 }
712
713 /**
714 * @tc.name: CjEnvironmentTestRegisterCJUncaughtExceptionHandler_002
715 * @tc.desc: CjEnvironmentTest test for RegisterCJUncaughtExceptionHandler.
716 * @tc.type: FUNC
717 */
718 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterCJUncaughtExceptionHandler_002, TestSize.Level2)
719 {
720 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
721 CJUncaughtExceptionInfo handle;
722 handle.hapPath = "/test1/";
__anon07869acc0502(const char* summary, const CJErrorObject errorObj) 723 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
724
725 CJRuntimeAPI api;
726 api.RegisterCJUncaughtExceptionHandler = RegisterCJUncaughtExceptionHandlerTest;
727 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI(api);
728 cJEnvironment.SetLazyApis(lazyApis_);
729 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
730 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
731 }
732
733 /**
734 * @tc.name: CjEnvironmentTestRegisterCJUncaughtExceptionHandler_003
735 * @tc.desc: CjEnvironmentTest test for RegisterCJUncaughtExceptionHandler.
736 * @tc.type: FUNC
737 */
738 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestRegisterCJUncaughtExceptionHandler_003, TestSize.Level2)
739 {
740 CJEnvironment cJEnvironment(CJEnvironment::NSMode::SINK);
741 CJUncaughtExceptionInfo handle;
742 handle.hapPath = "/test1/";
__anon07869acc0602(const char* summary, const CJErrorObject errorObj) 743 handle.uncaughtTask = [](const char* summary, const CJErrorObject errorObj) {};
744 CJRuntimeAPI* lazyApis_ = new CJRuntimeAPI();
745 cJEnvironment.SetLazyApis(lazyApis_);
746 cJEnvironment.RegisterCJUncaughtExceptionHandler(handle);
747 EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
748 }