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)
