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