1020a203aSopenharmony_ci/* 2020a203aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3020a203aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4020a203aSopenharmony_ci * you may not use this file except in compliance with the License. 5020a203aSopenharmony_ci * You may obtain a copy of the License at 6020a203aSopenharmony_ci * 7020a203aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8020a203aSopenharmony_ci * 9020a203aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10020a203aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11020a203aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12020a203aSopenharmony_ci * See the License for the specific language governing permissions and 13020a203aSopenharmony_ci * limitations under the License. 14020a203aSopenharmony_ci */ 15020a203aSopenharmony_ci#include "plugin_test.h" 16020a203aSopenharmony_ci 17020a203aSopenharmony_ci#include "plugin.h" 18020a203aSopenharmony_ci#include "pipeline.h" 19020a203aSopenharmony_ci 20020a203aSopenharmony_cinamespace OHOS { 21020a203aSopenharmony_cinamespace HiviewDFX { 22020a203aSopenharmony_civoid PluginTest::SetUpTestCase() 23020a203aSopenharmony_ci{ 24020a203aSopenharmony_ci} 25020a203aSopenharmony_ci 26020a203aSopenharmony_civoid PluginTest::TearDownTestCase() 27020a203aSopenharmony_ci{ 28020a203aSopenharmony_ci} 29020a203aSopenharmony_ci 30020a203aSopenharmony_civoid PluginTest::SetUp() 31020a203aSopenharmony_ci{ 32020a203aSopenharmony_ci} 33020a203aSopenharmony_ci 34020a203aSopenharmony_civoid PluginTest::TearDown() 35020a203aSopenharmony_ci{ 36020a203aSopenharmony_ci} 37020a203aSopenharmony_ci 38020a203aSopenharmony_ci/** 39020a203aSopenharmony_ci * @tc.name: PluginTest001 40020a203aSopenharmony_ci * @tc.desc: Test the api of Plugin. 41020a203aSopenharmony_ci * @tc.type: FUNC 42020a203aSopenharmony_ci * @tc.require: 43020a203aSopenharmony_ci */ 44020a203aSopenharmony_ciHWTEST_F(PluginTest, PluginTest001, testing::ext::TestSize.Level0) 45020a203aSopenharmony_ci{ 46020a203aSopenharmony_ci /** 47020a203aSopenharmony_ci * @tc.steps: step1. create Plugin object. 48020a203aSopenharmony_ci * @tc.steps: step2. invoke the function of the plugin object. 49020a203aSopenharmony_ci */ 50020a203aSopenharmony_ci printf("PluginTest001 start\n"); 51020a203aSopenharmony_ci Plugin plugin; 52020a203aSopenharmony_ci ASSERT_FALSE(plugin.HasLoaded()); 53020a203aSopenharmony_ci 54020a203aSopenharmony_ci plugin.OnLoad(); 55020a203aSopenharmony_ci auto event = plugin.GetEvent(Event::SYS_EVENT); 56020a203aSopenharmony_ci ASSERT_NE(event, nullptr); 57020a203aSopenharmony_ci ASSERT_TRUE(plugin.OnEvent(event)); 58020a203aSopenharmony_ci 59020a203aSopenharmony_ci /* default null function test */ 60020a203aSopenharmony_ci // Dump 61020a203aSopenharmony_ci plugin.Dump(0, {}); 62020a203aSopenharmony_ci // OnEventListeningCallback 63020a203aSopenharmony_ci plugin.OnEventListeningCallback(*(event.get())); 64020a203aSopenharmony_ci // OnConfigUpdate 65020a203aSopenharmony_ci std::string localCfgPath = "test/local/config"; 66020a203aSopenharmony_ci std::string cloudCfgPath = "test/cloud/config"; 67020a203aSopenharmony_ci plugin.OnConfigUpdate(localCfgPath, cloudCfgPath); 68020a203aSopenharmony_ci 69020a203aSopenharmony_ci // delay to handle event 70020a203aSopenharmony_ci auto pipelineEvent = std::make_shared<PipelineEvent>(*(event.get())); 71020a203aSopenharmony_ci ASSERT_FALSE(pipelineEvent->hasPending_); 72020a203aSopenharmony_ci auto workLoop = std::make_shared<EventLoop>("testLoop"); 73020a203aSopenharmony_ci plugin.BindWorkLoop(workLoop); 74020a203aSopenharmony_ci ASSERT_NE(plugin.GetWorkLoop(), nullptr); 75020a203aSopenharmony_ci plugin.DelayProcessEvent(pipelineEvent, 1); // 1s delay 76020a203aSopenharmony_ci ASSERT_TRUE(pipelineEvent->hasPending_); 77020a203aSopenharmony_ci sleep(3); 78020a203aSopenharmony_ci 79020a203aSopenharmony_ci // udpate the active time 80020a203aSopenharmony_ci auto lastActiveTime1 = plugin.GetLastActiveTime(); 81020a203aSopenharmony_ci ASSERT_GT(lastActiveTime1, 0); 82020a203aSopenharmony_ci plugin.UpdateTimeByDelay(1000); // delay 1s 83020a203aSopenharmony_ci auto lastActiveTime2 = plugin.GetLastActiveTime(); 84020a203aSopenharmony_ci ASSERT_GT(lastActiveTime2, lastActiveTime1); 85020a203aSopenharmony_ci 86020a203aSopenharmony_ci // set/get function 87020a203aSopenharmony_ci std::string version = "1.0"; 88020a203aSopenharmony_ci plugin.SetVersion(version); 89020a203aSopenharmony_ci ASSERT_EQ(version, plugin.GetVersion()); 90020a203aSopenharmony_ci 91020a203aSopenharmony_ci // bundle test 92020a203aSopenharmony_ci ASSERT_FALSE(plugin.IsBundlePlugin()); 93020a203aSopenharmony_ci std::string bundleName = "testBundle"; 94020a203aSopenharmony_ci plugin.SetBundleName(bundleName); 95020a203aSopenharmony_ci ASSERT_TRUE(plugin.IsBundlePlugin()); 96020a203aSopenharmony_ci 97020a203aSopenharmony_ci ASSERT_EQ(plugin.GetUseCount(), 0); 98020a203aSopenharmony_ci plugin.AddUseCount(); 99020a203aSopenharmony_ci ASSERT_EQ(plugin.GetUseCount(), 1); 100020a203aSopenharmony_ci plugin.SubUseCount(); 101020a203aSopenharmony_ci ASSERT_EQ(plugin.GetUseCount(), 0); 102020a203aSopenharmony_ci 103020a203aSopenharmony_ci plugin.OnUnload(); 104020a203aSopenharmony_ci printf("PluginTest001 end\n"); 105020a203aSopenharmony_ci} 106020a203aSopenharmony_ci 107020a203aSopenharmony_ci/** 108020a203aSopenharmony_ci * @tc.name: HiviewContextTest001 109020a203aSopenharmony_ci * @tc.desc: Test the api of HiviewContext. 110020a203aSopenharmony_ci * @tc.type: FUNC 111020a203aSopenharmony_ci * @tc.require: 112020a203aSopenharmony_ci */ 113020a203aSopenharmony_ciHWTEST_F(PluginTest, HiviewContextTest001, testing::ext::TestSize.Level0) 114020a203aSopenharmony_ci{ 115020a203aSopenharmony_ci /** 116020a203aSopenharmony_ci * @tc.steps: step1. create HiviewContext object. 117020a203aSopenharmony_ci * @tc.steps: step2. invoke the function of the HiviewContext object. 118020a203aSopenharmony_ci */ 119020a203aSopenharmony_ci printf("HiviewContextTest001 start\n"); 120020a203aSopenharmony_ci HiviewContext context; 121020a203aSopenharmony_ci 122020a203aSopenharmony_ci /* default null function test */ 123020a203aSopenharmony_ci // PostUnorderedEvent 124020a203aSopenharmony_ci context.PostUnorderedEvent(nullptr, nullptr); 125020a203aSopenharmony_ci // RegisterUnorderedEventListener 126020a203aSopenharmony_ci std::weak_ptr<EventListener> eventListenerPtr; 127020a203aSopenharmony_ci context.RegisterUnorderedEventListener(eventListenerPtr); 128020a203aSopenharmony_ci // PostAsyncEventToTarget 129020a203aSopenharmony_ci context.PostAsyncEventToTarget(nullptr, "", nullptr); 130020a203aSopenharmony_ci // RequestUnloadPlugin 131020a203aSopenharmony_ci context.RequestUnloadPlugin(nullptr); 132020a203aSopenharmony_ci // AppendPluginToPipeline 133020a203aSopenharmony_ci context.AppendPluginToPipeline("", ""); 134020a203aSopenharmony_ci // RequestLoadBundle 135020a203aSopenharmony_ci context.RequestLoadBundle(""); 136020a203aSopenharmony_ci // RequestUnloadBundle 137020a203aSopenharmony_ci context.RequestUnloadBundle(""); 138020a203aSopenharmony_ci // AddListenerInfo 139020a203aSopenharmony_ci context.AddListenerInfo(0, "", {}, {}); 140020a203aSopenharmony_ci context.AddListenerInfo(0, ""); 141020a203aSopenharmony_ci // AddDispatchInfo 142020a203aSopenharmony_ci std::weak_ptr<Plugin> pluginPtr; 143020a203aSopenharmony_ci context.AddDispatchInfo(pluginPtr, {}, {}, {}, {}); 144020a203aSopenharmony_ci 145020a203aSopenharmony_ci /* default null function test with return value */ 146020a203aSopenharmony_ci // PostSyncEventToTarget 147020a203aSopenharmony_ci ASSERT_TRUE(context.PostSyncEventToTarget(nullptr, "", nullptr)); 148020a203aSopenharmony_ci // GetSharedWorkLoop 149020a203aSopenharmony_ci ASSERT_EQ(context.GetSharedWorkLoop(), nullptr); 150020a203aSopenharmony_ci // GetPipelineSequenceByName 151020a203aSopenharmony_ci ASSERT_TRUE(context.GetPipelineSequenceByName("").empty()); 152020a203aSopenharmony_ci // IsReady 153020a203aSopenharmony_ci ASSERT_FALSE(context.IsReady()); 154020a203aSopenharmony_ci // GetHiViewDirectory 155020a203aSopenharmony_ci ASSERT_TRUE(context.GetHiViewDirectory(HiviewContext::DirectoryType::CONFIG_DIRECTORY).empty()); 156020a203aSopenharmony_ci ASSERT_TRUE(context.GetHiViewDirectory(HiviewContext::DirectoryType::WORK_DIRECTORY).empty()); 157020a203aSopenharmony_ci ASSERT_TRUE(context.GetHiViewDirectory(HiviewContext::DirectoryType::PERSIST_DIR).empty()); 158020a203aSopenharmony_ci // GetHiviewProperty 159020a203aSopenharmony_ci ASSERT_EQ(context.GetHiviewProperty("test_key", "test_value"), "test_value"); 160020a203aSopenharmony_ci // SetHiviewProperty 161020a203aSopenharmony_ci ASSERT_TRUE(context.SetHiviewProperty("test_key", "test_value", true)); 162020a203aSopenharmony_ci // InstancePluginByProxy 163020a203aSopenharmony_ci ASSERT_EQ(context.InstancePluginByProxy(nullptr), nullptr); 164020a203aSopenharmony_ci // GetPluginByName 165020a203aSopenharmony_ci ASSERT_EQ(context.GetPluginByName(""), nullptr); 166020a203aSopenharmony_ci // GetListenerInfo 167020a203aSopenharmony_ci ASSERT_TRUE(context.GetListenerInfo(0, "", "").empty()); 168020a203aSopenharmony_ci // GetDisPatcherInfo 169020a203aSopenharmony_ci ASSERT_TRUE(context.GetDisPatcherInfo(0, "", "", "").empty()); 170020a203aSopenharmony_ci 171020a203aSopenharmony_ci printf("HiviewContextTest001 end\n"); 172020a203aSopenharmony_ci} 173020a203aSopenharmony_ci} // namespace HiviewDFX 174020a203aSopenharmony_ci} // namespace OHOS 175