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 #define LOG_TAG "ObjectSnapshotTest"
17
18 #include "object_snapshot.h"
19
20 #include <gtest/gtest.h>
21
22 #include "executor_pool.h"
23 #include "snapshot/machine_status.h"
24
25 using namespace testing::ext;
26 using namespace OHOS::DistributedObject;
27 using namespace OHOS::DistributedData;
28 namespace OHOS::Test {
29
30 class ObjectSnapshotTest : public testing::Test {
31 public:
32 void SetUp();
33 void TearDown();
34
35 protected:
36 AssetBindInfo AssetBindInfo_;
37 Asset asset_;
38 std::string uri_;
39 StoreInfo storeInfo_;
40 };
41
SetUp()42 void ObjectSnapshotTest::SetUp()
43 {
44 uri_ = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset1.jpg";
45 Asset asset{
46 .name = "test_name",
47 .uri = uri_,
48 .modifyTime = "modifyTime",
49 .size = "size",
50 .hash = "modifyTime_size",
51 };
52 asset_ = asset;
53
54 VBucket vBucket{ { "11", 111 } };
55 AssetBindInfo AssetBindInfo{
56 .storeName = "store_test",
57 .tableName = "table_test",
58 .primaryKey = vBucket,
59 .field = "attachment",
60 .assetName = "asset1.jpg",
61 };
62 AssetBindInfo_ = AssetBindInfo;
63 StoreInfo storeInfo {
64 .tokenId = 0,
65 .bundleName = "bundleName_test",
66 .storeName = "store_test",
67 .instanceId = 1,
68 .user = 100,
69 };
70 storeInfo_ = storeInfo;
71 ChangedAssetInfo changedAssetInfo(asset, AssetBindInfo, storeInfo);
72 }
73
TearDown()74 void ObjectSnapshotTest::TearDown() {}
75
76 /**
77 * @tc.name: UploadTest001
78 * @tc.desc: Upload test.
79 * @tc.type: FUNC
80 * @tc.require:
81 * @tc.author: wangbin
82 */
HWTEST_F(ObjectSnapshotTest, UploadTest001, TestSize.Level0)83 HWTEST_F(ObjectSnapshotTest, UploadTest001, TestSize.Level0)
84 {
85 auto snapshot = std::make_shared<ObjectSnapshot>();
86 Asset asset{
87 .name = "test_name",
88 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
89 .modifyTime = "modifyTime1",
90 .size = "size1",
91 .hash = "modifyTime1_size1",
92 };
93 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
94 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
95 auto upload = snapshot->Upload(asset);
96 ASSERT_EQ(upload, 0);
97 }
98
99 /**
100 * @tc.name: UploadTest002
101 * @tc.desc: Upload test.
102 * @tc.type: FUNC
103 * @tc.require:
104 * @tc.author: wangbin
105 */
HWTEST_F(ObjectSnapshotTest, UploadTest002, TestSize.Level0)106 HWTEST_F(ObjectSnapshotTest, UploadTest002, TestSize.Level0)
107 {
108 auto snapshot = std::make_shared<ObjectSnapshot>();
109 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
110 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
111 auto upload = snapshot->Upload(asset_);
112 ASSERT_EQ(upload, 0);
113 }
114
115 /**
116 * @tc.name: DownloadTest001
117 * @tc.desc: Download test.
118 * @tc.type: FUNC
119 * @tc.require:
120 * @tc.author: wangbin
121 */
HWTEST_F(ObjectSnapshotTest, DownloadTest001, TestSize.Level0)122 HWTEST_F(ObjectSnapshotTest, DownloadTest001, TestSize.Level0)
123 {
124 auto snapshot = std::make_shared<ObjectSnapshot>();
125 Asset asset{
126 .name = "test_name",
127 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
128 .modifyTime = "modifyTime1",
129 .size = "size1",
130 .hash = "modifyTime1_size1",
131 };
132 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
133 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
134 auto upload = snapshot->Download(asset);
135 ASSERT_EQ(upload, 0);
136 }
137
138 /**
139 * @tc.name: DownloadTest002
140 * @tc.desc: Download test.
141 * @tc.type: FUNC
142 * @tc.require:
143 * @tc.author: wangbin
144 */
HWTEST_F(ObjectSnapshotTest, DownloadTest002, TestSize.Level0)145 HWTEST_F(ObjectSnapshotTest, DownloadTest002, TestSize.Level0)
146 {
147 auto snapshot = std::make_shared<ObjectSnapshot>();
148 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
149 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
150 auto upload = snapshot->Download(asset_);
151 ASSERT_EQ(upload, 0);
152 }
153
154 /**
155 * @tc.name: GetAssetStatusTest001
156 * @tc.desc: GetAssetStatus test.
157 * @tc.type: FUNC
158 * @tc.require:
159 * @tc.author: wangbin
160 */
HWTEST_F(ObjectSnapshotTest, GetAssetStatusTest001, TestSize.Level0)161 HWTEST_F(ObjectSnapshotTest, GetAssetStatusTest001, TestSize.Level0)
162 {
163 auto snapshot = std::make_shared<ObjectSnapshot>();
164 Asset asset{
165 .name = "test_name",
166 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
167 .modifyTime = "modifyTime1",
168 .size = "size1",
169 .hash = "modifyTime1_size1",
170 };
171 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
172 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
173 auto upload = snapshot->GetAssetStatus(asset);
174 ASSERT_EQ(upload, STATUS_BUTT);
175 }
176
177 /**
178 * @tc.name: GetAssetStatusTest002
179 * @tc.desc: GetAssetStatus test.
180 * @tc.type: FUNC
181 * @tc.require:
182 * @tc.author: wangbin
183 */
HWTEST_F(ObjectSnapshotTest, GetAssetStatusTest002, TestSize.Level0)184 HWTEST_F(ObjectSnapshotTest, GetAssetStatusTest002, TestSize.Level0)
185 {
186 auto snapshot = std::make_shared<ObjectSnapshot>();
187 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
188 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
189 auto upload = snapshot->GetAssetStatus(asset_);
190 ASSERT_EQ(upload, STATUS_STABLE);
191 }
192
193 /**
194 * @tc.name: UploadedTest001
195 * @tc.desc: Uploaded test.
196 * @tc.type: FUNC
197 * @tc.require:
198 * @tc.author: wangbin
199 */
HWTEST_F(ObjectSnapshotTest, UploadedTest001, TestSize.Level0)200 HWTEST_F(ObjectSnapshotTest, UploadedTest001, TestSize.Level0)
201 {
202 auto snapshot = std::make_shared<ObjectSnapshot>();
203 Asset asset{
204 .name = "test_name",
205 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
206 .modifyTime = "modifyTime1",
207 .size = "size1",
208 .hash = "modifyTime1_size1",
209 };
210 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
211 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
212 auto upload = snapshot->Uploaded(asset);
213 ASSERT_EQ(upload, E_OK);
214 }
215
216 /**
217 * @tc.name: UploadedTest002
218 * @tc.desc: Uploaded test.
219 * @tc.type: FUNC
220 * @tc.require:
221 * @tc.author: wangbin
222 */
HWTEST_F(ObjectSnapshotTest, UploadedTest002, TestSize.Level0)223 HWTEST_F(ObjectSnapshotTest, UploadedTest002, TestSize.Level0)
224 {
225 auto snapshot = std::make_shared<ObjectSnapshot>();
226 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
227 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
228 auto upload = snapshot->Uploaded(asset_);
229 ASSERT_EQ(upload, E_OK);
230 }
231
232 /**
233 * @tc.name: DownloadedTest001
234 * @tc.desc: Downloaded test.
235 * @tc.type: FUNC
236 * @tc.require:
237 * @tc.author: wangbin
238 */
HWTEST_F(ObjectSnapshotTest, DownloadedTest001, TestSize.Level0)239 HWTEST_F(ObjectSnapshotTest, DownloadedTest001, TestSize.Level0)
240 {
241 auto snapshot = std::make_shared<ObjectSnapshot>();
242 Asset asset{
243 .name = "test_name",
244 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
245 .modifyTime = "modifyTime1",
246 .size = "size1",
247 .hash = "modifyTime1_size1",
248 };
249 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
250 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
251 auto upload = snapshot->Downloaded(asset);
252 ASSERT_EQ(upload, E_OK);
253 }
254
255 /**
256 * @tc.name: DownloadedTest002
257 * @tc.desc: Downloaded test.
258 * @tc.type: FUNC
259 * @tc.require:
260 * @tc.author: wangbin
261 */
HWTEST_F(ObjectSnapshotTest, DownloadedTest002, TestSize.Level0)262 HWTEST_F(ObjectSnapshotTest, DownloadedTest002, TestSize.Level0)
263 {
264 auto snapshot = std::make_shared<ObjectSnapshot>();
265 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
266 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
267 auto upload = snapshot->Downloaded(asset_);
268 ASSERT_EQ(upload, E_OK);
269 }
270
271 /**
272 * @tc.name: TransferredTest001
273 * @tc.desc: Transferred test.
274 * @tc.type: FUNC
275 * @tc.require:
276 * @tc.author: wangbin
277 */
HWTEST_F(ObjectSnapshotTest, TransferredTest001, TestSize.Level0)278 HWTEST_F(ObjectSnapshotTest, TransferredTest001, TestSize.Level0)
279 {
280 auto snapshot = std::make_shared<ObjectSnapshot>();
281 Asset asset{
282 .name = "test_name",
283 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
284 .modifyTime = "modifyTime1",
285 .size = "size1",
286 .hash = "modifyTime1_size1",
287 };
288 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
289 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
290 auto upload = snapshot->Transferred(asset);
291 ASSERT_EQ(upload, E_OK);
292 }
293
294 /**
295 * @tc.name: TransferredTest002
296 * @tc.desc: Transferred test.
297 * @tc.type: FUNC
298 * @tc.require:
299 * @tc.author: wangbin
300 */
HWTEST_F(ObjectSnapshotTest, TransferredTest002, TestSize.Level0)301 HWTEST_F(ObjectSnapshotTest, TransferredTest002, TestSize.Level0)
302 {
303 auto snapshot = std::make_shared<ObjectSnapshot>();
304 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
305 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
306 auto upload = snapshot->Transferred(asset_);
307 ASSERT_EQ(upload, E_OK);
308 }
309
310 /**
311 * @tc.name: OnDataChangedTest001
312 * @tc.desc: OnDataChanged test.
313 * @tc.type: FUNC
314 * @tc.require:
315 * @tc.author: wangbin
316 */
HWTEST_F(ObjectSnapshotTest, OnDataChangedTest001, TestSize.Level0)317 HWTEST_F(ObjectSnapshotTest, OnDataChangedTest001, TestSize.Level0)
318 {
319 auto snapshot = std::make_shared<ObjectSnapshot>();
320 std::string deviceId = "object_snapshot_test_1";
321 Asset asset{
322 .name = "test_name",
323 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
324 .modifyTime = "modifyTime1",
325 .size = "size1",
326 .hash = "modifyTime1_size1",
327 };
328 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
329 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
330 auto upload = snapshot->OnDataChanged(asset, deviceId);
331 ASSERT_EQ(upload, E_OK);
332 }
333
334 /**
335 * @tc.name: OnDataChangedTest002
336 * @tc.desc: OnDataChanged test.
337 * @tc.type: FUNC
338 * @tc.require:
339 * @tc.author: wangbin
340 */
HWTEST_F(ObjectSnapshotTest, OnDataChangedTest002, TestSize.Level0)341 HWTEST_F(ObjectSnapshotTest, OnDataChangedTest002, TestSize.Level0)
342 {
343 auto snapshot = std::make_shared<ObjectSnapshot>();
344 std::string deviceId = "object_snapshot_test_1";
345 snapshot->BindAsset(asset_, AssetBindInfo_, storeInfo_);
346 ASSERT_EQ(snapshot->IsBoundAsset(asset_), true);
347 auto upload = snapshot->OnDataChanged(asset_, deviceId);
348 ASSERT_EQ(upload, E_OK);
349 }
350
351 /**
352 * @tc.name: BindAsset001
353 * @tc.desc: BindAsset test.
354 * @tc.type: FUNC
355 * @tc.require:
356 * @tc.author: wangbin
357 */
HWTEST_F(ObjectSnapshotTest, BindAsset001, TestSize.Level0)358 HWTEST_F(ObjectSnapshotTest, BindAsset001, TestSize.Level0)
359 {
360 auto snapshot = std::make_shared<ObjectSnapshot>();
361 Asset asset{
362 .name = "test_name",
363 .uri = "file:://com.example.hmos.notepad/data/storage/el2/distributedfiles/dir/asset2.jpg",
364 .modifyTime = "modifyTime1",
365 .size = "size1",
366 .hash = "modifyTime1_size1",
367 };
368 ASSERT_EQ(snapshot->IsBoundAsset(asset), false);
369 snapshot->BindAsset(asset, AssetBindInfo_, storeInfo_);
370 ASSERT_EQ(snapshot->IsBoundAsset(asset), true);
371 snapshot->BindAsset(asset, AssetBindInfo_, storeInfo_);
372 }
373 } // namespace OHOS::Test