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
18 #include <string>
19 #include <thread>
20
21 #include "auto_launch_export.h"
22 #include "flat_object_store.h"
23 #include "flat_object_storage_engine.h"
24 #include "distributed_object.h"
25 #include "distributed_objectstore.h"
26 #include "distributed_objectstore_impl.h"
27 #include "hilog/log.h"
28 #include "kv_store_delegate_manager.h"
29 #include "object_storage_engine.h"
30 #include "objectstore_errors.h"
31 #include "store_observer.h"
32 #include "ipc_skeleton.h"
33 #include "accesstoken_kit.h"
34 #include "nativetoken_kit.h"
35 #include "token_setproc.h"
36
37 using namespace testing::ext;
38 using namespace OHOS::ObjectStore;
39 using namespace OHOS::Security::AccessToken;
40 using namespace OHOS::HiviewDFX;
41 namespace {
42 constexpr static double SALARY = 100.5;
43 constexpr HiLogLabel LABEL = { LOG_CORE, 0, "DistributedTest" };
44 class TableWatcherImpl : public TableWatcher {
45 public:
TableWatcherImpl(const std::string & sessionId)46 explicit TableWatcherImpl(const std::string &sessionId) : TableWatcher(sessionId) {}
47 void OnChanged(const std::string &sessionid, const std::vector<std::string> &changedData) override;
48 virtual ~TableWatcherImpl();
49 };
50
~TableWatcherImpl()51 TableWatcherImpl::~TableWatcherImpl() {}
OnChanged(const std::string & sessionid,const std::vector<std::string> & changedData)52 void TableWatcherImpl::OnChanged(const std::string &sessionid, const std::vector<std::string> &changedData) {}
53
54 class StatusNotifierImpl : public StatusWatcher {
55 public:
56 void OnChanged(
57 const std::string &sessionId, const std::string &networkId, const std::string &onlineStatus) override;
58 virtual ~StatusNotifierImpl();
59 };
~StatusNotifierImpl()60 StatusNotifierImpl::~StatusNotifierImpl() {}
61
OnChanged(const std::string & sessionId,const std::string & networkId,const std::string & onlineStatus)62 void StatusNotifierImpl::OnChanged(const std::string &sessionId,
63 const std::string &networkId,
64 const std::string &onlineStatus)
65 {
66 }
TestSetSessionId(std::string bundleName,std::string sessionId)67 static void TestSetSessionId(std::string bundleName, std::string sessionId)
68 {
69 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
70 EXPECT_NE(nullptr, objectStore);
71 DistributedObject *object = objectStore->CreateObject(sessionId);
72 EXPECT_NE(nullptr, object);
73
74 uint32_t ret = objectStore->DeleteObject(sessionId);
75 EXPECT_EQ(SUCCESS, ret);
76 }
77
TestSaveAndRevokeSave(std::string bundleName,std::string sessionId)78 static void TestSaveAndRevokeSave(std::string bundleName, std::string sessionId)
79 {
80 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
81 EXPECT_NE(nullptr, objectStore);
82 DistributedObject *object = objectStore->CreateObject(sessionId);
83 EXPECT_NE(nullptr, object);
84
85 uint32_t ret = object->PutString("name", "zhangsan");
86 EXPECT_EQ(SUCCESS, ret);
87 ret = object->PutDouble("salary", SALARY);
88 EXPECT_EQ(SUCCESS, ret);
89 ret = object->PutBoolean("isTrue", true);
90 EXPECT_EQ(SUCCESS, ret);
91
92 ret = object->Save("local");
93 EXPECT_EQ(SUCCESS, ret);
94 ret = object->RevokeSave();
95 EXPECT_EQ(SUCCESS, ret);
96
97 ret = objectStore->DeleteObject(sessionId);
98 EXPECT_EQ(SUCCESS, ret);
99 }
100
GrantPermissionNative()101 void GrantPermissionNative()
102 {
103 const char **perms = new const char *[2];
104 perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC";
105 perms[1] = "ohos.permission.DISTRIBUTED_SOFTBUS_CENTER";
106 TokenInfoParams infoInstance = {
107 .dcapsNum = 0,
108 .permsNum = 2,
109 .aclsNum = 0,
110 .dcaps = nullptr,
111 .perms = perms,
112 .acls = nullptr,
113 .processName = "distributed_object",
114 .aplStr = "system_basic",
115 };
116 uint64_t tokenId = GetAccessTokenId(&infoInstance);
117 SetSelfTokenID(tokenId);
118 AccessTokenKit::ReloadNativeTokenInfo();
119 }
120
121 class NativeObjectStoreTest : public testing::Test {
122 public:
123 static void SetUpTestCase(void);
124 static void TearDownTestCase(void);
125 void SetUp();
126 void TearDown();
127 };
128
SetUpTestCase(void)129 void NativeObjectStoreTest::SetUpTestCase(void)
130 {
131 // input testsuit setup step,setup invoked before all testcases
132 }
133
TearDownTestCase(void)134 void NativeObjectStoreTest::TearDownTestCase(void)
135 {
136 // input testsuit teardown step,teardown invoked after all testcases
137 }
138
SetUp(void)139 void NativeObjectStoreTest::SetUp(void)
140 {
141 // input testcase setup step,setup invoked before each testcases
142 GrantPermissionNative();
143 }
144
TearDown(void)145 void NativeObjectStoreTest::TearDown(void)
146 {
147 // input testcase teardown step,teardown invoked after each testcases
148 }
149
150 /**
151 * @tc.name: DistributedObjectStore_Create_Destroy_001
152 * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
153 * @tc.type: FUNC
154 */
155 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_001, TestSize.Level1)
156 {
157 std::string bundleName = "default";
158 std::string sessionId = "123456";
159 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
160 EXPECT_NE(nullptr, objectStore);
161
162 DistributedObject *object = objectStore->CreateObject(sessionId);
163 EXPECT_NE(nullptr, object);
164
165 uint32_t ret = objectStore->DeleteObject(sessionId);
166 EXPECT_EQ(SUCCESS, ret);
167 }
168
169 /**
170 * @tc.name: DistributedObjectStore_Create_Destroy_002
171 * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
172 * @tc.type: FUNC
173 */
174 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_002, TestSize.Level1)
175 {
176 std::string sessionId = "123456";
177
178 auto objectStore = new DistributedObjectStoreImpl(nullptr);
179 DistributedObject *object = objectStore->CreateObject(sessionId);
180 EXPECT_EQ(nullptr, object);
181 delete objectStore;
182 }
183
184 /**
185 * @tc.name: DistributedObjectStore_Create_Destroy_003
186 * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
187 * @tc.type: FUNC
188 */
189 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_003, TestSize.Level1)
190 {
191 std::string bundleName = "default";
192 std::string sessionId = "123456";
193 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
194 EXPECT_NE(nullptr, objectStore);
195
196 DistributedObject *object = objectStore->CreateObject(sessionId);
197 EXPECT_NE(nullptr, object);
198
199 DistributedObject *object2 = objectStore->CreateObject(sessionId);
200 EXPECT_EQ(nullptr, object2);
201
202 uint32_t ret = objectStore->DeleteObject(sessionId);
203 EXPECT_EQ(SUCCESS, ret);
204 }
205
206 /**
207 * @tc.name: DistributedObjectStore_Create_Destroy_004
208 * @tc.desc: test Create DistributedObject and Destroy DistrbutedObject
209 * @tc.type: FUNC
210 */
211 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Create_Destroy_004, TestSize.Level1)
212 {
213 std::string bundleName = "default";
214 std::string sessionId = "123456";
215 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
216 EXPECT_NE(nullptr, objectStore);
217
218 uint32_t status = -1;
219 DistributedObject *object = objectStore->CreateObject(sessionId, status);
220 EXPECT_NE(nullptr, object);
221 EXPECT_EQ(SUCCESS, status);
222
223 uint32_t ret = objectStore->DeleteObject(sessionId);
224 EXPECT_EQ(SUCCESS, ret);
225 }
226
227 /**
228 * @tc.name: DistributedObjectStore_Get_001
229 * @tc.desc: test DistributedObjectStore Get.
230 * @tc.type: FUNC
231 */
232 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Get_001, TestSize.Level1)
233 {
234 std::string bundleName = "default";
235 std::string sessionId = "123456";
236 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
237 EXPECT_NE(nullptr, objectStore);
238
239 DistributedObject *object = objectStore->CreateObject(sessionId);
240 EXPECT_NE(nullptr, object);
241
242 DistributedObject *object2 = nullptr;
243 uint32_t ret = objectStore->Get(sessionId, &object2);
244 EXPECT_EQ(SUCCESS, ret);
245 EXPECT_EQ(object, object2);
246
247 ret = objectStore->DeleteObject(sessionId);
248 EXPECT_EQ(SUCCESS, ret);
249 }
250
251 /**
252 * @tc.name: DistributedObjectStore_Watch_UnWatch_001
253 * @tc.desc: test DistributedObjectStore Watch and UnWatch.
254 * @tc.type: FUNC
255 */
256 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_Watch_UnWatch_001, TestSize.Level1)
257 {
258 std::string bundleName = "default";
259 std::string sessionId = "123456";
260 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
261 EXPECT_NE(nullptr, objectStore);
262
263 DistributedObject *object = objectStore->CreateObject(sessionId);
264 EXPECT_NE(nullptr, object);
265
266 auto watcherPtr = std::shared_ptr<ObjectWatcher>();
267 uint32_t ret = objectStore->Watch(object, watcherPtr);
268 EXPECT_EQ(SUCCESS, ret);
269
270 ret = objectStore->UnWatch(object);
271 EXPECT_EQ(SUCCESS, ret);
272
273 ret = objectStore->DeleteObject(sessionId);
274 EXPECT_EQ(SUCCESS, ret);
275 }
276
277 /**
278 * @tc.name: DistributedObjectStore_SetStatusNotifier_001
279 * @tc.desc: test DistributedObjectStore SetStatusNotifier.
280 * @tc.type: FUNC
281 */
282 HWTEST_F(NativeObjectStoreTest, DistributedObjectStore_SetStatusNotifier_001, TestSize.Level1)
283 {
284 std::string bundleName = "default";
285 std::string sessionId = "123456";
286 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
287 EXPECT_NE(nullptr, objectStore);
288 DistributedObject *object = objectStore->CreateObject(sessionId);
289 EXPECT_NE(nullptr, object);
290
291 auto notifierPtr = std::shared_ptr<StatusNotifier>();
292 uint32_t ret = objectStore->SetStatusNotifier(notifierPtr);
293 EXPECT_EQ(ret, 0);
294
295 ret = objectStore->DeleteObject(sessionId);
296 EXPECT_EQ(ret, 0);
297 }
298
299 /**
300 * @tc.name: DistributedObject_Double_001
301 * @tc.desc: test DistributedObjectStore PutDouble.
302 * @tc.type: FUNC
303 */
304 HWTEST_F(NativeObjectStoreTest, DistributedObject_Double_001, TestSize.Level1)
305 {
306 std::string bundleName = "default";
307 std::string sessionId = "123456";
308 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
309 EXPECT_NE(nullptr, objectStore);
310 DistributedObject *object = objectStore->CreateObject(sessionId);
311 EXPECT_NE(nullptr, object);
312
313 uint32_t ret = object->PutDouble("salary", SALARY);
314 EXPECT_EQ(ret, 0);
315
316 double value = 0.0;
317 object->GetDouble("salary", value);
318 EXPECT_EQ(ret, 0);
319 EXPECT_EQ(value, SALARY);
320
321 ret = objectStore->DeleteObject(sessionId);
322 EXPECT_EQ(ret, 0);
323 }
324
325 /**
326 * @tc.name: DistributedObject_Boolean_001
327 * @tc.desc: test DistributedObjectStore PutBoolean.
328 * @tc.type: FUNC
329 */
330 HWTEST_F(NativeObjectStoreTest, DistributedObject_Boolean_001, TestSize.Level1)
331 {
332 std::string bundleName = "default";
333 std::string sessionId = "123456";
334 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
335 EXPECT_NE(nullptr, objectStore);
336 DistributedObject *object = objectStore->CreateObject(sessionId);
337 EXPECT_NE(nullptr, object);
338
339 uint32_t ret = object->PutBoolean("isTrue", true);
340 EXPECT_EQ(SUCCESS, ret);
341
342 bool value = false;
343 ret = object->GetBoolean("isTrue", value);
344 EXPECT_EQ(SUCCESS, ret);
345 EXPECT_EQ(true, value);
346
347 ret = objectStore->DeleteObject(sessionId);
348 EXPECT_EQ(SUCCESS, ret);
349 }
350
351 /**
352 * @tc.name: DistributedObject_String_001
353 * @tc.desc: test DistributedObjectStore String.
354 * @tc.type: FUNC
355 */
356 HWTEST_F(NativeObjectStoreTest, DistributedObject_String_001, TestSize.Level1)
357 {
358 std::string bundleName = "default";
359 std::string sessionId = "123456";
360 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
361 EXPECT_NE(nullptr, objectStore);
362 DistributedObject *object = objectStore->CreateObject(sessionId);
363 EXPECT_NE(nullptr, object);
364
365 uint32_t ret = object->PutString("name", "zhangsan");
366 EXPECT_EQ(SUCCESS, ret);
367
368 std::string value = "";
369 ret = object->GetString("name", value);
370 EXPECT_EQ(SUCCESS, ret);
371 EXPECT_EQ(value, "zhangsan");
372
373 ret = objectStore->DeleteObject(sessionId);
374 EXPECT_EQ(SUCCESS, ret);
375 }
376
377 /**
378 * @tc.name: DistributedObject_GetSessionId_001
379 * @tc.desc: test DistributedObjectStore GetSessionId.
380 * @tc.type: FUNC
381 */
382 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetSessionId_001, TestSize.Level1)
383 {
384 std::string bundleName = "default";
385 std::string sessionId = "123456";
386 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
387 EXPECT_NE(nullptr, objectStore);
388 DistributedObject *object = objectStore->CreateObject(sessionId);
389 EXPECT_NE(nullptr, object);
390 std::string getSessionId = object->GetSessionId();
391 EXPECT_EQ(sessionId, getSessionId);
392 uint32_t ret = objectStore->DeleteObject(sessionId);
393 EXPECT_EQ(SUCCESS, ret);
394 }
395
396 /**
397 * @tc.name: DistributedObject_TestSetSessionId_001
398 * @tc.desc: test DistributedObjectStore TestSetSessionId.
399 * @tc.type: FUNC
400 */
401 HWTEST_F(NativeObjectStoreTest, DistributedObject_TestSetSessionId_001, TestSize.Level1)
402 {
403 std::thread t1(TestSetSessionId, "default1", "session1");
404 std::thread t2(TestSetSessionId, "default2", "session2");
405 std::thread t3(TestSetSessionId, "default3", "session3");
406 t1.join();
407 t2.join();
408 t3.join();
409 }
410
411 /**
412 * @tc.name: DistributedObject_GetType_001
413 * @tc.desc: test DistributedObject GetType.
414 * @tc.type: FUNC
415 */
416 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetType_001, TestSize.Level1)
417 {
418 std::string bundleName = "default";
419 std::string sessionId = "123456";
420 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
421 EXPECT_NE(nullptr, objectStore);
422 DistributedObject *object = objectStore->CreateObject(sessionId);
423 EXPECT_NE(nullptr, object);
424
425 uint32_t ret = object->PutString("name", "zhangsan");
426 EXPECT_EQ(SUCCESS, ret);
427 Type type;
428 ret = object->GetType("name", type);
429 EXPECT_EQ(SUCCESS, ret);
430 EXPECT_EQ(TYPE_STRING, type);
431
432 ret = object->PutDouble("salary", SALARY);
433 EXPECT_EQ(SUCCESS, ret);
434 ret = object->GetType("salary", type);
435 EXPECT_EQ(SUCCESS, ret);
436 EXPECT_EQ(TYPE_DOUBLE, type);
437
438 ret = object->PutBoolean("isTrue", true);
439 EXPECT_EQ(SUCCESS, ret);
440 ret = object->GetType("isTrue", type);
441 EXPECT_EQ(SUCCESS, ret);
442 EXPECT_EQ(TYPE_BOOLEAN, type);
443
444 ret = objectStore->DeleteObject(sessionId);
445 EXPECT_EQ(SUCCESS, ret);
446 }
447
448 /**
449 * @tc.name: DistributedObject_Save_RevokeSave_001
450 * @tc.desc: test DistributedObjectStore Save.
451 * @tc.type: FUNC
452 */
453 HWTEST_F(NativeObjectStoreTest, DistributedObject_Save_RevokeSave_001, TestSize.Level1)
454 {
455 std::string bundleName = "default";
456 std::string sessionId = "123456";
457 TestSaveAndRevokeSave(bundleName, sessionId);
458 }
459
460 /**
461 * @tc.name: DistributedObject_Save_RevokeSave_002
462 * @tc.desc: test DistributedObjectStore Save.
463 * @tc.type: FUNC
464 */
465 HWTEST_F(NativeObjectStoreTest, DistributedObject_Save_RevokeSave_002, TestSize.Level1)
466 {
467 std::thread t1(TestSaveAndRevokeSave, "default1", "session1");
468 std::thread t2(TestSaveAndRevokeSave, "default2", "session2");
469 std::thread t3(TestSaveAndRevokeSave, "default3", "session3");
470 t1.join();
471 t2.join();
472 t3.join();
473 }
474
475 /**
476 * @tc.name: DistributedObject_Open_001
477 * @tc.desc: test ObjectStorageEngine Open, calling Open repeatedly.
478 * @tc.type: FUNC
479 */
480 HWTEST_F(NativeObjectStoreTest, DistributedObject_Open_001, TestSize.Level1)
481 {
482 std::string bundleName = "default";
483 std::string sessionId = "123456";
484 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
485 uint32_t ret = objectStorageEngine->Open(bundleName);
486 EXPECT_EQ(SUCCESS, ret);
487 ret = objectStorageEngine->Open(bundleName);
488 EXPECT_EQ(SUCCESS, ret);
489 ret = objectStorageEngine->CreateTable(sessionId);
490 EXPECT_EQ(SUCCESS, ret);
491 ret = objectStorageEngine->DeleteTable(sessionId);
492 EXPECT_EQ(SUCCESS, ret);
493 delete objectStorageEngine;
494 }
495
496 /**
497 * @tc.name: DistributedObject_CreateTable_001
498 * @tc.desc: test ObjectStorageEngine CreateTable.
499 * @tc.type: FUNC
500 */
501 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_001, TestSize.Level1)
502 {
503 std::string bundleName = "default";
504 std::string sessionId = "123456";
505 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
506 uint32_t ret = objectStorageEngine->Open(bundleName);
507 EXPECT_EQ(SUCCESS, ret);
508 ret = objectStorageEngine->CreateTable(sessionId);
509 EXPECT_EQ(SUCCESS, ret);
510 ret = objectStorageEngine->DeleteTable(sessionId);
511 EXPECT_EQ(SUCCESS, ret);
512 delete objectStorageEngine;
513 }
514
515 /**
516 * @tc.name: DistributedObject_CreateTable_002
517 * @tc.desc: test ObjectStorageEngine CreateTable, calling CreateTable() repeatedly.
518 * @tc.type: FUNC
519 */
520 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_002, TestSize.Level1)
521 {
522 std::string bundleName = "default";
523 std::string sessionId = "123456";
524 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
525 uint32_t ret = objectStorageEngine->Open(bundleName);
526 EXPECT_EQ(SUCCESS, ret);
527 ret = objectStorageEngine->CreateTable(sessionId);
528 EXPECT_EQ(SUCCESS, ret);
529 ret = objectStorageEngine->CreateTable(sessionId);
530 EXPECT_NE(SUCCESS, ret);
531 ret = objectStorageEngine->DeleteTable(sessionId);
532 EXPECT_EQ(SUCCESS, ret);
533 delete objectStorageEngine;
534 }
535
536 /**
537 * @tc.name: DistributedObject_CreateTable_003
538 * @tc.desc: test ObjectStorageEngine CreateTable, calling CreateTable after calling Close().
539 * @tc.type: FUNC
540 */
541 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_003, TestSize.Level1)
542 {
543 std::string bundleName = "default";
544 std::string sessionId = "123456";
545 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
546 uint32_t ret = objectStorageEngine->Open(bundleName);
547 EXPECT_EQ(SUCCESS, ret);
548 ret = objectStorageEngine->Close();
549 EXPECT_EQ(SUCCESS, ret);
550 ret = objectStorageEngine->CreateTable(sessionId);
551 EXPECT_NE(SUCCESS, ret);
552 delete objectStorageEngine;
553 }
554
555 /**
556 * @tc.name: DistributedObject_GetTable_001
557 * @tc.desc: test ObjectStorageEngine GetTable, not calling Open().
558 * @tc.type: FUNC
559 */
560 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_001, TestSize.Level1)
561 {
562 std::string sessionId = "session01";
563 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
564 std::map<std::string, Value> result = {};
565 uint32_t ret = objectStorageEngine->GetTable(sessionId, result);
566 EXPECT_NE(SUCCESS, ret);
567 delete objectStorageEngine;
568 }
569
570 /**
571 * @tc.name: DistributedObject_GetTable_002
572 * @tc.desc: test ObjectStorageEngine GetTable, calling Open(),but not calling CreateTable().
573 * @tc.type: FUNC
574 */
575 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_002, TestSize.Level1)
576 {
577 std::string bundleName = "default02";
578 std::string sessionId = "session02";
579 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
580 uint32_t ret = objectStorageEngine->Open(bundleName);
581 EXPECT_EQ(SUCCESS, ret);
582 std::map<std::string, Value> result = {};
583 ret = objectStorageEngine->GetTable(sessionId, result);
584 EXPECT_NE(SUCCESS, ret);
585 delete objectStorageEngine;
586 }
587
588 /**
589 * @tc.name: DistributedObject_GetTable_003
590 * @tc.desc: test ObjectStorageEngine GetTable, calling Open() and CreateTable(), but not calling UpdateItem().
591 * @tc.type: FUNC
592 */
593 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_003, TestSize.Level1)
594 {
595 std::string bundleName = "default03";
596 std::string sessionId = "session03";
597 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
598 uint32_t ret = objectStorageEngine->Open(bundleName);
599 EXPECT_EQ(SUCCESS, ret);
600 ret = objectStorageEngine->CreateTable(sessionId);
601 EXPECT_EQ(SUCCESS, ret);
602 std::map<std::string, Value> result = {};
603 ret = objectStorageEngine->GetTable(sessionId, result);
604 EXPECT_NE(SUCCESS, ret);
605 ret = objectStorageEngine->DeleteTable(sessionId);
606 EXPECT_EQ(SUCCESS, ret);
607 delete objectStorageEngine;
608 }
609
610 /**
611 * @tc.name: DistributedObject_GetTable_004
612 * @tc.desc: test ObjectStorageEngine GetTable.
613 * @tc.type: FUNC
614 */
615 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_004, TestSize.Level1)
616 {
617 std::string bundleName = "default04";
618 std::string sessionId = "session04";
619 std::vector<uint8_t> value = { 1, 8 };
620 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
621 uint32_t ret = objectStorageEngine->Open(bundleName);
622 EXPECT_EQ(SUCCESS, ret);
623 ret = objectStorageEngine->CreateTable(sessionId);
624 EXPECT_EQ(SUCCESS, ret);
625 ret = objectStorageEngine->UpdateItem(sessionId, "age", value);
626 EXPECT_EQ(SUCCESS, ret);
627 std::map<std::string, Value> result = {};
628 ret = objectStorageEngine->GetTable(sessionId, result);
629 EXPECT_EQ(SUCCESS, ret);
630 ret = objectStorageEngine->DeleteTable(sessionId);
631 EXPECT_EQ(SUCCESS, ret);
632 delete objectStorageEngine;
633 }
634
635 /**
636 * @tc.name: FlatObjectStore_FilterData_001
637 * @tc.desc: test FlatObjectStore FilterData.
638 * @tc.type: FUNC
639 */
640 HWTEST_F(NativeObjectStoreTest, DistributedObject_FilterData_001, TestSize.Level1)
641 {
642 std::string bundleName = "default05";
643 std::string sessionId = "session05";
644 std::vector<uint8_t> value = { 1, 8 };
645 FlatObjectStore *flatObjectStore = new FlatObjectStore(bundleName);
646 uint32_t ret = flatObjectStore->CreateObject(sessionId);
647 EXPECT_EQ(SUCCESS, ret);
648 ret = flatObjectStore->Put(sessionId, "phone", value);
649 EXPECT_EQ(SUCCESS, ret);
650 ret = flatObjectStore->Put(sessionId, "age", value);
651 EXPECT_EQ(SUCCESS, ret);
652 std::map<std::string, std::vector<uint8_t>> data = { { "age", value }, { "age", value } };
653 auto dataSize = data.size();
654 flatObjectStore->FilterData(sessionId, data);
655 EXPECT_GT(dataSize, data.size());
656 ret = flatObjectStore->Delete(sessionId);
657 EXPECT_EQ(SUCCESS, ret);
658 delete flatObjectStore;
659 }
660
661 /**
662 * @tc.name: FlatObjectStore_UpdateItems_001
663 * @tc.desc: test ObjectStorageEngine UpdateItems. input data is empty.
664 * @tc.type: FUNC
665 */
666 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItems_001, TestSize.Level1)
667 {
668 std::string bundleName = "default06";
669 std::string sessionId = "session06";
670 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
671 uint32_t ret = objectStorageEngine->Open(bundleName);
672 EXPECT_EQ(SUCCESS, ret);
673 ret = objectStorageEngine->CreateTable(sessionId);
674 EXPECT_EQ(SUCCESS, ret);
675 std::map<std::string, std::vector<uint8_t>> data = {};
676 ret = objectStorageEngine->UpdateItems(sessionId, data);
677 EXPECT_NE(SUCCESS, ret);
678 delete objectStorageEngine;
679 }
680
681 /**
682 * @tc.name: FlatObjectStore_UpdateItems_002
683 * @tc.desc: test FlatObjectStore FilterData.
684 * @tc.type: FUNC
685 */
686 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItems_002, TestSize.Level1)
687 {
688 std::string bundleName = "default07";
689 std::string sessionId = "session07";
690 std::vector<uint8_t> value = { 1, 8 };
691 ObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
692 uint32_t ret = objectStorageEngine->Open(bundleName);
693 EXPECT_EQ(SUCCESS, ret);
694 ret = objectStorageEngine->CreateTable(sessionId);
695 EXPECT_EQ(SUCCESS, ret);
696 std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
697 ret = objectStorageEngine->UpdateItems(sessionId, data);
698 EXPECT_EQ(SUCCESS, ret);
699 delete objectStorageEngine;
700 }
701
702 /**
703 * @tc.name: DistributedObject_OpenAndClose_001
704 * @tc.desc: test FlatObjectStorageEngine OpenAndClose and Close when FlatObjectStorageEngine is not open.
705 * @tc.type: FUNC
706 */
707 HWTEST_F(NativeObjectStoreTest, DistributedObject_OpenAndClose_001, TestSize.Level1)
708 {
709 std::string bundleName = "default07";
710 FlatObjectStorageEngine *objectStorageEngine = new FlatObjectStorageEngine();
711 uint32_t ret = objectStorageEngine->Open(bundleName);
712 EXPECT_EQ(SUCCESS, ret);
713 ret = objectStorageEngine->Close();
714 EXPECT_EQ(SUCCESS, ret);
715 objectStorageEngine->isOpened_ = false;
716 ret = objectStorageEngine->Close();
717 EXPECT_EQ(SUCCESS, ret);
718 delete objectStorageEngine;
719 }
720
721 /**
722 * @tc.name: DistributedObject_NotifyChange_001
723 * @tc.desc: test FlatObjectStorageEngine NotifyChange.
724 * @tc.type: FUNC
725 */
726 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyChange_001, TestSize.Level1)
727 {
728 std::string bundleName = "default07";
729 std::string sessionId = "session07";
730 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
731 uint32_t ret = storageEngine->Open(bundleName);
732 ret = storageEngine->CreateTable(sessionId);
733 EXPECT_EQ(SUCCESS, ret);
734 std::map<std::string, std::vector<uint8_t>> filteredData;
735 storageEngine->NotifyChange(sessionId, filteredData);
736 ret = storageEngine->Close();
737 EXPECT_EQ(SUCCESS, ret);
738 }
739
740 /**
741 * @tc.name: DistributedObject_CheckRetrieveCache_001
742 * @tc.desc: test FlatObjectStore CheckRetrieveCache.
743 * @tc.type: FUNC
744 */
745 HWTEST_F(NativeObjectStoreTest, DistributedObject_CheckRetrieveCache_001, TestSize.Level1)
746 {
747 std::string sessionId = "session05";
748 std::string bundleName = "default07";
749 std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
750 uint32_t ret = flatObjectStore->CreateObject(sessionId);
751 EXPECT_EQ(SUCCESS, ret);
752 flatObjectStore->CheckRetrieveCache(sessionId);
753 ret = flatObjectStore->Delete(sessionId);
754 EXPECT_EQ(SUCCESS, ret);
755 }
756
757 /**
758 * @tc.name: DistributedObject_SyncAllData_001
759 * @tc.desc: test FlatObjectStore SyncAllData.
760 * @tc.type: FUNC
761 */
762 HWTEST_F(NativeObjectStoreTest, DistributedObject_SyncAllData_001, TestSize.Level1)
763 {
764 std::string sessionId = "session258";
765 std::string bundleName = "default07";
766 std::shared_ptr<FlatObjectStore> flatObjectStore = std::make_shared<FlatObjectStore>(bundleName);
767 uint32_t ret = flatObjectStore->CreateObject(sessionId);
768 EXPECT_EQ(SUCCESS, ret);
__anon2dca90710202(const std::map<std::string, DistributedDB::DBStatus> &devices) 769 auto onComplete = [sessionId](const std::map<std::string, DistributedDB::DBStatus> &devices) {
770 for (auto item : devices) {
771 HiLog::Info(LABEL, "%{public}s pull data result %{public}d in device %{public}s", sessionId.c_str(),
772 item.second, (item.first).c_str());
773 }
774 };
775 ret = flatObjectStore->SyncAllData(sessionId, onComplete);
776 EXPECT_EQ(ERR_SINGLE_DEVICE, ret);
777 ret = flatObjectStore->SyncAllData("", onComplete);
778 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
779 ret = flatObjectStore->Delete(sessionId);
780 EXPECT_EQ(SUCCESS, ret);
781 }
782
783 /**
784 * @tc.name: DistributedObject_NotifyCachedStatus_001
785 * @tc.desc: test DistributedObjectStore NotifyCachedStatus.
786 * @tc.type: FUNC
787 */
788 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyCachedStatus_001, TestSize.Level1)
789 {
790 std::string bundleName = "default";
791 std::string sessionId = "123456";
792 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
793 EXPECT_NE(nullptr, objectStore);
794 uint32_t status = 0;
795 DistributedObject *object = objectStore->CreateObject(sessionId, status);
796 EXPECT_NE(nullptr, object);
797 EXPECT_EQ(SUCCESS, status);
798 objectStore->NotifyCachedStatus(sessionId);
799 uint32_t ret = objectStore->DeleteObject(sessionId);
800 EXPECT_EQ(SUCCESS, ret);
801 }
802
803 /**
804 * @tc.name: DistributedObject_UnWatch_001
805 * @tc.desc: test DistributedObjectStore UnWatch, DistributedObject is nullptr.
806 * @tc.type: FUNC
807 */
808 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnWatch_001, TestSize.Level1)
809 {
810 std::string bundleName = "default";
811 std::string sessionId = "123456";
812 DistributedObjectStore *objectStore = DistributedObjectStore::GetInstance(bundleName);
813 EXPECT_NE(nullptr, objectStore);
814 DistributedObject *object = objectStore->CreateObject(sessionId);
815 EXPECT_NE(nullptr, object);
816 uint32_t ret = objectStore->UnWatch(nullptr);
817 EXPECT_EQ(ERR_NULL_OBJECT, ret);
818 ret = objectStore->DeleteObject(sessionId);
819 EXPECT_EQ(SUCCESS, ret);
820 }
821
822 /**
823 * @tc.name: DistributedObject_OnComplete_001
824 * @tc.desc: test FlatObjectStore OnComplete.
825 * @tc.type: FUNC
826 */
827 HWTEST_F(NativeObjectStoreTest, DistributedObject_OnComplete_001, TestSize.Level1)
828 {
829 std::string bundleName = "default";
830 std::string sessionId = "123456";
831 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
832 uint32_t ret = storageEngine->Open(bundleName);
833 EXPECT_EQ(SUCCESS, ret);
834 ret = storageEngine->CreateTable(sessionId);
835 std::shared_ptr<StatusNotifierImpl> statusWatcher = std::make_shared<StatusNotifierImpl>();
836 DistributedDB::DBStatus status = DistributedDB::DBStatus::OK;
837 std::map<std::string, DistributedDB::DBStatus> devices = { { sessionId, status } };
838 storageEngine->OnComplete(sessionId, devices, statusWatcher);
839 ret = storageEngine->DeleteTable(sessionId);
840 EXPECT_EQ(SUCCESS, ret);
841 }
842
843 /**
844 * @tc.name: DistributedObject_CreateTable_004
845 * @tc.desc: test FlatObjectStorageEngine CreateTable, sessionId is empty.
846 * @tc.type: FUNC
847 */
848 HWTEST_F(NativeObjectStoreTest, DistributedObject_CreateTable_004, TestSize.Level1)
849 {
850 std::string bundleName = "default";
851 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
852 storageEngine->Open(bundleName);
853 uint32_t ret = storageEngine->CreateTable("");
854 EXPECT_EQ(ERR_DB_GETKV_FAIL, ret);
855 }
856
857 /**
858 * @tc.name: DistributedObject_GetTable_005
859 * @tc.desc: test FlatObjectStorageEngine GetTable, storageEngine is not open or sessionId is empty.
860 * @tc.type: FUNC
861 */
862 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetTable_005, TestSize.Level1)
863 {
864 std::string bundleName = "default";
865 std::string sessionId = "123456";
866 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
867 storageEngine->Open(bundleName);
868 storageEngine->CreateTable(sessionId);
869 std::map<std::string, Value> tableResult;
870 storageEngine->isOpened_ = false;
871 uint32_t ret = storageEngine->GetTable(sessionId, tableResult);
872 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
873 storageEngine->isOpened_ = true;
874 ret = storageEngine->GetTable("", tableResult);
875 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
876 storageEngine->DeleteTable(sessionId);
877 }
878
879 /**
880 * @tc.name: DistributedObject_UpdateItem_003
881 * @tc.desc: test FlatObjectStorageEngine UpdateItem, storageEngine is not open or error sessionid.
882 * @tc.type: FUNC
883 */
884 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItem_001, TestSize.Level1)
885 {
886 std::string bundleName = "default";
887 std::string sessionId = "123456";
888 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
889 storageEngine->Open(bundleName);
890 storageEngine->CreateTable(sessionId);
891 storageEngine->isOpened_ = false;
892 std::vector<uint8_t> value = { 1, 8 };
893 uint32_t ret = storageEngine->UpdateItem(sessionId, "age", value);
894 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
895 storageEngine->isOpened_ = true;
896 ret = storageEngine->UpdateItem("123", "age", value);
897 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
898 storageEngine->DeleteTable(sessionId);
899 }
900
901 /**
902 * @tc.name: DistributedObject_UpdateItems_004
903 * @tc.desc: test FlatObjectStorageEngine UpdateItems, storageEngine is not open or error sessionid.
904 * @tc.type: FUNC
905 */
906 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItems_003, TestSize.Level1)
907 {
908 std::string bundleName = "default";
909 std::string sessionId = "123456";
910 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
911 storageEngine->Open(bundleName);
912 storageEngine->CreateTable(sessionId);
913 storageEngine->isOpened_ = false;
914 std::vector<uint8_t> value = { 1, 8 };
915 std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
916 uint32_t ret = storageEngine->UpdateItems(sessionId, data);
917 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
918
919 storageEngine->isOpened_ = true;
920 ret = storageEngine->UpdateItems("123", data);
921 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
922 storageEngine->DeleteTable(sessionId);
923 }
924
925 /**
926 * @tc.name: DistributedObject_DeleteTable_001
927 * @tc.desc: test FlatObjectStorageEngine DeleteTable, storageEngine is not open or error sessionid.
928 * @tc.type: FUNC
929 */
930 HWTEST_F(NativeObjectStoreTest, DistributedObject_DeleteTable_001, TestSize.Level1)
931 {
932 std::string bundleName = "default";
933 std::string sessionId = "123456";
934 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
935 storageEngine->Open(bundleName);
936 storageEngine->CreateTable(sessionId);
937 storageEngine->isOpened_ = false;
938 uint32_t ret = storageEngine->DeleteTable(sessionId);
939 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
940 storageEngine->isOpened_ = true;
941 ret = storageEngine->DeleteTable("123");
942 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
943 storageEngine->DeleteTable(sessionId);
944 }
945
946 /**
947 * @tc.name: DistributedObject_GetItem_002
948 * @tc.desc: test FlatObjectStorageEngine GetItem, storageEngine is not open or error key.
949 * @tc.type: FUNC
950 */
951 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItem_002, TestSize.Level1)
952 {
953 std::string bundleName = "default";
954 std::string sessionId = "123456";
955 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
956 storageEngine->Open(bundleName);
957 storageEngine->CreateTable(sessionId);
958 storageEngine->isOpened_ = false;
959 std::vector<uint8_t> value = { 1, 8 };
960 uint32_t ret = storageEngine->GetItem(sessionId, "", value);
961 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
962 storageEngine->Open(bundleName);
963 ret = storageEngine->DeleteTable(sessionId);
964 EXPECT_EQ(SUCCESS, ret);
965 }
966
967 /**
968 * @tc.name: DistributedObject_GetItem_003
969 * @tc.desc: test FlatObjectStorageEngine GetItem, error key.
970 * @tc.type: FUNC
971 */
972 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItem_003, TestSize.Level1)
973 {
974 std::string sessionId = "123456";
975 std::string bundleName = "default";
976 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
977 std::vector<uint8_t> value = { 1, 8 };
978 storageEngine->Open(bundleName);
979 uint32_t ret = storageEngine->GetItem(sessionId, "123", value);
980 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
981 }
982
983 /**
984 * @tc.name: DistributedObject_RegisterObserver_001
985 * @tc.desc: test FlatObjectStorageEngine RegisterObserver, storageEngine is not open.
986 * @tc.type: FUNC
987 */
988 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_001, TestSize.Level1)
989 {
990 std::string sessionId = "123456";
991 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
992 storageEngine->isOpened_ = false;
993 auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
994 uint32_t ret = storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
995 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
996 }
997
998 /**
999 * @tc.name: DistributedObject_RegisterObserver_002
1000 * @tc.desc: test FlatObjectStorageEngine RegisterObserver, empty sessionId.
1001 * @tc.type: FUNC
1002 */
1003 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_002, TestSize.Level1)
1004 {
1005 std::string bundleName = "default";
1006 std::string sessionId = "123456";
1007 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1008 storageEngine->Open(bundleName);
1009 storageEngine->CreateTable(sessionId);
1010 auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
1011 uint32_t ret = storageEngine->RegisterObserver("", tableWatcherPtr);
1012 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1013 ret = storageEngine->DeleteTable(sessionId);
1014 EXPECT_EQ(SUCCESS, ret);
1015 }
1016
1017 /**
1018 * @tc.name: DistributedObject_RegisterObserver_003
1019 * @tc.desc: test FlatObjectStorageEngine RegisterObserver, repeat RegisterObserver.
1020 * @tc.type: FUNC
1021 */
1022 HWTEST_F(NativeObjectStoreTest, DistributedObject_RegisterObserver_003, TestSize.Level1)
1023 {
1024 std::string bundleName = "default";
1025 std::string sessionId = "123456";
1026 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1027 storageEngine->Open(bundleName);
1028 storageEngine->CreateTable(sessionId);
1029 auto tableWatcherPtr = std::make_shared<TableWatcherImpl>(sessionId);
1030 // RegisterObserver observer already exist
1031 uint32_t ret = storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
1032 EXPECT_EQ(SUCCESS, ret);
1033 storageEngine->RegisterObserver(sessionId, tableWatcherPtr);
1034 EXPECT_EQ(SUCCESS, ret);
1035 ret = storageEngine->DeleteTable(sessionId);
1036 EXPECT_EQ(SUCCESS, ret);
1037 }
1038
1039 /**
1040 * @tc.name: DistributedObject_UnRegisterObserver_001
1041 * @tc.desc: test FlatObjectStorageEngine UnRegisterObserver, storageEngine is not open.
1042 * @tc.type: FUNC
1043 */
1044 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnRegisterObserver_001, TestSize.Level1)
1045 {
1046 std::string sessionId = "123456";
1047 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1048 storageEngine->isOpened_ = false;
1049 uint32_t ret = storageEngine->UnRegisterObserver(sessionId);
1050 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1051 }
1052
1053 /**
1054 * @tc.name: DistributedObject_UnRegisterObserver_001
1055 * @tc.desc: test FlatObjectStorageEngine UnRegisterObserver, empty sessionId.
1056 * @tc.type: FUNC
1057 */
1058 HWTEST_F(NativeObjectStoreTest, DistributedObject_UnRegisterObserver_002, TestSize.Level1)
1059 {
1060 std::string bundleName = "default";
1061 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1062 storageEngine->Open(bundleName);
1063 uint32_t ret = storageEngine->UnRegisterObserver("");
1064 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1065 }
1066
1067 /**
1068 * @tc.name: DistributedObject_SetStatusNotifier_002
1069 * @tc.desc: test FlatObjectStorageEngine SetStatusNotifier.
1070 * @tc.type: FUNC
1071 */
1072 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetStatusNotifier_002, TestSize.Level1)
1073 {
1074 std::string bundleName = "default";
1075 std::string sessionId = "123456";
1076 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1077 storageEngine->Open(bundleName);
1078 storageEngine->CreateTable(sessionId);
1079 auto statusNotifier = std::make_shared<StatusNotifierImpl>();
1080 uint32_t ret = storageEngine->SetStatusNotifier(statusNotifier);
1081 EXPECT_EQ(SUCCESS, ret);
1082 ret = storageEngine->DeleteTable(sessionId);
1083 EXPECT_EQ(SUCCESS, ret);
1084 }
1085
1086 /**
1087 * @tc.name: DistributedObject_SetStatusNotifier_003
1088 * @tc.desc: test FlatObjectStorageEngine SetStatusNotifier, storageEngine is not open.
1089 * @tc.type: FUNC
1090 */
1091 HWTEST_F(NativeObjectStoreTest, DistributedObject_SetStatusNotifier_003, TestSize.Level1)
1092 {
1093 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1094 auto statusNotifier = std::make_shared<StatusNotifierImpl>();
1095 storageEngine->isOpened_ = false;
1096 uint32_t ret = storageEngine->SetStatusNotifier(statusNotifier);
1097 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1098 }
1099
1100 /**
1101 * @tc.name: DistributedObject_GetItems_001
1102 * @tc.desc: test FlatObjectStorageEngine GetItems, storageEngine is not open or error key.
1103 * @tc.type: FUNC
1104 */
1105 HWTEST_F(NativeObjectStoreTest, DistributedObject_GetItems_001, TestSize.Level1)
1106 {
1107 std::string bundleName = "default";
1108 std::string sessionId = "123456";
1109 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1110 storageEngine->Open(bundleName);
1111 storageEngine->CreateTable(sessionId);
1112 storageEngine->isOpened_ = false;
1113 std::vector<uint8_t> value = { 1, 8 };
1114 std::map<std::string, std::vector<uint8_t>> data = { { "age", value } };
1115 uint32_t ret = storageEngine->GetItems(sessionId, data);
1116 EXPECT_EQ(ERR_DB_NOT_INIT, ret);
1117 storageEngine->Open(bundleName);
1118 ret = storageEngine->GetItems("", data);
1119 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1120 ret = storageEngine->DeleteTable(sessionId);
1121 EXPECT_EQ(SUCCESS, ret);
1122 }
1123
1124 /**
1125 * @tc.name: DistributedObject_NotifyStatus_001
1126 * @tc.desc: test FlatObjectStorageEngine NotifyStatus.
1127 * @tc.type: FUNC
1128 */
1129 HWTEST_F(NativeObjectStoreTest, DistributedObject_NotifyStatus_001, TestSize.Level1)
1130 {
1131 std::string bundleName = "default07";
1132 std::string sessionId = "123456";
1133 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1134 uint32_t ret = storageEngine->Open(bundleName);
1135 storageEngine->NotifyStatus(sessionId, "local", "restored");
1136 ret = storageEngine->Close();
1137 EXPECT_EQ(SUCCESS, ret);
1138 }
1139
1140 /**
1141 * @tc.name: DistributedObject_SyncAllData_002
1142 * @tc.desc: test FlatObjectStorageEngine SyncAllData.
1143 * @tc.type: FUNC
1144 */
1145 HWTEST_F(NativeObjectStoreTest, DistributedObject_SyncAllData_002, TestSize.Level1)
1146 {
1147 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
__anon2dca90710302(const std::map<std::string, DistributedDB::DBStatus> &) 1148 auto onComplete = [](const std::map<std::string, DistributedDB::DBStatus> &) {};
1149 std::vector<std::string> deviceIds = { "deviceIds" };
1150 uint32_t ret = storageEngine->SyncAllData("", deviceIds, onComplete);
1151 EXPECT_EQ(ERR_DB_NOT_EXIST, ret);
1152 }
1153
1154 /**
1155 * @tc.name: DistributedObject_UpdateItem_002
1156 * @tc.desc: test FlatObjectStorageEngine UpdateItem, error status.
1157 * @tc.type: FUNC
1158 */
1159 HWTEST_F(NativeObjectStoreTest, DistributedObject_UpdateItem_002, TestSize.Level1)
1160 {
1161 std::string bundleName = "default";
1162 std::string sessionId = "123456";
1163 std::shared_ptr<FlatObjectStorageEngine> storageEngine = std::make_shared<FlatObjectStorageEngine>();
1164 storageEngine->Open(bundleName);
1165 storageEngine->CreateTable(sessionId);
1166 std::vector<uint8_t> value = { 1, 2 };
1167 uint32_t ret = storageEngine->UpdateItem(sessionId, std::string(1025, 't'), value);
1168 EXPECT_EQ(ERR_CLOSE_STORAGE, ret);
1169 ret = storageEngine->DeleteTable(sessionId);
1170 EXPECT_EQ(SUCCESS, ret);
1171 }
1172 } // namespace
1173