• 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 <gtest/gtest.h>
17 #include <thread>
18 
19 #include "accesstoken_kit.h"
20 #include "distributed_object.h"
21 #include "distributed_object_impl.h"
22 #include "distributed_objectstore.h"
23 #include "distributed_objectstore_impl.h"
24 #include "flat_object_storage_engine.h"
25 #include "flat_object_store.h"
26 #include "mock_flat_object_watcher.h"
27 #include "mock_object_watcher.h"
28 #include "nativetoken_kit.h"
29 #include "object_storage_engine.h"
30 #include "objectstore_errors.h"
31 #include "store_errno.h"
32 #include "token_setproc.h"
33 
34 using namespace testing::ext;
35 using namespace OHOS::ObjectStore;
36 using namespace OHOS::Security::AccessToken;
37 namespace {
38 // object service error code
39 enum Status : int32_t {
40     OBJECT_SUCCESS,
41     OBJECT_DBSTATUS_ERROR,
42     OBJECT_INNER_ERROR,
43     OBJECT_PERMISSION_DENIED,
44     OBJECT_STORE_NOT_FOUND
45 };
46 constexpr static double SALARY = 100.5;
47 class TableWatcherImpl : public TableWatcher {
48 public:
TableWatcherImpl(const std::string & sessionId)49     explicit TableWatcherImpl(const std::string &sessionId) : TableWatcher(sessionId) {}
50     void OnChanged(
51         const std::string &sessionid, const std::vector<std::string> &changedData, bool enableTransfer) override;
52     virtual ~TableWatcherImpl();
53 };
54 
~TableWatcherImpl()55 TableWatcherImpl::~TableWatcherImpl() {}
OnChanged(const std::string & sessionid,const std::vector<std::string> & changedData,bool enableTransfer)56 void TableWatcherImpl::OnChanged(
57     const std::string &sessionid, const std::vector<std::string> &changedData, bool enableTransfer) {}
58 
59 class StatusNotifierImpl : public StatusWatcher {
60 public:
61     void OnChanged(
62         const std::string &sessionId, const std::string &networkId, const std::string &onlineStatus) override;
63     virtual ~StatusNotifierImpl();
64 };
~StatusNotifierImpl()65 StatusNotifierImpl::~StatusNotifierImpl() {}
66 
OnChanged(const std::string & sessionId,const std::string & networkId,const std::string & onlineStatus)67 void StatusNotifierImpl::OnChanged(const std::string &sessionId,
68                                    const std::string &networkId,
69                                    const std::string &onlineStatus)
70 {
71 }
72 
73 class ProgressNotifierImpl : public ProgressWatcher {
74 public:
75 void OnChanged(const std::string &sessionId, int32_t progress) override;
76 virtual ~ProgressNotifierImpl();
77 };
~ProgressNotifierImpl()78 ProgressNotifierImpl::~ProgressNotifierImpl()
79 {
80 }
81 
OnChanged(const std::string & sessionId,int32_t progress)82 void ProgressNotifierImpl::OnChanged(const std::string &sessionId, int32_t progress)
83 {
84 }
GrantPermissionNative()85 void GrantPermissionNative()
86 {
87     const char **perms = new const char *[3];
88     perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC";
89     perms[1] = "ohos.permission.DISTRIBUTED_SOFTBUS_CENTER";
90     perms[2] = "ohos.permission.MONITOR_DEVICE_NETWORK_STATE"; // perms[2] is a permission parameter
91     TokenInfoParams infoInstance = {
92         .dcapsNum = 0,
93         .permsNum = 3,
94         .aclsNum = 0,
95         .dcaps = nullptr,
96         .perms = perms,
97         .acls = nullptr,
98         .processName = "distributed_object",
99         .aplStr = "system_basic",
100     };
101     uint64_t tokenId = GetAccessTokenId(&infoInstance);
102     SetSelfTokenID(tokenId);
103     AccessTokenKit::ReloadNativeTokenInfo();
104 }
105 
106 class NativeObjectStoreTest : public testing::Test {
107 public:
108     static void SetUpTestCase(void);
109     static void TearDownTestCase(void);
110     void SetUp();
111     void TearDown();
112 };
113 
SetUpTestCase(void)114 void NativeObjectStoreTest::SetUpTestCase(void)
115 {
116     // input testsuit setup step,setup invoked before all testcases
117 }
118 
TearDownTestCase(void)119 void NativeObjectStoreTest::TearDownTestCase(void)
120 {
121     // input testsuit teardown step,teardown invoked after all testcases
122 }
123 
SetUp(void)124 void NativeObjectStoreTest::SetUp(void)
125 {
126     // input testcase setup step,setup invoked before each testcases
127     GrantPermissionNative();
128 }
129 
TearDown(void)130 void NativeObjectStoreTest::TearDown(void)
131 {
132     // input testcase teardown step,teardown invoked after each testcases
133 }
134 
135 /**
136  * @tc.name: DistributedObjectStore_Create_Destroy_001
137  * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
138  * @tc.type: FUNC
139  */
140 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_001, TestSize.Level1)
141 {
142     std::string bundleName = "default";
143     std::string sessionId = "123456";
144     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
145     ASSERT_NE(nullptr, objectStore);
146 
147     DistributedObject *object = objectStore->CreateObject(sessionId);
148     ASSERT_NE(nullptr, object);
149 
150     uint32_t ret = objectStore->DeleteObject(sessionId);
151     EXPECT_EQ(SUCCESS, ret);
152 }
153 
154 /**
155  * @tc.name: DistributedObjectStore_Create_Destroy_002
156  * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
157  * @tc.type: FUNC
158  */
159 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_002, TestSize.Level1)
160 {
161     std::string sessionId = "123456";
162 
163     auto objectStore = new DistributedObjectStoreImpl(nullptr);
164     DistributedObject *object = objectStore->CreateObject(sessionId);
165     EXPECT_EQ(nullptr, object);
166     delete objectStore;
167 }
168 
169 /**
170  * @tc.name: DistributedObjectStore_Create_Destroy_003
171  * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
172  * @tc.type: FUNC
173  */
174 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_003, TestSize.Level1)
175 {
176     std::string bundleName = "default";
177     std::string sessionId = "123456";
178     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
179     ASSERT_NE(nullptr, objectStore);
180 
181     DistributedObject *object = objectStore->CreateObject(sessionId);
182     ASSERT_NE(nullptr, object);
183 
184     DistributedObject *object2 = objectStore->CreateObject(sessionId);
185     EXPECT_EQ(nullptr, object2);
186 
187     uint32_t ret = objectStore->DeleteObject(sessionId);
188     EXPECT_EQ(SUCCESS, ret);
189 }
190 
191 /**
192  * @tc.name: DistributedObjectStore_Create_Destroy_004
193  * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
194  * @tc.type: FUNC
195  */
196 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_004, TestSize.Level1)
197 {
198     std::string bundleName = "default";
199     std::string sessionId = "123456";
200     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
201     ASSERT_NE(nullptr, objectStore);
202 
203     uint32_t status = -1;
204     DistributedObject *object = objectStore->CreateObject(sessionId, status);
205     ASSERT_NE(nullptr, object);
206     EXPECT_EQ(SUCCESS, status);
207 
208     uint32_t ret = objectStore->DeleteObject(sessionId);
209     EXPECT_EQ(SUCCESS, ret);
210 }
211 
212 /**
213  * @tc.name: DistributedObjectStoreImpl_CreateObject_001
214  * @tc.desc: test Create DistributedObjectStoreImpl
215  * @tc.type: FUNC
216  */
217 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_CreateObject_001, TestSize.Level1)
218 {
219     std::string bundleName = "default";
220     std::string sessionId = "123456";
221     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
222     ASSERT_NE(nullptr, objectStore);
223 
224     DistributedObject *object = objectStore->CreateObject("");
225     EXPECT_EQ(nullptr, object);
226 }
227 
228 /**
229  * @tc.name: DistributedObjectStoreImpl_CreateObject_002
230  * @tc.desc: test Create DistributedObjectStoreImpl
231  * @tc.type: FUNC
232  */
233 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_CreateObject_002, TestSize.Level1)
234 {
235     std::string sessionId = "123456";
236     auto objectStore = DistributedObjectStoreImpl(nullptr);
237     uint32_t status = -1;
238     DistributedObject *object = objectStore.CreateObject(sessionId, status);
239     EXPECT_EQ(nullptr, object);
240     EXPECT_EQ(ERR_NULL_OBJECTSTORE, status);
241 
242     status = objectStore.DeleteObject(sessionId);
243     EXPECT_EQ(ERR_NULL_OBJECTSTORE, status);
244 }
245 
246 /**
247  * @tc.name: DistributedObjectStoreImpl_CreateObject_003
248  * @tc.desc: test Create DistributedObjectStoreImpl
249  * @tc.type: FUNC
250  */
251 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_CreateObject_003, TestSize.Level1)
252 {
253     std::string bundleName = "default";
254     std::string sessionId = "";
255     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
256     ASSERT_NE(nullptr, objectStore);
257 
258     uint32_t status = -1;
259     DistributedObject *object = objectStore->CreateObject(sessionId, status);
260     EXPECT_EQ(nullptr, object);
261     EXPECT_EQ(ERR_INVALID_ARGS, status);
262 
263     status = objectStore->DeleteObject(sessionId);
264     EXPECT_EQ(ERR_DB_NOT_EXIST, status);
265 }
266 
267 /**
268  * @tc.name: DistributedObjectStoreImpl_Get_001
269  * @tc.desc: test DistributedObjectStoreImpl Get
270  * @tc.type: FUNC
271  */
272 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_Get_001, TestSize.Level1)
273 {
274     std::string bundleName = "default";
275     std::string sessionId = "sessionId";
276     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
277     ASSERT_NE(nullptr, objectStore);
278 
279     DistributedObject *object = objectStore->CreateObject(sessionId);
280     ASSERT_NE(nullptr, object);
281 
282     DistributedObject *Object1 = nullptr;
283     uint32_t status = objectStore->Get("", &Object1);
284     EXPECT_EQ(ERR_GET_OBJECT, status);
285 
286     status = objectStore->DeleteObject(sessionId);
287     EXPECT_EQ(SUCCESS, status);
288 }
289 
290 /**
291  * @tc.name: DistributedObjectStoreImpl_Watch_001
292  * @tc.desc: test DistributedObjectStoreImpl Watch
293  * @tc.type: FUNC
294  */
295 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_Watch_001, TestSize.Level1)
296 {
297     std::string bundleName = "default";
298     std::string sessionId = "sessionId";
299     auto objectStore = new DistributedObjectStoreImpl(nullptr);
300 
301     std::shared_ptr<MockObjectWatcher> watcher = std::make_shared<MockObjectWatcher>();
302     uint32_t status = objectStore->Watch(nullptr, watcher);
303     EXPECT_EQ(ERR_NULL_OBJECT, status);
304 
305     auto flatObjectStore = new FlatObjectStore(bundleName);
306     auto object = new DistributedObjectImpl(sessionId, flatObjectStore);
307 
308     status = objectStore->Watch(object, watcher);
309     EXPECT_EQ(ERR_NULL_OBJECTSTORE, status);
310 
311     status = objectStore->UnWatch(object);
312     EXPECT_EQ(ERR_NULL_OBJECTSTORE, status);
313     delete objectStore;
314     delete flatObjectStore;
315     delete object;
316 }
317 
318 /**
319  * @tc.name: DistributedObjectStoreImpl_Watch_002
320  * @tc.desc: test DistributedObjectStoreImpl Watch
321  * @tc.type: FUNC
322  */
323 HWTEST_F(NativeObjectStoreTest, DistributedObjectStoreImpl_Watch_002, TestSize.Level1)
324 {
325     std::string bundleName = "default";
326     std::string sessionId = "sessionId";
327     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
328     ASSERT_NE(nullptr, objectStore);
329 
330     DistributedObject *object = objectStore->CreateObject(sessionId);
331     ASSERT_NE(nullptr, object);
332 
333     std::shared_ptr<MockObjectWatcher> watcher = std::make_shared<MockObjectWatcher>();
334     uint32_t status = objectStore->Watch(object, watcher);
335     EXPECT_EQ(SUCCESS, status);
336 
337     status = objectStore->Watch(object, watcher);
338     EXPECT_EQ(ERR_EXIST, status);
339 
340     std::string bundleName1 = "default1";
341     std::string sessionId1 = "sessionId1";
342     auto flatObjectStore = new FlatObjectStore(bundleName1);
343     auto object1 = new DistributedObjectImpl(sessionId1, flatObjectStore);
344     status = objectStore->Watch(object1, watcher);
345     EXPECT_EQ(ERR_DB_NOT_EXIST, status);
346 
347     status = objectStore->UnWatch(object1);
348     EXPECT_EQ(ERR_DB_NOT_EXIST, status);
349 
350     status = objectStore->UnWatch(object);
351     EXPECT_EQ(SUCCESS, status);
352 
353     status = objectStore->DeleteObject(sessionId);
354     EXPECT_EQ(SUCCESS, status);
355     delete flatObjectStore;
356     delete object1;
357 }
358 
359 /**
360  * @tc.name: DistributedObjectStore_Get_001
361  * @tc.desc: test DistributedObjectStore Get.
362  * @tc.type: FUNC
363  */
364 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Get_001, TestSize.Level1)
365 {
366     std::string bundleName = "default";
367     std::string sessionId = "123456";
368     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
369     ASSERT_NE(nullptr, objectStore);
370 
371     DistributedObject *object = objectStore->CreateObject(sessionId);
372     ASSERT_NE(nullptr, object);
373 
374     DistributedObject *object2 = nullptr;
375     uint32_t ret = objectStore->Get(sessionId, &object2);
376     EXPECT_EQ(SUCCESS, ret);
377     EXPECT_EQ(object, object2);
378 
379     ret = objectStore->DeleteObject(sessionId);
380     EXPECT_EQ(SUCCESS, ret);
381 }
382 
383 /**
384  * @tc.name: DistributedObjectStore_Watch_UnWatch_001
385  * @tc.desc: test DistributedObjectStore Watch and UnWatch.
386  * @tc.type: FUNC
387  */
388 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Watch_UnWatch_001, TestSize.Level1)
389 {
390     std::string bundleName = "default";
391     std::string sessionId = "123456";
392     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
393     ASSERT_NE(nullptr, objectStore);
394 
395     DistributedObject *object = objectStore->CreateObject(sessionId);
396     ASSERT_NE(nullptr, object);
397 
398     auto watcherPtr = std::shared_ptr<ObjectWatcher>();
399     uint32_t ret = objectStore->Watch(object, watcherPtr);
400     EXPECT_EQ(SUCCESS, ret);
401 
402     ret = objectStore->UnWatch(object);
403     EXPECT_EQ(SUCCESS, ret);
404 
405     ret = objectStore->DeleteObject(sessionId);
406     EXPECT_EQ(SUCCESS, ret);
407 }
408 
409 /**
410  * @tc.name: DistributedObjectStore_SetStatusNotifier_001
411  * @tc.desc: test DistributedObjectStore SetStatusNotifier.
412  * @tc.type: FUNC
413  */
414 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_SetStatusNotifier_001, TestSize.Level1)
415 {
416     std::string bundleName = "default";
417     std::string sessionId = "123456";
418     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
419     ASSERT_NE(nullptr, objectStore);
420     DistributedObject *object = objectStore->CreateObject(sessionId);
421     ASSERT_NE(nullptr, object);
422 
423     auto notifierPtr = std::shared_ptr<StatusNotifier>();
424     uint32_t ret = objectStore->SetStatusNotifier(notifierPtr);
425     EXPECT_EQ(ret, 0);
426 
427     objectStore->NotifyCachedStatus(sessionId);
428     ret = objectStore->DeleteObject(sessionId);
429     EXPECT_EQ(ret, 0);
430 }
431 
432 /**
433  * @tc.name: DistributedObject_Double_001
434  * @tc.desc: test DistributedObjectStore PutDouble.
435  * @tc.type: FUNC
436  */
437 HWTEST_F(NativeObjectStoreTest, DistributedObject_Double_001, TestSize.Level1)
438 {
439     std::string bundleName = "default";
440     std::string sessionId = "123456";
441     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
442     ASSERT_NE(nullptr, objectStore);
443     DistributedObject *object = objectStore->CreateObject(sessionId);
444     ASSERT_NE(nullptr, object);
445 
446     uint32_t ret = object->PutDouble("salary", SALARY);
447     EXPECT_EQ(ret, 0);
448 
449     double value = 0.0;
450     object->GetDouble("salary", value);
451     EXPECT_EQ(ret, 0);
452     EXPECT_EQ(value, SALARY);
453 
454     ret = objectStore->DeleteObject(sessionId);
455     EXPECT_EQ(ret, 0);
456 }
457 
458 /**
459  * @tc.name: DistributedObject_GetDouble_001
460  * @tc.desc: test DistributedObjectStore GetDouble.
461  * @tc.type: FUNC
462  */
463 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetDouble_001, TestSize.Level1)
464 {
465     std::string bundleName = "default";
466     std::string sessionId = "123456";
467     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
468     ASSERT_NE(nullptr, objectStore);
469     DistributedObject *object = objectStore->CreateObject(sessionId);
470     ASSERT_NE(nullptr, object);
471 
472     double value = 0.0;
473     uint32_t ret = object->GetDouble("salary", value);
474     EXPECT_EQ(ret, DistributedDB::DBStatus::NOT_FOUND);
475     EXPECT_EQ(value, 0.0);
476 
477     ret = objectStore->DeleteObject(sessionId);
478     EXPECT_EQ(ret, 0);
479 }
480 
481 /**
482  * @tc.name: DistributedObject_Boolean_001
483  * @tc.desc: test DistributedObjectStore PutBoolean.
484  * @tc.type: FUNC
485  */
486 HWTEST_F(NativeObjectStoreTest, DistributedObject_Boolean_001, TestSize.Level1)
487 {
488     std::string bundleName = "default";
489     std::string sessionId = "123456";
490     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
491     ASSERT_NE(nullptr, objectStore);
492     DistributedObject *object = objectStore->CreateObject(sessionId);
493     ASSERT_NE(nullptr, object);
494 
495     uint32_t ret = object->PutBoolean("isTrue", true);
496     EXPECT_EQ(SUCCESS, ret);
497 
498     bool value = false;
499     ret = object->GetBoolean("isTrue", value);
500     EXPECT_EQ(SUCCESS, ret);
501     EXPECT_EQ(true, value);
502 
503     ret = objectStore->DeleteObject(sessionId);
504     EXPECT_EQ(SUCCESS, ret);
505 }
506 
507 /**
508  * @tc.name: DistributedObject_GetBoolean_001
509  * @tc.desc: test DistributedObjectStore GetBoolean.
510  * @tc.type: FUNC
511  */
512 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetBoolean_001, TestSize.Level1)
513 {
514     std::string bundleName = "default";
515     std::string sessionId = "123456";
516     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
517     ASSERT_NE(nullptr, objectStore);
518     DistributedObject *object = objectStore->CreateObject(sessionId);
519     ASSERT_NE(nullptr, object);
520 
521     bool value = false;
522     uint32_t ret = object->GetBoolean("isTrue", value);
523     EXPECT_EQ(DistributedDB::DBStatus::NOT_FOUND, ret);
524     EXPECT_EQ(false, value);
525 
526     ret = objectStore->DeleteObject(sessionId);
527     EXPECT_EQ(SUCCESS, ret);
528 }
529 
530 /**
531  * @tc.name: DistributedObject_String_001
532  * @tc.desc: test DistributedObjectStore String.
533  * @tc.type: FUNC
534  */
535 HWTEST_F(NativeObjectStoreTest, DistributedObject_String_001, TestSize.Level1)
536 {
537     std::string bundleName = "default";
538     std::string sessionId = "123456";
539     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
540     ASSERT_NE(nullptr, objectStore);
541     DistributedObject *object = objectStore->CreateObject(sessionId);
542     ASSERT_NE(nullptr, object);
543 
544     uint32_t ret = object->PutString("name", "zhangsan");
545     EXPECT_EQ(SUCCESS, ret);
546 
547     std::string value = "";
548     ret = object->GetString("name", value);
549     EXPECT_EQ(SUCCESS, ret);
550     EXPECT_EQ(value, "zhangsan");
551 
552     ret = objectStore->DeleteObject(sessionId);
553     EXPECT_EQ(SUCCESS, ret);
554 }
555 
556 /**
557  * @tc.name: DistributedObject_GetString_001
558  * @tc.desc: test DistributedObjectStore GetString.
559  * @tc.type: FUNC
560  */
561 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetString_001, TestSize.Level1)
562 {
563     std::string bundleName = "default";
564     std::string sessionId = "123456";
565     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
566     ASSERT_NE(nullptr, objectStore);
567     DistributedObject *object = objectStore->CreateObject(sessionId);
568     ASSERT_NE(nullptr, object);
569 
570     std::string value = "";
571     uint32_t ret = object->GetString("name", value);
572     EXPECT_EQ(DistributedDB::DBStatus::NOT_FOUND, ret);
573     EXPECT_EQ(value, "");
574 
575     ret = objectStore->DeleteObject(sessionId);
576     EXPECT_EQ(SUCCESS, ret);
577 }
578 
579 /**
580  * @tc.name: DistributedObject_GetSessionId_001
581  * @tc.desc: test DistributedObjectStore GetSessionId.
582  * @tc.type: FUNC
583  */
584 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetSessionId_001, TestSize.Level1)
585 {
586     std::string bundleName = "default";
587     std::string sessionId = "123456";
588     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
589     ASSERT_NE(nullptr, objectStore);
590     DistributedObject *object = objectStore->CreateObject(sessionId);
591     ASSERT_NE(nullptr, object);
592     std::string getSessionId = object->GetSessionId();
593     EXPECT_EQ(sessionId, getSessionId);
594     uint32_t ret = objectStore->DeleteObject(sessionId);
595     EXPECT_EQ(SUCCESS, ret);
596 }
597 
598 /**
599  * @tc.name: DistributedObject_PutComplex_001
600  * @tc.desc: test DistributedObjectStore PutComplex.
601  * @tc.type: FUNC
602  */
603 HWTEST_F(NativeObjectStoreTest, DistributedObject_PutComplex_001, TestSize.Level1)
604 {
605     std::string bundleName = "default";
606     std::string sessionId = "123456";
607     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
608     ASSERT_NE(nullptr, objectStore);
609     DistributedObject *object = objectStore->CreateObject(sessionId);
610     ASSERT_NE(nullptr, object);
611 
612     std::vector<uint8_t> value = {'z', 'h'};
613     uint32_t ret = object->PutComplex("name", value);
614     EXPECT_EQ(SUCCESS, ret);
615     ret = objectStore->DeleteObject(sessionId);
616     EXPECT_EQ(SUCCESS, ret);
617 }
618 
619 /**
620  * @tc.name: DistributedObject_GetComplex_001
621  * @tc.desc: test DistributedObjectStore GetComplex.
622  * @tc.type: FUNC
623  */
624 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetComplex_001, TestSize.Level1)
625 {
626     std::string bundleName = "default";
627     std::string sessionId = "123456";
628     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
629     ASSERT_NE(nullptr, objectStore);
630     DistributedObject *object = objectStore->CreateObject(sessionId);
631     ASSERT_NE(nullptr, object);
632 
633     std::vector<uint8_t> value = {'z', 'h'};
634     uint32_t ret = object->PutComplex("name", value);
635     EXPECT_EQ(SUCCESS, ret);
636     ret = object->GetComplex("name", value);
637     EXPECT_EQ(SUCCESS, ret);
638     ret = objectStore->DeleteObject(sessionId);
639     EXPECT_EQ(SUCCESS, ret);
640 }
641 
642 /**
643  * @tc.name: DistributedObject_GetComplex_002
644  * @tc.desc: test DistributedObjectStore GetComplex.
645  * @tc.type: FUNC
646  */
647 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetComplex_002, TestSize.Level1)
648 {
649     std::string bundleName = "default";
650     std::string sessionId = "123456";
651     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
652     ASSERT_NE(nullptr, objectStore);
653     DistributedObject *object = objectStore->CreateObject(sessionId);
654     ASSERT_NE(nullptr, object);
655 
656     std::vector<uint8_t> value = {'z', 'h'};
657     uint32_t ret = object->GetComplex("name", value);
658     EXPECT_EQ(DistributedDB::DBStatus::NOT_FOUND, ret);
659     ret = objectStore->DeleteObject(sessionId);
660     EXPECT_EQ(SUCCESS, ret);
661 }
662 
663 /**
664  * @tc.name: DistributedObject_SetAsset_001
665  * @tc.desc: test DistributedObjectStore SetAsset.
666  * @tc.type: FUNC
667  */
668 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetAsset_001, TestSize.Level1)
669 {
670     std::string bundleName = "default";
671     std::string sessionId = "123456";
672     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
673     ASSERT_NE(nullptr, objectStore);
674     DistributedObject *object = objectStore->CreateObject(sessionId);
675     ASSERT_NE(nullptr, object);
676 
677     uint32_t ret = object->PutString("attachment.name", "1.txt");
678     EXPECT_EQ(SUCCESS, ret);
679 
680     std::string value;
681     ret = object->GetString("attachment.name", value);
682     EXPECT_EQ(SUCCESS, ret);
683     EXPECT_EQ(value, "1.txt");
684 
685     std::string deviceId;
686     ret = object->GetString("__deviceId", deviceId);
687     EXPECT_EQ(SUCCESS, ret);
688     EXPECT_FALSE(deviceId.empty());
689 
690     ret = objectStore->DeleteObject(sessionId);
691     EXPECT_EQ(SUCCESS, ret);
692 }
693 
694 /**
695  * @tc.name: DistributedObject_TestSetSessionId_001
696  * @tc.desc: test DistributedObjectStore TestSetSessionId.
697  * @tc.type: FUNC
698  */
699 HWTEST_F(NativeObjectStoreTest, DistributedObject_TestSetSessionId_001, TestSize.Level1)
700 {
__anonba25df920202(std::string bundleName, std::string sessionId) 701     auto testSetSessionId = [] (std::string bundleName, std::string sessionId) {
702         DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
703         ASSERT_NE(nullptr, objectStore);
704         DistributedObject *object = objectStore->CreateObject(sessionId);
705         ASSERT_NE(nullptr, object);
706 
707         uint32_t ret = objectStore->DeleteObject(sessionId);
708         EXPECT_EQ(SUCCESS, ret);
709     };
710     std::thread t1(testSetSessionId, "default1", "session1");
711     std::thread t2(testSetSessionId, "default2", "session2");
712     std::thread t3(testSetSessionId, "default3", "session3");
713     t1.join();
714     t2.join();
715     t3.join();
716 }
717 
718 /**
719  * @tc.name: DistributedObject_GetType_001
720  * @tc.desc: test DistributedObject GetType.
721  * @tc.type: FUNC
722  */
723 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetType_001, TestSize.Level1)
724 {
725     std::string bundleName = "default";
726     std::string sessionId = "123456";
727     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
728     ASSERT_NE(nullptr, objectStore);
729     DistributedObject *object = objectStore->CreateObject(sessionId);
730     ASSERT_NE(nullptr, object);
731 
732     uint32_t ret = object->PutString("name", "zhangsan");
733     EXPECT_EQ(SUCCESS, ret);
734     Type type;
735     ret = object->GetType("name", type);
736     EXPECT_EQ(SUCCESS, ret);
737     EXPECT_EQ(TYPE_STRING, type);
738 
739     ret = object->PutDouble("salary", SALARY);
740     EXPECT_EQ(SUCCESS, ret);
741     ret = object->GetType("salary", type);
742     EXPECT_EQ(SUCCESS, ret);
743     EXPECT_EQ(TYPE_DOUBLE, type);
744 
745     ret = object->PutBoolean("isTrue", true);
746     EXPECT_EQ(SUCCESS, ret);
747     ret = object->GetType("isTrue", type);
748     EXPECT_EQ(SUCCESS, ret);
749     EXPECT_EQ(TYPE_BOOLEAN, type);
750 
751     ret = objectStore->DeleteObject(sessionId);
752     EXPECT_EQ(SUCCESS, ret);
753 }
754 
755 /**
756  * @tc.name: DistributedObject_GetType_002
757  * @tc.desc: test DistributedObject GetType.
758  * @tc.type: FUNC
759  */
760 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetType_002, TestSize.Level1)
761 {
762     std::string bundleName = "default";
763     std::string sessionId = "123456";
764     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
765     ASSERT_NE(nullptr, objectStore);
766     DistributedObject *object = objectStore->CreateObject(sessionId);
767     ASSERT_NE(nullptr, object);
768 
769     Type type;
770     uint32_t ret = object->GetType("name", type);
771     EXPECT_EQ(DistributedDB::DBStatus::NOT_FOUND, ret);
772     EXPECT_EQ(TYPE_STRING, type);
773 
774     ret = objectStore->DeleteObject(sessionId);
775     EXPECT_EQ(SUCCESS, ret);
776 }
777 
778 /**
779  * @tc.name: DistributedObject_Save_RevokeSave_001
780  * @tc.desc: test DistributedObjectStore Save.
781  * @tc.type: FUNC
782  */
783 HWTEST_F(NativeObjectStoreTest, DistributedObject_Save_RevokeSave_001, TestSize.Level1)
784 {
785     std::string bundleName = "default";
786     std::string sessionId = "123456";
787     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
788     ASSERT_NE(nullptr, objectStore);
789     DistributedObject *object = objectStore->CreateObject(sessionId);
790     ASSERT_NE(nullptr, object);
791 
792 
793     uint32_t ret = object->PutString("name", "zhangsan");
794     EXPECT_EQ(SUCCESS, ret);
795     ret = object->PutDouble("salary", SALARY);
796     EXPECT_EQ(SUCCESS, ret);
797     ret = object->PutBoolean("isTrue", true);
798     EXPECT_EQ(SUCCESS, ret);
799 
800     ret = object->Save("local");
801     EXPECT_EQ(SUCCESS, ret);
802     ret = object->RevokeSave();
803     EXPECT_EQ(SUCCESS, ret);
804 
805     ret = objectStore->DeleteObject(sessionId);
806     EXPECT_EQ(SUCCESS, ret);
807 }
808 
809 /**
810  * @tc.name: DistributedObject_Save_RevokeSave_002
811  * @tc.desc: test DistributedObjectStore Save.
812  * @tc.type: FUNC
813  */
814 HWTEST_F(NativeObjectStoreTest, DistributedObject_Save_RevokeSave_002, TestSize.Level1)
815 {
__anonba25df920302(std::string bundleName, std::string sessionId) 816     auto testSaveAndRevokeSave = [](std::string bundleName, std::string sessionId) {
817         DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
818         ASSERT_NE(nullptr, objectStore);
819         DistributedObject *object = objectStore->CreateObject(sessionId);
820         ASSERT_NE(nullptr, object);
821 
822         uint32_t ret = object->PutString("name", "zhangsan");
823         EXPECT_EQ(SUCCESS, ret);
824         ret = object->PutDouble("salary", SALARY);
825         EXPECT_EQ(SUCCESS, ret);
826         ret = object->PutBoolean("isTrue", true);
827         EXPECT_EQ(SUCCESS, ret);
828 
829         ret = object->Save("local");
830         EXPECT_EQ(SUCCESS, ret);
831         ret = object->RevokeSave();
832         EXPECT_EQ(SUCCESS, ret);
833 
834         ret = objectStore->DeleteObject(sessionId);
835         EXPECT_EQ(SUCCESS, ret);
836     };
837     std::thread t1(testSaveAndRevokeSave, "default1", "session1");
838     std::thread t2(testSaveAndRevokeSave, "default2", "session2");
839     std::thread t3(testSaveAndRevokeSave, "default3", "session3");
840     t1.join();
841     t2.join();
842     t3.join();
843 }
844 
845 /**
846  * @tc.name: DistributedObject_Save_RevokeSave_003
847  * @tc.desc: test DistributedObjectStore Save.
848  * @tc.type: FUNC
849  */
850 HWTEST_F(NativeObjectStoreTest, DistributedObject_Save_RevokeSave_003, TestSize.Level1)
851 {
852     std::string bundleName = "default";
853     std::string sessionId = "123456";
854     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
855     ASSERT_NE(nullptr, objectStore);
856     DistributedObject *object = objectStore->CreateObject(sessionId);
857     ASSERT_NE(nullptr, object);
858 
859     uint32_t ret = object->RevokeSave();
860     EXPECT_EQ(SUCCESS, ret);
861 
862     ret = objectStore->DeleteObject(sessionId);
863     EXPECT_EQ(SUCCESS, ret);
864 }
865 
866 /**
867  * @tc.name: DistributedObject_Open_001
868  * @tc.desc: test ObjectStorageEngine Open, calling Open repeatedly.
869  * @tc.type: FUNC
870  */
871 HWTEST_F(NativeObjectStoreTest, DistributedObject_Open_001, TestSize.Level1)
872 {
873     std::string bundleName = "default";
874     std::string sessionId = "123456";
875     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
876     uint32_t ret = objectStorageEngine->Open(bundleName);
877     EXPECT_EQ(SUCCESS, ret);
878     ret = objectStorageEngine->Open(bundleName);
879     EXPECT_EQ(SUCCESS, ret);
880     ret = objectStorageEngine->CreateTable(sessionId);
881     EXPECT_EQ(SUCCESS, ret);
882     ret = objectStorageEngine->DeleteTable(sessionId);
883     EXPECT_EQ(SUCCESS, ret);
884     delete objectStorageEngine;
885 }
886 
887 /**
888  * @tc.name: DistributedObject_CreateTable_001
889  * @tc.desc: test ObjectStorageEngine CreateTable.
890  * @tc.type: FUNC
891  */
892 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_001, TestSize.Level1)
893 {
894     std::string bundleName = "default";
895     std::string sessionId = "123456";
896     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
897     uint32_t ret = objectStorageEngine->Open(bundleName);
898     EXPECT_EQ(SUCCESS, ret);
899     ret = objectStorageEngine->CreateTable(sessionId);
900     EXPECT_EQ(SUCCESS, ret);
901     ret = objectStorageEngine->DeleteTable(sessionId);
902     EXPECT_EQ(SUCCESS, ret);
903     delete objectStorageEngine;
904 }
905 
906 /**
907  * @tc.name: DistributedObject_CreateTable_002
908  * @tc.desc: test ObjectStorageEngine CreateTable, calling CreateTable() repeatedly.
909  * @tc.type: FUNC
910  */
911 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_002, TestSize.Level1)
912 {
913     std::string bundleName = "default";
914     std::string sessionId = "123456";
915     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
916     uint32_t ret = objectStorageEngine->Open(bundleName);
917     EXPECT_EQ(SUCCESS, ret);
918     ret = objectStorageEngine->CreateTable(sessionId);
919     EXPECT_EQ(SUCCESS, ret);
920     ret = objectStorageEngine->CreateTable(sessionId);
921     EXPECT_NE(SUCCESS, ret);
922     ret = objectStorageEngine->DeleteTable(sessionId);
923     EXPECT_EQ(SUCCESS, ret);
924     delete objectStorageEngine;
925 }
926 
927 /**
928  * @tc.name: DistributedObject_CreateTable_003
929  * @tc.desc: test ObjectStorageEngine CreateTable, calling CreateTable after calling Close().
930  * @tc.type: FUNC
931  */
932 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_003, TestSize.Level1)
933 {
934     std::string bundleName = "default";
935     std::string sessionId = "123456";
936     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
937     uint32_t ret = objectStorageEngine->Open(bundleName);
938     EXPECT_EQ(SUCCESS, ret);
939     ret = objectStorageEngine->Close();
940     EXPECT_EQ(SUCCESS, ret);
941     ret = objectStorageEngine->CreateTable(sessionId);
942     EXPECT_NE(SUCCESS, ret);
943     delete objectStorageEngine;
944 }
945 
946 /**
947  * @tc.name: DistributedObject_GetTable_001
948  * @tc.desc: test ObjectStorageEngine GetTable, not calling Open().
949  * @tc.type: FUNC
950  */
951 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_001, TestSize.Level1)
952 {
953     std::string sessionId = "session01";
954     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
955     std::map<std::string, Value> result = {};
956     uint32_t ret = objectStorageEngine->GetTable(sessionId, result);
957     EXPECT_NE(SUCCESS, ret);
958     delete objectStorageEngine;
959 }
960 
961 /**
962  * @tc.name: DistributedObject_GetTable_002
963  * @tc.desc: test ObjectStorageEngine GetTable, calling Open(),but not calling CreateTable().
964  * @tc.type: FUNC
965  */
966 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_002, TestSize.Level1)
967 {
968     std::string bundleName = "default02";
969     std::string sessionId = "session02";
970     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
971     uint32_t ret = objectStorageEngine->Open(bundleName);
972     EXPECT_EQ(SUCCESS, ret);
973     std::map<std::string, Value> result = {};
974     ret = objectStorageEngine->GetTable(sessionId, result);
975     EXPECT_NE(SUCCESS, ret);
976     delete objectStorageEngine;
977 }
978 
979 /**
980  * @tc.name: DistributedObject_GetTable_003
981  * @tc.desc: test ObjectStorageEngine GetTable, calling Open() and CreateTable(), but not calling UpdateItem().
982  * @tc.type: FUNC
983  */
984 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_003, TestSize.Level1)
985 {
986     std::string bundleName = "default03";
987     std::string sessionId = "session03";
988     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
989     uint32_t ret = objectStorageEngine->Open(bundleName);
990     EXPECT_EQ(SUCCESS, ret);
991     ret = objectStorageEngine->CreateTable(sessionId);
992     EXPECT_EQ(SUCCESS, ret);
993     std::map<std::string, Value> result = {};
994     ret = objectStorageEngine->GetTable(sessionId, result);
995     EXPECT_NE(SUCCESS, ret);
996     ret = objectStorageEngine->DeleteTable(sessionId);
997     EXPECT_EQ(SUCCESS, ret);
998     delete objectStorageEngine;
999 }
1000 
1001 /**
1002  * @tc.name: DistributedObject_GetTable_004
1003  * @tc.desc: test ObjectStorageEngine GetTable.
1004  * @tc.type: FUNC
1005  */
1006 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_004, TestSize.Level1)
1007 {
1008     std::string bundleName = "default04";
1009     std::string sessionId = "session04";
1010     std::vector<uint8_t> value = { 1, 8 };
1011     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
1012     uint32_t ret = objectStorageEngine->Open(bundleName);
1013     EXPECT_EQ(SUCCESS, ret);
1014     ret = objectStorageEngine->CreateTable(sessionId);
1015     EXPECT_EQ(SUCCESS, ret);
1016     ret = objectStorageEngine->UpdateItem(sessionId, "age", value);
1017     EXPECT_EQ(SUCCESS, ret);
1018     std::map<std::string, Value> result = {};
1019     ret = objectStorageEngine->GetTable(sessionId, result);
1020     EXPECT_EQ(SUCCESS, ret);
1021     ret = objectStorageEngine->DeleteTable(sessionId);
1022     EXPECT_EQ(SUCCESS, ret);
1023     delete objectStorageEngine;
1024 }
1025 
1026 /**
1027  * @tc.name: FlatObjectStore_UpdateItems_001
1028  * @tc.desc: test ObjectStorageEngine UpdateItems. input data is empty.
1029  * @tc.type: FUNC
1030  */
1031 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItems_001, TestSize.Level1)
1032 {
1033     std::string bundleName = "default06";
1034     std::string sessionId = "session06";
1035     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
1036     uint32_t ret = objectStorageEngine->Open(bundleName);
1037     EXPECT_EQ(SUCCESS, ret);
1038     ret = objectStorageEngine->CreateTable(sessionId);
1039     EXPECT_EQ(SUCCESS, ret);
1040     std::map<std::string, std::vector<uint8_t>> data = {};
1041     ret = objectStorageEngine->UpdateItems(sessionId, data);
1042     EXPECT_NE(SUCCESS, ret);
1043     delete objectStorageEngine;
1044 }
1045 
1046 /**
1047  * @tc.name: FlatObjectStore_UpdateItems_002
1048  * @tc.desc: test FlatObjectStore UpdateItems.
1049  * @tc.type: FUNC
1050  */
1051 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_UpdateItems_002, TestSize.Level1)
1052 {
1053     std::string bundleName = "default07";
1054     std::string sessionId = "session07";
1055     std::vector<uint8_t> value = { 1, 8 };
1056     ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
1057     uint32_t ret = objectStorageEngine->Open(bundleName);
1058     EXPECT_EQ(SUCCESS, ret);
1059     ret = objectStorageEngine->CreateTable(sessionId);
1060     EXPECT_EQ(SUCCESS, ret);
1061     std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
1062     ret = objectStorageEngine->UpdateItems(sessionId, data);
1063     EXPECT_EQ(SUCCESS, ret);
1064     delete objectStorageEngine;
1065 }
1066 
1067 /**
1068  * @tc.name: DistributedObject_OpenAndClose_001
1069  * @tc.desc: test FlatObjectStorageEngine OpenAndClose and Close when FlatObjectStorageEngine is not open.
1070  * @tc.type: FUNC
1071  */
1072 HWTEST_F(NativeObjectStoreTest, DistributedObject_OpenAndClose_001, TestSize.Level1)
1073 {
1074     std::string bundleName = "default07";
1075     FlatObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
1076     uint32_t ret = objectStorageEngine->Open(bundleName);
1077     EXPECT_EQ(SUCCESS, ret);
1078     ret = objectStorageEngine->Close();
1079     EXPECT_EQ(SUCCESS, ret);
1080     objectStorageEngine->isOpened_ = false;
1081     ret = objectStorageEngine->Close();
1082     EXPECT_EQ(SUCCESS, ret);
1083     delete objectStorageEngine;
1084 }
1085 
1086 /**
1087  * @tc.name: DistributedObject_NotifyChange_001
1088  * @tc.desc: test FlatObjectStorageEngine NotifyChange.
1089  * @tc.type: FUNC
1090  */
1091 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyChange_001, TestSize.Level1)
1092 {
1093     std::string bundleName = "default07";
1094     std::string sessionId = "session07";
1095     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1096     uint32_t ret = storageEngine->Open(bundleName);
1097     ret = storageEngine->CreateTable(sessionId);
1098     EXPECT_EQ(SUCCESS, ret);
1099     std::map<std::string, std::vector<uint8_t>> filteredData;
1100     storageEngine->NotifyChange(sessionId, filteredData);
1101     ret = storageEngine->Close();
1102     EXPECT_EQ(SUCCESS, ret);
1103 }
1104 
1105 /**
1106  * @tc.name: FlatObjectStore_CheckRetrieveCache_001
1107  * @tc.desc: test FlatObjectStore CheckRetrieveCache.
1108  * @tc.type: FUNC
1109  */
1110 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_CheckRetrieveCache_001, TestSize.Level1)
1111 {
1112     std::string sessionId = "session05";
1113     std::string bundleName = "default07";
1114     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1115     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1116     EXPECT_EQ(SUCCESS, ret);
1117     flatObjectStore->CheckRetrieveCache(sessionId);
1118     ret = flatObjectStore->Delete(sessionId);
1119     EXPECT_EQ(SUCCESS, ret);
1120 }
1121 
1122 /**
1123  * @tc.name: FlatObjectStore_Delete_001
1124  * @tc.desc: test FlatObjectStore Delete. wrong sessionId
1125  * @tc.type: FUNC
1126  */
1127 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_Delete_001, TestSize.Level1)
1128 {
1129     std::string sessionId = "session001";
1130     std::string bundleName = "default001";
1131     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1132     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1133     EXPECT_EQ(SUCCESS, ret);
1134     sessionId = "session002";
1135     ret = flatObjectStore->Delete(sessionId);
1136     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1137 }
1138 
1139 /**
1140  * @tc.name: FlatObjectStore_Delete_002
1141  * @tc.desc: test FlatObjectStore Delete. wrong sessionId
1142  * @tc.type: FUNC
1143  */
1144 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_Delete_002, TestSize.Level1)
1145 {
1146     std::string sessionId = "session001";
1147     std::string bundleName = "";
1148     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1149     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1150     EXPECT_EQ(ERR_DB_GETKV_FAIL, ret);
1151 }
1152 
1153 /**
1154  * @tc.name: FlatObjectStore_Watch_001
1155  * @tc.desc: test FlatObjectStore Watch. wrong sessionId
1156  * @tc.type: FUNC
1157  */
1158 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_Watch_001, TestSize.Level1)
1159 {
1160     std::string sessionId = "session002";
1161     std::string bundleName = "default002";
1162     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1163     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1164     EXPECT_EQ(SUCCESS, ret);
1165     sessionId = "session003";
1166     std::shared_ptr<MockFlatObjectWatcher> watcher = std::make_shared<MockFlatObjectWatcher>(sessionId);
1167     ret = flatObjectStore->Watch(sessionId, watcher);
1168     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1169 }
1170 
1171 /**
1172  * @tc.name: FlatObjectStore_UnWatch_001
1173  * @tc.desc: test FlatObjectStore UnWatch. wrong sessionId
1174  * @tc.type: FUNC
1175  */
1176 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_UnWatch_001, TestSize.Level1)
1177 {
1178     std::string sessionId = "session003";
1179     std::string bundleName = "default003";
1180     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1181     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1182     EXPECT_EQ(SUCCESS, ret);
1183     sessionId = "session004";
1184     std::shared_ptr<MockFlatObjectWatcher> watcher = std::make_shared<MockFlatObjectWatcher>(sessionId);
1185     ret = flatObjectStore->UnWatch(sessionId);
1186     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1187 }
1188 
1189 /**
1190  * @tc.name: FlatObjectStore_Save_001
1191  * @tc.desc: test FlatObjectStore Save. wrong sessionId
1192  * @tc.type: FUNC
1193  */
1194 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_Save_001, TestSize.Level1)
1195 {
1196     std::string sessionId = "session004";
1197     std::string bundleName = "default004";
1198     std::string deviceId = "deviceId004";
1199     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1200     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1201     EXPECT_EQ(SUCCESS, ret);
1202     sessionId = "session005";
1203     std::shared_ptr<MockFlatObjectWatcher> watcher = std::make_shared<MockFlatObjectWatcher>(sessionId);
1204     ret = flatObjectStore->Save(sessionId, deviceId);
1205     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1206 }
1207 
1208 /**
1209  * @tc.name: FlatObjectStore_OnComplete_001
1210  * @tc.desc: test FlatObjectStore OnComplete.
1211  * @tc.type: FUNC
1212  */
1213 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_OnComplete_001, TestSize.Level1)
1214 {
1215     std::string bundleName = "default005";
1216     std::string sessionId = "session005";
1217     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1218     uint32_t ret = storageEngine->Open(bundleName);
1219     EXPECT_EQ(SUCCESS, ret);
1220     ret = storageEngine->CreateTable(sessionId);
1221     std::shared_ptr<StatusNotifierImpl> statusWatcher = std::make_shared<StatusNotifierImpl>();
1222     DistributedDB::DBStatus status = DistributedDB::DBStatus::OK;
1223     std::map<std::string, DistributedDB::DBStatus> devices = { { sessionId, status } };
1224     storageEngine->OnComplete(sessionId, devices, statusWatcher);
1225     ret = storageEngine->DeleteTable(sessionId);
1226     EXPECT_EQ(SUCCESS, ret);
1227 }
1228 
1229 /**
1230  * @tc.name: CacheManager_Save_001
1231  * @tc.desc: test CacheManager Save.
1232  * @tc.type: FUNC
1233  */
1234 HWTEST_F(NativeObjectStoreTest, CacheManager_Save_001, TestSize.Level1)
1235 {
1236     std::string bundleName = "";
1237     std::string sessionId = "";
1238     std::string deviceId = "";
1239     std::map<std::string, std::vector<uint8_t>> objectData;
1240     CacheManager cacheManager;
1241     auto ret = cacheManager.Save(bundleName, sessionId, deviceId, objectData);
1242     EXPECT_EQ(OHOS::DistributedKv::Status::INVALID_ARGUMENT, ret);
1243 }
1244 
1245 /**
1246  * @tc.name: CacheManager_RevokeSave_001
1247  * @tc.desc: test CacheManager RevokeSave.
1248  * @tc.type: FUNC
1249  */
1250 HWTEST_F(NativeObjectStoreTest, CacheManager_RevokeSave_001, TestSize.Level1)
1251 {
1252     std::string bundleName = "";
1253     std::string sessionId = "";
1254     CacheManager cacheManager;
1255     auto ret = cacheManager.RevokeSave(bundleName, sessionId);
1256     EXPECT_EQ(SUCCESS, ret);
1257 }
1258 
1259 /**
1260  * @tc.name: CacheManager_ResumeObject_001
1261  * @tc.desc: test CacheManager ResumeObject.
1262  * @tc.type: FUNC
1263  */
1264 HWTEST_F(NativeObjectStoreTest, CacheManager_ResumeObject_001, TestSize.Level1)
1265 {
1266     std::string bundleName = "";
1267     std::string sessionId = "";
1268     CacheManager cacheManager;
1269     std::function<void(const std::map<std::string, std::vector<uint8_t>> &data, bool allReady)> callback =
__anonba25df920402(const std::map<std::string, std::vector<uint8_t>> &data, bool allReady) 1270         [](const std::map<std::string, std::vector<uint8_t>> &data, bool allReady) {};
1271     auto ret = cacheManager.ResumeObject(bundleName, sessionId, callback);
1272     EXPECT_EQ(OHOS::DistributedKv::Status::KEY_NOT_FOUND, ret);
1273 }
1274 
1275 /**
1276  * @tc.name: CacheManager_SubscribeDataChange_001
1277  * @tc.desc: test CacheManager SubscribeDataChange.
1278  * @tc.type: FUNC
1279  */
1280 HWTEST_F(NativeObjectStoreTest, CacheManager_SubscribeDataChange_001, TestSize.Level1)
1281 {
1282     std::string bundleName = "";
1283     std::string sessionId = "";
1284     CacheManager cacheManager;
1285     std::function<void(const std::map<std::string, std::vector<uint8_t>> &data, bool allReady)> callback =
__anonba25df920502(const std::map<std::string, std::vector<uint8_t>> &data, bool allReady) 1286         [](const std::map<std::string, std::vector<uint8_t>> &data, bool allReady) {};
1287     auto ret = cacheManager.SubscribeDataChange(bundleName, sessionId, callback);
1288     EXPECT_EQ(SUCCESS, ret);
1289 }
1290 
1291 /**
1292  * @tc.name: CacheManager_UnregisterDataChange_001
1293  * @tc.desc: test CacheManager UnregisterDataChange.
1294  * @tc.type: FUNC
1295  */
1296 HWTEST_F(NativeObjectStoreTest, CacheManager_UnregisterDataChange_001, TestSize.Level1)
1297 {
1298     std::string bundleName = "";
1299     std::string sessionId = "";
1300     CacheManager cacheManager;
1301     auto ret = cacheManager.UnregisterDataChange(bundleName, sessionId);
1302     EXPECT_EQ(SUCCESS, ret);
1303 }
1304 
1305 /**
1306  * @tc.name: CacheManager_IsContinue_001
1307  * @tc.desc: test CacheManager IsContinue.
1308  * @tc.type: FUNC
1309  */
1310 HWTEST_F(NativeObjectStoreTest, CacheManager_IsContinue_001, TestSize.Level1)
1311 {
1312     auto cacheManager = std::make_shared<CacheManager>();
1313     auto result = cacheManager->IsContinue();
1314     EXPECT_FALSE(result);
1315 }
1316 
1317 /**
1318  * @tc.name: DistributedObject_NotifyCachedStatus_001
1319  * @tc.desc: test DistributedObjectStore NotifyCachedStatus.
1320  * @tc.type: FUNC
1321  */
1322 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyCachedStatus_001, TestSize.Level1)
1323 {
1324     std::string bundleName = "default";
1325     std::string sessionId = "123456";
1326     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
1327     ASSERT_NE(nullptr, objectStore);
1328     uint32_t status = 0;
1329     DistributedObject *object = objectStore->CreateObject(sessionId, status);
1330     ASSERT_NE(nullptr, object);
1331     EXPECT_EQ(SUCCESS, status);
1332     objectStore->NotifyCachedStatus(sessionId);
1333     uint32_t ret = objectStore->DeleteObject(sessionId);
1334     EXPECT_EQ(SUCCESS, ret);
1335 }
1336 
1337 /**
1338  * @tc.name: DistributedObject_UnWatch_001
1339  * @tc.desc: test DistributedObjectStore UnWatch, DistributedObject is nullptr.
1340  * @tc.type: FUNC
1341  */
1342 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnWatch_001, TestSize.Level1)
1343 {
1344     std::string bundleName = "default";
1345     std::string sessionId = "123456";
1346     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
1347     ASSERT_NE(nullptr, objectStore);
1348     DistributedObject *object = objectStore->CreateObject(sessionId);
1349     ASSERT_NE(nullptr, object);
1350     uint32_t ret = objectStore->UnWatch(nullptr);
1351     EXPECT_EQ(ERR_NULL_OBJECT, ret);
1352     ret = objectStore->DeleteObject(sessionId);
1353     EXPECT_EQ(SUCCESS, ret);
1354 }
1355 
1356 /**
1357  * @tc.name: DistributedObject_CreateTable_004
1358  * @tc.desc: test FlatObjectStorageEngine CreateTable, sessionId is empty.
1359  * @tc.type: FUNC
1360  */
1361 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_004, TestSize.Level1)
1362 {
1363     std::string bundleName = "default";
1364     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1365     storageEngine->Open(bundleName);
1366     uint32_t ret = storageEngine->CreateTable("");
1367     EXPECT_EQ(ERR_DB_GETKV_FAIL, ret);
1368 }
1369 
1370 /**
1371  * @tc.name: DistributedObject_GetTable_005
1372  * @tc.desc: test FlatObjectStorageEngine GetTable, storageEngine is not open or sessionId is empty.
1373  * @tc.type: FUNC
1374  */
1375 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_005, TestSize.Level1)
1376 {
1377     std::string bundleName = "default";
1378     std::string sessionId = "123456";
1379     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1380     storageEngine->Open(bundleName);
1381     storageEngine->CreateTable(sessionId);
1382     std::map<std::string, Value> tableResult;
1383     storageEngine->isOpened_ = false;
1384     uint32_t ret = storageEngine->GetTable(sessionId, tableResult);
1385     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1386     storageEngine->isOpened_ = true;
1387     ret = storageEngine->GetTable("", tableResult);
1388     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1389     storageEngine->DeleteTable(sessionId);
1390 }
1391 
1392 /**
1393  * @tc.name: DistributedObject_UpdateItem_003
1394  * @tc.desc: test FlatObjectStorageEngine UpdateItem, storageEngine is not open or error sessionid.
1395  * @tc.type: FUNC
1396  */
1397 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItem_001, TestSize.Level1)
1398 {
1399     std::string bundleName = "default";
1400     std::string sessionId = "123456";
1401     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1402     storageEngine->Open(bundleName);
1403     storageEngine->CreateTable(sessionId);
1404     storageEngine->isOpened_ = false;
1405     std::vector<uint8_t> value = { 1, 8 };
1406     uint32_t ret = storageEngine->UpdateItem(sessionId, "age", value);
1407     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1408     storageEngine->isOpened_ = true;
1409     ret = storageEngine->UpdateItem("123", "age", value);
1410     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1411     storageEngine->DeleteTable(sessionId);
1412 }
1413 
1414 /**
1415  * @tc.name: DistributedObject_UpdateItems_004
1416  * @tc.desc: test FlatObjectStorageEngine UpdateItems, storageEngine is not open or error sessionid.
1417  * @tc.type: FUNC
1418  */
1419 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItems_003, TestSize.Level1)
1420 {
1421     std::string bundleName = "default";
1422     std::string sessionId = "123456";
1423     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1424     storageEngine->Open(bundleName);
1425     storageEngine->CreateTable(sessionId);
1426     storageEngine->isOpened_ = false;
1427     std::vector<uint8_t> value = { 1, 8 };
1428     std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
1429     uint32_t ret = storageEngine->UpdateItems(sessionId, data);
1430     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1431 
1432     storageEngine->isOpened_ = true;
1433     ret = storageEngine->UpdateItems("123", data);
1434     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1435     storageEngine->DeleteTable(sessionId);
1436 }
1437 
1438 /**
1439  * @tc.name: DistributedObject_DeleteTable_001
1440  * @tc.desc: test FlatObjectStorageEngine DeleteTable, storageEngine is not open or error sessionid.
1441  * @tc.type: FUNC
1442  */
1443 HWTEST_F(NativeObjectStoreTest, DistributedObject_DeleteTable_001, TestSize.Level1)
1444 {
1445     std::string bundleName = "default";
1446     std::string sessionId = "123456";
1447     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1448     storageEngine->Open(bundleName);
1449     storageEngine->CreateTable(sessionId);
1450     storageEngine->isOpened_ = false;
1451     uint32_t ret = storageEngine->DeleteTable(sessionId);
1452     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1453     storageEngine->isOpened_ = true;
1454     ret = storageEngine->DeleteTable("123");
1455     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1456     storageEngine->DeleteTable(sessionId);
1457 }
1458 
1459 /**
1460  * @tc.name: DistributedObject_GetItem_002
1461  * @tc.desc: test FlatObjectStorageEngine GetItem, storageEngine is not open or error key.
1462  * @tc.type: FUNC
1463  */
1464 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItem_002, TestSize.Level1)
1465 {
1466     std::string bundleName = "default";
1467     std::string sessionId = "123456";
1468     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1469     storageEngine->Open(bundleName);
1470     storageEngine->CreateTable(sessionId);
1471     storageEngine->isOpened_ = false;
1472     std::vector<uint8_t> value = { 1, 8 };
1473     uint32_t ret = storageEngine->GetItem(sessionId, "", value);
1474     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1475     storageEngine->Open(bundleName);
1476     ret = storageEngine->DeleteTable(sessionId);
1477     EXPECT_EQ(SUCCESS, ret);
1478 }
1479 
1480 /**
1481  * @tc.name: DistributedObject_GetItem_003
1482  * @tc.desc: test FlatObjectStorageEngine GetItem, error key.
1483  * @tc.type: FUNC
1484  */
1485 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItem_003, TestSize.Level1)
1486 {
1487     std::string sessionId = "123456";
1488     std::string bundleName = "default";
1489     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1490     std::vector<uint8_t> value = { 1, 8 };
1491     storageEngine->Open(bundleName);
1492     uint32_t ret = storageEngine->GetItem(sessionId, "123", value);
1493     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1494 }
1495 
1496 /**
1497  * @tc.name: DistributedObject_RegisterObserver_001
1498  * @tc.desc: test FlatObjectStorageEngine RegisterObserver, storageEngine is not open.
1499  * @tc.type: FUNC
1500  */
1501 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_001, TestSize.Level1)
1502 {
1503     std::string sessionId = "123456";
1504     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1505     storageEngine->isOpened_ = false;
1506     auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
1507     uint32_t ret = storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
1508     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1509 }
1510 
1511 /**
1512  * @tc.name: DistributedObject_RegisterObserver_002
1513  * @tc.desc: test FlatObjectStorageEngine RegisterObserver, empty sessionId.
1514  * @tc.type: FUNC
1515  */
1516 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_002, TestSize.Level1)
1517 {
1518     std::string bundleName = "default";
1519     std::string sessionId = "123456";
1520     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1521     storageEngine->Open(bundleName);
1522     storageEngine->CreateTable(sessionId);
1523     auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
1524     uint32_t ret = storageEngine->RegisterObserver("", tableWatcherPtr);
1525     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1526     ret = storageEngine->DeleteTable(sessionId);
1527     EXPECT_EQ(SUCCESS, ret);
1528 }
1529 
1530 /**
1531  * @tc.name: DistributedObject_RegisterObserver_003
1532  * @tc.desc: test FlatObjectStorageEngine RegisterObserver, repeat RegisterObserver.
1533  * @tc.type: FUNC
1534  */
1535 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_003, TestSize.Level1)
1536 {
1537     std::string bundleName = "default";
1538     std::string sessionId = "123456";
1539     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1540     storageEngine->Open(bundleName);
1541     storageEngine->CreateTable(sessionId);
1542     auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
1543     // RegisterObserver observer already exist
1544     uint32_t ret = storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
1545     EXPECT_EQ(SUCCESS, ret);
1546     storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
1547     EXPECT_EQ(SUCCESS, ret);
1548     ret = storageEngine->DeleteTable(sessionId);
1549     EXPECT_EQ(SUCCESS, ret);
1550 }
1551 
1552 /**
1553  * @tc.name: DistributedObject_UnRegisterObserver_001
1554  * @tc.desc: test FlatObjectStorageEngine UnRegisterObserver, storageEngine is not open.
1555  * @tc.type: FUNC
1556  */
1557 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnRegisterObserver_001, TestSize.Level1)
1558 {
1559     std::string sessionId = "123456";
1560     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1561     storageEngine->isOpened_ = false;
1562     uint32_t ret = storageEngine->UnRegisterObserver(sessionId);
1563     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1564 }
1565 
1566 /**
1567  * @tc.name: DistributedObject_UnRegisterObserver_001
1568  * @tc.desc: test FlatObjectStorageEngine UnRegisterObserver, empty sessionId.
1569  * @tc.type: FUNC
1570  */
1571 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnRegisterObserver_002, TestSize.Level1)
1572 {
1573     std::string bundleName = "default";
1574     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1575     storageEngine->Open(bundleName);
1576     uint32_t ret = storageEngine->UnRegisterObserver("");
1577     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1578 }
1579 
1580 /**
1581  * @tc.name: DistributedObject_SetStatusNotifier_002
1582  * @tc.desc: test FlatObjectStorageEngine SetStatusNotifier.
1583  * @tc.type: FUNC
1584  */
1585 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetStatusNotifier_002, TestSize.Level1)
1586 {
1587     std::string bundleName = "default";
1588     std::string sessionId = "123456";
1589     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1590     storageEngine->Open(bundleName);
1591     storageEngine->CreateTable(sessionId);
1592     auto statusNotifier = std::make_shared<StatusNotifierImpl>();
1593     uint32_t ret = storageEngine->SetStatusNotifier(statusNotifier);
1594     EXPECT_EQ(SUCCESS, ret);
1595     ret = storageEngine->DeleteTable(sessionId);
1596     EXPECT_EQ(SUCCESS, ret);
1597 }
1598 
1599 /**
1600  * @tc.name: DistributedObject_SetStatusNotifier_003
1601  * @tc.desc: test FlatObjectStorageEngine SetStatusNotifier, storageEngine is not open.
1602  * @tc.type: FUNC
1603  */
1604 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetStatusNotifier_003, TestSize.Level1)
1605 {
1606     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1607     auto statusNotifier = std::make_shared<StatusNotifierImpl>();
1608     storageEngine->isOpened_ = false;
1609     uint32_t ret = storageEngine->SetStatusNotifier(statusNotifier);
1610     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1611 }
1612 
1613 /**
1614  * @tc.name: DistributedObject_GetItems_001
1615  * @tc.desc: test FlatObjectStorageEngine GetItems, storageEngine is not open or error key.
1616  * @tc.type: FUNC
1617  */
1618 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItems_001, TestSize.Level1)
1619 {
1620     std::string bundleName = "default";
1621     std::string sessionId = "123456";
1622     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1623     storageEngine->Open(bundleName);
1624     storageEngine->CreateTable(sessionId);
1625     storageEngine->isOpened_ = false;
1626     std::vector<uint8_t> value = { 1, 8 };
1627     std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
1628     uint32_t ret = storageEngine->GetItems(sessionId, data);
1629     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1630     storageEngine->Open(bundleName);
1631     ret = storageEngine->GetItems("", data);
1632     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1633     ret = storageEngine->DeleteTable(sessionId);
1634     EXPECT_EQ(SUCCESS, ret);
1635 }
1636 
1637 /**
1638  * @tc.name: DistributedObject_NotifyStatus_001
1639  * @tc.desc: test FlatObjectStorageEngine NotifyStatus.
1640  * @tc.type: FUNC
1641  */
1642 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyStatus_001, TestSize.Level1)
1643 {
1644     std::string bundleName = "default07";
1645     std::string sessionId = "123456";
1646     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1647     uint32_t ret = storageEngine->Open(bundleName);
1648     storageEngine->NotifyStatus(sessionId, "local", "restored");
1649     ret = storageEngine->Close();
1650     EXPECT_EQ(SUCCESS, ret);
1651 }
1652 
1653 /**
1654  * @tc.name: DistributedObject_SyncAllData_002
1655  * @tc.desc: test FlatObjectStorageEngine SyncAllData.
1656  * @tc.type: FUNC
1657  */
1658 HWTEST_F(NativeObjectStoreTest, DistributedObject_SyncAllData_002, TestSize.Level1)
1659 {
1660     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
__anonba25df920602(const std::map<std::string, DistributedDB::DBStatus> &) 1661     auto onComplete = [](const std::map<std::string, DistributedDB::DBStatus> &) {};
1662     std::vector<std::string> deviceIds = { "deviceIds" };
1663     uint32_t ret = storageEngine->SyncAllData("", deviceIds, onComplete);
1664     EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1665 }
1666 
1667 /**
1668  * @tc.name: DistributedObject_UpdateItem_002
1669  * @tc.desc: test FlatObjectStorageEngine UpdateItem, error status.
1670  * @tc.type: FUNC
1671  */
1672 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItem_002, TestSize.Level1)
1673 {
1674     std::string bundleName = "default";
1675     std::string sessionId = "123456";
1676     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1677     storageEngine->Open(bundleName);
1678     storageEngine->CreateTable(sessionId);
1679     std::vector<uint8_t> value = { 1, 2 };
1680     uint32_t ret = storageEngine->UpdateItem(sessionId, std::string(1025, 't'), value);
1681     EXPECT_EQ(ERR_CLOSE_STORAGE, ret);
1682     ret = storageEngine->DeleteTable(sessionId);
1683     EXPECT_EQ(SUCCESS, ret);
1684 }
1685 
1686 /**
1687  * @tc.name: DistributedObjectStore_SetProgressNotifier_001
1688  * @tc.desc: test DistributedObjectStore SetProgressNotifier.
1689  * @tc.type: FUNC
1690  */
1691 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_SetProgressNotifier_001, TestSize.Level1)
1692 {
1693     std::string bundleName = "default";
1694     std::string sessionId = "123456";
1695     DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
1696     ASSERT_NE(nullptr, objectStore);
1697     DistributedObject *object = objectStore->CreateObject(sessionId);
1698     ASSERT_NE(nullptr, object);
1699     objectStore->NotifyProgressStatus(sessionId);
1700     auto progressNotifierPtr = std::shared_ptr<ProgressNotifier>();
1701     auto ret = objectStore->SetProgressNotifier(progressNotifierPtr);
1702     EXPECT_EQ(ret, 0);
1703 }
1704 
1705 /**
1706  * @tc.name: DistributedObject_SetProgressNotifier_002
1707  * @tc.desc: test FlatObjectStorageEngine SetProgressNotifier.
1708  * @tc.type: FUNC
1709  */
1710 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetProgressNotifier_002, TestSize.Level1)
1711 {
1712     std::string bundleName = "default";
1713     std::string sessionId = "123456";
1714     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1715     storageEngine->isOpened_ = true;
1716     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1717     uint32_t ret = storageEngine->SetProgressNotifier(progressNotifier);
1718     EXPECT_EQ(SUCCESS, ret);
1719 }
1720 
1721 /**
1722  * @tc.name: DistributedObject_SetProgressNotifier_003
1723  * @tc.desc: test FlatObjectStorageEngine SetProgressNotifier, storageEngine is not open.
1724  * @tc.type: FUNC
1725  */
1726 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetProgressNotifier_003, TestSize.Level1)
1727 {
1728     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1729     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1730     storageEngine->isOpened_ = false;
1731     uint32_t ret = storageEngine->SetProgressNotifier(progressNotifier);
1732     EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1733 }
1734 
1735 /**
1736  * @tc.name: DistributedObject_NotifyProgress_001
1737  * @tc.desc: test FlatObjectStorageEngine NotifyProgress.
1738  * @tc.type: FUNC
1739  */
1740 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyProgress_001, TestSize.Level1)
1741 {
1742     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1743     std::string sessionId = "123456";
1744     int32_t progress = 100;
1745     auto ret = storageEngine->NotifyProgress(sessionId, progress);
1746     EXPECT_EQ(ret, false);
1747     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1748     storageEngine->isOpened_ = true;
1749     ret = storageEngine->SetProgressNotifier(progressNotifier);
1750     ret = storageEngine->NotifyProgress(sessionId, progress);
1751     EXPECT_EQ(ret, true);
1752 }
1753 
1754 /**
1755  * @tc.name: CacheManager_SubscribeProgressChange_001
1756  * @tc.desc: test CacheManager SubscribeProgressChange.
1757  * @tc.type: FUNC
1758  */
1759 HWTEST_F(NativeObjectStoreTest, CacheManager_SubscribeProgressChange_001, TestSize.Level1)
1760 {
1761     std::string bundleName = "";
1762     std::string sessionId = "";
1763     CacheManager cacheManager;
__anonba25df920702(int32_t progress) 1764     std::function<void(int32_t progress)> callback = [sessionId, this](int32_t progress) {};
1765     auto ret = cacheManager.SubscribeProgressChange(bundleName, sessionId, callback);
1766     EXPECT_EQ(SUCCESS, ret);
1767 }
1768 
1769 /**
1770  * @tc.name: CacheManager_UnregisterProgressChange_001
1771  * @tc.desc: test CacheManager UnregisterProgressChange.
1772  * @tc.type: FUNC
1773  */
1774 HWTEST_F(NativeObjectStoreTest, CacheManager_UnregisterProgressChange_001, TestSize.Level1)
1775 {
1776     std::string bundleName = "";
1777     std::string sessionId = "";
1778     CacheManager cacheManager;
1779     auto ret = cacheManager.UnregisterProgressChange(bundleName, sessionId);
1780     EXPECT_EQ(SUCCESS, ret);
1781 }
1782 
1783 /**
1784  * @tc.name: FlatObjectStore_CheckProgressCache_001
1785  * @tc.desc: test FlatObjectStore CheckProgressCache.
1786  * @tc.type: FUNC
1787  */
1788 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_CheckProgressCache_001, TestSize.Level1)
1789 {
1790     std::string sessionId = "session001";
1791     std::string bundleName = "default001";
1792     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1793     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1794     EXPECT_EQ(SUCCESS, ret);
1795     flatObjectStore->CheckProgressCache(sessionId);
1796     flatObjectStore->SubscribeProgressChange(sessionId);
1797     flatObjectStore->CheckProgressCache(sessionId);
1798     int32_t progress = 100;
1799     flatObjectStore->progressInfoCache_[sessionId] = progress;
1800     flatObjectStore->CheckProgressCache(sessionId);
1801     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1802     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1803     storageEngine->isOpened_ = true;
1804     ret = storageEngine->SetProgressNotifier(progressNotifier);
1805     ret = storageEngine->NotifyProgress(sessionId, progress);
1806     EXPECT_EQ(ret, true);
1807     flatObjectStore->CheckProgressCache(sessionId);
1808     ret = flatObjectStore->Delete(sessionId);
1809     EXPECT_EQ(SUCCESS, ret);
1810 }
1811 
1812 /**
1813  * @tc.name: FlatObjectStore_SubscribeProgressChange_001
1814  * @tc.desc: test FlatObjectStore SubscribeProgressChange.
1815  * @tc.type: FUNC
1816  */
1817 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_SubscribeProgressChange_001, TestSize.Level1)
1818 {
1819     std::string sessionId = "session001";
1820     std::string bundleName = "default001";
1821     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1822     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1823     EXPECT_EQ(SUCCESS, ret);
1824     flatObjectStore->SubscribeProgressChange(sessionId);
1825     ret = flatObjectStore->Delete(sessionId);
1826     EXPECT_EQ(SUCCESS, ret);
1827 }
1828 
1829 /**
1830  * @tc.name: FlatObjectStore_SetProgressNotifier_001
1831  * @tc.desc: test FlatObjectStore SetProgressNotifier.
1832  * @tc.type: FUNC
1833  */
1834 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_SetProgressNotifier_001, TestSize.Level1)
1835 {
1836     std::string sessionId = "session001";
1837     std::string bundleName = "default001";
1838     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1839     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1840     EXPECT_EQ(SUCCESS, ret);
1841     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1842     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1843     flatObjectStore->storageEngine_->isOpened_ = true;
1844     flatObjectStore->SetProgressNotifier(progressNotifier);
1845     flatObjectStore->storageEngine_->isOpened_ = false;
1846     flatObjectStore->SetProgressNotifier(progressNotifier);
1847     ret = flatObjectStore->Delete(sessionId);
1848     EXPECT_EQ(SUCCESS, ret);
1849 }
1850 
1851 /**
1852  * @tc.name: FlatObjectStore_SetProgressNotifier_002
1853  * @tc.desc: test FlatObjectStore SetProgressNotifier,storageEngine is not open.
1854  * @tc.type: FUNC
1855  */
1856 HWTEST_F(NativeObjectStoreTest, FlatObjectStore_SetProgressNotifier_002, TestSize.Level1)
1857 {
1858     std::string sessionId = "session001";
1859     std::string bundleName = "default001";
1860     std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
1861     uint32_t ret = flatObjectStore->CreateObject(sessionId);
1862     EXPECT_EQ(SUCCESS, ret);
1863     auto progressNotifier = std::make_shared<ProgressNotifierImpl>();
1864     std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1865     auto notifier = std::shared_ptr<ProgressNotifier>();
1866     std::shared_ptr<ProgressNotifierProxy> progressNotifierProxy = std::make_shared<ProgressNotifierProxy>(notifier);
1867     int32_t progress = 100;
1868     progressNotifierProxy->OnChanged(sessionId, progress);
1869     progressNotifierProxy->notifier = notifier;
1870     progressNotifierProxy->OnChanged(sessionId, progress);
1871     storageEngine->isOpened_ = false;
1872     flatObjectStore->SetProgressNotifier(progressNotifier);
1873     EXPECT_EQ(SUCCESS, ret);
1874     ret = flatObjectStore->Delete(sessionId);
1875     EXPECT_EQ(SUCCESS, ret);
1876 }
1877 } // namespace
1878