From 2b0b080ab471b89068b27b2bc88ee62ffc170e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 16:03:20 +0800 Subject: [PATCH 1/6] add Execlocal speedtest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../include/copy/file_copy_listener.h | 1 + .../include/copy/file_size_utils.h | 3 ++- .../src/copy/file_copy_manager.cpp | 10 ++++++++- .../src/copy/file_size_utils.cpp | 21 +++++++++++++++++++ .../copy/file_size_utils_test.cpp | 16 ++++++++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) diff --git a/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h b/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h index d755452b0..4e9521302 100644 --- a/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h +++ b/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h @@ -62,6 +62,7 @@ public: return filePaths_; } int32_t GetResult() { return errorCode_; }; + uint64_t GetFileSize() { return totalSize_ }; private: void CloseNotifyFd(); diff --git a/frameworks/native/distributed_file_inner/include/copy/file_size_utils.h b/frameworks/native/distributed_file_inner/include/copy/file_size_utils.h index 04b1763ef..7d6205e1d 100644 --- a/frameworks/native/distributed_file_inner/include/copy/file_size_utils.h +++ b/frameworks/native/distributed_file_inner/include/copy/file_size_utils.h @@ -44,7 +44,8 @@ public: static bool IsFilePathValid(const std::string &filePath); static int32_t IsFile(const std::string &path, bool &result); static int32_t IsDirectory(const std::string &path, bool &result); - + static std::string CalculateSpeed(uint64_t fileSize, uint64_t speedTimeMs); + private: static int FilterFunc(const struct dirent *filename); static std::string GetRealPath(const std::string &path); diff --git a/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp b/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp index 3e5c7e5a6..ec391d9a8 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp @@ -371,6 +371,7 @@ int32_t FileCopyManager::ExecCopy(std::shared_ptr infos) int32_t FileCopyManager::ExecLocal(std::shared_ptr infos) { + auto startTime = std::chrono::system_clock::now(); LOGI("start ExecLocal"); if (infos == nullptr || infos->localListener == nullptr) { LOGE("infos or localListener is nullptr"); @@ -393,7 +394,14 @@ int32_t FileCopyManager::ExecLocal(std::shared_ptr infos) return ret; } infos->localListener->StartListener(); - return ExecCopy(infos); + ret = ExecCopy(infos); + auto endTime = std::chrono::system_clock::now(); + uint64_t spendTime = std::chrono::duration_cast(endTime - startTime).count(); + uint64_t fileSize = infos->localListener->GetFileSize(); + std::string speed = FileSizeUtils::CalculateSpeed(fileSize, spendTime); + LOGI("Local copy %{public}s (kB/s), fileSize = %{public}" PRId64 "(B), spendTime = %{public}" PRId64 "(ms)", + speed.c_str(), fileSize, spendTime); + retern ret; } int32_t FileCopyManager::CopyFile(const std::string &src, const std::string &dest, std::shared_ptr infos) diff --git a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp index 7265f206f..99a2233ee 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "dfs_error.h" #include "file_uri.h" @@ -40,6 +41,9 @@ static constexpr char PATH_INVALID_FLAG2[] = "/.."; static const uint32_t PATH_INVALID_FLAG_LEN = 3; static const char FILE_SEPARATOR_CHAR = '/'; static constexpr char NETWORK_ID[] = "?networkid="; +static constexpr uint32_t S_TO_MS = 1000; +static constexpr uint32_t KB_TO_B = 1024; +static constexpr uint32_t PRECISION = 2; int32_t FileSizeUtils::GetSize(const std::string &uri, bool isSrcUri, uint64_t &size) { @@ -253,6 +257,23 @@ bool FileSizeUtils::IsFilePathValid(const std::string &filePath) } return true; } + +std::string FileSizeUtils::CalculateSpeed(uint64_t fileSize, uint64_t spendTimeMs) +{ + if (spendTimeMs == 0) { + LOGW("Copy spend time is zero."); + return ""; + } + if (fileSize == 0) { + LOGW("Copy file size is zero."); + return ""; + } + double speed = (static_cast(fileSize) * S_TO_MS) / + (static_cast(spendTimeMs) * KB_TO_B); + std::ostringstream oss; + oss << std::fix << std::setpercision(PERCISION) << speed; + return oss.str(); +} } // namespace DistributedFile } // namespace Storage } // namespace OHOS diff --git a/test/unittests/distributed_file_inner/copy/file_size_utils_test.cpp b/test/unittests/distributed_file_inner/copy/file_size_utils_test.cpp index 9ef5d706a..5691f3ae8 100644 --- a/test/unittests/distributed_file_inner/copy/file_size_utils_test.cpp +++ b/test/unittests/distributed_file_inner/copy/file_size_utils_test.cpp @@ -298,4 +298,20 @@ HWTEST_F(FileSizeUtilsTest, Deleter_0001, TestSize.Level1) FileSizeUtils::Deleter(arg); GTEST_LOG_(INFO) << "Deleter_0001 End"; } + +HWTEST_F(FileSizeUtilsTest, CalculateSpeed001, TestSize.Level0) +{ + GTEST_LOG_(INFO) << "CalculateSpeed001 Start"; + try { + std::string speed = FileSizeUtils::CalculateSpeed(0, 1); + EXPECT_EQ(speed, ""); + speed = FileSizeUtils::CalculateSpeed(1, 0); + EXPECT_EQ(speed, ""); + speed = FileSizeUtils::CalculateSpeed(1024, 1000); + EXPECT_EQ(speed, "1.00"); + } catch (...) { + GTEST_LOG_(INFO) << "CalculateSpeed001 ERROR"; + } + GTEST_LOG_(INFO) << "CalculateSpeed001 End"; +} } -- Gitee From 36c08eacb26cc1aea5081451c01699e79ec6ef2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 17:09:25 +0800 Subject: [PATCH 2/6] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../distributed_file_inner/include/copy/file_copy_listener.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h b/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h index 4e9521302..b951388d5 100644 --- a/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h +++ b/frameworks/native/distributed_file_inner/include/copy/file_copy_listener.h @@ -62,7 +62,7 @@ public: return filePaths_; } int32_t GetResult() { return errorCode_; }; - uint64_t GetFileSize() { return totalSize_ }; + uint64_t GetFileSize() { return totalSize_; }; private: void CloseNotifyFd(); -- Gitee From a0894a797bba4bf888048837eda976f667442756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 17:31:00 +0800 Subject: [PATCH 3/6] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../native/distributed_file_inner/src/copy/file_size_utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp index 99a2233ee..3846310e4 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp @@ -271,7 +271,7 @@ std::string FileSizeUtils::CalculateSpeed(uint64_t fileSize, uint64_t spendTimeM double speed = (static_cast(fileSize) * S_TO_MS) / (static_cast(spendTimeMs) * KB_TO_B); std::ostringstream oss; - oss << std::fix << std::setpercision(PERCISION) << speed; + oss << std::fixed << std::setpercision(PERCISION) << speed; return oss.str(); } } // namespace DistributedFile -- Gitee From 468603f8be5c9fd61911ab9a796efd4097b34454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 18:06:03 +0800 Subject: [PATCH 4/6] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../distributed_file_inner/src/copy/file_copy_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp b/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp index ec391d9a8..f0b37b1f9 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_copy_manager.cpp @@ -401,7 +401,7 @@ int32_t FileCopyManager::ExecLocal(std::shared_ptr infos) std::string speed = FileSizeUtils::CalculateSpeed(fileSize, spendTime); LOGI("Local copy %{public}s (kB/s), fileSize = %{public}" PRId64 "(B), spendTime = %{public}" PRId64 "(ms)", speed.c_str(), fileSize, spendTime); - retern ret; + return ret; } int32_t FileCopyManager::CopyFile(const std::string &src, const std::string &dest, std::shared_ptr infos) -- Gitee From 2007923ce414f950dd32a73c67dd7a7b61c5bece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 18:42:00 +0800 Subject: [PATCH 5/6] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../native/distributed_file_inner/src/copy/file_size_utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp index 3846310e4..c9f3e445b 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp @@ -271,7 +271,7 @@ std::string FileSizeUtils::CalculateSpeed(uint64_t fileSize, uint64_t spendTimeM double speed = (static_cast(fileSize) * S_TO_MS) / (static_cast(spendTimeMs) * KB_TO_B); std::ostringstream oss; - oss << std::fixed << std::setpercision(PERCISION) << speed; + oss << std::fixed << std::setprecision(PERCISION) << speed; return oss.str(); } } // namespace DistributedFile -- Gitee From f269ba067e607c3e756ed208b7a556f4d63a9450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E5=BC=A0=E6=A5=B7?= <16054767+li-zhangkai@user.noreply.gitee.com> Date: Thu, 7 Aug 2025 18:54:41 +0800 Subject: [PATCH 6/6] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黎张楷 --- .../native/distributed_file_inner/src/copy/file_size_utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp index c9f3e445b..5e02528f5 100644 --- a/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp +++ b/frameworks/native/distributed_file_inner/src/copy/file_size_utils.cpp @@ -271,7 +271,7 @@ std::string FileSizeUtils::CalculateSpeed(uint64_t fileSize, uint64_t spendTimeM double speed = (static_cast(fileSize) * S_TO_MS) / (static_cast(spendTimeMs) * KB_TO_B); std::ostringstream oss; - oss << std::fixed << std::setprecision(PERCISION) << speed; + oss << std::fixed << std::setprecision(PRECISION) << speed; return oss.str(); } } // namespace DistributedFile -- Gitee