From 7f6a6ba1f55ca833ffcc9fbee678f47b801b8067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=AD=90=E9=94=AE?= Date: Mon, 1 Apr 2024 03:01:15 +0000 Subject: [PATCH] Reduces unitest test suite code duplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 付子键 --- .../refbase_benchmark_test.cpp | 5 + .../unittest/common/utils_parcel_test.cpp | 92 +++++++++---------- .../unittest/common/utils_refbase_test.cpp | 79 ++++++++-------- .../unittest/common/utils_safe_queue_test.cpp | 16 ++-- .../unittest/common/utils_singleton_test.cpp | 2 +- 5 files changed, 95 insertions(+), 99 deletions(-) diff --git a/base/test/benchmarktest/refbase_benchmark_test/refbase_benchmark_test.cpp b/base/test/benchmarktest/refbase_benchmark_test/refbase_benchmark_test.cpp index f151d19..88f4be0 100644 --- a/base/test/benchmarktest/refbase_benchmark_test/refbase_benchmark_test.cpp +++ b/base/test/benchmarktest/refbase_benchmark_test/refbase_benchmark_test.cpp @@ -415,10 +415,12 @@ class WptrTest : public RefBase { public: WptrTest() { + BENCHMARK_LOGD("RefbaseTest WptrTest() is called."); g_sptrCount++; } ~WptrTest() { + BENCHMARK_LOGD("RefbaseTest ~WptrTest() is called."); g_sptrCount--; } }; @@ -427,11 +429,13 @@ class WptrTest2 : public RefBase { public: WptrTest2() { + BENCHMARK_LOGD("RefbaseTest WptrTest2() is called."); g_sptrCount++; flag_ = 0; } ~WptrTest2() { + BENCHMARK_LOGD("RefbaseTest ~WptrTest2() is called."); g_sptrCount--; } @@ -513,6 +517,7 @@ BENCHMARK_F(BenchmarkRefbaseTest, testRefbaseOperateThreads001)(benchmark::State for (int n = 0; n < cycleNum; n++) { std::vector> threads; for (int i = 0; i < CYCLE_NUM1; i++) { + BENCHMARK_LOGD("RefbaseTest TestThreadsEmplaceBack."); threads.emplace_back(std::async(RegisterEventThread)); } diff --git a/base/test/unittest/common/utils_parcel_test.cpp b/base/test/unittest/common/utils_parcel_test.cpp index 07f841d..548c10f 100644 --- a/base/test/unittest/common/utils_parcel_test.cpp +++ b/base/test/unittest/common/utils_parcel_test.cpp @@ -49,13 +49,23 @@ public: static sptr Unmarshalling(Parcel &parcel); }; +sptr RemoteObject::Unmarshalling(Parcel &parcel) +{ + const uint8_t *buffer = parcel.ReadBuffer(sizeof(parcel_flat_binder_object)); + if (buffer == nullptr) { + return nullptr; + } + sptr obj = new RemoteObject(); + return obj; +} + bool RemoteObject::Marshalling(Parcel &parcel) const { parcel_flat_binder_object flat; flat.hdr.type = 0xff; - flat.flags = 0x7f; flat.binder = 0; flat.handle = (uint32_t)(-1); + flat.flags = 0x7f; flat.cookie = reinterpret_cast(this); bool status = parcel.WriteBuffer(&flat, sizeof(parcel_flat_binder_object)); if (!status) { @@ -64,26 +74,16 @@ bool RemoteObject::Marshalling(Parcel &parcel) const return true; } -sptr RemoteObject::Unmarshalling(Parcel &parcel) -{ - const uint8_t *buffer = parcel.ReadBuffer(sizeof(parcel_flat_binder_object)); - if (buffer == nullptr) { - return nullptr; - } - sptr obj = new RemoteObject(); - return obj; -} - /*-------------------------------base data------------------------------------*/ struct TestData { bool booltest; - int8_t int8test; - int16_t int16test; - int32_t int32test; uint8_t uint8test; uint16_t uint16test; uint32_t uint32test; + int8_t int8test; + int16_t int16test; + int32_t int32test; }; void WriteTestData(Parcel &parcel, const struct TestData &data) @@ -1363,12 +1363,12 @@ HWTEST_F(UtilsParcelTest, test_parcel_Data_Structure_002, TestSize.Level0) struct VectorTestData { vector booltest = { false, false, true, false, true }; vector int8test = { 0x01, 0x10, -0x20, 0x30, 0x40 }; - vector int16test = { 0x1234, -0x2345, 0x3456, -0x4567, 0x5678 }; - vector int32test = { 0x12345678, -0x23456789, 0x34567890, -0x45678901 }; - vector int64test = { 0x1234567887654321, -0x2345678998765432 }; vector uint8test = { 0x01, 0x10, 0x20, 0x30, 0x40 }; + vector int16test = { 0x1234, -0x2345, 0x3456, -0x4567, 0x5678 }; vector uint16test = { 0x1234, 0x2345, 0x3456, 0x4567, 0x5678 }; + vector int32test = { 0x12345678, -0x23456789, 0x34567890, -0x45678901 }; vector uint32test = { 0x12345678, 0x23456789, 0x34567890, 0x45678901 }; + vector int64test = { 0x1234567887654321, -0x2345678998765432 }; vector uint64test = { 0x1234567887654321, 0x2345678998765432 }; }; @@ -1398,13 +1398,12 @@ void ReadVectorTestData(Parcel &parcel, const VectorTestData &data) { vector boolread; vector int8read; - vector int16read; - vector int32read; - vector int64read; - vector uint8read; + vector int16read; vector uint16read; + vector int32read; vector uint32read; + vector int64read; vector uint64read; bool result = parcel.ReadBoolVector(&boolread); @@ -1681,12 +1680,12 @@ HWTEST_F(UtilsParcelTest, test_parcel_WriteAndReadVector_005, TestSize.Level0) { vector boolVectorTest { true, false }; vector int8VectorTest { 1, 0 }; - vector int16VectorTest { 1, 0 }; - vector int32VectorTest { 1, 0 }; - vector int64VectorTest { 1, 0 }; vector uint8VectorTest { 1, 0 }; + vector int16VectorTest { 1, 0 }; vector uint16VectorTest { 1, 0 }; + vector int32VectorTest { 1, 0 }; vector uint32VectorTest { 1, 0 }; + vector int64VectorTest { 1, 0 }; vector uint64VectorTest { 1, 0 }; vector floatVectorTest { 1.1, 0 }; vector doubleVectorTest { 1.1, 0 }; @@ -1717,16 +1716,10 @@ public: static TestParcelable *Unmarshalling(Parcel &parcel); public: - int32_t int32Write_ = -0x12345678; int32_t int32Read_; + int32_t int32Write_ = -0x12345678; }; -bool TestParcelable::Marshalling(Parcel &parcel) const -{ - bool result = parcel.WriteInt32(this->int32Write_); - return result; -} - TestParcelable *TestParcelable::Unmarshalling(Parcel &parcel) { auto *read = new TestParcelable(); @@ -1734,6 +1727,12 @@ TestParcelable *TestParcelable::Unmarshalling(Parcel &parcel) return read; } +bool TestParcelable::Marshalling(Parcel &parcel) const +{ + bool result = parcel.WriteInt32(this->int32Write_); + return result; +} + /** * @tc.name: test_parcel_parcelable_001 * @tc.desc: test parcel read and write parcelable obj. @@ -1849,25 +1848,30 @@ HWTEST_F(UtilsParcelTest, test_SetMaxCapacity_002, TestSize.Level0) EXPECT_EQ(false, ret); } -HWTEST_F(UtilsParcelTest, test_ValidateReadData_001, TestSize.Level0) +void TestWrite(Parcel& parcel, string& strWrite, u16string& str16Write) { - Parcel parcel(nullptr); parcel.WriteBool(true); - string strWrite = "test"; bool result = parcel.WriteString(strWrite); EXPECT_EQ(result, true); RemoteObject obj1; result = parcel.WriteRemoteObject(&obj1); EXPECT_EQ(result, true); - parcel.WriteInt32(5); + int writtenData = 5; + parcel.WriteInt32(writtenData); RemoteObject obj2; result = parcel.WriteRemoteObject(&obj2); EXPECT_EQ(result, true); - u16string str16Write = u"12345"; result = parcel.WriteString16(str16Write); EXPECT_EQ(result, true); +} +HWTEST_F(UtilsParcelTest, test_ValidateReadData_001, TestSize.Level0) +{ + Parcel parcel(nullptr); + string strWrite = "test"; + u16string str16Write = u"12345"; + TestWrite(parcel, strWrite, str16Write); bool readBool = parcel.ReadBool(); EXPECT_EQ(readBool, true); @@ -1890,21 +1894,9 @@ HWTEST_F(UtilsParcelTest, test_ValidateReadData_001, TestSize.Level0) HWTEST_F(UtilsParcelTest, test_ValidateReadData_002, TestSize.Level0) { Parcel parcel(nullptr); - parcel.WriteBool(true); string strWrite = "test"; - bool result = parcel.WriteString(strWrite); - EXPECT_EQ(result, true); - - RemoteObject obj1; - result = parcel.WriteRemoteObject(&obj1); - EXPECT_EQ(result, true); - parcel.WriteInt32(5); - RemoteObject obj2; - result = parcel.WriteRemoteObject(&obj2); - EXPECT_EQ(result, true); u16string str16Write = u"12345"; - result = parcel.WriteString16(str16Write); - EXPECT_EQ(result, true); + TestWrite(parcel, strWrite, str16Write); bool readBool = parcel.ReadBool(); EXPECT_EQ(readBool, true); @@ -2201,4 +2193,4 @@ HWTEST_F(UtilsParcelTest, test_WriteStringDataLength_001, TestSize.Level0) parcel1.FlushBuffer(); } } // namespace -} // namespace OHOS +} // namespace OHOS \ No newline at end of file diff --git a/base/test/unittest/common/utils_refbase_test.cpp b/base/test/unittest/common/utils_refbase_test.cpp index 6672314..54fae18 100644 --- a/base/test/unittest/common/utils_refbase_test.cpp +++ b/base/test/unittest/common/utils_refbase_test.cpp @@ -48,6 +48,13 @@ void UtilsRefbaseTest::SetUpTestCase(void) g_refbaseflag = 0; } +class IRemoteObject : public virtual RefBase { +public: + IRemoteObject() { ExtendObjectLifetime(); } + virtual bool IsProxyObject() = 0; + ~IRemoteObject() {} +}; + class RefBaseTest : public RefBase { public: RefBaseTest() @@ -60,6 +67,11 @@ public: g_refbaseflag = FLAG_OF_DEST; } + bool GetTestRefPtrFlag() + { + return isgetrefptr_; + } + void OnLastStrongRef(const void *objectId) override { g_freeFlag = 1; @@ -69,22 +81,11 @@ public: { isgetrefptr_ = true; } - bool GetTestRefPtrFlag() - { - return isgetrefptr_; - } private: bool isgetrefptr_; }; -class IRemoteObject : public virtual RefBase { -public: - IRemoteObject() { ExtendObjectLifetime(); } - virtual bool IsProxyObject() = 0; - ~IRemoteObject() {} -}; - class RefBaseTestTracker : public RefBase { public: explicit RefBaseTestTracker(int value) : value_(value) @@ -178,21 +179,20 @@ public: } public: - int checkCount_ = 0; - int freeCount_ = 0; int firstRefCount_ = 0; int lastRefCount_ = 0; + int checkCount_ = 0; + int freeCount_ = 0; private: + int value_; std::vector trackObjects_; std::mutex objectMutex_; std::mutex objectOnfirstMutex_; std::mutex objectOnfreeMutex_; - int value_; }; - class IPCObjectProxy : public IRemoteObject { public: @@ -206,10 +206,10 @@ public: tracker->TrackNewObject(this); }; ~IPCObjectProxy() {} + std::mutex mutexLast_; void RefPtrCallback() override; void OnLastStrongRef(const void *objectId) override; void OnFirstStrongRef(const void *objectId) override; - std::mutex mutexLast_; }; class IPCProcessSkeleton : public virtual RefBase, public Singleton @@ -300,8 +300,8 @@ constexpr int CYCLE_NUM2 = 100; int RegisterEventThread() { - auto &ipc = IPCProcessSkeleton::GetInstance(); int handle = 10; + auto &ipc = IPCProcessSkeleton::GetInstance(); for (int i = 0; i < CYCLE_NUM2; i++) { sptr remote = ipc.FindOrNewObject(handle); if (remote) { @@ -319,7 +319,8 @@ HWTEST_F(UtilsRefbaseTest, testRefbaseOperateThreads001, TestSize.Level0) { RefBaseTestTracker *tracker = RefBaseTestTracker::GetInstance(); tracker->InitTracker(); - for (int n = 0; n < 1; n++) { + constexpr int cycleNum = 1; + for (int n = 0; n < cycleNum; n++) { std::vector> threads; for (int i = 0; i < CYCLE_NUM1; i++) { threads.emplace_back(std::async(RegisterEventThread)); @@ -476,25 +477,32 @@ HWTEST_F(UtilsRefbaseTest, testRefbaseAcquire001, TestSize.Level0) EXPECT_EQ(g_freeFlag, 1); } -/* - * @tc.name: testSptrefbase001 - * @tc.desc: Refbase - */ -HWTEST_F(UtilsRefbaseTest, testSptrefbase001, TestSize.Level0) +void TestGetSptrRefCount(sptr& testobject, wptr& weakObject) { - sptr testobject = new RefBaseTest(); testobject->ExtendObjectLifetime(); EXPECT_TRUE(testobject->IsExtendLifeTimeSet()); EXPECT_EQ(g_refbaseflag, 1); - wptr weakObject(testobject); + int count = testobject->GetWptrRefCount(); - EXPECT_EQ(count, 2); + int compareData = 2; + EXPECT_EQ(count, compareData); testobject = nullptr; sptr strongObject = weakObject.promote(); EXPECT_EQ(strongObject->GetSptrRefCount(), 1); } +/* + * @tc.name: testSptrefbase001 + * @tc.desc: Refbase + */ +HWTEST_F(UtilsRefbaseTest, testSptrefbase001, TestSize.Level0) +{ + sptr testobject = new RefBaseTest(); + wptr weakObject(testobject); + TestGetSptrRefCount(testobject, weakObject); +} + /* * @tc.name: testSptrefbaseRealease001 * @tc.desc: Refbase @@ -665,16 +673,8 @@ HWTEST_F(UtilsRefbaseTest, testSptrefbase010, TestSize.Level0) HWTEST_F(UtilsRefbaseTest, testSptrefbase011, TestSize.Level0) { sptr testobject = sptr::MakeSptr(); - testobject->ExtendObjectLifetime(); - EXPECT_TRUE(testobject->IsExtendLifeTimeSet()); - EXPECT_EQ(g_refbaseflag, 1); wptr weakObject(testobject); - int count = testobject->GetWptrRefCount(); - EXPECT_EQ(count, 2); - testobject = nullptr; - - sptr strongObject = weakObject.promote(); - EXPECT_EQ(strongObject->GetSptrRefCount(), 1); + TestGetSptrRefCount(testobject, weakObject); } class SptrTest : public RefBase { @@ -683,15 +683,14 @@ public: { g_sptrCount++; } - ~SptrTest() - { - g_sptrCount--; - } void CreateSptr() { test1 = new SptrTest(); } - + ~SptrTest() + { + g_sptrCount--; + } private: sptr test1; }; diff --git a/base/test/unittest/common/utils_safe_queue_test.cpp b/base/test/unittest/common/utils_safe_queue_test.cpp index b198982..8612c3e 100644 --- a/base/test/unittest/common/utils_safe_queue_test.cpp +++ b/base/test/unittest/common/utils_safe_queue_test.cpp @@ -14,12 +14,12 @@ */ #include "safe_queue.h" +#include #include #include -#include -#include #include #include // std::chrono::seconds +#include using namespace testing::ext; using namespace std; @@ -44,17 +44,17 @@ public: bool putStatus; bool getStatus; - void Put(int i) - { - shareQueue.Push(i); - putStatus = true; - } - void Get(int &i) { shareQueue.Pop(i); getStatus = true; } + + void Put(int i) + { + shareQueue.Push(i); + putStatus = true; + } }; SafeQueue DemoThreadData::shareQueue; diff --git a/base/test/unittest/common/utils_singleton_test.cpp b/base/test/unittest/common/utils_singleton_test.cpp index 8461612..c596b74 100644 --- a/base/test/unittest/common/utils_singleton_test.cpp +++ b/base/test/unittest/common/utils_singleton_test.cpp @@ -164,4 +164,4 @@ HWTEST_F(UtilsSingletonTest, test_DelayedRefSingletonDeclearTest, TestSize.Level EXPECT_EQ(p1.GetObjAddr(), p2.GetObjAddr()); } } // namespace -} // namespace OHOS \ No newline at end of file +} // namespace OHOS -- Gitee