1 /*
2  * Copyright (c) 2022-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 <iostream>
17 #include <map>
18 #include <sstream>
19 
20 #include <gtest/gtest.h>
21 
22 #include "b_resources/b_constants.h"
23 #include "tools_op.h"
24 #include "tools_op_incremental_restore.cpp"
25 
26 namespace OHOS::FileManagement::Backup {
27 using namespace std;
28 
29 namespace {
30 const string BUNDLE_NAME = "com.example.app2backup/";
31 const string MANAGE_JSON = "manage.json";
32 const string FILE_NAME = "1.tar";
33 } // namespace
34 
35 class ToolsOpIncrementalRestoreTest : public testing::Test {
36 public:
SetUpTestCase(void)37     static void SetUpTestCase(void) {};
TearDownTestCase()38     static void TearDownTestCase() {};
SetUp()39     void SetUp() {};
TearDown()40     void TearDown() {};
41 };
42 
43 /**
44  * @tc.number: SUB_backup_tools_op_restore_0100
45  * @tc.name: SUB_backup_tools_op_restore_0100
46  * @tc.desc: 测试
47  * @tc.size: MEDIUM
48  * @tc.type: FUNC
49  * @tc.level Level 1
50  * @tc.require: I6F3GV
51  */
52 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0100, testing::ext::TestSize.Level1)
53 {
54     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_restore_0100";
55     try {
56         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-info";
57         map<string, vector<string>> mapArgToVal;
58         string localCap = string(BConstants::GetSaBundleBackupToolDir(BConstants::DEFAULT_USER_ID).data()) + "/tmp";
59         vector<string> path = { localCap.data() };
60         mapArgToVal.insert(make_pair("pathCapFile", path));
61         vector<string> bundles = { "com.example.app2backup" };
62         mapArgToVal.insert(make_pair("bundles", bundles));
63         vector<string> incrementalTime = { "0" };
64         mapArgToVal.insert(make_pair("incrementalTime", incrementalTime));
65 
66         // 创建测试路径以及测试环境
67         string cmdMkdir = string("mkdir -p ") + BConstants::BACKUP_TOOL_RECEIVE_DIR.data() + BUNDLE_NAME;
68         system(cmdMkdir.c_str());
69         string cmdTool = string("mkdir -p ") + BConstants::GetSaBundleBackupToolDir(BConstants::DEFAULT_USER_ID).data();
70         system(cmdTool.c_str());
71         string touchTar = string("touch ") + BConstants::BACKUP_TOOL_RECEIVE_DIR.data() + BUNDLE_NAME + FILE_NAME;
72         system(touchTar.c_str());
73         string touchManage = string("touch ") + BConstants::BACKUP_TOOL_RECEIVE_DIR.data() + BUNDLE_NAME + MANAGE_JSON;
74         system(touchManage.c_str());
75         string touchTmp = string("touch ") + localCap;
76         system(touchTmp.c_str());
77 
78         // 尝试匹配当前命令,成功后执行
79         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-restore";
80         vector<string_view> curOp;
81         curOp.emplace_back("incrementalrestore");
__anon57fb31e00202(const ToolsOp &op) 82         auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); };
83         auto &&opeartions = ToolsOp::GetAllOperations();
84         auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed);
85         if (matchedOp != opeartions.end()) {
86             auto ret = matchedOp->Execute(mapArgToVal);
87             EXPECT_EQ(ret, 0);
88         }
89     } catch (...) {
90         EXPECT_TRUE(false);
91         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-an exception occurred by construction.";
92     }
93     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_restore_0100";
94 }
95 
96 /**
97  * @tc.number: SUB_backup_tools_op_restore_0200
98  * @tc.name: SUB_backup_tools_op_restore_0200
99  * @tc.desc: 测试
100  * @tc.size: MEDIUM
101  * @tc.type: FUNC
102  * @tc.level Level 1
103  * @tc.require: I6F3GV
104  */
105 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0200, testing::ext::TestSize.Level1)
106 {
107     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_restore_0200";
108     try {
109         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-The pathCapFile field is not contained.";
110         map<string, vector<string>> mapArgToVal;
111         vector<string> bundles = {"com.example.app2backup"};
112         vector<string> path = {"/data/backup/tmp"};
113         vector<string> incrementalTime = {"0"};
114         mapArgToVal.insert(make_pair("bundles", bundles));
115         mapArgToVal.insert(make_pair("incrementalTime", incrementalTime));
116 
117         vector<string_view> curOp;
118         curOp.emplace_back("incrementalrestore");
__anon57fb31e00302(const ToolsOp &op) 119         auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); };
120         auto &&opeartions = ToolsOp::GetAllOperations();
121         auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed);
122         int ret = 0;
123         if (matchedOp != opeartions.end()) {
124             ret = matchedOp->Execute(mapArgToVal);
125             EXPECT_NE(ret, 0);
126         }
127 
128         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-The bundles field is not contained.";
129         mapArgToVal.clear();
130         mapArgToVal.insert(make_pair("pathCapFile", path));
131         mapArgToVal.insert(make_pair("incrementalTime", incrementalTime));
132         if (matchedOp != opeartions.end()) {
133             ret = matchedOp->Execute(mapArgToVal);
134             EXPECT_NE(ret, 0);
135         }
136 
137         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-The incrementalTime field is not contained.";
138         mapArgToVal.clear();
139         mapArgToVal.insert(make_pair("pathCapFile", path));
140         mapArgToVal.insert(make_pair("bundles", bundles));
141         if (matchedOp != opeartions.end()) {
142             ret = matchedOp->Execute(mapArgToVal);
143             EXPECT_NE(ret, 0);
144         }
145 
146         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-The all fields are not contained.";
147         mapArgToVal.clear();
148         if (matchedOp != opeartions.end()) {
149             ret = matchedOp->Execute(mapArgToVal);
150             EXPECT_NE(ret, 0);
151         }
152     } catch (...) {
153         EXPECT_TRUE(false);
154         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-an exception occurred by construction.";
155     }
156     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_restore_0200";
157 }
158 
159 /**
160  * @tc.number: SUB_backup_tools_op_restore_0300
161  * @tc.name: SUB_backup_tools_op_restore_0300
162  * @tc.desc: 测试
163  * @tc.size: MEDIUM
164  * @tc.type: FUNC
165  * @tc.level Level 1
166  * @tc.require: I6F3GV
167  */
168 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0300, testing::ext::TestSize.Level1)
169 {
170     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_restore_0300";
171     try {
172         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-The all required fields are contained.";
173         map<string, vector<string>> mapArgToVal;
174 
175         vector<string> bundles = {"com.example.app2backup"};
176         vector<string> path = {"/data/backup/tmp"};
177         vector<string> incrementalTime = {"0"};
178         mapArgToVal.insert(make_pair("pathCapFile", path));
179         mapArgToVal.insert(make_pair("bundles", bundles));
180         mapArgToVal.insert(make_pair("incrementalTime", incrementalTime));
181 
182         vector<string_view> curOp;
183         curOp.emplace_back("incrementalrestore");
__anon57fb31e00402(const ToolsOp &op) 184         auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); };
185         auto &&opeartions = ToolsOp::GetAllOperations();
186         auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed);
187         int ret = 0;
188         if (matchedOp != opeartions.end()) {
189             ret = matchedOp->Execute(mapArgToVal);
190             EXPECT_EQ(ret, 0);
191         }
192     } catch (...) {
193         EXPECT_TRUE(false);
194         GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-an exception occurred by construction.";
195     }
196     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_restore_0300";
197 }
198 
199 /**
200  * @tc.number: SUB_backup_tools_op_incremental_restore_0400
201  * @tc.name: SUB_backup_tools_op_incremental_restore_0400
202  * @tc.desc: 测试
203  * @tc.size: MEDIUM
204  * @tc.type: FUNC
205  * @tc.level Level 1
206  * @tc.require: I6F3GV
207  */
208 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0400, testing::ext::TestSize.Level1)
209 {
210     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0400";
211     try {
212         auto ctx = make_shared<SessionRestore>();
213         BFileInfo fileInfo;
214         fileInfo.owner = "test";
215         fileInfo.fileName = "/manage.json";
216         fileInfo.sn = 1;
217         UniqueFd fd(open("textFile", O_RDONLY));
218         UniqueFd manifestFd(open("textManifest", O_RDONLY));
219         OnFileReady(ctx, fileInfo, move(fd), move(manifestFd), 0);
220     } catch (BError &e) {
221         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
222         EXPECT_TRUE(true);
223     } catch (...) {
224         EXPECT_TRUE(false);
225         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
226     }
227     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0400";
228 }
229 
230 /**
231  * @tc.number: SUB_backup_tools_op_incremental_restore_0500
232  * @tc.name: SUB_backup_tools_op_incremental_restore_0500
233  * @tc.desc: 测试
234  * @tc.size: MEDIUM
235  * @tc.type: FUNC
236  * @tc.level Level 1
237  * @tc.require: I6F3GV
238  */
239 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0500, testing::ext::TestSize.Level1)
240 {
241     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0500";
242     try {
243         auto ctx = make_shared<SessionRestore>();
244         vector<BundleName> bundleNames;
245         bundleNames.push_back("bundle1");
246         bundleNames.push_back("bundle2");
247         vector<string> times = {"100"};
248         int32_t ret = InitRestoreSession(ctx, bundleNames, times);
249         EXPECT_EQ(-EPERM, ret);
250     } catch (...) {
251         EXPECT_TRUE(false);
252         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
253     }
254     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0500";
255 }
256 
257 /**
258  * @tc.number: SUB_backup_tools_op_incremental_restore_0501
259  * @tc.name: SUB_backup_tools_op_incremental_restore_0501
260  * @tc.desc: 测试
261  * @tc.size: MEDIUM
262  * @tc.type: FUNC
263  * @tc.level Level 1
264  * @tc.require: I6F3GV
265  */
266 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0501, testing::ext::TestSize.Level1)
267 {
268     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0501";
269     try {
270         auto ctx = make_shared<SessionRestore>();
271         vector<BundleName> bundleNames;
272         bundleNames.push_back("bundle1");
273         bundleNames.push_back("bundle2");
274         vector<string> times;
275         times.push_back("100");
276         times.push_back("200");
277         int32_t ret = InitRestoreSession(nullptr, bundleNames, times);
278         EXPECT_EQ(-EPERM, ret);
279     } catch (...) {
280         EXPECT_TRUE(false);
281         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
282     }
283     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0501";
284 }
285 
286 /**
287  * @tc.number: SUB_backup_tools_op_incremental_restore_0502
288  * @tc.name: SUB_backup_tools_op_incremental_restore_0502
289  * @tc.desc: 测试
290  * @tc.size: MEDIUM
291  * @tc.type: FUNC
292  * @tc.level Level 1
293  * @tc.require: I6F3GV
294  */
295 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0502, testing::ext::TestSize.Level1)
296 {
297     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0502";
298     try {
299         auto ctx = make_shared<SessionRestore>();
300         vector<BundleName> bundleNames;
301         bundleNames.push_back("bundle1");
302         bundleNames.push_back("bundle2");
303         vector<string> times;
304         times.push_back("10");
305         times.push_back("20");
306         int32_t ret = InitRestoreSession(ctx, bundleNames, times);
307         EXPECT_EQ(0, ret);
308 
309         BFileInfo fileInfo;
310         fileInfo.owner = "test";
311         fileInfo.fileName = "manage.json";
312         fileInfo.sn = 1;
313         UniqueFd fd(open("textFile", O_RDONLY));
314         UniqueFd manifestFd(open("textManifest", O_RDONLY));
315         OnFileReady(ctx, fileInfo, move(fd), move(manifestFd), 0);
316     } catch (BError &e) {
317         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
318         EXPECT_TRUE(true);
319     } catch (...) {
320         EXPECT_TRUE(false);
321         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
322     }
323     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0502";
324 }
325 
326 /**
327  * @tc.number: SUB_backup_tools_op_incremental_restore_0600
328  * @tc.name: SUB_backup_tools_op_incremental_restore_0600
329  * @tc.desc: 测试
330  * @tc.size: MEDIUM
331  * @tc.type: FUNC
332  * @tc.level Level 1
333  * @tc.require: I6F3GV
334  */
335 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0600, testing::ext::TestSize.Level1)
336 {
337     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0600";
338     try {
339         auto ctx = make_shared<SessionRestore>();
340         ErrCode err = 0;
341         BundleName name = "bundle";
342         OnBundleStarted(ctx, err, name);
343         EXPECT_TRUE(true);
344     } catch (...) {
345         EXPECT_TRUE(false);
346         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
347     }
348     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0600";
349 }
350 
351 /**
352  * @tc.number: SUB_backup_tools_op_incremental_restore_0601
353  * @tc.name: SUB_backup_tools_op_incremental_restore_0601
354  * @tc.desc: 测试
355  * @tc.size: MEDIUM
356  * @tc.type: FUNC
357  * @tc.level Level 1
358  * @tc.require: I6F3GV
359  */
360 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0601, testing::ext::TestSize.Level1)
361 {
362     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0601";
363     try {
364         auto ctx = make_shared<SessionRestore>();
365         ctx->cnt_ = 1;
366         ErrCode err = -1;
367         BundleName name = "bundle";
368         OnBundleStarted(ctx, err, name);
369         EXPECT_TRUE(true);
370     } catch (...) {
371         EXPECT_TRUE(false);
372         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
373     }
374     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0601";
375 }
376 
377 /**
378  * @tc.number: SUB_backup_tools_op_incremental_restore_0700
379  * @tc.name: SUB_backup_tools_op_incremental_restore_0700
380  * @tc.desc: 测试
381  * @tc.size: MEDIUM
382  * @tc.type: FUNC
383  * @tc.level Level 1
384  * @tc.require: I6F3GV
385  */
386 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0700, testing::ext::TestSize.Level1)
387 {
388     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0700";
389     try {
390         auto ctx = make_shared<SessionRestore>();
391         ctx->cnt_ = 1;
392         ErrCode err = 0;
393         BundleName name = "bundle";
394         OnBundleFinished(ctx, err, name);
395         EXPECT_TRUE(true);
396     } catch (...) {
397         EXPECT_TRUE(false);
398         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
399     }
400     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0700";
401 }
402 
403 /**
404  * @tc.number: SUB_backup_tools_op_incremental_restore_0701
405  * @tc.name: SUB_backup_tools_op_incremental_restore_0701
406  * @tc.desc: 测试
407  * @tc.size: MEDIUM
408  * @tc.type: FUNC
409  * @tc.level Level 1
410  * @tc.require: I6F3GV
411  */
412 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0701, testing::ext::TestSize.Level1)
413 {
414     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0701";
415     try {
416         auto ctx = make_shared<SessionRestore>();
417         ctx->cnt_ = 1;
418         ErrCode err = -1;
419         BundleName name = "bundle";
420         OnBundleFinished(ctx, err, name);
421         EXPECT_TRUE(true);
422     } catch (...) {
423         EXPECT_TRUE(false);
424         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
425     }
426     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0701";
427 }
428 
429 /**
430  * @tc.number: SUB_backup_tools_op_incremental_restore_0800
431  * @tc.name: SUB_backup_tools_op_incremental_restore_0800
432  * @tc.desc: 测试
433  * @tc.size: MEDIUM
434  * @tc.type: FUNC
435  * @tc.level Level 1
436  * @tc.require: I6F3GV
437  */
438 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0800, testing::ext::TestSize.Level1)
439 {
440     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0800";
441     try {
442         auto ctx = make_shared<SessionRestore>();
443         ErrCode err = 0;
444         OnAllBundlesFinished(ctx, err);
445         EXPECT_TRUE(true);
446     } catch (...) {
447         EXPECT_TRUE(false);
448         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
449     }
450     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0800";
451 }
452 
453 /**
454  * @tc.number: SUB_backup_tools_op_incremental_restore_0801
455  * @tc.name: SUB_backup_tools_op_incremental_restore_0801
456  * @tc.desc: 测试
457  * @tc.size: MEDIUM
458  * @tc.type: FUNC
459  * @tc.level Level 1
460  * @tc.require: I6F3GV
461  */
462 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0801, testing::ext::TestSize.Level1)
463 {
464     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0801";
465     try {
466         auto ctx = make_shared<SessionRestore>();
467         ErrCode err = -1;
468         OnAllBundlesFinished(ctx, err);
469         EXPECT_TRUE(true);
470     } catch (...) {
471         EXPECT_TRUE(false);
472         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
473     }
474     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0801";
475 }
476 
477 /**
478  * @tc.number: SUB_backup_tools_op_incremental_restore_0900
479  * @tc.name: SUB_backup_tools_op_incremental_restore_0900
480  * @tc.desc: 测试
481  * @tc.size: MEDIUM
482  * @tc.type: FUNC
483  * @tc.level Level 1
484  * @tc.require: I6F3GV
485  */
486 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_0900, testing::ext::TestSize.Level1)
487 {
488     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_0900";
489     try {
490         auto ctx = make_shared<SessionRestore>();
491         OnBackupServiceDied(ctx);
492         EXPECT_TRUE(true);
493     } catch (...) {
494         EXPECT_TRUE(false);
495         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
496     }
497     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_0900";
498 }
499 
500 /**
501  * @tc.number: SUB_backup_tools_op_incremental_restore_1000
502  * @tc.name: SUB_backup_tools_op_incremental_restore_1000
503  * @tc.desc: 测试
504  * @tc.size: MEDIUM
505  * @tc.type: FUNC
506  * @tc.level Level 1
507  * @tc.require: I6F3GV
508  */
509 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1000, testing::ext::TestSize.Level1)
510 {
511     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1000";
512     try {
513         shared_ptr<SessionRestore> restore = nullptr;
514         RestoreApp(restore);
515     } catch (BError &e) {
516         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
517         EXPECT_TRUE(true);
518     } catch (...) {
519         EXPECT_TRUE(false);
520         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
521     }
522     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1000";
523 }
524 
525 /**
526  * @tc.number: SUB_backup_tools_op_incremental_restore_1001
527  * @tc.name: SUB_backup_tools_op_incremental_restore_1001
528  * @tc.desc: 测试
529  * @tc.size: MEDIUM
530  * @tc.type: FUNC
531  * @tc.level Level 1
532  * @tc.require: I6F3GV
533  */
534 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1001, testing::ext::TestSize.Level1)
535 {
536     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1001";
537     try {
538         shared_ptr<SessionRestore> restore = make_shared<SessionRestore>();
539         restore->session_ = nullptr;
540         RestoreApp(restore);
541     } catch (BError &e) {
542         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
543         EXPECT_TRUE(true);
544     } catch (...) {
545         EXPECT_TRUE(false);
546         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
547     }
548     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1001";
549 }
550 
551 /**
552  * @tc.number: SUB_backup_tools_op_incremental_restore_1002
553  * @tc.name: SUB_backup_tools_op_incremental_restore_1002
554  * @tc.desc: 测试
555  * @tc.size: MEDIUM
556  * @tc.type: FUNC
557  * @tc.level Level 1
558  * @tc.require: I6F3GV
559  */
560 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1002, testing::ext::TestSize.Level1)
561 {
562     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1002";
563     try {
564         shared_ptr<SessionRestore> restore = make_shared<SessionRestore>();
565         restore->session_ = {};
566         BIncrementalData data("text", 1);
567         restore->lastIncrementalData = {data};
568         RestoreApp(restore);
569         EXPECT_TRUE(true);
570     } catch (BError &e) {
571         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
572         EXPECT_TRUE(true);
573     } catch (...) {
574         EXPECT_TRUE(false);
575         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
576     }
577     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1002";
578 }
579 
580 /**
581  * @tc.number: SUB_backup_tools_op_incremental_restore_1003
582  * @tc.name: SUB_backup_tools_op_incremental_restore_1003
583  * @tc.desc: 测试
584  * @tc.size: MEDIUM
585  * @tc.type: FUNC
586  * @tc.level Level 1
587  * @tc.require: I6F3GV
588  */
589 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1003, testing::ext::TestSize.Level1)
590 {
591     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1003";
592     try {
593         auto ctx = make_shared<SessionRestore>();
594         vector<BundleName> bundleNames;
595         bundleNames.push_back("bundle1");
596         bundleNames.push_back("bundle2");
597         vector<string> times;
598         times.push_back("10");
599         times.push_back("20");
600         int32_t ret = InitRestoreSession(ctx, bundleNames, times);
601         EXPECT_EQ(0, ret);
602 
603         RestoreApp(ctx);
604         EXPECT_TRUE(ctx);
605     } catch (BError &e) {
606         EXPECT_EQ(e.GetCode(), BError(BError::Codes::TOOL_INVAL_ARG).GetCode());
607         EXPECT_TRUE(true);
608     } catch (...) {
609         EXPECT_TRUE(false);
610         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
611     }
612     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1003";
613 }
614 
615 /**
616  * @tc.number: SUB_backup_tools_op_incremental_restore_1100
617  * @tc.name: SUB_backup_tools_op_incremental_restore_1100
618  * @tc.desc: 测试
619  * @tc.size: MEDIUM
620  * @tc.type: FUNC
621  * @tc.level Level 1
622  * @tc.require: I6F3GV
623  */
624 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1100, testing::ext::TestSize.Level1)
625 {
626     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1100";
627     try {
628         string pathCapFile = "";
629         vector<string> bundleNames = {"com.example.app2backup/"};
630         bool depMode = true;
631         vector<string> times = {"10"};
632         int32_t ret = Init(pathCapFile, bundleNames, depMode, times);
633         EXPECT_LT(ret, 0);
634     } catch (...) {
635         EXPECT_TRUE(false);
636         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
637     }
638     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1100";
639 }
640 
641 /**
642  * @tc.number: SUB_backup_tools_op_incremental_restore_1101
643  * @tc.name: SUB_backup_tools_op_incremental_restore_1101
644  * @tc.desc: 测试
645  * @tc.size: MEDIUM
646  * @tc.type: FUNC
647  * @tc.level Level 1
648  * @tc.require: I6F3GV
649  */
650 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1101, testing::ext::TestSize.Level1)
651 {
652     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1101";
653     try {
654         string pathCapFile = "/data/backup";
655         vector<string> bundleNames = {"com.example.app2backup/"};
656         bool depMode = true;
657         vector<string> times = {"1"};
658         int32_t ret = Init(pathCapFile, bundleNames, depMode, times);
659         EXPECT_LT(ret, 0);
660     } catch (...) {
661         EXPECT_TRUE(false);
662         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
663     }
664     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1101";
665 }
666 
667 /**
668  * @tc.number: SUB_backup_tools_op_incremental_restore_1102
669  * @tc.name: SUB_backup_tools_op_incremental_restore_1102
670  * @tc.desc: 测试
671  * @tc.size: MEDIUM
672  * @tc.type: FUNC
673  * @tc.level Level 1
674  * @tc.require: I6F3GV
675  */
676 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1102, testing::ext::TestSize.Level1)
677 {
678     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1102";
679     try {
680         string pathCapFile = "";
681         vector<string> bundleNames = {"com.example.app2backup/"};
682         bool depMode = false;
683         vector<string> times = {"10"};
684         int32_t ret = Init(pathCapFile, bundleNames, depMode, times);
685         EXPECT_LT(ret, 0);
686     } catch (...) {
687         EXPECT_TRUE(false);
688         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
689     }
690     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1102";
691 }
692 
693 /**
694  * @tc.number: SUB_backup_tools_op_incremental_restore_1200
695  * @tc.name: SUB_backup_tools_op_incremental_restore_1200
696  * @tc.desc: 测试
697  * @tc.size: MEDIUM
698  * @tc.type: FUNC
699  * @tc.level Level 1
700  * @tc.require: I6F3GV
701  */
702 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1200, testing::ext::TestSize.Level1)
703 {
704     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1200";
705     try {
706         map<string, vector<string>> mapArgToVal;
707         mapArgToVal["depMode"] = {"false"};
708         g_exec(mapArgToVal);
709         EXPECT_EQ(mapArgToVal["depMode"][0], "false");
710     } catch (...) {
711         EXPECT_TRUE(false);
712         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
713     }
714     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1200";
715 }
716 
717 /**
718  * @tc.number: SUB_backup_tools_op_incremental_restore_1201
719  * @tc.name: SUB_backup_tools_op_incremental_restore_1201
720  * @tc.desc: 测试
721  * @tc.size: MEDIUM
722  * @tc.type: FUNC
723  * @tc.level Level 1
724  * @tc.require: I6F3GV
725  */
726 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1201, testing::ext::TestSize.Level1)
727 {
728     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1201";
729     try {
730         map<string, vector<string>> mapArgToVal = {
731             {"pathCapFile", {"path"}},
732             {"bundles", {"bundle1"}},
733             {"incrementalTime", {"time"}}
734         };
735         int ret = g_exec(mapArgToVal);
736         EXPECT_LT(ret, 0);
737     } catch (...) {
738         EXPECT_TRUE(false);
739         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
740     }
741     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1201";
742 }
743 
744 /**
745  * @tc.number: SUB_backup_tools_op_incremental_restore_1202
746  * @tc.name: SUB_backup_tools_op_incremental_restore_1202
747  * @tc.desc: 测试
748  * @tc.size: MEDIUM
749  * @tc.type: FUNC
750  * @tc.level Level 1
751  * @tc.require: I6F3GV
752  */
753 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1202, testing::ext::TestSize.Level1)
754 {
755     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1202";
756     try {
757         map<string, vector<string>> mapArgToVal = {
758             {"bundles", {"bundle1"}},
759             {"incrementalTime", {"time"}}
760         };
761         int ret = g_exec(mapArgToVal);
762         EXPECT_LT(ret, 0);
763     } catch (...) {
764         EXPECT_TRUE(false);
765         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
766     }
767     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1202";
768 }
769 
770 /**
771  * @tc.number: SUB_backup_tools_op_incremental_restore_1203
772  * @tc.name: SUB_backup_tools_op_incremental_restore_1203
773  * @tc.desc: 测试
774  * @tc.size: MEDIUM
775  * @tc.type: FUNC
776  * @tc.level Level 1
777  * @tc.require: I6F3GV
778  */
779 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1203, testing::ext::TestSize.Level1)
780 {
781     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1203";
782     try {
783         map<string, vector<string>> mapArgToVal = {
784             {"pathCapFile", {"path"}},
785             {"bundles", {"bundle1"}},
786             {"incrementalTime", {"time"}},
787             {"depMode", {"true"}}
788         };
789         int ret = g_exec(mapArgToVal);
790         EXPECT_LT(ret, 0);
791     } catch (...) {
792         EXPECT_TRUE(false);
793         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
794     }
795     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1203";
796 }
797 
798 /**
799  * @tc.number: SUB_backup_tools_op_incremental_restore_1204
800  * @tc.name: SUB_backup_tools_op_incremental_restore_1204
801  * @tc.desc: 测试
802  * @tc.size: MEDIUM
803  * @tc.type: FUNC
804  * @tc.level Level 1
805  * @tc.require: I6F3GV
806  */
807 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1204, testing::ext::TestSize.Level1)
808 {
809     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1204";
810     try {
811         map<string, vector<string>> mapArgToVal = {
812             {"pathCapFile", {"path"}},
813             {"incrementalTime", {"time"}}
814         };
815         int ret = g_exec(mapArgToVal);
816         EXPECT_LT(ret, 0);
817     } catch (...) {
818         EXPECT_TRUE(false);
819         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
820     }
821     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1204";
822 }
823 
824 /**
825  * @tc.number: SUB_backup_tools_op_incremental_restore_1205
826  * @tc.name: SUB_backup_tools_op_incremental_restore_1205
827  * @tc.desc: 测试
828  * @tc.size: MEDIUM
829  * @tc.type: FUNC
830  * @tc.level Level 1
831  * @tc.require: I6F3GV
832  */
833 HWTEST_F(ToolsOpIncrementalRestoreTest, SUB_backup_tools_op_incremental_restore_1205, testing::ext::TestSize.Level1)
834 {
835     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-begin SUB_backup_tools_op_incremental_restore_1205";
836     try {
837         map<string, vector<string>> mapArgToVal = {
838             {"pathCapFile", {"path"}},
839             {"bundles", {"bundle1"}}
840         };
841         int ret = g_exec(mapArgToVal);
842         EXPECT_LT(ret, 0);
843     } catch (...) {
844         EXPECT_TRUE(false);
845         GTEST_LOG_(INFO) << "ToolsOpRestoreAsyncTest-an exception occurred by construction.";
846     }
847     GTEST_LOG_(INFO) << "ToolsOpIncrementalRestoreTest-end SUB_backup_tools_op_incremental_restore_1205";
848 }
849 } // namespace OHOS::FileManagement::Backup