tests: ipa_data_serializer_test: Test serializing fds
diff mbox series

Message ID 20260708042237.297547-1-paul.elder@ideasonboard.com
State New
Headers show
Series
  • tests: ipa_data_serializer_test: Test serializing fds
Related show

Commit Message

Paul Elder July 8, 2026, 4:22 a.m. UTC
Add tests to test IPADataSerializer serializing SharedFDs.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
---
 .../ipa_data_serializer_test.cpp              | 43 +++++++++++++++++++
 1 file changed, 43 insertions(+)

Patch
diff mbox series

diff --git a/test/serialization/ipa_data_serializer_test.cpp b/test/serialization/ipa_data_serializer_test.cpp
index afea93a6c24d..9b16383c4d5f 100644
--- a/test/serialization/ipa_data_serializer_test.cpp
+++ b/test/serialization/ipa_data_serializer_test.cpp
@@ -11,6 +11,7 @@ 
 #include <iostream>
 #include <limits>
 #include <stdlib.h>
+#include <sys/mman.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <tuple>
@@ -140,6 +141,10 @@  protected:
 		if (ret != TestPass)
 			return ret;
 
+		ret = testFd();
+		if (ret != TestPass)
+			return ret;
+
 		return TestPass;
 	}
 
@@ -431,6 +436,44 @@  private:
 
 		return TestPass;
 	}
+
+	int testFd()
+	{
+		/* Test serdes of single fd */
+		int memfd = memfd_create("test", 0);
+		if (memfd < 0) {
+			cerr << "Failed to create memfd" << endl;
+			return TestFail;
+		}
+
+		SharedFD fd = SharedFD(std::move(memfd));
+		if (memfd != -1) {
+			cerr << "SharedFD move constructor failed" << endl;
+			return TestFail;
+		}
+
+		if (testPodSerdes(fd) != TestPass)
+			return TestFail;
+
+		/* Test serdes of vector of fds */
+		std::vector<SharedFD> vecFds;
+
+		for (unsigned int i = 0; i < 10; i++) {
+			std::string name = "test" + std::to_string(i);
+			int mfd = memfd_create(name.c_str(), 0);
+			if (mfd < 0)
+				return TestFail;
+
+			vecFds.push_back(SharedFD(std::move(mfd)));
+			if (mfd != -1)
+				return TestFail;
+		}
+
+		if (testVectorSerdes(vecFds) != TestPass)
+			return TestFail;
+
+		return TestPass;
+	}
 };
 
 TEST_REGISTER(IPADataSerializerTest)