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