diff --git a/tests/dsp/firmware_update.cpp b/tests/dsp/firmware_update.cpp
index 7c406aa..6961483 100644
--- a/tests/dsp/firmware_update.cpp
+++ b/tests/dsp/firmware_update.cpp
@@ -1657,7 +1657,7 @@
     pldm_msgbuf_insert_uint32(buf, downstream_devices_length_resp);
     pldm_msgbuf_insert_uint16(buf, number_of_downstream_devices_resp);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(
         response, PLDM_QUERY_DOWNSTREAM_IDENTIFIERS_RESP_MIN_LEN, &resp_data,
@@ -1700,7 +1700,7 @@
     pldm_msgbuf_insert_uint32(buf, downstream_devices_length_resp);
     pldm_msgbuf_insert_uint16(buf, number_of_downstream_devices_resp);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(
         response, PLDM_QUERY_DOWNSTREAM_IDENTIFIERS_RESP_MIN_LEN, &resp, &devs);
@@ -1751,7 +1751,7 @@
     pldm_msgbuf_insert_uint16(buf, 4);
     pldm_msgbuf_insert_uint32(buf, 412);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(response, payloadLen,
                                                   &resp_data, &devs);
@@ -1849,7 +1849,7 @@
     pldm_msgbuf_insert_uint16(buf, descriptor_id_len_iana_pen);
     pldm_msgbuf_insert_uint32(buf, iana_pen_openbmc);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(response, payloadLen,
                                                   &resp_data, &devs);
@@ -1965,7 +1965,7 @@
     pldm_msgbuf_insert_uint16(buf, descriptor_id_len_iana_pen);
     pldm_msgbuf_insert_uint32(buf, iana_pen_dmtf);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(response, payloadLen,
                                                   &resp_data, &devs);
@@ -2081,7 +2081,7 @@
     pldm_msgbuf_insert_uint16(buf, descriptor_id_len_iana_pen);
     pldm_msgbuf_insert_uint32(buf, iana_pen_dmtf);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     rc = decode_query_downstream_identifiers_resp(response, payloadLen,
                                                   &resp_data, &devs);
@@ -2361,7 +2361,7 @@
         buf, pendingComponentVersionStringLength, "zyxwvuts", 8);
     ASSERT_EQ(rc, 0);
 
-    rc = pldm_msgbuf_destroy_consumed(buf);
+    rc = pldm_msgbuf_complete_consumed(buf);
     ASSERT_EQ(rc, 0);
 
     struct pldm_get_downstream_firmware_parameters_resp resp_data = {};
@@ -2510,7 +2510,7 @@
         ASSERT_EQ(rc, 0);
     }
 
-    rc = pldm_msgbuf_destroy_consumed(buf);
+    rc = pldm_msgbuf_complete_consumed(buf);
     ASSERT_EQ(rc, 0);
 
     struct pldm_get_downstream_firmware_parameters_resp resp_data = {};
diff --git a/tests/dsp/pdr.cpp b/tests/dsp/pdr.cpp
index 3b72cb7..b85ba2a 100644
--- a/tests/dsp/pdr.cpp
+++ b/tests/dsp/pdr.cpp
@@ -81,7 +81,7 @@
     pldm_msgbuf_extract_uint8(buf, association_pdr_test.num_children);
     getEntity(buf, child_entity);
 
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_TRUE(association_pdr_test == association_pdr);
     EXPECT_TRUE(container_entity == container_entity1);
diff --git a/tests/dsp/platform.cpp b/tests/dsp/platform.cpp
index 387e70a..9b3a43b 100644
--- a/tests/dsp/platform.cpp
+++ b/tests/dsp/platform.cpp
@@ -486,7 +486,7 @@
                                        sizeof(recordData) - 1);
     ASSERT_EQ(rc, 0);
     pldm_msgbuf_insert_uint8(buf, 96);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     alignas(pldm_get_pdr_resp) unsigned char
         resp_data[sizeof(pldm_get_pdr_resp) + sizeof(recordData) - 1];
@@ -730,7 +730,7 @@
     pldm_msgbuf_insert_uint32(buf, 100);
     pldm_msgbuf_insert_uint32(buf, UINT32_MAX);
     pldm_msgbuf_insert_uint8(buf, PLDM_NO_TIMEOUT);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     struct pldm_pdr_repository_info_resp resp;
     rc = decode_get_pdr_repository_info_resp_safe(
@@ -1482,7 +1482,7 @@
     pldm_msgbuf_extract_uint8(buf, retTransferOperationFlag);
     pldm_msgbuf_extract_uint32(buf, retDataTransferHandle);
     pldm_msgbuf_extract_uint16(buf, retEventIdToAcknowledge);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_EQ(retFormatVersion, formatVersion);
     EXPECT_EQ(retTransferOperationFlag, transferOperationFlag);
@@ -1521,7 +1521,7 @@
     pldm_msgbuf_extract_uint8(buf, retTransferOperationFlag);
     pldm_msgbuf_extract_uint32(buf, retDataTransferHandle);
     pldm_msgbuf_extract_uint16(buf, retEventIdToAcknowledge);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_EQ(retFormatVersion, formatVersion);
     EXPECT_EQ(retTransferOperationFlag, transferOperationFlag);
@@ -1560,7 +1560,7 @@
     pldm_msgbuf_extract_uint8(buf, retTransferOperationFlag);
     pldm_msgbuf_extract_uint32(buf, retDataTransferHandle);
     pldm_msgbuf_extract_uint16(buf, retEventIdToAcknowledge);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_EQ(retFormatVersion, formatVersion);
     EXPECT_EQ(retTransferOperationFlag, transferOperationFlag);
@@ -2057,7 +2057,7 @@
     EXPECT_EQ(retEventDataIntegrityChecksum, eventDataIntegrityChecksum);
     EXPECT_EQ(0, memcmp(pEventData, retEventData, eventDataSize));
 
-    EXPECT_EQ(pldm_msgbuf_destroy(buf), PLDM_SUCCESS);
+    EXPECT_EQ(pldm_msgbuf_complete(buf), PLDM_SUCCESS);
 }
 
 TEST(PollForPlatformEventMessage, testGoodEncodeResposeP2)
@@ -2097,7 +2097,7 @@
     EXPECT_EQ(retCompletionCode, completionCode);
     EXPECT_EQ(retTid, tId);
     EXPECT_EQ(retEventId, eventId);
-    EXPECT_EQ(pldm_msgbuf_destroy(buf), PLDM_SUCCESS);
+    EXPECT_EQ(pldm_msgbuf_complete(buf), PLDM_SUCCESS);
 }
 
 TEST(PollForPlatformEventMessage, testGoodEncodeResposeP3)
@@ -2137,7 +2137,7 @@
     EXPECT_EQ(retCompletionCode, completionCode);
     EXPECT_EQ(retTid, tId);
     EXPECT_EQ(retEventId, eventId);
-    EXPECT_EQ(pldm_msgbuf_destroy(buf), PLDM_SUCCESS);
+    EXPECT_EQ(pldm_msgbuf_complete(buf), PLDM_SUCCESS);
 }
 
 TEST(PollForPlatformEventMessage, testGoodEncodeResposeP4)
@@ -2202,7 +2202,7 @@
     EXPECT_EQ(retEventDataSize, eventDataSize);
     EXPECT_EQ(retEventDataIntegrityChecksum, eventDataIntegrityChecksum);
 
-    EXPECT_EQ(pldm_msgbuf_destroy(buf), PLDM_SUCCESS);
+    EXPECT_EQ(pldm_msgbuf_complete(buf), PLDM_SUCCESS);
 }
 
 TEST(PollForPlatformEventMessage, testBadEncodeResponse)
@@ -2360,7 +2360,7 @@
     pldm_msgbuf_extract_uint8(buf, req.event_class);
     data = nullptr;
     pldm_msgbuf_span_remaining(buf, &data, &len);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_EQ(formatVersion, req.format_version);
     EXPECT_EQ(Tid, req.tid);
@@ -2385,7 +2385,7 @@
 
     data = nullptr;
     pldm_msgbuf_span_remaining(buf, &data, &len);
-    ASSERT_EQ(pldm_msgbuf_destroy_consumed(buf), 0);
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
 
     EXPECT_EQ(formatVersion, req.format_version);
     EXPECT_EQ(Tid, req.tid);
@@ -2684,7 +2684,7 @@
     EXPECT_EQ(retFormatVersion, poll_event.format_version);
     EXPECT_EQ(reteventID, poll_event.event_id);
     EXPECT_EQ(retDataTransferHandle, poll_event.data_transfer_handle);
-    EXPECT_EQ(pldm_msgbuf_destroy_consumed(buf), PLDM_SUCCESS);
+    EXPECT_EQ(pldm_msgbuf_complete_consumed(buf), PLDM_SUCCESS);
 }
 #endif
 
