From 62e146c5cc307da2521ceada5b4a5f849bb5bc33 Mon Sep 17 00:00:00 2001 From: yujiahe Date: Thu, 26 Jun 2025 16:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9videoReadInfo=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yujiahe --- .../fuse_manager/cloud_daemon_statistic.h | 2 +- .../src/fuse_manager/cloud_daemon_statistic.cpp | 17 ++++++++++++++--- .../cloud_daemon_statistic_test.cpp | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/services/cloudfiledaemon/include/fuse_manager/cloud_daemon_statistic.h b/services/cloudfiledaemon/include/fuse_manager/cloud_daemon_statistic.h index c4db0eb31..1c39f7373 100644 --- a/services/cloudfiledaemon/include/fuse_manager/cloud_daemon_statistic.h +++ b/services/cloudfiledaemon/include/fuse_manager/cloud_daemon_statistic.h @@ -63,7 +63,7 @@ private: vector readSizeStat_ = vector(READ_SIZE_MAX, 0); vector> readTimeStat_ = vector>(READ_SIZE_MAX, vector(READ_TIME_MAX, 0)); - vector videoReadInfo_ = vector(VIDEO_READ_INFO, 0); + vector videoReadInfo_ = vector(VIDEO_READ_INFO, 0); }; } // namespace CloudFile } // namespace FileManagement diff --git a/services/cloudfiledaemon/src/fuse_manager/cloud_daemon_statistic.cpp b/services/cloudfiledaemon/src/fuse_manager/cloud_daemon_statistic.cpp index 8a48d5ad9..25004373d 100644 --- a/services/cloudfiledaemon/src/fuse_manager/cloud_daemon_statistic.cpp +++ b/services/cloudfiledaemon/src/fuse_manager/cloud_daemon_statistic.cpp @@ -57,9 +57,20 @@ static uint32_t GetRangeIndex(uint64_t value, const vector rangeVector static void CheckOverflow(uint64_t &data, uint64_t addValue) { if (data >= UINT64_MAX - addValue) { - LOGE("update fail, overflow, data = %{public}llu, addValue = %{public}llu", - static_cast(data), - static_cast(addValue)); + LOGE("update fail, overflow, data = %{public}d, addValue = %{public}d", + data, addValue); + data = 0; + } else { + data += addValue; + } +} + +static void CheckOverflow(uint32_t &data, uint32_t addValue) +{ + if (data >= UINT32_MAX - addValue) { + LOGE("update fail, overflow, data = %{public}u, addValue = %{public}u", + static_cast(data), + static_cast(addValue)); data = 0; } else { data += addValue; diff --git a/test/unittests/services_daemon/cloud_daemon_statistic_test.cpp b/test/unittests/services_daemon/cloud_daemon_statistic_test.cpp index bcac68827..bd0645d44 100644 --- a/test/unittests/services_daemon/cloud_daemon_statistic_test.cpp +++ b/test/unittests/services_daemon/cloud_daemon_statistic_test.cpp @@ -182,4 +182,20 @@ HWTEST_F(CloudDaemonStatisticTest, CloudDaemonStatisticTest_009, TestSize.Level1 } GTEST_LOG_(INFO) << "CloudDaemonStatisticTest_009 End"; } + +HWTEST_F(CloudDaemonStatisticTest, CloudDaemonStatisticTest_010, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "CloudDaemonStatisticTest_010 Start"; + CloudDaemonStatistic cds; + cds.videoReadInfo_[CACHE_SUM] = UINT32_MAX; + + try { + cds.UpdateReadInfo(CACHE_SUM); + EXPECT_EQ(cds.videoReadInfo_[CACHE_SUM], 0); + } catch(...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "CloudDaemonStatisticTest_010 ERROR"; + } + GTEST_LOG_(INFO) << "CloudDaemonStatisticTest_010 End"; +} } \ No newline at end of file -- Gitee