diff --git a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.cpp b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.cpp index 7e4ac918c5a3b56fcf0fea3cd184df6a9ccfebc0..f0be69e0726ecabe7c7e949869e65bf2423a937c 100644 --- a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.cpp +++ b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.cpp @@ -37,6 +37,12 @@ void CloudDBProxy::SetIAssetLoader(const std::shared_ptr &loader) iAssetLoader_ = loader; } +bool CloudDBProxy::IsNotExistAssetLoader() const +{ + std::unique_lock writeLock(assetLoaderMutex_); + return iAssetLoader_ == nullptr; +} + int CloudDBProxy::BatchInsert(const std::string &tableName, std::vector &record, std::vector &extend, Info &uploadInfo) { diff --git a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.h b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.h index 4173ba104ec5417655de9f1e257d7022fff4d4d8..e5508b5dad7e0aeaca5b8df4c8ea123a755bff58 100644 --- a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.h +++ b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_db_proxy.h @@ -53,6 +53,8 @@ public: bool IsNotExistCloudDB() const; + bool IsNotExistAssetLoader() const; + int Download(const std::string &tableName, const std::string &gid, const Type &prefix, std::map &assets); diff --git a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_syncer.cpp b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_syncer.cpp index 58665b97e3dbb1228f1f6acee57c5e5e8b0217d6..dada733c64a0540a6438dee75ec45ebb7e5eb308 100644 --- a/frameworks/libs/distributeddb/syncer/src/cloud/cloud_syncer.cpp +++ b/frameworks/libs/distributeddb/syncer/src/cloud/cloud_syncer.cpp @@ -58,6 +58,9 @@ int CloudSyncer::Sync(const std::vector &devices, SyncMode mode, if (cloudDB_.IsNotExistCloudDB()) { return -E_CLOUD_ERROR; } + if (cloudDB_.IsNotExistAssetLoader()) { + return -E_NOT_SET; + } if (closed_) { return -E_DB_CLOSED; } diff --git a/frameworks/libs/distributeddb/test/unittest/common/syncer/cloud/distributeddb_cloud_db_proxy_test.cpp b/frameworks/libs/distributeddb/test/unittest/common/syncer/cloud/distributeddb_cloud_db_proxy_test.cpp index 911725dbb65f58a6efadb2a7ae90453588cfca58..d8c70936717dcfe860e7a17f78a9bf35b0433010 100644 --- a/frameworks/libs/distributeddb/test/unittest/common/syncer/cloud/distributeddb_cloud_db_proxy_test.cpp +++ b/frameworks/libs/distributeddb/test/unittest/common/syncer/cloud/distributeddb_cloud_db_proxy_test.cpp @@ -21,6 +21,7 @@ #include "cloud_db_proxy.h" #include "distributeddb_tools_unit_test.h" #include "mock_icloud_sync_storage_interface.h" +#include "virtual_asset_loader.h" #include "virtual_cloud_db.h" #include "virtual_cloud_syncer.h" @@ -112,6 +113,7 @@ public: protected: std::shared_ptr virtualCloudDb_ = nullptr; + std::shared_ptr virtualAssetLoader_ = nullptr; }; void DistributedDBCloudDBProxyTest::SetUpTestCase() @@ -126,6 +128,7 @@ void DistributedDBCloudDBProxyTest::SetUp() { DistributedDBUnitTest::DistributedDBToolsUnitTest::PrintTestCaseInfo(); virtualCloudDb_ = std::make_shared(); + virtualAssetLoader_ = std::make_shared(); } void DistributedDBCloudDBProxyTest::TearDown() @@ -292,6 +295,7 @@ HWTEST_F(DistributedDBCloudDBProxyTest, CloudDBProxyTest004, TestSize.Level3) EXPECT_CALL(*iCloud, Commit).WillRepeatedly(testing::Return(E_OK)); ASSERT_NE(cloudSyncer, nullptr); ASSERT_EQ(cloudSyncer->SetCloudDB(virtualCloudDb_), E_OK); + ASSERT_EQ(cloudSyncer->SetIAssetLoader(virtualAssetLoader_), E_OK); cloudSyncer->SetSyncAction(true, false); cloudSyncer->SetDownloadFunc([]() { std::this_thread::sleep_for(std::chrono::seconds(5)); // sleep 5s @@ -359,6 +363,7 @@ HWTEST_F(DistributedDBCloudDBProxyTest, CloudDBProxyTest005, TestSize.Level0) EXPECT_CALL(*iCloud, Commit).WillRepeatedly(testing::Return(E_OK)); ASSERT_NE(cloudSyncer, nullptr); ASSERT_EQ(cloudSyncer->SetCloudDB(virtualCloudDb_), E_OK); + ASSERT_EQ(cloudSyncer->SetIAssetLoader(virtualAssetLoader_), E_OK); cloudSyncer->SetSyncAction(false, false); virtualCloudDb_->SetCloudError(true); /** @@ -398,6 +403,7 @@ HWTEST_F(DistributedDBCloudDBProxyTest, CloudDBProxyTest006, TestSize.Level3) EXPECT_CALL(*iCloud, Rollback).WillRepeatedly(testing::Return(E_OK)); ASSERT_NE(cloudSyncer, nullptr); ASSERT_EQ(cloudSyncer->SetCloudDB(virtualCloudDb_), E_OK); + ASSERT_EQ(cloudSyncer->SetIAssetLoader(virtualAssetLoader_), E_OK); cloudSyncer->SetSyncAction(true, false); cloudSyncer->SetDownloadFunc([cloudSyncer]() { std::this_thread::sleep_for(std::chrono::seconds(5)); // sleep 5s @@ -443,6 +449,7 @@ HWTEST_F(DistributedDBCloudDBProxyTest, CloudDBProxyTest007, TestSize.Level4) EXPECT_CALL(*iCloud, Commit).WillRepeatedly(testing::Return(E_OK)); ASSERT_NE(cloudSyncer, nullptr); ASSERT_EQ(cloudSyncer->SetCloudDB(virtualCloudDb_), E_OK); + ASSERT_EQ(cloudSyncer->SetIAssetLoader(virtualAssetLoader_), E_OK); cloudSyncer->SetSyncAction(false, false); /** * @tc.steps: step2. call sync and wait sync finish @@ -501,6 +508,7 @@ HWTEST_F(DistributedDBCloudDBProxyTest, CloudSyncQueue001, TestSize.Level2) EXPECT_CALL(*iCloud, Commit).WillRepeatedly(testing::Return(E_OK)); EXPECT_CALL(*iCloud, StartTransaction).WillRepeatedly(testing::Return(E_OK)); ASSERT_EQ(cloudSyncer->SetCloudDB(virtualCloudDb_), E_OK); + ASSERT_EQ(cloudSyncer->SetIAssetLoader(virtualAssetLoader_), E_OK); cloudSyncer->SetSyncAction(true, false); cloudSyncer->SetDownloadFunc([cloudSyncer]() { EXPECT_EQ(cloudSyncer->GetQueueCount(), 1u);