diff --git a/services/distributeddataservice/framework/directory/directory_manager.cpp b/services/distributeddataservice/framework/directory/directory_manager.cpp index 805ed1b95868d162530737c9af2f17269cf5c015..5b7b5251a6ffe10a9191389e97fbc395430a084c 100644 --- a/services/distributeddataservice/framework/directory/directory_manager.cpp +++ b/services/distributeddataservice/framework/directory/directory_manager.cpp @@ -324,7 +324,7 @@ bool DirectoryManager::DeleteDirectory(const char* path) } } closedir(dir); - if (chdir(curWorkDir) == -1 || rmdir(path) == -1) { + if (curWorkDir == nullptr || chdir(curWorkDir) == -1 || rmdir(path) == -1) { return false; } return true; diff --git a/services/distributeddataservice/service/object/include/object_asset_loader.h b/services/distributeddataservice/service/object/include/object_asset_loader.h index 44d3f8ab0f8d155c60d0697234b2d525408906eb..160539fafb77d9cbdf4aa21ddc7c6c2470b82d14 100644 --- a/services/distributeddataservice/service/object/include/object_asset_loader.h +++ b/services/distributeddataservice/service/object/include/object_asset_loader.h @@ -41,7 +41,7 @@ public: class ObjectAssetLoader { public: - static ObjectAssetLoader *GetInstance(); + static ObjectAssetLoader &GetInstance(); void SetThreadPool(std::shared_ptr executors); bool Transfer(const int32_t userId, const std::string& bundleName, const std::string& deviceId, const DistributedData::Asset& asset); diff --git a/services/distributeddataservice/service/object/include/object_asset_machine.h b/services/distributeddataservice/service/object/include/object_asset_machine.h index 14283191bd486b62b1e6e8db591ec5c5c2e23428..273c781eedadb0fedbbe600b82ca710ddbeec268 100644 --- a/services/distributeddataservice/service/object/include/object_asset_machine.h +++ b/services/distributeddataservice/service/object/include/object_asset_machine.h @@ -50,12 +50,8 @@ struct DFAAction { class ObjectAssetMachine { public: - ObjectAssetMachine(); - static int32_t DFAPostEvent(AssetEvent eventId, ChangedAssetInfo& changedAsset, Asset& asset, const std::pair& newAsset = std::pair()); - -private: }; } // namespace DistributedObject } // namespace OHOS diff --git a/services/distributeddataservice/service/object/include/object_manager.h b/services/distributeddataservice/service/object/include/object_manager.h index eb61ef3f1d1aa335ace36fa1b734676c691f15d2..85dd81349dd67e928395a2e6977a696f35543d45 100644 --- a/services/distributeddataservice/service/object/include/object_manager.h +++ b/services/distributeddataservice/service/object/include/object_manager.h @@ -78,9 +78,9 @@ public: ObjectStoreManager(); ~ObjectStoreManager(); - static ObjectStoreManager *GetInstance() + static ObjectStoreManager &GetInstance() { - static ObjectStoreManager *manager = new ObjectStoreManager(); + static ObjectStoreManager manager; return manager; } int32_t Save(const std::string &appId, const std::string &sessionId, const ObjectRecord &data, @@ -114,6 +114,7 @@ public: const std::string& deviceId, const ObjectStore::Asset& asset); void DeleteSnapshot(const std::string &bundleName, const std::string &sessionId); int32_t AutoLaunchStore(); + bool UnRegisterAssetsLister(); private: constexpr static const char *SEPERATOR = "_"; constexpr static const char *TIME_REGEX = "_\\d{10}_p_"; diff --git a/services/distributeddataservice/service/object/src/object_asset_loader.cpp b/services/distributeddataservice/service/object/src/object_asset_loader.cpp index 46aa4498b42a2e624b430cb95cd441e269df66cd..efabc95ba69400754d3fd6ab6e30816568d720d8 100644 --- a/services/distributeddataservice/service/object/src/object_asset_loader.cpp +++ b/services/distributeddataservice/service/object/src/object_asset_loader.cpp @@ -25,9 +25,9 @@ namespace OHOS::DistributedObject { using namespace OHOS::FileManagement::CloudSync; using namespace OHOS::DistributedData; -ObjectAssetLoader *ObjectAssetLoader::GetInstance() +ObjectAssetLoader &ObjectAssetLoader::GetInstance() { - static ObjectAssetLoader *loader = new ObjectAssetLoader(); + static ObjectAssetLoader loader; return loader; } @@ -168,6 +168,10 @@ bool ObjectAssetLoader::IsDownloaded(const DistributedData::Asset& asset) int32_t ObjectAssetLoader::PushAsset(int32_t userId, const sptr &assetObj, const sptr &sendCallback) { + if (assetObj == nullptr) { + ZLOGE("PushAsset err, assetObj is null"); + return OBJECT_INNER_ERROR; + } ObjectStore::RadarReporter::ReportStage(std::string(__FUNCTION__), ObjectStore::SAVE, ObjectStore::PUSH_ASSETS, ObjectStore::IDLE); ZLOGI("PushAsset start, userId:%{public}d, asset size:%{public}zu, bundleName:%{public}s, sessionId:%{public}s", diff --git a/services/distributeddataservice/service/object/src/object_asset_machine.cpp b/services/distributeddataservice/service/object/src/object_asset_machine.cpp index 73aeba2a0c440db42a1e07928f2a6e160c903a7c..690affe946ae6b98fe6e35e9f95d0e0ce027cabf 100644 --- a/services/distributeddataservice/service/object/src/object_asset_machine.cpp +++ b/services/distributeddataservice/service/object/src/object_asset_machine.cpp @@ -165,7 +165,7 @@ static int32_t DoTransfer(int32_t eventId, ChangedAssetInfo& changedAsset, Asset changedAsset.deviceId = newAsset.first; changedAsset.asset = newAsset.second; std::vector assets{ changedAsset.asset }; - ObjectAssetLoader::GetInstance()->TransferAssetsAsync(changedAsset.storeInfo.user, + ObjectAssetLoader::GetInstance().TransferAssetsAsync(changedAsset.storeInfo.user, changedAsset.storeInfo.bundleName, changedAsset.deviceId, assets, [&changedAsset](bool success) { if (success) { auto status = UpdateStore(changedAsset); @@ -362,8 +362,5 @@ static BindEvent::BindEventInfo MakeBindInfo(const ChangedAssetInfo& changedAsse bindEventInfo.assetName = changedAsset.bindInfo.assetName; return bindEventInfo; } - -ObjectAssetMachine::ObjectAssetMachine() {} - } // namespace DistributedObject } // namespace OHOS diff --git a/services/distributeddataservice/service/object/src/object_data_listener.cpp b/services/distributeddataservice/service/object/src/object_data_listener.cpp index 75839c8743f807fd3ee2dfab9e7e4228548345c9..ad10e0391707a9f11c5a9bb34206d42b7aaec146 100644 --- a/services/distributeddataservice/service/object/src/object_data_listener.cpp +++ b/services/distributeddataservice/service/object/src/object_data_listener.cpp @@ -45,7 +45,7 @@ void ObjectDataListener::OnChange(const DistributedDB::KvStoreChangedData &data) std::string key(entry.key.begin(), entry.key.end()); changedData.insert_or_assign(std::move(key), entry.value); } - DistributedObject::ObjectStoreManager::GetInstance()->NotifyChange(changedData); + DistributedObject::ObjectStoreManager::GetInstance().NotifyChange(changedData); } int32_t ObjectAssetsRecvListener::OnStart(const std::string &srcNetworkId, const std::string &dstNetworkId, @@ -53,8 +53,8 @@ int32_t ObjectAssetsRecvListener::OnStart(const std::string &srcNetworkId, const { auto objectKey = dstBundleName + sessionId; ZLOGI("OnStart, objectKey:%{public}s", DistributedData::Anonymous::Change(objectKey).c_str()); - ObjectStoreManager::GetInstance()->NotifyAssetsStart(objectKey, srcNetworkId); - ObjectStoreManager::GetInstance()->NotifyAssetsRecvProgress(objectKey, 0); + ObjectStoreManager::GetInstance().NotifyAssetsStart(objectKey, srcNetworkId); + ObjectStoreManager::GetInstance().NotifyAssetsRecvProgress(objectKey, 0); return OBJECT_SUCCESS; } @@ -71,11 +71,11 @@ int32_t ObjectAssetsRecvListener::OnFinished(const std::string &srcNetworkId, co auto objectKey = assetObj->dstBundleName_ + assetObj->sessionId_; ZLOGI("OnFinished, status:%{public}d objectKey:%{public}s, asset size:%{public}zu", result, DistributedData::Anonymous::Change(objectKey).c_str(), assetObj->uris_.size()); - ObjectStoreManager::GetInstance()->NotifyAssetsReady(objectKey, assetObj->dstBundleName_, srcNetworkId); + ObjectStoreManager::GetInstance().NotifyAssetsReady(objectKey, assetObj->dstBundleName_, srcNetworkId); if (result != OBJECT_SUCCESS) { - ObjectStoreManager::GetInstance()->NotifyAssetsRecvProgress(objectKey, PROGRESS_INVALID); + ObjectStoreManager::GetInstance().NotifyAssetsRecvProgress(objectKey, PROGRESS_INVALID); } else { - ObjectStoreManager::GetInstance()->NotifyAssetsRecvProgress(objectKey, PROGRESS_MAX); + ObjectStoreManager::GetInstance().NotifyAssetsRecvProgress(objectKey, PROGRESS_MAX); } return OBJECT_SUCCESS; } @@ -96,7 +96,7 @@ int32_t ObjectAssetsRecvListener::OnRecvProgress( DistributedData::Anonymous::Change(objectKey).c_str(), totalBytes, processBytes); int32_t progress = static_cast((processBytes * 100.0 / totalBytes) * 0.9); - ObjectStoreManager::GetInstance()->NotifyAssetsRecvProgress(objectKey, progress); + ObjectStoreManager::GetInstance().NotifyAssetsRecvProgress(objectKey, progress); return OBJECT_SUCCESS; } } // namespace DistributedObject diff --git a/services/distributeddataservice/service/object/src/object_manager.cpp b/services/distributeddataservice/service/object/src/object_manager.cpp index a50aedfd9f3fff65291e3180395c49e641546cb5..8abb69bbd2916d8c02ad8d850a82601e879fa026 100644 --- a/services/distributeddataservice/service/object/src/object_manager.cpp +++ b/services/distributeddataservice/service/object/src/object_manager.cpp @@ -61,13 +61,6 @@ ObjectStoreManager::ObjectStoreManager() ObjectStoreManager::~ObjectStoreManager() { - ZLOGI("ObjectStoreManager destroy"); - if (objectAssetsRecvListener_ != nullptr) { - auto status = DistributedFileDaemonManager::GetInstance().UnRegisterAssetCallback(objectAssetsRecvListener_); - if (status != DistributedDB::DBStatus::OK) { - ZLOGE("UnRegister assetsRecvListener err %{public}d", status); - } - } } DistributedDB::KvStoreNbDelegate *ObjectStoreManager::OpenObjectKvStore() @@ -84,6 +77,10 @@ DistributedDB::KvStoreNbDelegate *ObjectStoreManager::OpenObjectKvStore() ZLOGE("GetKvStore fail %{public}d", dbStatus); return; } + if (kvStoreNbDelegate == nullptr) { + ZLOGE("GetKvStore kvStoreNbDelegate is nullptr"); + return; + } ZLOGI("GetKvStore successsfully"); store = kvStoreNbDelegate; std::vector tmpKey; @@ -113,6 +110,19 @@ bool ObjectStoreManager::RegisterAssetsLister() return true; } +bool ObjectStoreManager::UnRegisterAssetsLister() +{ + ZLOGI("ObjectStoreManager UnRegisterAssetsLister"); + if (objectAssetsRecvListener_ != nullptr) { + auto status = DistributedFileDaemonManager::GetInstance().UnRegisterAssetCallback(objectAssetsRecvListener_); + if (status != DistributedDB::DBStatus::OK) { + ZLOGE("UnRegister assetsRecvListener err %{public}d", status); + return false; + } + } + return true; +} + void ObjectStoreManager::ProcessSyncCallback(const std::map &results, const std::string &appId, const std::string &sessionId, const std::string &deviceId) { @@ -137,6 +147,10 @@ int32_t ObjectStoreManager::Save(const std::string &appId, const std::string &se const ObjectRecord &data, const std::string &deviceId, sptr callback) { auto proxy = iface_cast(callback); + if (proxy == nullptr) { + ZLOGE("proxy is nullptr, callback is %{public}s.", (callback == nullptr) ? "nullptr" : "not null"); + return INVALID_ARGUMENT; + } if (deviceId.size() == 0) { ZLOGE("DeviceId empty, appId: %{public}s, sessionId: %{public}s", appId.c_str(), Anonymous::Change(sessionId).c_str()); @@ -189,7 +203,11 @@ int32_t ObjectStoreManager::PushAssets(const std::string &srcBundleName, const s if (assets.empty() || data.find(ObjectStore::FIELDS_PREFIX + ObjectStore::DEVICEID_KEY) == data.end()) { return OBJECT_SUCCESS; } - sptr assetObj = new AssetObj(); + sptr assetObj = new (std::nothrow) AssetObj(); + if (assetObj == nullptr) { + ZLOGE("New AssetObj failed"); + return OBJECT_INNER_ERROR; + } assetObj->dstBundleName_ = dstBundleName; assetObj->srcBundleName_ = srcBundleName; assetObj->dstNetworkId_ = deviceId; @@ -201,7 +219,7 @@ int32_t ObjectStoreManager::PushAssets(const std::string &srcBundleName, const s objectAssetsSendListener_ = new ObjectAssetsSendListener(); } int userId = std::atoi(GetCurrentUser().c_str()); - auto status = ObjectAssetLoader::GetInstance()->PushAsset(userId, assetObj, objectAssetsSendListener_); + auto status = ObjectAssetLoader::GetInstance().PushAsset(userId, assetObj, objectAssetsSendListener_); return status; } @@ -209,6 +227,11 @@ int32_t ObjectStoreManager::RevokeSave( const std::string &appId, const std::string &sessionId, sptr callback) { auto proxy = iface_cast(callback); + if (proxy == nullptr) { + ZLOGE("proxy is nullptr, callback is %{public}s, appId: %{public}s, sessionId: %{public}s.", + (callback == nullptr) ? "nullptr" : "not null", appId.c_str(), Anonymous::Change(sessionId).c_str()); + return INVALID_ARGUMENT; + } int32_t result = Open(); if (result != OBJECT_SUCCESS) { ZLOGE("Open failed, errCode = %{public}d", result); @@ -248,6 +271,10 @@ int32_t ObjectStoreManager::Retrieve( const std::string &bundleName, const std::string &sessionId, sptr callback, uint32_t tokenId) { auto proxy = iface_cast(callback); + if (proxy == nullptr) { + ZLOGE("proxy is nullptr, callback is %{public}s.", (callback == nullptr) ? "nullptr" : "not null"); + return INVALID_ARGUMENT; + } int32_t result = Open(); if (result != OBJECT_SUCCESS) { ZLOGE("Open object kvstore failed, result: %{public}d", result); @@ -257,7 +284,7 @@ int32_t ObjectStoreManager::Retrieve( ObjectRecord results{}; int32_t status = RetrieveFromStore(bundleName, sessionId, results); if (status != OBJECT_SUCCESS) { - ZLOGI("Retrieve from store failed, status: %{public}d, close after one minute.", status); + ZLOGE("Retrieve from store failed, status: %{public}d, close after one minute.", status); CloseAfterMinute(); proxy->Completed(ObjectRecord(), false); return status; @@ -267,8 +294,7 @@ int32_t ObjectStoreManager::Retrieve( if (assets.empty() || results.find(ObjectStore::FIELDS_PREFIX + ObjectStore::DEVICEID_KEY) == results.end()) { allReady = true; } else { - auto objectKey = bundleName + sessionId; - restoreStatus_.ComputeIfPresent(objectKey, [&allReady](const auto &key, auto &value) { + restoreStatus_.ComputeIfPresent(bundleName + sessionId, [&allReady](const auto &key, auto &value) { if (value == RestoreStatus::ALL_READY) { allReady = true; return false; @@ -280,13 +306,12 @@ int32_t ObjectStoreManager::Retrieve( }); } status = RevokeSaveToStore(GetPrefixWithoutDeviceId(bundleName, sessionId)); + Close(); if (status != OBJECT_SUCCESS) { ZLOGE("Revoke save failed, status: %{public}d", status); - Close(); proxy->Completed(ObjectRecord(), false); return status; } - Close(); proxy->Completed(results, allReady); if (allReady) { ObjectStore::RadarReporter::ReportStateFinished(std::string(__FUNCTION__), ObjectStore::DATA_RESTORE, @@ -383,6 +408,13 @@ void ObjectStoreManager::RegisterRemoteCallback(const std::string &bundleName, c } ZLOGD("ObjectStoreManager::RegisterRemoteCallback start"); auto proxy = iface_cast(callback); + if (proxy == nullptr) { + ZLOGE("proxy is nullptr, callback is %{public}s, bundleName: %{public}s, sessionId: %{public}s, pid: " + "%{public}d, tokenId: %{public}u.", + (callback == nullptr) ? "nullptr" : "not null", bundleName.c_str(), Anonymous::Change(sessionId).c_str(), + pid, tokenId); + return; + } std::string prefix = bundleName + sessionId; callbacks_.Compute(tokenId, ([pid, &proxy, &prefix](const uint32_t key, CallbackInfo &value) { if (value.pid != pid) { @@ -429,6 +461,13 @@ void ObjectStoreManager::RegisterProgressObserverCallback(const std::string &bun return; } auto proxy = iface_cast(callback); + if (proxy == nullptr) { + ZLOGE("proxy is nullptr, callback is %{public}s, bundleName: %{public}s, sessionId: %{public}s, pid: " + "%{public}d, tokenId: %{public}u.", + (callback == nullptr) ? "nullptr" : "not null", bundleName.c_str(), Anonymous::Change(sessionId).c_str(), + pid, tokenId); + return; + } std::string objectKey = bundleName + sessionId; sptr observer; processCallbacks_.Compute( @@ -619,6 +658,10 @@ void ObjectStoreManager::NotifyDataChanged(const std::map& data) { + if (executors_ == nullptr) { + ZLOGE("executors_ is null"); + return OBJECT_INNER_ERROR; + } auto taskId = executors_->Schedule(std::chrono::seconds(WAIT_TIME), [this, objectKey, data, saveInfo]() { ZLOGE("wait assets finisehd timeout, try pull assets, objectKey:%{public}s", objectKey.c_str()); PullAssets(data, saveInfo); @@ -641,7 +684,7 @@ void ObjectStoreManager::PullAssets(const std::map& d for (const auto& [objectId, assets] : changedAssets) { std::string networkId = DmAdaper::GetInstance().ToNetworkID(saveInfo.sourceDeviceId); auto block = std::make_shared>>(WAIT_TIME, std::tuple{ true, true }); - ObjectAssetLoader::GetInstance()->TransferAssetsAsync(std::atoi(GetCurrentUser().c_str()), + ObjectAssetLoader::GetInstance().TransferAssetsAsync(std::atoi(GetCurrentUser().c_str()), saveInfo.bundleName, networkId, assets, [this, block](bool success) { block->SetValue({ false, success }); }); @@ -688,6 +731,10 @@ void ObjectStoreManager::NotifyAssetsRecvProgress(const std::string &objectKey, void ObjectStoreManager::NotifyAssetsReady( const std::string &objectKey, const std::string &bundleName, const std::string &srcNetworkId) { + if (executors_ == nullptr) { + ZLOGE("executors_ is nullptr"); + return; + } restoreStatus_.ComputeIfAbsent( objectKey, [](const std::string& key) -> auto { return RestoreStatus::NONE; @@ -753,7 +800,9 @@ Assets ObjectStoreManager::GetAssetsFromDBRecords(const ObjectRecord& result) std::string assetPrefix = key.substr(0, key.find(ObjectStore::ASSET_DOT)); if (!IsAssetKey(key) || assetKey.find(assetPrefix) != assetKey.end() || result.find(assetPrefix + ObjectStore::NAME_SUFFIX) == result.end() || - result.find(assetPrefix + ObjectStore::URI_SUFFIX) == result.end()) { + result.find(assetPrefix + ObjectStore::URI_SUFFIX) == result.end() || + result.find(assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX) == result.end() || + result.find(assetPrefix + ObjectStore::SIZE_SUFFIX) == result.end()) { continue; } Asset asset; @@ -809,6 +858,10 @@ void ObjectStoreManager::DoNotify(uint32_t tokenId, const CallbackInfo& value, void ObjectStoreManager::DoNotifyAssetsReady(uint32_t tokenId, const CallbackInfo& value, const std::string& objectKey, bool allReady) { + if (executors_ == nullptr) { + ZLOGE("executors_ is nullptr"); + return; + } for (const auto& observer : value.observers_) { if (objectKey != observer.first) { continue; @@ -829,6 +882,10 @@ void ObjectStoreManager::DoNotifyAssetsReady(uint32_t tokenId, const CallbackInf void ObjectStoreManager::DoNotifyWaitAssetTimeout(const std::string &objectKey) { + if (executors_ == nullptr) { + ZLOGE("executors_ is nullptr"); + return; + } ObjectStore::RadarReporter::ReportStageError(std::string(__FUNCTION__), ObjectStore::DATA_RESTORE, ObjectStore::ASSETS_RECV, ObjectStore::RADAR_FAILED, ObjectStore::TIMEOUT); callbacks_.ForEach([this, &objectKey](uint32_t tokenId, const CallbackInfo &value) { @@ -946,6 +1003,10 @@ void ObjectStoreManager::SyncCompleted( void ObjectStoreManager::FlushClosedStore() { + if (executors_ == nullptr) { + ZLOGE("executors_ is nullptr"); + return; + } std::unique_lock lock(rwMutex_); if (!isSyncing_ && syncCount_ == 0 && delegate_ != nullptr) { ZLOGD("close store"); @@ -1302,6 +1363,10 @@ void ObjectStoreManager::SaveUserToMeta() void ObjectStoreManager::CloseAfterMinute() { + if (executors_ == nullptr) { + ZLOGE("executors_ is nullptr."); + return; + } executors_->Schedule(std::chrono::minutes(INTERVAL), [this]() { Close(); }); @@ -1441,7 +1506,7 @@ int32_t ObjectStoreManager::OnAssetChanged(const uint32_t tokenId, const std::st } auto block = std::make_shared>>(WAIT_TIME, std::tuple{ true, true }); - ObjectAssetLoader::GetInstance()->TransferAssetsAsync(userId, appId, deviceId, { dataAsset }, [block](bool ret) { + ObjectAssetLoader::GetInstance().TransferAssetsAsync(userId, appId, deviceId, { dataAsset }, [block](bool ret) { block->SetValue({ false, ret }); }); auto [timeout, success] = block->GetValue(); diff --git a/services/distributeddataservice/service/object/src/object_service_impl.cpp b/services/distributeddataservice/service/object/src/object_service_impl.cpp index 72a8aa0d03c8e8713a2d7040da53aa5d6bc19730..31d8232e0360295c74a5a0f3a9b418648a0c3e7e 100644 --- a/services/distributeddataservice/service/object/src/object_service_impl.cpp +++ b/services/distributeddataservice/service/object/src/object_service_impl.cpp @@ -74,7 +74,7 @@ int32_t ObjectServiceImpl::ObjectStoreSave(const std::string &bundleName, const if (status != OBJECT_SUCCESS) { return status; } - status = ObjectStoreManager::GetInstance()->Save(bundleName, sessionId, data, deviceId, callback); + status = ObjectStoreManager::GetInstance().Save(bundleName, sessionId, data, deviceId, callback); if (status != OBJECT_SUCCESS) { ZLOGE("save fail %{public}d", status); } @@ -91,7 +91,7 @@ int32_t ObjectServiceImpl::OnAssetChanged(const std::string &bundleName, const s if (status != OBJECT_SUCCESS) { return status; } - status = ObjectStoreManager::GetInstance()->OnAssetChanged(tokenId, bundleName, sessionId, deviceId, assetValue); + status = ObjectStoreManager::GetInstance().OnAssetChanged(tokenId, bundleName, sessionId, deviceId, assetValue); if (status != OBJECT_SUCCESS) { ZLOGE("file transfer failed fail %{public}d", status); } @@ -106,7 +106,7 @@ int32_t ObjectServiceImpl::BindAssetStore(const std::string &bundleName, const s if (status != OBJECT_SUCCESS) { return status; } - status = ObjectStoreManager::GetInstance()->BindAsset(tokenId, bundleName, sessionId, asset, bindInfo); + status = ObjectStoreManager::GetInstance().BindAsset(tokenId, bundleName, sessionId, asset, bindInfo); if (status != OBJECT_SUCCESS) { ZLOGE("bind asset fail %{public}d, bundleName:%{public}s, sessionId:%{public}s, assetName:%{public}s", status, bundleName.c_str(), Anonymous::Change(sessionId).c_str(), Anonymous::Change(asset.name).c_str()); @@ -143,8 +143,8 @@ int32_t ObjectServiceImpl::OnInitialize() executors_->Schedule(std::chrono::seconds(WAIT_ACCOUNT_SERVICE), [this]() { StoreMetaData saveMeta; SaveMetaData(saveMeta); - ObjectStoreManager::GetInstance()->SetData(saveMeta.dataDir, saveMeta.user); - ObjectStoreManager::GetInstance()->InitUserMeta(); + ObjectStoreManager::GetInstance().SetData(saveMeta.dataDir, saveMeta.user); + ObjectStoreManager::GetInstance().InitUserMeta(); RegisterObjectServiceInfo(); RegisterHandler(); ObjectDmsHandler::GetInstance().RegisterDmsEvent(); @@ -205,13 +205,13 @@ int32_t ObjectServiceImpl::SaveMetaData(StoreMetaData &saveMeta) int32_t ObjectServiceImpl::OnUserChange(uint32_t code, const std::string &user, const std::string &account) { if (code == static_cast(AccountStatus::DEVICE_ACCOUNT_SWITCHED)) { - int32_t status = ObjectStoreManager::GetInstance()->Clear(); + int32_t status = ObjectStoreManager::GetInstance().Clear(); if (status != OBJECT_SUCCESS) { ZLOGE("Clear fail user:%{public}s, status: %{public}d", user.c_str(), status); } StoreMetaData saveMeta; SaveMetaData(saveMeta); - ObjectStoreManager::GetInstance()->SetData(saveMeta.dataDir, saveMeta.user); + ObjectStoreManager::GetInstance().SetData(saveMeta.dataDir, saveMeta.user); } return Feature::OnUserChange(code, user, account); } @@ -225,7 +225,7 @@ int32_t ObjectServiceImpl::ObjectStoreRevokeSave( if (status != OBJECT_SUCCESS) { return status; } - status = ObjectStoreManager::GetInstance()->RevokeSave(bundleName, sessionId, callback); + status = ObjectStoreManager::GetInstance().RevokeSave(bundleName, sessionId, callback); if (status != OBJECT_SUCCESS) { ZLOGE("revoke save fail %{public}d", status); return status; @@ -242,7 +242,7 @@ int32_t ObjectServiceImpl::ObjectStoreRetrieve( if (status != OBJECT_SUCCESS) { return status; } - status = ObjectStoreManager::GetInstance()->Retrieve(bundleName, sessionId, callback, tokenId); + status = ObjectStoreManager::GetInstance().Retrieve(bundleName, sessionId, callback, tokenId); if (status != OBJECT_SUCCESS) { ZLOGE("retrieve fail %{public}d", status); return status; @@ -260,7 +260,7 @@ int32_t ObjectServiceImpl::RegisterDataObserver( return status; } auto pid = IPCSkeleton::GetCallingPid(); - ObjectStoreManager::GetInstance()->RegisterRemoteCallback(bundleName, sessionId, pid, tokenId, callback); + ObjectStoreManager::GetInstance().RegisterRemoteCallback(bundleName, sessionId, pid, tokenId, callback); return OBJECT_SUCCESS; } @@ -273,7 +273,7 @@ int32_t ObjectServiceImpl::UnregisterDataChangeObserver(const std::string &bundl return status; } auto pid = IPCSkeleton::GetCallingPid(); - ObjectStoreManager::GetInstance()->UnregisterRemoteCallback(bundleName, pid, tokenId, sessionId); + ObjectStoreManager::GetInstance().UnregisterRemoteCallback(bundleName, pid, tokenId, sessionId); return OBJECT_SUCCESS; } @@ -286,7 +286,7 @@ int32_t ObjectServiceImpl::RegisterProgressObserver( return status; } auto pid = IPCSkeleton::GetCallingPid(); - ObjectStoreManager::GetInstance()->RegisterProgressObserverCallback(bundleName, sessionId, pid, tokenId, callback); + ObjectStoreManager::GetInstance().RegisterProgressObserverCallback(bundleName, sessionId, pid, tokenId, callback); return OBJECT_SUCCESS; } @@ -298,7 +298,7 @@ int32_t ObjectServiceImpl::UnregisterProgressObserver(const std::string &bundleN return status; } auto pid = IPCSkeleton::GetCallingPid(); - ObjectStoreManager::GetInstance()->UnregisterProgressObserverCallback(bundleName, pid, tokenId, sessionId); + ObjectStoreManager::GetInstance().UnregisterProgressObserverCallback(bundleName, pid, tokenId, sessionId); return OBJECT_SUCCESS; } @@ -309,7 +309,7 @@ int32_t ObjectServiceImpl::DeleteSnapshot(const std::string &bundleName, const s if (status != OBJECT_SUCCESS) { return status; } - ObjectStoreManager::GetInstance()->DeleteSnapshot(bundleName, sessionId); + ObjectStoreManager::GetInstance().DeleteSnapshot(bundleName, sessionId); return OBJECT_SUCCESS; } @@ -331,7 +331,7 @@ int32_t ObjectServiceImpl::IsBundleNameEqualTokenId( int32_t ObjectServiceImpl::ObjectStatic::OnAppUninstall(const std::string &bundleName, int32_t user, int32_t index) { - int32_t result = ObjectStoreManager::GetInstance()->DeleteByAppId(bundleName, user); + int32_t result = ObjectStoreManager::GetInstance().DeleteByAppId(bundleName, user); if (result != OBJECT_SUCCESS) { ZLOGE("Delete object data failed, result:%{public}d, bundleName:%{public}s, user:%{public}d, index:%{public}d", result, bundleName.c_str(), user, index); @@ -365,7 +365,7 @@ int32_t ObjectServiceImpl::ResolveAutoLaunch(const std::string &identifier, Dist continue; } if (storeMeta.bundleName == DistributedData::Bootstrap::GetInstance().GetProcessLabel()) { - int32_t status = DistributedObject::ObjectStoreManager::GetInstance()->AutoLaunchStore(); + int32_t status = DistributedObject::ObjectStoreManager::GetInstance().AutoLaunchStore(); if (status != OBJECT_SUCCESS) { continue; } @@ -379,8 +379,8 @@ int32_t ObjectServiceImpl::OnAppExit(pid_t uid, pid_t pid, uint32_t tokenId, con { ZLOGI("ObjectServiceImpl::OnAppExit uid=%{public}d, pid=%{public}d, tokenId=%{public}d, bundleName=%{public}s", uid, pid, tokenId, appId.c_str()); - ObjectStoreManager::GetInstance()->UnregisterRemoteCallback(appId, pid, tokenId); - ObjectStoreManager::GetInstance()->UnregisterProgressObserverCallback(appId, pid, tokenId); + ObjectStoreManager::GetInstance().UnregisterRemoteCallback(appId, pid, tokenId); + ObjectStoreManager::GetInstance().UnregisterProgressObserverCallback(appId, pid, tokenId); return FeatureSystem::STUB_SUCCESS; } @@ -404,7 +404,7 @@ ObjectServiceImpl::ObjectServiceImpl() ZLOGE("store null, storeId:%{public}s", meta.GetStoreAlias().c_str()); return; } - auto bindAssets = ObjectStoreManager::GetInstance()->GetSnapShots(eventInfo.bundleName, eventInfo.storeName); + auto bindAssets = ObjectStoreManager::GetInstance().GetSnapShots(eventInfo.bundleName, eventInfo.storeName); store->BindSnapshots(bindAssets); }; EventCenter::GetInstance().Subscribe(BindEvent::BIND_SNAPSHOT, process); @@ -438,13 +438,14 @@ void ObjectServiceImpl::DumpObjectServiceInfo(int fd, std::mapSetThreadPool(executors_); - ObjectAssetLoader::GetInstance()->SetThreadPool(executors_); + ObjectStoreManager::GetInstance().SetThreadPool(executors_); + ObjectAssetLoader::GetInstance().SetThreadPool(executors_); return 0; } } // namespace OHOS::DistributedObject diff --git a/services/distributeddataservice/service/test/BUILD.gn b/services/distributeddataservice/service/test/BUILD.gn index e8f9258a80cbb396fc3e89b8f12d396e6374d7be..9d26d2cc9abba7103f2bc86e22586eb7a89696df 100644 --- a/services/distributeddataservice/service/test/BUILD.gn +++ b/services/distributeddataservice/service/test/BUILD.gn @@ -944,6 +944,7 @@ ohos_unittest("ObjectManagerMockTest") { "object_manager_mock_test.cpp", "mock/meta_data_manager_mock.cpp", "mock/device_matrix_mock.cpp", + "mock/distributed_file_daemon_manager_mock.cpp", ] include_dirs = [ diff --git a/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.cpp b/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ec92a7a4c5ae8f65c33380eef4765d04cc027ebb --- /dev/null +++ b/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "distributed_file_daemon_manager_mock.h" + +namespace OHOS { +namespace Storage { +namespace DistributedFile { +constexpr const int32_t ERROR = -1; + +DistributedFileDaemonManager &DistributedFileDaemonManager::GetInstance() +{ + return DistributedFileDaemonManagerImpl::GetInstance(); +} + +int32_t DistributedFileDaemonManagerImpl::RegisterAssetCallback(const sptr &recvCallback) +{ + if (BDistributedFileDaemonManager::fileDaemonManger_ == nullptr) { + return ERROR; + } + return BDistributedFileDaemonManager::fileDaemonManger_->RegisterAssetCallback(recvCallback); +} + +int32_t DistributedFileDaemonManagerImpl::UnRegisterAssetCallback(const sptr &recvCallback) +{ + if (BDistributedFileDaemonManager::fileDaemonManger_ == nullptr) { + return ERROR; + } + return BDistributedFileDaemonManager::fileDaemonManger_->UnRegisterAssetCallback(recvCallback); +} +} // namespace DistributedFile +} // namespace Storage +} // namespace OHOS \ No newline at end of file diff --git a/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.h b/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.h new file mode 100644 index 0000000000000000000000000000000000000000..cd68204fdba92f0a65aa554bd93f796e247974f1 --- /dev/null +++ b/services/distributeddataservice/service/test/mock/distributed_file_daemon_manager_mock.h @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef OHOS_DISTRIBUTED_FILE_DAEMON_MANAGER_MOCK_H +#define OHOS_DISTRIBUTED_FILE_DAEMON_MANAGER_MOCK_H + +#include + +#include "distributed_file_daemon_manager.h" +namespace OHOS { +namespace Storage { +namespace DistributedFile { +class BDistributedFileDaemonManager { +public: + virtual int32_t RegisterAssetCallback(const sptr &recvCallback) = 0; + virtual int32_t UnRegisterAssetCallback(const sptr &recvCallback) = 0; + BDistributedFileDaemonManager() = default; + virtual ~BDistributedFileDaemonManager() = default; + +private: + static inline std::shared_ptr fileDaemonManger_ = nullptr; +}; + +class DistributedFileDaemonManagerMock : public BDistributedFileDaemonManager { +public: + MOCK_METHOD(int32_t, RegisterAssetCallback, (const sptr &recvCallback)); + MOCK_METHOD(int32_t, UnRegisterAssetCallback, (const sptr &recvCallback)); +}; + +class DistributedFileDaemonManagerImpl : public DistributedFileDaemonManager { +public: + static DistributedFileDaemonManagerImpl &GetInstance() + { + static DistributedFileDaemonManagerImpl instance; + return instance; + } + int32_t RegisterAssetCallback(const sptr &recvCallback) override; + int32_t UnRegisterAssetCallback(const sptr &recvCallback) override; + + int32_t OpenP2PConnection(const DistributedHardware::DmDeviceInfo &deviceInfo) override + { + return 0; + } + int32_t CloseP2PConnection(const DistributedHardware::DmDeviceInfo &deviceInfo) override + { + return 0; + } + int32_t OpenP2PConnectionEx(const std::string &networkId, sptr remoteReverseObj) override + { + return 0; + } + int32_t CloseP2PConnectionEx(const std::string &networkId) override + { + return 0; + } + int32_t PrepareSession(const std::string &srcUri, const std::string &dstUri, const std::string &srcDeviceId, + const sptr &listener, HmdfsInfo &info) override + { + return 0; + } + int32_t CancelCopyTask(const std::string &sessionName) override + { + return 0; + } + int32_t CancelCopyTask(const std::string &srcUri, const std::string &dstUri) override + { + return 0; + } + + int32_t PushAsset(int32_t userId, const sptr &assetObj, + const sptr &sendCallback) override + { + return 0; + } + int32_t GetSize(const std::string &uri, bool isSrcUri, uint64_t &size) override + { + return 0; + } + int32_t IsDirectory(const std::string &uri, bool isSrcUri, bool &isDirectory) override + { + return 0; + } + int32_t Copy(const std::string &srcUri, const std::string &destUri, ProcessCallback processCallback) override + { + return 0; + } + int32_t Cancel(const std::string &srcUri, const std::string &destUri) override + { + return 0; + } + int32_t Cancel() override + { + return 0; + } + int32_t GetDfsSwitchStatus(const std::string &networkId, int32_t &switchStatus) override + { + return 0; + } + int32_t UpdateDfsSwitchStatus(int32_t switchStatus) override + { + return 0; + } + int32_t GetConnectedDeviceList(std::vector &deviceList) override + { + return 0; + } +}; +} // namespace DistributedFile +} // namespace Storage +} // namespace OHOS +#endif \ No newline at end of file diff --git a/services/distributeddataservice/service/test/object_asset_loader_test.cpp b/services/distributeddataservice/service/test/object_asset_loader_test.cpp index c25e185cb9cac8f8cc2000f0d1c71384dde44027..78b92d7c4860ed6bb29b8a1ee9c56c97be3c4c03 100644 --- a/services/distributeddataservice/service/test/object_asset_loader_test.cpp +++ b/services/distributeddataservice/service/test/object_asset_loader_test.cpp @@ -65,8 +65,8 @@ void ObjectAssetLoaderTest::TearDown() {} */ HWTEST_F(ObjectAssetLoaderTest, UploadTest001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - auto result = assetLoader->Transfer(userId_, bundleName_, deviceId_, asset_); + auto &assetLoader = ObjectAssetLoader::GetInstance(); + auto result = assetLoader.Transfer(userId_, bundleName_, deviceId_, asset_); ASSERT_EQ(result, false); } @@ -79,13 +79,13 @@ HWTEST_F(ObjectAssetLoaderTest, UploadTest001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, TransferAssetsAsync001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); + auto &assetLoader = ObjectAssetLoader::GetInstance(); std::function lambdaFunc = [](bool success) { if (success) {} }; std::vector assets{ asset_ }; - ASSERT_EQ(assetLoader->executors_, nullptr); - assetLoader->TransferAssetsAsync(userId_, bundleName_, deviceId_, assets, lambdaFunc); + ASSERT_EQ(assetLoader.executors_, nullptr); + assetLoader.TransferAssetsAsync(userId_, bundleName_, deviceId_, assets, lambdaFunc); } /** @@ -97,16 +97,16 @@ HWTEST_F(ObjectAssetLoaderTest, TransferAssetsAsync001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, TransferAssetsAsync002, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); + auto &assetLoader = ObjectAssetLoader::GetInstance(); std::function lambdaFunc = [](bool success) { if (success) {} }; std::vector assets{ asset_ }; std::shared_ptr executors = std::make_shared(5, 3); ASSERT_NE(executors, nullptr); - assetLoader->SetThreadPool(executors); - ASSERT_NE(assetLoader->executors_, nullptr); - assetLoader->TransferAssetsAsync(userId_, bundleName_, deviceId_, assets, lambdaFunc); + assetLoader.SetThreadPool(executors); + ASSERT_NE(assetLoader.executors_, nullptr); + assetLoader.TransferAssetsAsync(userId_, bundleName_, deviceId_, assets, lambdaFunc); } /** @@ -118,14 +118,13 @@ HWTEST_F(ObjectAssetLoaderTest, TransferAssetsAsync002, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, FinishTask001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - ASSERT_NE(assetLoader, nullptr); + auto &assetLoader = ObjectAssetLoader::GetInstance(); TransferTask task; task.downloadAssets.insert(uri_); - assetLoader->FinishTask(asset_.uri, true); - ASSERT_TRUE(assetLoader->tasks_.Empty()); - assetLoader->FinishTask(asset_.uri, false); - ASSERT_TRUE(assetLoader->tasks_.Empty()); + assetLoader.FinishTask(asset_.uri, true); + ASSERT_TRUE(assetLoader.tasks_.Empty()); + assetLoader.FinishTask(asset_.uri, false); + ASSERT_TRUE(assetLoader.tasks_.Empty()); } /** @@ -137,12 +136,12 @@ HWTEST_F(ObjectAssetLoaderTest, FinishTask001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, IsDownloading001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - assetLoader->downloading_.InsertOrAssign(asset_.uri, asset_.hash); - auto result = assetLoader->IsDownloading(asset_); + auto &assetLoader = ObjectAssetLoader::GetInstance(); + assetLoader.downloading_.InsertOrAssign(asset_.uri, asset_.hash); + auto result = assetLoader.IsDownloading(asset_); ASSERT_EQ(result, true); - assetLoader->downloading_.Erase(asset_.uri); - result = assetLoader->IsDownloading(asset_); + assetLoader.downloading_.Erase(asset_.uri); + result = assetLoader.IsDownloading(asset_); ASSERT_EQ(result, false); } @@ -155,11 +154,11 @@ HWTEST_F(ObjectAssetLoaderTest, IsDownloading001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, IsDownloaded001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - auto result = assetLoader->IsDownloaded(asset_); + auto &assetLoader = ObjectAssetLoader::GetInstance(); + auto result = assetLoader.IsDownloaded(asset_); ASSERT_EQ(result, false); - assetLoader->downloaded_.Insert(asset_.uri, "modifyTime_size"); - result = assetLoader->IsDownloaded(asset_); + assetLoader.downloaded_.Insert(asset_.uri, "modifyTime_size"); + result = assetLoader.IsDownloaded(asset_); ASSERT_EQ(result, true); } @@ -172,13 +171,12 @@ HWTEST_F(ObjectAssetLoaderTest, IsDownloaded001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, UpdateDownloaded001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - ASSERT_NE(assetLoader, nullptr); - while (!assetLoader->assetQueue_.empty()) { - assetLoader->assetQueue_.pop(); + auto &assetLoader = ObjectAssetLoader::GetInstance(); + while (!assetLoader.assetQueue_.empty()) { + assetLoader.assetQueue_.pop(); } - assetLoader->UpdateDownloaded(asset_); - auto [success, hash] = assetLoader->downloaded_.Find(asset_.uri); + assetLoader.UpdateDownloaded(asset_); + auto [success, hash] = assetLoader.downloaded_.Find(asset_.uri); ASSERT_TRUE(success); EXPECT_EQ(hash, asset_.hash); } @@ -192,18 +190,17 @@ HWTEST_F(ObjectAssetLoaderTest, UpdateDownloaded001, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, UpdateDownloaded002, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - ASSERT_NE(assetLoader, nullptr); - while (!assetLoader->assetQueue_.empty()) { - assetLoader->assetQueue_.pop(); + auto &assetLoader = ObjectAssetLoader::GetInstance(); + while (!assetLoader.assetQueue_.empty()) { + assetLoader.assetQueue_.pop(); } - for (int i = 0; i <= assetLoader->LAST_DOWNLOAD_ASSET_SIZE; i++) { - assetLoader->assetQueue_.push(asset_.uri); + for (int i = 0; i <= assetLoader.LAST_DOWNLOAD_ASSET_SIZE; i++) { + assetLoader.assetQueue_.push(asset_.uri); } - assetLoader->UpdateDownloaded(asset_); - EXPECT_NE(assetLoader->assetQueue_.size(), ObjectAssetLoader::LAST_DOWNLOAD_ASSET_SIZE); - EXPECT_EQ(assetLoader->assetQueue_.size(), ObjectAssetLoader::LAST_DOWNLOAD_ASSET_SIZE + 1); - auto [success, hash] = assetLoader->downloaded_.Find(asset_.uri); + assetLoader.UpdateDownloaded(asset_); + EXPECT_NE(assetLoader.assetQueue_.size(), ObjectAssetLoader::LAST_DOWNLOAD_ASSET_SIZE); + EXPECT_EQ(assetLoader.assetQueue_.size(), ObjectAssetLoader::LAST_DOWNLOAD_ASSET_SIZE + 1); + auto [success, hash] = assetLoader.downloaded_.Find(asset_.uri); EXPECT_EQ(success, false); EXPECT_EQ(hash, ""); } @@ -215,8 +212,7 @@ HWTEST_F(ObjectAssetLoaderTest, UpdateDownloaded002, TestSize.Level0) */ HWTEST_F(ObjectAssetLoaderTest, PushAsset001, TestSize.Level0) { - auto assetLoader = ObjectAssetLoader::GetInstance(); - ASSERT_NE(assetLoader, nullptr); + auto &assetLoader = ObjectAssetLoader::GetInstance(); sptr assetObj = new AssetObj(); assetObj->dstBundleName_ = bundleName_; assetObj->srcBundleName_ = bundleName_; @@ -225,10 +221,22 @@ HWTEST_F(ObjectAssetLoaderTest, PushAsset001, TestSize.Level0) sptr sendCallback = new ObjectAssetsSendListener(); ASSERT_NE(sendCallback, nullptr); - int32_t ret = assetLoader->PushAsset(userId_, assetObj, sendCallback); + int32_t ret = assetLoader.PushAsset(userId_, assetObj, sendCallback); EXPECT_NE(ret, DistributedObject::OBJECT_SUCCESS); } +/** +* @tc.name: PushAsset002 +* @tc.desc: PushAsset test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectAssetLoaderTest, PushAsset002, TestSize.Level0) +{ + auto &assetLoader = ObjectAssetLoader::GetInstance(); + int32_t ret = assetLoader.PushAsset(userId_, nullptr, nullptr); + EXPECT_EQ(ret, DistributedObject::OBJECT_INNER_ERROR); +} + /** * @tc.name: OnSendResult001 * @tc.desc: OnSendResult test. diff --git a/services/distributeddataservice/service/test/object_asset_machine_test.cpp b/services/distributeddataservice/service/test/object_asset_machine_test.cpp index 4d4ad442dafe6cb57214d970d5cf9f5dfe4e1aca..6ee9d39febf4d157c99b9b6f96ef44a2269beb07 100644 --- a/services/distributeddataservice/service/test/object_asset_machine_test.cpp +++ b/services/distributeddataservice/service/test/object_asset_machine_test.cpp @@ -48,7 +48,7 @@ protected: void ObjectAssetMachineTest::SetUpTestCase(void) { auto executors = std::make_shared(2, 1); - ObjectAssetLoader::GetInstance()->SetThreadPool(executors); + ObjectAssetLoader::GetInstance().SetThreadPool(executors); } void ObjectAssetMachineTest::SetUp() diff --git a/services/distributeddataservice/service/test/object_manager_mock_test.cpp b/services/distributeddataservice/service/test/object_manager_mock_test.cpp index befd1510f49757c3c275ab3ab3db8bb4ab149b00..8d901defb2895cbe684b3a514ef6ab7b36f87911 100644 --- a/services/distributeddataservice/service/test/object_manager_mock_test.cpp +++ b/services/distributeddataservice/service/test/object_manager_mock_test.cpp @@ -21,10 +21,12 @@ #include "gtest/gtest.h" #include "mock/account_delegate_mock.h" #include "mock/meta_data_manager_mock.h" +#include "mock/distributed_file_daemon_manager_mock.h" #include "object_manager.h" using namespace OHOS::DistributedObject; using namespace OHOS::DistributedData; +using namespace OHOS::Storage::DistributedFile; using namespace testing::ext; using namespace testing; using DeviceInfo = OHOS::AppDistributedKv::DeviceInfo; @@ -44,6 +46,8 @@ public: BDeviceManagerAdapter::deviceManagerAdapter = devMgrAdapterMock; deviceMatrixMock = std::make_shared(); BDeviceMatrix::deviceMatrix = deviceMatrixMock; + fileDaemonMgrMock = std::make_shared(); + BDistributedFileDaemonManager::fileDaemonManger_ = fileDaemonMgrMock; } static void TearDownTestCase(void) { @@ -55,12 +59,15 @@ public: BDeviceManagerAdapter::deviceManagerAdapter = nullptr; deviceMatrixMock = nullptr; BDeviceMatrix::deviceMatrix = nullptr; + fileDaemonMgrMock = nullptr; + BDistributedFileDaemonManager::fileDaemonManger_ = nullptr; } static inline std::shared_ptr metaDataManagerMock = nullptr; static inline std::shared_ptr> metaDataMock = nullptr; static inline std::shared_ptr devMgrAdapterMock = nullptr; static inline std::shared_ptr deviceMatrixMock = nullptr; + static inline std::shared_ptr fileDaemonMgrMock = nullptr; void SetUp(){}; void TearDown(){}; }; @@ -73,7 +80,9 @@ public: */ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + EXPECT_CALL(*fileDaemonMgrMock, RegisterAssetCallback(_)) + .WillOnce(testing::Return(0)); + auto &manager = ObjectStoreManager::GetInstance(); StoreMetaData meta; meta.deviceId = "test_device_id"; meta.user = "0"; @@ -82,12 +91,12 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync001, TestSize.Level0) std::vector uuids = { "test_uuid" }; EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)).WillOnce(testing::Return(false)); - bool isNeedSync = manager->IsNeedMetaSync(meta, uuids); + bool isNeedSync = manager.IsNeedMetaSync(meta, uuids); EXPECT_EQ(isNeedSync, true); EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) .WillOnce(testing::Return(true)) .WillOnce(testing::Return(false)); - isNeedSync = manager->IsNeedMetaSync(meta, uuids); + isNeedSync = manager.IsNeedMetaSync(meta, uuids); EXPECT_EQ(isNeedSync, true); } @@ -99,7 +108,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync001, TestSize.Level0) */ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); StoreMetaData meta; meta.deviceId = "test_device_id"; meta.user = "0"; @@ -111,7 +120,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync002, TestSize.Level0) EXPECT_CALL(*deviceMatrixMock, GetRemoteMask(_, _)) .WillRepeatedly(Return(std::make_pair(true, DeviceMatrix::META_STORE_MASK))); - bool result = manager->IsNeedMetaSync(meta, uuids); + bool result = manager.IsNeedMetaSync(meta, uuids); EXPECT_EQ(result, true); } @@ -123,7 +132,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync002, TestSize.Level0) */ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync003, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); StoreMetaData meta; meta.deviceId = "test_device_id"; meta.user = "0"; @@ -135,7 +144,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync003, TestSize.Level0) EXPECT_CALL(*deviceMatrixMock, GetRemoteMask(_, _)).WillOnce(Return(std::make_pair(true, 0))); EXPECT_CALL(*deviceMatrixMock, GetMask(_, _)).WillOnce(Return(std::make_pair(true, DeviceMatrix::META_STORE_MASK))); - bool result = manager->IsNeedMetaSync(meta, uuids); + bool result = manager.IsNeedMetaSync(meta, uuids); EXPECT_EQ(result, true); EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)).WillRepeatedly(Return(true)); @@ -144,7 +153,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync003, TestSize.Level0) EXPECT_CALL(*deviceMatrixMock, GetMask(_, _)).WillOnce(Return(std::make_pair(true, 0))); - result = manager->IsNeedMetaSync(meta, uuids); + result = manager.IsNeedMetaSync(meta, uuids); EXPECT_EQ(result, false); } @@ -156,7 +165,7 @@ HWTEST_F(ObjectManagerMockTest, IsNeedMetaSync003, TestSize.Level0) */ HWTEST_F(ObjectManagerMockTest, SyncOnStore001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::function &results)> func; func = [](const std::map &results) { return results; }; std::string prefix = "ObjectManagerTest"; @@ -170,7 +179,7 @@ HWTEST_F(ObjectManagerMockTest, SyncOnStore001, TestSize.Level0) // local device { std::vector localDeviceList = { "local" }; - auto result = manager->SyncOnStore(prefix, localDeviceList, func); + auto result = manager.SyncOnStore(prefix, localDeviceList, func); EXPECT_EQ(result, OBJECT_SUCCESS); } @@ -181,10 +190,9 @@ HWTEST_F(ObjectManagerMockTest, SyncOnStore001, TestSize.Level0) EXPECT_CALL(*devMgrAdapterMock, ToUUID(testing::A &>())) .WillOnce(Return(std::vector{ "mock_uuid_1" })); EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) - .WillOnce(testing::Return(false)) .WillOnce(testing::Return(false)); EXPECT_CALL(*metaDataManagerMock, Sync(_, _, _)).WillOnce(testing::Return(true)); - auto result = manager->SyncOnStore(prefix, remoteDeviceList, func); + auto result = manager.SyncOnStore(prefix, remoteDeviceList, func); EXPECT_EQ(result, OBJECT_SUCCESS); } @@ -199,7 +207,7 @@ HWTEST_F(ObjectManagerMockTest, SyncOnStore001, TestSize.Level0) .WillOnce(testing::Return(true)); EXPECT_CALL(*deviceMatrixMock, GetRemoteMask(_, _)).WillOnce(Return(std::make_pair(true, 0))); EXPECT_CALL(*deviceMatrixMock, GetMask(_, _)).WillOnce(Return(std::make_pair(true, 0))); - auto result = manager->SyncOnStore(prefix, remoteDeviceList, func); + auto result = manager.SyncOnStore(prefix, remoteDeviceList, func); EXPECT_EQ(result, E_DB_ERROR); } } @@ -213,14 +221,14 @@ HWTEST_F(ObjectManagerMockTest, SyncOnStore001, TestSize.Level0) */ HWTEST_F(ObjectManagerMockTest, GetCurrentUser001, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::vector users; EXPECT_CALL(AccountDelegateMock::Init(), QueryUsers(_)) .Times(1) .WillOnce(DoAll( SetArgReferee<0>(users), Return(false))); - auto result = manager->GetCurrentUser(); + auto result = manager.GetCurrentUser(); EXPECT_EQ(result, ""); } @@ -233,7 +241,7 @@ HWTEST_F(ObjectManagerMockTest, GetCurrentUser001, TestSize.Level1) */ HWTEST_F(ObjectManagerMockTest, GetCurrentUser002, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::vector users; EXPECT_CALL(AccountDelegateMock::Init(), QueryUsers(_)) .Times(1) @@ -241,7 +249,7 @@ HWTEST_F(ObjectManagerMockTest, GetCurrentUser002, TestSize.Level1) SetArgReferee<0>(users), Invoke([](std::vector& users) { users.clear(); }), Return(true))); - auto result = manager->GetCurrentUser(); + auto result = manager.GetCurrentUser(); EXPECT_EQ(result, ""); } @@ -254,15 +262,122 @@ HWTEST_F(ObjectManagerMockTest, GetCurrentUser002, TestSize.Level1) */ HWTEST_F(ObjectManagerMockTest, GetCurrentUser003, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::vector users = {0, 1}; EXPECT_CALL(AccountDelegateMock::Init(), QueryUsers(_)) .Times(1) .WillOnce(DoAll( SetArgReferee<0>(users), Return(true))); - auto result = manager->GetCurrentUser(); + auto result = manager.GetCurrentUser(); EXPECT_EQ(result, std::to_string(users[0])); } + +/** +* @tc.name: WaitAssets001 +* @tc.desc: WaitAssets test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, WaitAssets001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string objectKey = "objectKey"; + ObjectStoreManager::SaveInfo info; + std::map data; + auto ret = manager.WaitAssets(objectKey, info, data); + EXPECT_EQ(ret, DistributedObject::OBJECT_INNER_ERROR); +} + +/** +* @tc.name: NotifyAssetsReady001 +* @tc.desc: NotifyAssetsReady test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, NotifyAssetsReady001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string objectKey = "objectKey"; + std::string bundleName = "bundleName"; + std::string srcNetworkId = "srcNetworkId"; + manager.NotifyAssetsReady(objectKey, bundleName, srcNetworkId); + EXPECT_EQ(manager.executors_, nullptr); +} + +/** +* @tc.name: DoNotifyAssetsReady001 +* @tc.desc: DoNotifyAssetsReady test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, DoNotifyAssetsReady001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + uint32_t tokenId = 0; + ObjectStoreManager::CallbackInfo info; + std::string objectKey = "objectKey"; + bool isReady = true; + manager.DoNotifyAssetsReady(tokenId, info, objectKey, isReady); + EXPECT_EQ(manager.executors_, nullptr); +} + +/** +* @tc.name: DoNotifyWaitAssetTimeout001 +* @tc.desc: DoNotifyWaitAssetTimeout test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, DoNotifyWaitAssetTimeout001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string objectKey = "objectKey"; + manager.DoNotifyWaitAssetTimeout(objectKey); + EXPECT_EQ(manager.executors_, nullptr); +} + +/** +* @tc.name: FlushClosedStore001 +* @tc.desc: FlushClosedStore test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, FlushClosedStore001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + manager.FlushClosedStore(); + EXPECT_EQ(manager.executors_, nullptr); +} + +/** +* @tc.name: CloseAfterMinute001 +* @tc.desc: CloseAfterMinute test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, CloseAfterMinute001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + manager.CloseAfterMinute(); + EXPECT_EQ(manager.executors_, nullptr); +} + +/** +* @tc.name: UnRegisterAssetsLister001 +* @tc.desc: UnRegisterAssetsLister test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerMockTest, UnRegisterAssetsLister001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + manager.objectAssetsRecvListener_ = nullptr; + auto ret = manager.UnRegisterAssetsLister(); + EXPECT_EQ(ret, true); + EXPECT_CALL(*fileDaemonMgrMock, RegisterAssetCallback(_)) + .WillOnce(testing::Return(0)); + manager.RegisterAssetsLister(); + EXPECT_CALL(*fileDaemonMgrMock, UnRegisterAssetCallback(_)) + .WillOnce(testing::Return(-1)); + ret = manager.UnRegisterAssetsLister(); + EXPECT_EQ(ret, false); + EXPECT_CALL(*fileDaemonMgrMock, UnRegisterAssetCallback(_)) + .WillOnce(testing::Return(0)); + ret = manager.UnRegisterAssetsLister(); + EXPECT_EQ(ret, true); +} }; // namespace DistributedDataTest } // namespace OHOS::Test \ No newline at end of file diff --git a/services/distributeddataservice/service/test/object_manager_test.cpp b/services/distributeddataservice/service/test/object_manager_test.cpp index 3462063ebd24bae59f3222302bc7d2001b1ae15a..c0d4b94cf410c238547ca4d648a685338268bc02 100644 --- a/services/distributeddataservice/service/test/object_manager_test.cpp +++ b/services/distributeddataservice/service/test/object_manager_test.cpp @@ -23,8 +23,9 @@ #include "bootstrap.h" #include "device_manager_adapter_mock.h" #include "executor_pool.h" -#include "kvstore_meta_manager.h" #include "kv_store_nb_delegate_mock.h" +#include "kvstore_meta_manager.h" +#include "metadata/object_user_meta_data.h" #include "object_types.h" #include "snapshot/machine_status.h" @@ -36,6 +37,155 @@ using namespace testing; using AssetValue = OHOS::CommonType::AssetValue; using RestoreStatus = OHOS::DistributedObject::ObjectStoreManager::RestoreStatus; namespace OHOS::Test { +class IObjectSaveCallback { +public: + virtual void Completed(const std::map &results) = 0; +}; +class IObjectRevokeSaveCallback { +public: + virtual void Completed(int32_t status) = 0; +}; +class IObjectRetrieveCallback { +public: + virtual void Completed(const std::map> &results, bool allReady) = 0; +}; +class IObjectChangeCallback { +public: + virtual void Completed(const std::map> &results, bool allReady) = 0; +}; + +class IObjectProgressCallback { +public: + virtual void Completed(int32_t progress) = 0; +}; + +class ObjectSaveCallbackBroker : public IObjectSaveCallback, public IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedObject.IObjectSaveCallback"); +}; +class ObjectSaveCallbackStub : public IRemoteStub { +public: + int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } +}; +class ObjectRevokeSaveCallbackBroker : public IObjectRevokeSaveCallback, public IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedObject.IObjectRevokeSaveCallback"); +}; +class ObjectRevokeSaveCallbackStub : public IRemoteStub { +public: + int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } +}; +class ObjectRetrieveCallbackBroker : public IObjectRetrieveCallback, public IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedObject.IObjectRetrieveCallback"); +}; +class ObjectRetrieveCallbackStub : public IRemoteStub { +public: + int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } +}; + +class ObjectChangeCallbackBroker : public IObjectChangeCallback, public IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedObject.IObjectChangeCallback"); +}; + +class ObjectChangeCallbackStub : public IRemoteStub { +public: + int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } +}; + +class ObjectProgressCallbackBroker : public IObjectProgressCallback, public IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedObject.IObjectProgressCallback"); +}; + +class ObjectProgressCallbackStub : public IRemoteStub { +public: + int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } +}; + +class ObjectSaveCallback : public ObjectSaveCallbackStub { +public: + explicit ObjectSaveCallback(const std::function &)> &callback) + : callback_(callback) + { + } + void Completed(const std::map &results) override + { + } + +private: + const std::function &)> callback_; +}; +class ObjectRevokeSaveCallback : public ObjectRevokeSaveCallbackStub { +public: + explicit ObjectRevokeSaveCallback(const std::function &callback) : callback_(callback) + { + } + void Completed(int32_t) override + { + } + +private: + const std::function callback_; +}; +class ObjectRetrieveCallback : public ObjectRetrieveCallbackStub { +public: + explicit ObjectRetrieveCallback( + const std::function> &, bool)> &callback) + : callback_(callback) + { + } + void Completed(const std::map> &results, bool allReady) override + { + } + +private: + const std::function> &, bool)> callback_; +}; + +class ObjectChangeCallback : public ObjectChangeCallbackStub { +public: + explicit ObjectChangeCallback( + const std::function> &, bool)> &callback) + : callback_(callback) + { + } + void Completed(const std::map> &results, bool allReady) override + { + } + +private: + const std::function> &, bool)> callback_; +}; + +class ObjectProgressCallback : public ObjectProgressCallbackStub { +public: + explicit ObjectProgressCallback(const std::function &callback) : callback_(callback) + { + } + void Completed(int32_t progress) override + { + } + +private: + const std::function callback_; +}; class ObjectManagerTest : public testing::Test { public: @@ -118,7 +268,9 @@ void ObjectManagerTest::TearDownTestCase(void) devMgrAdapterMock = nullptr; } -void ObjectManagerTest::TearDown() {} +void ObjectManagerTest::TearDown() +{ +} /** * @tc.name: DeleteNotifier001 @@ -145,12 +297,10 @@ HWTEST_F(ObjectManagerTest, Process001, TestSize.Level0) { auto syncManager = SequenceSyncManager::GetInstance(); std::map results; - results = {{ "test_cloud", DistributedDB::DBStatus::OK }}; + results = { { "test_cloud", DistributedDB::DBStatus::OK } }; std::function &results)> func; - func = [](const std::map &results) { - return results; - }; + func = [](const std::map &results) { return results; }; auto result = syncManager->Process(sequenceId_, results, userId_); ASSERT_EQ(result, SequenceSyncManager::ERR_SID_NOT_EXIST); syncManager->seqIdCallbackRelations_.emplace(sequenceId_, func); @@ -169,11 +319,9 @@ HWTEST_F(ObjectManagerTest, DeleteNotifierNoLock001, TestSize.Level0) { auto syncManager = SequenceSyncManager::GetInstance(); std::function &results)> func; - func = [](const std::map &results) { - return results; - }; + func = [](const std::map &results) { return results; }; syncManager->seqIdCallbackRelations_.emplace(sequenceId_, func); - std::vector seqIds = {sequenceId_, sequenceId_2, sequenceId_3}; + std::vector seqIds = { sequenceId_, sequenceId_2, sequenceId_3 }; std::string userId = "user_1"; auto result = syncManager->DeleteNotifierNoLock(sequenceId_, userId_); ASSERT_EQ(result, SequenceSyncManager::SUCCESS_USER_HAS_FINISHED); @@ -182,6 +330,29 @@ HWTEST_F(ObjectManagerTest, DeleteNotifierNoLock001, TestSize.Level0) ASSERT_EQ(result, SequenceSyncManager::SUCCESS_USER_IN_USE); } +/** +* @tc.name: SaveToStoreTest +* @tc.desc: SaveToStore test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, SaveToStoreTest, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string dataDir = "/data/app/el2/100/database"; + manager.SetData(dataDir, userId_); + auto result = manager.Open(); + ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); + ASSERT_NE(manager.delegate_, nullptr); + ObjectRecord data{}; + result = manager.SaveToStore("appId", "sessionId", "toDeviceId", data); + ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); + + manager.ForceClose(); + ASSERT_EQ(manager.delegate_, nullptr); + result = manager.SaveToStore("appId", "sessionId", "toDeviceId", data); + ASSERT_NE(result, DistributedObject::OBJECT_SUCCESS); +} + /** * @tc.name: Clear001 * @tc.desc: Clear test. @@ -191,12 +362,14 @@ HWTEST_F(ObjectManagerTest, DeleteNotifierNoLock001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, Clear001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + ObjectUserMetaData userMeta; + MetaDataManager::GetInstance().SaveMeta(ObjectUserMetaData::GetKey(), userMeta, true); + auto &manager = ObjectStoreManager::GetInstance(); std::string dataDir = "/data/app/el2/100/database"; - manager->SetData(dataDir, userId_); - auto result = manager->Clear(); + manager.SetData(dataDir, userId_); + auto result = manager.Clear(); ASSERT_EQ(result, OHOS::DistributedObject::OBJECT_SUCCESS); - auto size = manager->callbacks_.Size(); + auto size = manager.callbacks_.Size(); ASSERT_EQ(size, 0); } @@ -209,14 +382,17 @@ HWTEST_F(ObjectManagerTest, Clear001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, registerAndUnregisterRemoteCallback001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - sptr callback; - manager->RegisterRemoteCallback(bundleName_, sessionId_, pid_, tokenId_, callback); - ObjectStoreManager::CallbackInfo callbackInfo = manager->callbacks_.Find(tokenId_).second; + auto &manager = ObjectStoreManager::GetInstance(); + std::function> &, bool)> cb = + [](const std::map> &, bool) {}; + sptr objectRemoteResumeCallback = new (std::nothrow) ObjectChangeCallback(cb); + ASSERT_NE(objectRemoteResumeCallback, nullptr); + manager.RegisterRemoteCallback(bundleName_, sessionId_, pid_, tokenId_, objectRemoteResumeCallback->AsObject()); + ObjectStoreManager::CallbackInfo callbackInfo = manager.callbacks_.Find(tokenId_).second; std::string prefix = bundleName_ + sessionId_; ASSERT_NE(callbackInfo.observers_.find(prefix), callbackInfo.observers_.end()); - manager->UnregisterRemoteCallback(bundleName_, pid_, tokenId_, sessionId_); - callbackInfo = manager->callbacks_.Find(tokenId_).second; + manager.UnregisterRemoteCallback(bundleName_, pid_, tokenId_, sessionId_); + callbackInfo = manager.callbacks_.Find(tokenId_).second; ASSERT_EQ(callbackInfo.observers_.find(prefix), callbackInfo.observers_.end()); } @@ -229,14 +405,15 @@ HWTEST_F(ObjectManagerTest, registerAndUnregisterRemoteCallback001, TestSize.Lev */ HWTEST_F(ObjectManagerTest, registerAndUnregisterRemoteCallback002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); sptr callback; uint32_t tokenId = 101; - manager->RegisterRemoteCallback("", sessionId_, pid_, tokenId, callback); - manager->RegisterRemoteCallback(bundleName_, "", pid_, tokenId, callback); - manager->RegisterRemoteCallback("", "", pid_, tokenId, callback); - ASSERT_EQ(manager->callbacks_.Find(tokenId).first, false); - manager->UnregisterRemoteCallback("", pid_, tokenId, sessionId_); + manager.RegisterRemoteCallback("", sessionId_, pid_, tokenId, callback); + manager.RegisterRemoteCallback(bundleName_, "", pid_, tokenId, callback); + manager.RegisterRemoteCallback("", "", pid_, tokenId, callback); + manager.RegisterRemoteCallback(bundleName_, sessionId_, pid_, tokenId, nullptr); + ASSERT_EQ(manager.callbacks_.Find(tokenId).first, false); + manager.UnregisterRemoteCallback("", pid_, tokenId, sessionId_); } /** @@ -248,7 +425,7 @@ HWTEST_F(ObjectManagerTest, registerAndUnregisterRemoteCallback002, TestSize.Lev */ HWTEST_F(ObjectManagerTest, NotifyDataChanged001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string bundleName1_ = "com.examples.ophm.notepad"; std::string objectKey = bundleName1_ + sessionId_; std::map>> data; @@ -257,13 +434,13 @@ HWTEST_F(ObjectManagerTest, NotifyDataChanged001, TestSize.Level0) data1_.push_back(RestoreStatus::DATA_READY); data1_.push_back(RestoreStatus::ASSETS_READY); data1_.push_back(RestoreStatus::ALL_READY); - data1 = {{ "objectKey", data1_ }}; - data = {{ objectKey, data1 }}; + data1 = { { "objectKey", data1_ } }; + data = { { objectKey, data1 } }; std::shared_ptr executors = std::make_shared(5, 3); // executor pool - manager->SetThreadPool(executors); - ASSERT_EQ(manager->restoreStatus_.Find(objectKey).first, false); - manager->NotifyDataChanged(data, {}); - ASSERT_EQ(manager->restoreStatus_.Find(objectKey).second, RestoreStatus::DATA_READY); + manager.SetThreadPool(executors); + ASSERT_EQ(manager.restoreStatus_.Find(objectKey).first, false); + manager.NotifyDataChanged(data, {}); + ASSERT_EQ(manager.restoreStatus_.Find(objectKey).second, RestoreStatus::DATA_READY); } /** @@ -275,16 +452,16 @@ HWTEST_F(ObjectManagerTest, NotifyDataChanged001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, NotifyAssetsReady001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string objectKey = bundleName_ + sessionId_; std::string srcNetworkId = "1"; - ASSERT_EQ(manager->restoreStatus_.Find(objectKey).first, false); - manager->NotifyAssetsReady(objectKey, srcNetworkId); - ASSERT_EQ(manager->restoreStatus_.Find(objectKey).second, RestoreStatus::ASSETS_READY); - manager->restoreStatus_.Clear(); - manager->restoreStatus_.Insert(objectKey, RestoreStatus::DATA_READY); - manager->NotifyAssetsReady(objectKey, srcNetworkId); - ASSERT_EQ(manager->restoreStatus_.Find(objectKey).second, RestoreStatus::ALL_READY); + ASSERT_EQ(manager.restoreStatus_.Find(objectKey).first, false); + manager.NotifyAssetsReady(objectKey, srcNetworkId); + ASSERT_EQ(manager.restoreStatus_.Find(objectKey).second, RestoreStatus::ASSETS_READY); + manager.restoreStatus_.Clear(); + manager.restoreStatus_.Insert(objectKey, RestoreStatus::DATA_READY); + manager.NotifyAssetsReady(objectKey, srcNetworkId); + ASSERT_EQ(manager.restoreStatus_.Find(objectKey).second, RestoreStatus::ALL_READY); } /** @@ -294,36 +471,36 @@ HWTEST_F(ObjectManagerTest, NotifyAssetsReady001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, NotifyAssetsReady002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - std::string objectKey="com.example.myapplicaiton123456"; + auto &manager = ObjectStoreManager::GetInstance(); + std::string objectKey = "com.example.myapplicaiton123456"; std::string srcNetworkId = "654321"; - manager->restoreStatus_.Clear(); - manager->NotifyAssetsStart(objectKey, srcNetworkId); - auto [has0, value0] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Clear(); + manager.NotifyAssetsStart(objectKey, srcNetworkId); + auto [has0, value0] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has0); EXPECT_EQ(value0, RestoreStatus::NONE); - manager->restoreStatus_.Clear(); - manager->NotifyAssetsReady(objectKey, srcNetworkId); - auto [has1, value1] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Clear(); + manager.NotifyAssetsReady(objectKey, srcNetworkId); + auto [has1, value1] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has1); EXPECT_EQ(value1, RestoreStatus::ASSETS_READY); - manager->restoreStatus_.Clear(); - manager->restoreStatus_.Insert(objectKey, RestoreStatus::DATA_NOTIFIED); - manager->NotifyAssetsReady(objectKey, srcNetworkId); - auto [has2, value2] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Clear(); + manager.restoreStatus_.Insert(objectKey, RestoreStatus::DATA_NOTIFIED); + manager.NotifyAssetsReady(objectKey, srcNetworkId); + auto [has2, value2] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has2); EXPECT_EQ(value2, RestoreStatus::ALL_READY); - manager->restoreStatus_.Clear(); - manager->restoreStatus_.Insert(objectKey, RestoreStatus::DATA_READY); - manager->NotifyAssetsReady(objectKey, srcNetworkId); - auto [has3, value3] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Clear(); + manager.restoreStatus_.Insert(objectKey, RestoreStatus::DATA_READY); + manager.NotifyAssetsReady(objectKey, srcNetworkId); + auto [has3, value3] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has3); EXPECT_EQ(value3, RestoreStatus::ALL_READY); - manager->restoreStatus_.Clear(); + manager.restoreStatus_.Clear(); } /** @@ -335,18 +512,18 @@ HWTEST_F(ObjectManagerTest, NotifyAssetsReady002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, NotifyChange001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> data; std::map> data1; std::vector data1_; data1_.push_back(RestoreStatus::DATA_READY); data_.push_back(RestoreStatus::ALL_READY); - data = {{ "test_cloud", data_ }}; - data1 = {{ "p_###SAVEINFO###001", data1_ }}; - manager->NotifyChange(data1); - EXPECT_FALSE(manager->restoreStatus_.Find("p_###SAVEINFO###001").first); - manager->NotifyChange(data); - EXPECT_FALSE(manager->restoreStatus_.Find("test_cloud").first); + data = { { "test_cloud", data_ } }; + data1 = { { "p_###SAVEINFO###001", data1_ } }; + manager.NotifyChange(data1); + EXPECT_FALSE(manager.restoreStatus_.Find("p_###SAVEINFO###001").first); + manager.NotifyChange(data); + EXPECT_FALSE(manager.restoreStatus_.Find("test_cloud").first); } /** @@ -356,11 +533,11 @@ HWTEST_F(ObjectManagerTest, NotifyChange001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, NotifyChange002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::shared_ptr executor = std::make_shared(1, 0); - manager->SetThreadPool(executor); + manager.SetThreadPool(executor); std::map> data{}; - std::vector value{0}; + std::vector value{ 0 }; std::string bundleName = "com.example.myapplication"; std::string sessionId = "123456"; std::string source = "source"; @@ -381,13 +558,13 @@ HWTEST_F(ObjectManagerTest, NotifyChange002, TestSize.Level0) data.insert_or_assign(assetPrefix + ObjectStore::SIZE_SUFFIX, value); data.insert_or_assign("testkey", value); EXPECT_CALL(*devMgrAdapterMock, IsSameAccount(_)).WillOnce(Return(true)); - manager->NotifyChange(data); - EXPECT_TRUE(manager->restoreStatus_.Contains(bundleName+sessionId)); - auto [has, taskId] = manager->objectTimer_.Find(bundleName+sessionId); + manager.NotifyChange(data); + EXPECT_TRUE(manager.restoreStatus_.Contains(bundleName + sessionId)); + auto [has, taskId] = manager.objectTimer_.Find(bundleName + sessionId); EXPECT_TRUE(has); - manager->restoreStatus_.Clear(); - manager->executors_->Remove(taskId); - manager->objectTimer_.Clear(); + manager.restoreStatus_.Clear(); + manager.executors_->Remove(taskId); + manager.objectTimer_.Clear(); } /** @@ -397,30 +574,30 @@ HWTEST_F(ObjectManagerTest, NotifyChange002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, ComputeStatus001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::shared_ptr executor = std::make_shared(1, 0); - manager->SetThreadPool(executor); - std::string objectKey="com.example.myapplicaiton123456"; + manager.SetThreadPool(executor); + std::string objectKey = "com.example.myapplicaiton123456"; std::map>> data{}; - manager->restoreStatus_.Clear(); - manager->ComputeStatus(objectKey, {}, data); - auto [has0, value0] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Clear(); + manager.ComputeStatus(objectKey, {}, data); + auto [has0, value0] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has0); EXPECT_EQ(value0, RestoreStatus::DATA_READY); - auto [has1, taskId1] = manager->objectTimer_.Find(objectKey); + auto [has1, taskId1] = manager.objectTimer_.Find(objectKey); EXPECT_TRUE(has1); - manager->executors_->Remove(taskId1); - manager->objectTimer_.Clear(); - manager->restoreStatus_.Clear(); + manager.executors_->Remove(taskId1); + manager.objectTimer_.Clear(); + manager.restoreStatus_.Clear(); - manager->restoreStatus_.Insert(objectKey, RestoreStatus::ASSETS_READY); - manager->ComputeStatus(objectKey, {}, data); - auto [has2, value2] = manager->restoreStatus_.Find(objectKey); + manager.restoreStatus_.Insert(objectKey, RestoreStatus::ASSETS_READY); + manager.ComputeStatus(objectKey, {}, data); + auto [has2, value2] = manager.restoreStatus_.Find(objectKey); EXPECT_TRUE(has2); EXPECT_EQ(value2, RestoreStatus::ALL_READY); - auto [has3, taskId3] = manager->objectTimer_.Find(objectKey); + auto [has3, taskId3] = manager.objectTimer_.Find(objectKey); EXPECT_FALSE(has3); - manager->restoreStatus_.Clear(); + manager.restoreStatus_.Clear(); } /** @@ -432,20 +609,20 @@ HWTEST_F(ObjectManagerTest, ComputeStatus001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, Open001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - manager->kvStoreDelegateManager_ = nullptr; - auto result = manager->Open(); + auto &manager = ObjectStoreManager::GetInstance(); + manager.kvStoreDelegateManager_ = nullptr; + auto result = manager.Open(); ASSERT_EQ(result, DistributedObject::OBJECT_INNER_ERROR); std::string dataDir = "/data/app/el2/100/database"; - manager->SetData(dataDir, userId_); - manager->delegate_ = nullptr; - result = manager->Open(); + manager.SetData(dataDir, userId_); + manager.delegate_ = nullptr; + result = manager.Open(); ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); - manager->delegate_ = manager->OpenObjectKvStore(); - result = manager->Open(); + manager.delegate_ = manager.OpenObjectKvStore(); + result = manager.Open(); ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); - manager->ForceClose(); - ASSERT_EQ(manager->delegate_, nullptr); + manager.ForceClose(); + ASSERT_EQ(manager.delegate_, nullptr); } /** @@ -457,13 +634,13 @@ HWTEST_F(ObjectManagerTest, Open001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, OnAssetChanged001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::shared_ptr snapshot = std::make_shared(); auto snapshotKey = appId_ + "_" + sessionId_; - auto result = manager->OnAssetChanged(tokenId_, appId_, sessionId_, deviceId_, assetValue_); + auto result = manager.OnAssetChanged(tokenId_, appId_, sessionId_, deviceId_, assetValue_); ASSERT_EQ(result, DistributedObject::OBJECT_INNER_ERROR); - manager->snapshots_.Insert(snapshotKey, snapshot); - result = manager->OnAssetChanged(tokenId_, appId_, sessionId_, deviceId_, assetValue_); + manager.snapshots_.Insert(snapshotKey, snapshot); + result = manager.OnAssetChanged(tokenId_, appId_, sessionId_, deviceId_, assetValue_); ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); } @@ -476,17 +653,17 @@ HWTEST_F(ObjectManagerTest, OnAssetChanged001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, DeleteSnapshot001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::shared_ptr snapshot = std::make_shared(); auto snapshotKey = bundleName_ + "_" + sessionId_; - auto snapshots = manager->snapshots_.Find(snapshotKey).second; + auto snapshots = manager.snapshots_.Find(snapshotKey).second; ASSERT_EQ(snapshots, nullptr); - manager->DeleteSnapshot(bundleName_, sessionId_); + manager.DeleteSnapshot(bundleName_, sessionId_); - manager->snapshots_.Insert(snapshotKey, snapshot); - snapshots = manager->snapshots_.Find(snapshotKey).second; + manager.snapshots_.Insert(snapshotKey, snapshot); + snapshots = manager.snapshots_.Find(snapshotKey).second; ASSERT_NE(snapshots, nullptr); - manager->DeleteSnapshot(bundleName_, sessionId_); + manager.DeleteSnapshot(bundleName_, sessionId_); } /** @@ -498,19 +675,19 @@ HWTEST_F(ObjectManagerTest, DeleteSnapshot001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, FlushClosedStore001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - manager->isSyncing_ = true; - manager->syncCount_ = 10; // test syncCount_ - manager->delegate_ = nullptr; - manager->FlushClosedStore(); - manager->isSyncing_ = false; - manager->FlushClosedStore(); - manager->syncCount_ = 0; // test syncCount_ - manager->FlushClosedStore(); - manager->delegate_ = manager->OpenObjectKvStore(); - ASSERT_NE(manager->delegate_, nullptr); - manager->FlushClosedStore(); - ASSERT_EQ(manager->delegate_, nullptr); + auto &manager = ObjectStoreManager::GetInstance(); + manager.isSyncing_ = true; + manager.syncCount_ = 10; // test syncCount_ + manager.delegate_ = nullptr; + manager.FlushClosedStore(); + manager.isSyncing_ = false; + manager.FlushClosedStore(); + manager.syncCount_ = 0; // test syncCount_ + manager.FlushClosedStore(); + manager.delegate_ = manager.OpenObjectKvStore(); + ASSERT_NE(manager.delegate_, nullptr); + manager.FlushClosedStore(); + ASSERT_EQ(manager.delegate_, nullptr); } /** @@ -522,13 +699,13 @@ HWTEST_F(ObjectManagerTest, FlushClosedStore001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, Close001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - manager->syncCount_ = 1; // test syncCount_ - manager->Close(); - ASSERT_EQ(manager->syncCount_, 1); // 1 is for testing - manager->delegate_ = manager->OpenObjectKvStore(); - manager->Close(); - ASSERT_EQ(manager->syncCount_, 0); // 0 is for testing + auto &manager = ObjectStoreManager::GetInstance(); + manager.syncCount_ = 1; // test syncCount_ + manager.Close(); + ASSERT_EQ(manager.syncCount_, 1); // 1 is for testing + manager.delegate_ = manager.OpenObjectKvStore(); + manager.Close(); + ASSERT_EQ(manager.syncCount_, 0); // 0 is for testing } /** @@ -540,15 +717,15 @@ HWTEST_F(ObjectManagerTest, Close001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, RetrieveFromStore001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); DistributedDB::KvStoreNbDelegateMock mockDelegate; - manager->delegate_ = &mockDelegate; + manager.delegate_ = &mockDelegate; std::vector id; - id.push_back(1); // for testing - id.push_back(2); // for testing + id.push_back(1); // for testing + id.push_back(2); // for testing std::map> results; - results = {{ "test_cloud", id }}; - auto result = manager->RetrieveFromStore(appId_, sessionId_, results); + results = { { "test_cloud", id } }; + auto result = manager.RetrieveFromStore(appId_, sessionId_, results); ASSERT_EQ(result, OBJECT_SUCCESS); } @@ -561,28 +738,26 @@ HWTEST_F(ObjectManagerTest, RetrieveFromStore001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, SyncCompleted001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); auto syncManager = SequenceSyncManager::GetInstance(); std::map results; - results = {{ "test_cloud", DistributedDB::DBStatus::OK }}; + results = { { "test_cloud", DistributedDB::DBStatus::OK } }; std::function &results)> func; - func = [](const std::map &results) { - return results; - }; - manager->userId_ = "99"; + func = [](const std::map &results) { return results; }; + manager.userId_ = "99"; std::vector userId; userId.push_back(99); userId.push_back(100); - manager->SyncCompleted(results, sequenceId_); - syncManager->userIdSeqIdRelations_ = {{ "test_cloud", userId }}; - manager->SyncCompleted(results, sequenceId_); + manager.SyncCompleted(results, sequenceId_); + syncManager->userIdSeqIdRelations_ = { { "test_cloud", userId } }; + manager.SyncCompleted(results, sequenceId_); userId.clear(); syncManager->seqIdCallbackRelations_.emplace(sequenceId_, func); - manager->SyncCompleted(results, sequenceId_); + manager.SyncCompleted(results, sequenceId_); userId.push_back(99); userId.push_back(100); - manager->SyncCompleted(results, sequenceId_); - EXPECT_FALSE(manager->isSyncing_); + manager.SyncCompleted(results, sequenceId_); + EXPECT_FALSE(manager.isSyncing_); } /** @@ -594,12 +769,12 @@ HWTEST_F(ObjectManagerTest, SyncCompleted001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, SplitEntryKey001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string key1 = ""; std::string key2 = "ObjectManagerTest"; - auto result = manager->SplitEntryKey(key1); + auto result = manager.SplitEntryKey(key1); ASSERT_EQ(result.empty(), true); - result = manager->SplitEntryKey(key2); + result = manager.SplitEntryKey(key2); ASSERT_EQ(result.empty(), true); } @@ -610,9 +785,9 @@ HWTEST_F(ObjectManagerTest, SplitEntryKey001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, SplitEntryKey002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string key1 = "com.example.myapplication_sessionId_source_target_1234567890_p_propertyName"; - auto res = manager->SplitEntryKey(key1); + auto res = manager.SplitEntryKey(key1); EXPECT_EQ(res[0], "com.example.myapplication"); EXPECT_EQ(res[1], "sessionId"); EXPECT_EQ(res[2], "source"); @@ -621,19 +796,19 @@ HWTEST_F(ObjectManagerTest, SplitEntryKey002, TestSize.Level0) EXPECT_EQ(res[5], "p_propertyName"); std::string key2 = "com.example.myapplication_sessionId_source_target_000_p_propertyName"; - res = manager->SplitEntryKey(key2); + res = manager.SplitEntryKey(key2); EXPECT_TRUE(res.empty()); std::string key3 = "com.example.myapplicationsessionIdsourcetarget_1234567890_p_propertyName"; - res = manager->SplitEntryKey(key3); + res = manager.SplitEntryKey(key3); EXPECT_TRUE(res.empty()); std::string key4 = "com.example.myapplicationsessionIdsource_target_1234567890_p_propertyName"; - res = manager->SplitEntryKey(key4); + res = manager.SplitEntryKey(key4); EXPECT_TRUE(res.empty()); std::string key5 = "com.example.myapplicationsessionId_source_target_1234567890_p_propertyName"; - res = manager->SplitEntryKey(key5); + res = manager.SplitEntryKey(key5); EXPECT_TRUE(res.empty()); } @@ -646,18 +821,18 @@ HWTEST_F(ObjectManagerTest, SplitEntryKey002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, ProcessOldEntry001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - manager->delegate_ = manager->OpenObjectKvStore(); + auto &manager = ObjectStoreManager::GetInstance(); + manager.delegate_ = manager.OpenObjectKvStore(); std::vector entries; - auto status = manager->delegate_->GetEntries(std::vector(appId_.begin(), appId_.end()), entries); + auto status = manager.delegate_->GetEntries(std::vector(appId_.begin(), appId_.end()), entries); ASSERT_EQ(status, DistributedDB::DBStatus::NOT_FOUND); - manager->ProcessOldEntry(appId_); + manager.ProcessOldEntry(appId_); DistributedDB::KvStoreNbDelegateMock mockDelegate; - manager->delegate_ = &mockDelegate; - status = manager->delegate_->GetEntries(std::vector(appId_.begin(), appId_.end()), entries); + manager.delegate_ = &mockDelegate; + status = manager.delegate_->GetEntries(std::vector(appId_.begin(), appId_.end()), entries); ASSERT_EQ(status, DistributedDB::DBStatus::OK); - manager->ProcessOldEntry(appId_); + manager.ProcessOldEntry(appId_); } /** @@ -669,13 +844,13 @@ HWTEST_F(ObjectManagerTest, ProcessOldEntry001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, ProcessSyncCallback001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map results; - manager->ProcessSyncCallback(results, appId_, sessionId_, deviceId_); - results.insert({"local", 1}); // for testing + manager.ProcessSyncCallback(results, appId_, sessionId_, deviceId_); + results.insert({ "local", 1 }); // for testing ASSERT_EQ(results.empty(), false); ASSERT_NE(results.find("local"), results.end()); - manager->ProcessSyncCallback(results, appId_, sessionId_, deviceId_); + manager.ProcessSyncCallback(results, appId_, sessionId_, deviceId_); } /** @@ -686,23 +861,23 @@ HWTEST_F(ObjectManagerTest, ProcessSyncCallback001, TestSize.Level0) HWTEST_F(ObjectManagerTest, ProcessSyncCallback002, TestSize.Level0) { std::string dataDir = "/data/app/el2/100/database"; - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map results; - - results.insert({"remote", 1}); // for testing + + results.insert({ "remote", 1 }); // for testing ASSERT_EQ(results.empty(), false); ASSERT_EQ(results.find("local"), results.end()); - manager->kvStoreDelegateManager_ = nullptr; + manager.kvStoreDelegateManager_ = nullptr; // open store failed -> success - manager->ProcessSyncCallback(results, appId_, sessionId_, deviceId_); + manager.ProcessSyncCallback(results, appId_, sessionId_, deviceId_); // open store success -> success - manager->SetData(dataDir, userId_); - ASSERT_NE(manager->kvStoreDelegateManager_, nullptr); - manager->delegate_ = manager->OpenObjectKvStore(); - ASSERT_NE(manager->delegate_, nullptr); - manager->ProcessSyncCallback(results, appId_, sessionId_, deviceId_); + manager.SetData(dataDir, userId_); + ASSERT_NE(manager.kvStoreDelegateManager_, nullptr); + manager.delegate_ = manager.OpenObjectKvStore(); + ASSERT_NE(manager.delegate_, nullptr); + manager.ProcessSyncCallback(results, appId_, sessionId_, deviceId_); } /** @@ -714,32 +889,32 @@ HWTEST_F(ObjectManagerTest, ProcessSyncCallback002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, IsAssetComplete001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> results; std::vector completes; completes.push_back(1); // for testing completes.push_back(2); // for testing std::string assetPrefix = "IsAssetComplete_test"; - results.insert({assetPrefix, completes}); - auto result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix, completes }); + auto result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::NAME_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::NAME_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::URI_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::URI_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::PATH_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::PATH_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::CREATE_TIME_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::CREATE_TIME_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, false); - results.insert({assetPrefix + ObjectStore::SIZE_SUFFIX, completes}); - result = manager->IsAssetComplete(results, assetPrefix); + results.insert({ assetPrefix + ObjectStore::SIZE_SUFFIX, completes }); + result = manager.IsAssetComplete(results, assetPrefix); ASSERT_EQ(result, true); } @@ -752,18 +927,18 @@ HWTEST_F(ObjectManagerTest, IsAssetComplete001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> results; std::vector completes; completes.push_back(1); // for testing completes.push_back(2); // for testing std::string assetPrefix = "IsAssetComplete_test"; - results.insert({assetPrefix, completes}); - results.insert({assetPrefix + ObjectStore::NAME_SUFFIX, completes}); - results.insert({assetPrefix + ObjectStore::URI_SUFFIX, completes}); - results.insert({assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, completes}); - results.insert({assetPrefix + ObjectStore::SIZE_SUFFIX, completes}); - auto result = manager->GetAssetsFromDBRecords(results); + results.insert({ assetPrefix, completes }); + results.insert({ assetPrefix + ObjectStore::NAME_SUFFIX, completes }); + results.insert({ assetPrefix + ObjectStore::URI_SUFFIX, completes }); + results.insert({ assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, completes }); + results.insert({ assetPrefix + ObjectStore::SIZE_SUFFIX, completes }); + auto result = manager.GetAssetsFromDBRecords(results); ASSERT_EQ(result.empty(), false); } @@ -774,14 +949,14 @@ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> result; - std::vector value0{0}; + std::vector value0{ 0 }; std::string data0 = "[STRING]test"; value0.insert(value0.end(), data0.begin(), data0.end()); - std::vector value1{0}; + std::vector value1{ 0 }; std::string data1 = "(string)test"; value1.insert(value1.end(), data1.begin(), data1.end()); @@ -790,26 +965,26 @@ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords002, TestSize.Level0) std::string assetPrefix0 = prefix + "_p_asset0"; std::string assetPrefix1 = prefix + "_p_asset1"; - result.insert({dataKey, value0}); - auto assets = manager->GetAssetsFromDBRecords(result); + result.insert({ dataKey, value0 }); + auto assets = manager.GetAssetsFromDBRecords(result); EXPECT_TRUE(assets.empty()); - + result.clear(); - result.insert({assetPrefix0 + ObjectStore::URI_SUFFIX, value0}); - assets = manager->GetAssetsFromDBRecords(result); + result.insert({ assetPrefix0 + ObjectStore::URI_SUFFIX, value0 }); + assets = manager.GetAssetsFromDBRecords(result); EXPECT_TRUE(assets.empty()); result.clear(); - result.insert({assetPrefix1 + ObjectStore::NAME_SUFFIX, value1}); - assets = manager->GetAssetsFromDBRecords(result); + result.insert({ assetPrefix1 + ObjectStore::NAME_SUFFIX, value1 }); + assets = manager.GetAssetsFromDBRecords(result); EXPECT_TRUE(assets.empty()); result.clear(); - result.insert({assetPrefix0 + ObjectStore::NAME_SUFFIX, value0}); - result.insert({assetPrefix0 + ObjectStore::URI_SUFFIX, value0}); - result.insert({assetPrefix0 + ObjectStore::MODIFY_TIME_SUFFIX, value0}); - result.insert({assetPrefix0 + ObjectStore::SIZE_SUFFIX, value0}); - assets = manager->GetAssetsFromDBRecords(result); + result.insert({ assetPrefix0 + ObjectStore::NAME_SUFFIX, value0 }); + result.insert({ assetPrefix0 + ObjectStore::URI_SUFFIX, value0 }); + result.insert({ assetPrefix0 + ObjectStore::MODIFY_TIME_SUFFIX, value0 }); + result.insert({ assetPrefix0 + ObjectStore::SIZE_SUFFIX, value0 }); + assets = manager.GetAssetsFromDBRecords(result); ASSERT_EQ(assets.size(), 1); EXPECT_EQ(assets[0].name, "test"); EXPECT_EQ(assets[0].uri, "test"); @@ -818,11 +993,11 @@ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords002, TestSize.Level0) EXPECT_EQ(assets[0].hash, "test_test"); result.clear(); - result.insert({assetPrefix1 + ObjectStore::NAME_SUFFIX, value1}); - result.insert({assetPrefix1 + ObjectStore::URI_SUFFIX, value1}); - result.insert({assetPrefix1 + ObjectStore::MODIFY_TIME_SUFFIX, value1}); - result.insert({assetPrefix1 + ObjectStore::SIZE_SUFFIX, value1}); - assets = manager->GetAssetsFromDBRecords(result); + result.insert({ assetPrefix1 + ObjectStore::NAME_SUFFIX, value1 }); + result.insert({ assetPrefix1 + ObjectStore::URI_SUFFIX, value1 }); + result.insert({ assetPrefix1 + ObjectStore::MODIFY_TIME_SUFFIX, value1 }); + result.insert({ assetPrefix1 + ObjectStore::SIZE_SUFFIX, value1 }); + assets = manager.GetAssetsFromDBRecords(result); ASSERT_EQ(assets.size(), 1); EXPECT_EQ(assets[0].name, "(string)test"); EXPECT_EQ(assets[0].uri, "(string)test"); @@ -840,14 +1015,14 @@ HWTEST_F(ObjectManagerTest, GetAssetsFromDBRecords002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, RegisterAssetsLister001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - manager->objectAssetsSendListener_ = nullptr; - manager->objectAssetsRecvListener_ = nullptr; - auto result = manager->RegisterAssetsLister(); + auto &manager = ObjectStoreManager::GetInstance(); + manager.objectAssetsSendListener_ = nullptr; + manager.objectAssetsRecvListener_ = nullptr; + auto result = manager.RegisterAssetsLister(); ASSERT_EQ(result, true); - manager->objectAssetsSendListener_ = new ObjectAssetsSendListener(); - manager->objectAssetsRecvListener_ = new ObjectAssetsRecvListener(); - result = manager->RegisterAssetsLister(); + manager.objectAssetsSendListener_ = new ObjectAssetsSendListener(); + manager.objectAssetsRecvListener_ = new ObjectAssetsRecvListener(); + result = manager.RegisterAssetsLister(); ASSERT_EQ(result, true); } @@ -860,14 +1035,14 @@ HWTEST_F(ObjectManagerTest, RegisterAssetsLister001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, PushAssets001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> data; std::string assetPrefix = "PushAssets_test"; std::vector completes; completes.push_back(1); // for testing completes.push_back(2); // for testing - data.insert({assetPrefix, completes}); - auto result = manager->PushAssets(appId_, appId_, sessionId_, data, deviceId_); + data.insert({ assetPrefix, completes }); + auto result = manager.PushAssets(appId_, appId_, sessionId_, data, deviceId_); ASSERT_EQ(result, DistributedObject::OBJECT_SUCCESS); } @@ -878,9 +1053,9 @@ HWTEST_F(ObjectManagerTest, PushAssets001, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, PushAssets002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::map> data; - std::vector value{0}; + std::vector value{ 0 }; std::string data0 = "[STRING]test"; value.insert(value.end(), data0.begin(), data0.end()); @@ -890,19 +1065,19 @@ HWTEST_F(ObjectManagerTest, PushAssets002, TestSize.Level0) std::string fieldsPrefix = "p_"; std::string deviceIdKey = "__deviceId"; - data.insert({assetPrefix + ObjectStore::NAME_SUFFIX, value}); - data.insert({assetPrefix + ObjectStore::URI_SUFFIX, value}); - data.insert({assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, value}); - data.insert({assetPrefix + ObjectStore::SIZE_SUFFIX, value}); - data.insert({fieldsPrefix + deviceIdKey, value}); + data.insert({ assetPrefix + ObjectStore::NAME_SUFFIX, value }); + data.insert({ assetPrefix + ObjectStore::URI_SUFFIX, value }); + data.insert({ assetPrefix + ObjectStore::MODIFY_TIME_SUFFIX, value }); + data.insert({ assetPrefix + ObjectStore::SIZE_SUFFIX, value }); + data.insert({ fieldsPrefix + deviceIdKey, value }); - manager->objectAssetsSendListener_ = nullptr; - int32_t ret = manager->PushAssets(appId_, appId_, sessionId_, data, deviceId_); + manager.objectAssetsSendListener_ = nullptr; + int32_t ret = manager.PushAssets(appId_, appId_, sessionId_, data, deviceId_); EXPECT_NE(ret, DistributedObject::OBJECT_SUCCESS); - manager->objectAssetsSendListener_ = new ObjectAssetsSendListener(); - ASSERT_NE(manager->objectAssetsSendListener_, nullptr); - ret = manager->PushAssets(appId_, appId_, sessionId_, data, deviceId_); + manager.objectAssetsSendListener_ = new ObjectAssetsSendListener(); + ASSERT_NE(manager.objectAssetsSendListener_, nullptr); + ret = manager.PushAssets(appId_, appId_, sessionId_, data, deviceId_); EXPECT_NE(ret, DistributedObject::OBJECT_SUCCESS); } @@ -915,9 +1090,7 @@ HWTEST_F(ObjectManagerTest, AddNotifier001, TestSize.Level0) { auto syncManager = SequenceSyncManager::GetInstance(); std::function &results)> func; - func = [](const std::map &results) { - return results; - }; + func = [](const std::map &results) { return results; }; auto sequenceId_ = syncManager->AddNotifier(userId_, func); auto result = syncManager->DeleteNotifier(sequenceId_, userId_); ASSERT_EQ(result, SequenceSyncManager::SUCCESS_USER_HAS_FINISHED); @@ -932,9 +1105,7 @@ HWTEST_F(ObjectManagerTest, AddNotifier002, TestSize.Level0) { auto syncManager = SequenceSyncManager::GetInstance(); std::function &results)> func; - func = [](const std::map &results) { - return results; - }; + func = [](const std::map &results) { return results; }; auto sequenceId = syncManager->AddNotifier(userId_, func); ASSERT_NE(sequenceId, sequenceId_); auto result = syncManager->DeleteNotifier(sequenceId_, userId_); @@ -948,10 +1119,10 @@ HWTEST_F(ObjectManagerTest, AddNotifier002, TestSize.Level0) */ HWTEST_F(ObjectManagerTest, BindAsset001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string bundleName = "BindAsset"; uint32_t tokenId = IPCSkeleton::GetCallingTokenID(); - auto result = manager->BindAsset(tokenId, bundleName, sessionId_, assetValue_, assetBindInfo_); + auto result = manager.BindAsset(tokenId, bundleName, sessionId_, assetValue_, assetBindInfo_); ASSERT_EQ(result, DistributedObject::OBJECT_DBSTATUS_ERROR); } @@ -985,7 +1156,7 @@ HWTEST_F(ObjectManagerTest, OnFinished001, TestSize.Level1) */ HWTEST_F(ObjectManagerTest, GetObjectData001, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string bundleName = bundleName_; std::string sessionId = sessionId_; @@ -999,9 +1170,9 @@ HWTEST_F(ObjectManagerTest, GetObjectData001, TestSize.Level1) // p_name not asset key std::string p_name = "p_namejpg"; std::string key = bundleName + "_" + sessionId + "_" + source + "_" + target + "_" + timestamp + "_" + p_name; - std::map> changedData = {{ key, data_ }}; + std::map> changedData = { { key, data_ } }; bool hasAsset = false; - auto ret = manager->GetObjectData(changedData, saveInfo, hasAsset); + auto ret = manager.GetObjectData(changedData, saveInfo, hasAsset); EXPECT_FALSE(ret.empty()); EXPECT_FALSE(hasAsset); } @@ -1013,7 +1184,7 @@ HWTEST_F(ObjectManagerTest, GetObjectData001, TestSize.Level1) */ HWTEST_F(ObjectManagerTest, GetObjectData002, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string bundleName = ""; std::string sessionId = ""; @@ -1035,9 +1206,9 @@ HWTEST_F(ObjectManagerTest, GetObjectData002, TestSize.Level1) timestamp = "1234567890"; std::string p_name = "p_name.jpg"; std::string key = bundleName + "_" + sessionId + "_" + source + "_" + target + "_" + timestamp + "_" + p_name; - std::map> changedData = {{ key, data_ }}; + std::map> changedData = { { key, data_ } }; bool hasAsset = false; - auto ret = manager->GetObjectData(changedData, saveInfo, hasAsset); + auto ret = manager.GetObjectData(changedData, saveInfo, hasAsset); EXPECT_FALSE(ret.empty()); EXPECT_EQ(saveInfo.bundleName, bundleName); EXPECT_TRUE(hasAsset); @@ -1048,9 +1219,9 @@ HWTEST_F(ObjectManagerTest, GetObjectData002, TestSize.Level1) // p_name not asset key p_name = "p_namejpg"; std::string key_1 = bundleName + "_" + sessionId + "_" + source + "_" + target + "_" + timestamp + "_" + p_name; - std::map> changedData_1 = {{ key_1, data_ }}; + std::map> changedData_1 = { { key_1, data_ } }; hasAsset = false; - ret = manager->GetObjectData(changedData_1, saveInfo, hasAsset); + ret = manager.GetObjectData(changedData_1, saveInfo, hasAsset); EXPECT_FALSE(ret.empty()); EXPECT_NE(saveInfo.bundleName, bundleName); EXPECT_FALSE(hasAsset); @@ -1063,8 +1234,8 @@ HWTEST_F(ObjectManagerTest, GetObjectData002, TestSize.Level1) */ HWTEST_F(ObjectManagerTest, InitUserMeta001, TestSize.Level1) { - auto manager = ObjectStoreManager::GetInstance(); - auto status = manager->InitUserMeta(); + auto &manager = ObjectStoreManager::GetInstance(); + auto status = manager.InitUserMeta(); ASSERT_EQ(status, DistributedObject::OBJECT_SUCCESS); } @@ -1077,14 +1248,17 @@ HWTEST_F(ObjectManagerTest, InitUserMeta001, TestSize.Level1) */ HWTEST_F(ObjectManagerTest, registerAndUnregisterProgressObserverCallback001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); - sptr callback; - manager->RegisterProgressObserverCallback(bundleName_, sessionId_, pid_, tokenId_, callback); - ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager->processCallbacks_.Find(tokenId_).second; + auto &manager = ObjectStoreManager::GetInstance(); + std::function cb = [](int32_t progress) {}; + sptr objectRemoteResumeCallback = new (std::nothrow) ObjectProgressCallback(cb); + ASSERT_NE(objectRemoteResumeCallback, nullptr); + manager.RegisterProgressObserverCallback(bundleName_, sessionId_, pid_, tokenId_, + objectRemoteResumeCallback->AsObject()); + ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager.processCallbacks_.Find(tokenId_).second; std::string objectKey = bundleName_ + sessionId_; ASSERT_NE(progressCallbackInfo.observers_.find(objectKey), progressCallbackInfo.observers_.end()); - manager->UnregisterProgressObserverCallback(bundleName_, pid_, tokenId_, sessionId_); - progressCallbackInfo = manager->processCallbacks_.Find(tokenId_).second; + manager.UnregisterProgressObserverCallback(bundleName_, pid_, tokenId_, sessionId_); + progressCallbackInfo = manager.processCallbacks_.Find(tokenId_).second; ASSERT_EQ(progressCallbackInfo.observers_.find(objectKey), progressCallbackInfo.observers_.end()); } @@ -1097,19 +1271,19 @@ HWTEST_F(ObjectManagerTest, registerAndUnregisterProgressObserverCallback001, Te */ HWTEST_F(ObjectManagerTest, registerAndUnregisterProgressObserverCallback002, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); sptr callback; uint32_t tokenId = 101; - manager->RegisterProgressObserverCallback("", sessionId_, pid_, tokenId, callback); - manager->RegisterProgressObserverCallback(bundleName_, "", pid_, tokenId, callback); - manager->RegisterProgressObserverCallback("", "", pid_, tokenId, callback); - ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager->processCallbacks_.Find(tokenId_).second; + manager.RegisterProgressObserverCallback("", sessionId_, pid_, tokenId, callback); + manager.RegisterProgressObserverCallback(bundleName_, "", pid_, tokenId, callback); + manager.RegisterProgressObserverCallback("", "", pid_, tokenId, callback); + ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager.processCallbacks_.Find(tokenId_).second; progressCallbackInfo.pid = pid_; - manager->RegisterProgressObserverCallback(bundleName_, sessionId_, pid_, tokenId_, callback); - ASSERT_EQ(manager->processCallbacks_.Find(tokenId).first, false); - manager->UnregisterProgressObserverCallback("", pid_, tokenId, sessionId_); - manager->UnregisterProgressObserverCallback("", pid_, tokenId, ""); - manager->UnregisterProgressObserverCallback(bundleName_, pid_, tokenId, ""); + manager.RegisterProgressObserverCallback(bundleName_, sessionId_, pid_, tokenId_, callback); + ASSERT_EQ(manager.processCallbacks_.Find(tokenId).first, false); + manager.UnregisterProgressObserverCallback("", pid_, tokenId, sessionId_); + manager.UnregisterProgressObserverCallback("", pid_, tokenId, ""); + manager.UnregisterProgressObserverCallback(bundleName_, pid_, tokenId, ""); } /** @@ -1121,17 +1295,17 @@ HWTEST_F(ObjectManagerTest, registerAndUnregisterProgressObserverCallback002, Te */ HWTEST_F(ObjectManagerTest, NotifyAssetsRecvProgress001, TestSize.Level0) { - auto manager = ObjectStoreManager::GetInstance(); + auto &manager = ObjectStoreManager::GetInstance(); std::string objectKey = bundleName_ + sessionId_; std::string errProgress = "errProgress"; int32_t progress = 100; - ASSERT_EQ(manager->assetsRecvProgress_.Find(objectKey).first, true); - ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager->processCallbacks_.Find(tokenId_).second; - manager->NotifyAssetsRecvProgress(errProgress, progress); - manager->assetsRecvProgress_.Clear(); - manager->assetsRecvProgress_.Insert(objectKey, progress); + ASSERT_EQ(manager.assetsRecvProgress_.Find(objectKey).first, true); + ObjectStoreManager::ProgressCallbackInfo progressCallbackInfo = manager.processCallbacks_.Find(tokenId_).second; + manager.NotifyAssetsRecvProgress(errProgress, progress); + manager.assetsRecvProgress_.Clear(); + manager.assetsRecvProgress_.Insert(objectKey, progress); progressCallbackInfo.observers_.clear(); - manager->NotifyAssetsRecvProgress(errProgress, progress); + manager.NotifyAssetsRecvProgress(errProgress, progress); } /** @@ -1178,4 +1352,104 @@ HWTEST_F(ObjectManagerTest, OnFinished002, TestSize.Level1) ret = listener.OnFinished(srcNetworkId, assetObj_1, result_1); EXPECT_EQ(ret, DistributedObject::OBJECT_SUCCESS); } + +/** +* @tc.name: Save001 +* @tc.desc: Save test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, Save001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string appId = "appId"; + std::string sessionId = "sessionId"; + ObjectRecord data; + std::string deviceId = "deviceId"; + auto ret = manager.Save(appId, sessionId, data, deviceId, nullptr); + EXPECT_EQ(ret, DistributedKv::INVALID_ARGUMENT); +} + +/** +* @tc.name: Save002 +* @tc.desc: Save test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, Save002, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string appId = "appId"; + std::string sessionId = "sessionId"; + ObjectRecord data; + std::string deviceId = ""; + std::function &)> cb = [](const std::map &) {}; + sptr objectSaveCallback = new (std::nothrow) ObjectSaveCallback(cb); + ASSERT_NE(objectSaveCallback, nullptr); + auto ret = manager.Save(appId, sessionId, data, deviceId, objectSaveCallback->AsObject()); + EXPECT_EQ(ret, DistributedKv::INVALID_ARGUMENT); +} + +/** +* @tc.name: RevokeSave001 +* @tc.desc: RevokeSave test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, RevokeSave001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string appId = "appId"; + std::string sessionId = "sessionId"; + auto ret = manager.RevokeSave(appId, sessionId, nullptr); + EXPECT_EQ(ret, DistributedKv::INVALID_ARGUMENT); +} + +/** +* @tc.name: RevokeSave002 +* @tc.desc: RevokeSave test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, RevokeSave002, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string appId = "appId"; + std::string sessionId = "sessionId"; + std::function cb = [](int32_t) {}; + sptr objectRevokeSaveCallback = new (std::nothrow) ObjectRevokeSaveCallback(cb); + ASSERT_NE(objectRevokeSaveCallback, nullptr); + auto ret = manager.RevokeSave(appId, sessionId, objectRevokeSaveCallback->AsObject()); + EXPECT_EQ(ret, DistributedObject::OBJECT_SUCCESS); +} + +/** +* @tc.name: Retrieve001 +* @tc.desc: Retrieve test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, Retrieve001, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string bundleName = "bundleName"; + std::string sessionId = "sessionId"; + uint32_t tokenId = 0; + auto ret = manager.Retrieve(bundleName, sessionId, nullptr, tokenId); + EXPECT_EQ(ret, DistributedKv::INVALID_ARGUMENT); +} + +/** +* @tc.name: Retrieve002 +* @tc.desc: Retrieve test. +* @tc.type: FUNC +*/ +HWTEST_F(ObjectManagerTest, Retrieve002, TestSize.Level1) +{ + auto &manager = ObjectStoreManager::GetInstance(); + std::string bundleName = "bundleName"; + std::string sessionId = "sessionId"; + uint32_t tokenId = 0; + std::function> &, bool)> cb = + [](const std::map> &, bool) {}; + sptr objectRetrieveCallback = new (std::nothrow) ObjectRetrieveCallback(cb); + ASSERT_NE(objectRetrieveCallback, nullptr); + auto ret = manager.Retrieve(bundleName, sessionId, objectRetrieveCallback->AsObject(), tokenId); + EXPECT_EQ(ret, DistributedKv::KEY_NOT_FOUND); +} } // namespace OHOS::Test