From 836661616fcf4bc023b192d1c320f0727a9dfef9 Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Sun, 12 Feb 2017 16:32:39 -0800 Subject: sync: implement sync_file_info Also modifies sync-unit-test to use sync_file_info instead of the deprecated sync_fence_info, but check that they match in several tests. Bug: 35138793 Test: sync-unit-tests on bullhead Change-Id: Ic672d1c89798435a8b71469500e82c770a66bf4d --- libsync/tests/sync_test.cpp | 55 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'libsync/tests') diff --git a/libsync/tests/sync_test.cpp b/libsync/tests/sync_test.cpp index 401aaeee5..7770fcb3a 100644 --- a/libsync/tests/sync_test.cpp +++ b/libsync/tests/sync_test.cpp @@ -172,20 +172,20 @@ public: return sync_wait(m_fd, timeout); } vector getInfo() const { - struct sync_pt_info *pointInfo = nullptr; vector fenceInfo; - sync_fence_info_data *info = sync_fence_info(getFd()); + struct sync_file_info *info = sync_file_info(getFd()); if (!info) { return fenceInfo; } - while ((pointInfo = sync_pt_info(info, pointInfo))) { + const auto fences = sync_get_fence_info(info); + for (uint32_t i = 0; i < info->num_fences; i++) { fenceInfo.push_back(SyncPointInfo{ - pointInfo->driver_name, - pointInfo->obj_name, - pointInfo->timestamp_ns, - pointInfo->status}); + fences[i].driver_name, + fences[i].obj_name, + fences[i].timestamp_ns, + fences[i].status}); } - sync_fence_info_free(info); + sync_file_info_free(info); return fenceInfo; } int getSize() const { @@ -212,6 +212,32 @@ private: } }; +static void CheckModernLegacyInfoMatch(const SyncFence& f) { + struct sync_file_info* modern = sync_file_info(f.getFd()); + struct sync_fence_info_data* legacy = sync_fence_info(f.getFd()); + + ASSERT_TRUE(modern != NULL); + ASSERT_TRUE(legacy != NULL); + + EXPECT_STREQ(modern->name, legacy->name); + EXPECT_EQ(modern->status, legacy->status); + + uint32_t fenceIdx = 0; + struct sync_pt_info* pt = sync_pt_info(legacy, NULL); + const struct sync_fence_info* fences = sync_get_fence_info(modern); + while (fenceIdx < modern->num_fences && pt != NULL) { + EXPECT_STREQ(fences[fenceIdx].obj_name, pt->obj_name); + EXPECT_STREQ(fences[fenceIdx].driver_name, pt->driver_name); + EXPECT_EQ(fences[fenceIdx].status, pt->status); + EXPECT_EQ(fences[fenceIdx].timestamp_ns, pt->timestamp_ns); + + fenceIdx++; + pt = sync_pt_info(legacy, pt); + } + EXPECT_EQ(fenceIdx, modern->num_fences); + EXPECT_EQ(NULL, pt); +} + int SyncFence::s_fenceCount = 0; TEST(AllocTest, Timeline) { @@ -225,6 +251,7 @@ TEST(AllocTest, Fence) { SyncFence fence(timeline, 1); ASSERT_TRUE(fence.isValid()); + CheckModernLegacyInfoMatch(fence); } TEST(AllocTest, FenceNegative) { @@ -321,15 +348,21 @@ TEST(FenceTest, OneTimelineMerge) { timeline.inc(1); ASSERT_EQ(a.getSignaledCount(), 1); ASSERT_EQ(d.getActiveCount(), 1); + CheckModernLegacyInfoMatch(a); + CheckModernLegacyInfoMatch(d); timeline.inc(1); ASSERT_EQ(b.getSignaledCount(), 1); ASSERT_EQ(d.getActiveCount(), 1); + CheckModernLegacyInfoMatch(b); + CheckModernLegacyInfoMatch(d); timeline.inc(1); ASSERT_EQ(c.getSignaledCount(), 1); ASSERT_EQ(d.getActiveCount(), 0); ASSERT_EQ(d.getSignaledCount(), 1); + CheckModernLegacyInfoMatch(c); + CheckModernLegacyInfoMatch(d); } TEST(FenceTest, MergeSameFence) { @@ -343,9 +376,11 @@ TEST(FenceTest, MergeSameFence) { ASSERT_TRUE(selfMergeFence.isValid()); ASSERT_EQ(selfMergeFence.getSignaledCount(), 0); + CheckModernLegacyInfoMatch(selfMergeFence); timeline.inc(5); ASSERT_EQ(selfMergeFence.getSignaledCount(), 1); + CheckModernLegacyInfoMatch(selfMergeFence); } TEST(FenceTest, PollOnDestroyedTimeline) { @@ -397,14 +432,17 @@ TEST(FenceTest, MultiTimelineWait) { timelineA.inc(5); ASSERT_EQ(mergedFence.getActiveCount(), 2); ASSERT_EQ(mergedFence.getSignaledCount(), 1); + CheckModernLegacyInfoMatch(mergedFence); timelineB.inc(5); ASSERT_EQ(mergedFence.getActiveCount(), 1); ASSERT_EQ(mergedFence.getSignaledCount(), 2); + CheckModernLegacyInfoMatch(mergedFence); timelineC.inc(5); ASSERT_EQ(mergedFence.getActiveCount(), 0); ASSERT_EQ(mergedFence.getSignaledCount(), 3); + CheckModernLegacyInfoMatch(mergedFence); // confirm you can successfully wait. ASSERT_EQ(mergedFence.wait(100), 0); @@ -560,6 +598,7 @@ TEST_P(MergeStressTest, RandomMerge) { // Merge. fence = SyncFence(fence, SyncFence(timeline, syncPoint)); ASSERT_TRUE(fence.isValid()); + CheckModernLegacyInfoMatch(fence); } // Confirm our map matches the fence. -- cgit v1.2.3-54-g00ecf