• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "sys_installer_ipc_test.h"
17 
18 #include <fstream>
19 #include "gtest/gtest.h"
20 #include "if_system_ability_manager.h"
21 #include "iservice_registry.h"
22 #include "isys_installer.h"
23 #include "isys_installer_callback.h"
24 #include "system_ability_definition.h"
25 #include "sys_installer_kits_impl.h"
26 #include "sys_installer_proxy.h"
27 #include "sys_installer_load_callback.h"
28 
29 using namespace testing::ext;
30 using namespace std;
31 
32 namespace OHOS {
33 namespace SysInstaller {
SetUpTestCase()34 void SysInstallerIpcUnitTest::SetUpTestCase()
35 {
36     cout << "SysInstallerIpcUnitTest SetUpTestCase" << std::endl;
37 }
38 
TearDownTestCase()39 void SysInstallerIpcUnitTest::TearDownTestCase()
40 {
41     cout << "SysInstallerIpcUnitTest TearDownTestCase" << std::endl;
42 }
43 
SetUp()44 void SysInstallerIpcUnitTest::SetUp()
45 {
46     cout << "SysInstallerIpcUnitTest SetUp" << std::endl;
47 }
48 
TearDown()49 void SysInstallerIpcUnitTest::TearDown()
50 {
51     cout << "SysInstallerIpcUnitTest TearDown" << std::endl;
52 }
53 
54 // init
55 HWTEST_F(SysInstallerIpcUnitTest, SysInstallerInit001, TestSize.Level1)
56 {
57     cout << " SysInstallerInit001 start " << std::endl;
58 
59     auto ret = SysInstallerKitsImpl::GetInstance().SysInstallerInit("ipc_ut_test");
60     ASSERT_EQ(ret, 0);
61 }
62 
63 class ProcessCallbackTest : public ISysInstallerCallbackFunc {
64 public:
65     ProcessCallbackTest() = default;
66     ~ProcessCallbackTest() = default;
OnUpgradeProgress(UpdateStatus updateStatus,int percent,const std::string & resultMsg)67     void OnUpgradeProgress(UpdateStatus updateStatus, int percent, const std::string &resultMsg) override
68     {
69         printf("ProgressCallback progress %d percent %d msg %s\n",
70             updateStatus, percent, resultMsg.c_str());
71     }
OnUpgradeDealLen(UpdateStatus updateStatus,int dealLen,const std::string & resultMsg)72     void OnUpgradeDealLen(UpdateStatus updateStatus, int dealLen, const std::string &resultMsg) override
73     {
74         printf("ProgressCallback progress %d dealLen %d msg %s\n",
75             updateStatus, dealLen, resultMsg.c_str());
76     }
77 };
78 
79 // callback
80 HWTEST_F(SysInstallerIpcUnitTest, SetCallBackTest001, TestSize.Level1)
81 {
82     cout << " SetCallBackTest001 start " << std::endl;
83     sptr<ISysInstallerCallbackFunc> callback = new ProcessCallbackTest;
84     auto ret = SysInstallerKitsImpl::GetInstance().SetUpdateCallback("ipc_ut_test", callback);
85     ASSERT_EQ(ret, 0);
86 }
87 
88 // get status
89 HWTEST_F(SysInstallerIpcUnitTest, GetStatusTest001, TestSize.Level1)
90 {
91     cout << " GetStatusTest001 start " << std::endl;
92     auto ret = SysInstallerKitsImpl::GetInstance().GetUpdateStatus("ipc_ut_test");
93     ASSERT_EQ(ret, 0);
94 }
95 
96 // update package
97 HWTEST_F(SysInstallerIpcUnitTest, UpdatePackageTest001, TestSize.Level1)
98 {
99     cout << " UpdatePackageTest001 start " << std::endl;
100     auto ret = SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip("ipc_ut_test",
101         "/data/ota_package/update.zip");
102     cout << " UpdatePackageTest001 ret " << ret << std::endl;
103     ASSERT_EQ(ret, 0);
104 }
105 
106 // accessory update package
107 HWTEST_F(SysInstallerIpcUnitTest, AccUpdatePkgTest001, TestSize.Level1)
108 {
109     cout << "AccUpdatePkgTest001 start " << std::endl;
110     auto ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test",
111         "invalid path", "", 1);
112     ASSERT_NE(ret, 0);
113     ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test",
114         "", "/data/test/", 1);
115     ASSERT_NE(ret, 0);
116     ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test",
117         "invalid path", "/data/test/", 1);
118     ASSERT_NE(ret, 0);
119     ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test",
120         "/data/ota_package/update.zip", "invalid path", 1);
121     ASSERT_NE(ret, 0);
122 
123     ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test",
124         "/data/ota_package/update.zip", "/data/test/", 1);
125     ASSERT_NE(ret, 0);
126 
127     std::string path = "/data/updater/rmDir";
128     ret = mkdir(path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
129     if (ret == 0) {
130         ofstream tmpFile;
131         string filePath = path + "/tmpFile";
132         tmpFile.open(filePath.c_str());
133         if (tmpFile.is_open()) {
134             tmpFile.close();
135             ret = SysInstallerKitsImpl::GetInstance().AccDeleteDir("ipc_ut_test", path);
136         }
137     }
138 
139     ret = SysInstallerKitsImpl::GetInstance().AccDeleteDir("ipc_ut_test", "");
140     ASSERT_NE(ret, 0);
141 }
142 
143 // StartUpdateParaZip test
144 HWTEST_F(SysInstallerIpcUnitTest, StartUpdateParaZipTest, TestSize.Level1)
145 {
146     cout << " StartUpdateParaZip start " << std::endl;
147     SysInstallerLoadCallback sysInstallerLoadCallback {};
148     sysInstallerLoadCallback.OnLoadSystemAbilityFail(0);
149     sysInstallerLoadCallback.OnLoadSystemAbilityFail(4101); // 4041 : SYS_INSTALLER_DISTRIBUTED_SERVICE_ID
150     sptr<IRemoteObject> callback {};
151     SysInstallerProxy env(callback);
152     auto ret = env.StartUpdateParaZip("ipc_ut_test", "", "", "");
153     ASSERT_EQ(ret, 5); // 5 : ERR_INVALID_DATA
154 }
155 
156 // StartDeleteParaZip test
157 HWTEST_F(SysInstallerIpcUnitTest, StartDeleteParaZipTest, TestSize.Level1)
158 {
159     cout << " StartDeleteParaZip start " << std::endl;
160     sptr<IRemoteObject> callback {};
161     SysInstallerProxy env(callback);
162     auto ret = env.StartDeleteParaZip("ipc_ut_test", "", "");
163     ASSERT_EQ(ret, 5); // 5 : ERR_INVALID_DATA
164 }
165 
166 // AccDecompressAndVerifyPkg test
167 HWTEST_F(SysInstallerIpcUnitTest, AccDecompressAndVerifyPkgTest, TestSize.Level1)
168 {
169     cout << " AccDecompressAndVerifyPkgTest start " << std::endl;
170     sptr<IRemoteObject> callback {};
171     SysInstallerProxy env(callback);
172     auto ret = env.AccDecompressAndVerifyPkg("ipc_ut_test", "", "", 0);
173     ASSERT_EQ(ret, 5); // 5 : ERR_INVALID_DATA
174 }
175 
176 // AccDeleteDir test
177 HWTEST_F(SysInstallerIpcUnitTest, AccDeleteDirTest, TestSize.Level1)
178 {
179     cout << " AccDeleteDirTest start " << std::endl;
180     sptr<IRemoteObject> callback {};
181     SysInstallerProxy env(callback);
182     auto ret = env.AccDeleteDir("ipc_ut_test", "");
183     ASSERT_EQ(ret, 5); // 5 : ERR_INVALID_DATA
184 }
185 
186 // SysInstallerKitsImpl test
187 HWTEST_F(SysInstallerIpcUnitTest, SysInstallerKitsImplTest, TestSize.Level1)
188 {
189     cout << " SysInstallerKitsImplTest start " << std::endl;
190     wptr<IRemoteObject> remote;
191     SysInstallerKitsImpl::GetInstance().ResetService(remote);
192     auto ret = SysInstallerKitsImpl::GetInstance().StartUpdateParaZip("ipc_ut_test", "", "", "");
193     ASSERT_EQ(ret, -1);
194     ret = SysInstallerKitsImpl::GetInstance().StartDeleteParaZip("ipc_ut_test", "", "");
195     ASSERT_EQ(ret, -1);
196     ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg("ipc_ut_test", "", "", 0);
197     ASSERT_EQ(ret, -1);
198     ret = SysInstallerKitsImpl::GetInstance().AccDeleteDir("ipc_ut_test", "");
199     ASSERT_EQ(ret, -1);
200     ret = SysInstallerKitsImpl::GetInstance().SetCpuAffinity("ipc_ut_test", 0);
201     ASSERT_EQ(ret, -1);
202 }
203 } // SysInstaller
204 } // OHOS
205