From 4e0aa1835b3e980ceda29ec90e7115d7fef53f51 Mon Sep 17 00:00:00 2001 From: Ryan Ofsky Date: Fri, 24 Jan 2025 19:01:49 -0500 Subject: [PATCH] test: Add test for IPC serialization bug Add regression test for serialization bug in IPC mining code that is not currently being called anywhere reported: https://github.com/Sjors/bitcoin/issues/71 https://github.com/chaincodelabs/libmultiprocess/issues/122 --- src/test/ipc_test.capnp | 1 + src/test/ipc_test.cpp | 4 ++++ src/test/ipc_test.h | 2 ++ 3 files changed, 7 insertions(+) diff --git a/src/test/ipc_test.capnp b/src/test/ipc_test.capnp index 46cd08b94a2..7fd59cf5882 100644 --- a/src/test/ipc_test.capnp +++ b/src/test/ipc_test.capnp @@ -20,4 +20,5 @@ interface FooInterface $Proxy.wrap("FooImplementation") { passTransaction @3 (arg :Data) -> (result :Data); passVectorChar @4 (arg :Data) -> (result :Data); passBlockState @5 (arg :Mining.BlockValidationState) -> (result :Mining.BlockValidationState); + passScript @6 (arg :Data) -> (result :Data); } diff --git a/src/test/ipc_test.cpp b/src/test/ipc_test.cpp index af374349802..d78d6695e7b 100644 --- a/src/test/ipc_test.cpp +++ b/src/test/ipc_test.cpp @@ -121,6 +121,10 @@ void IpcPipeTest() BOOST_CHECK_EQUAL(bs3.GetRejectReason(), bs4.GetRejectReason()); BOOST_CHECK_EQUAL(bs3.GetDebugMessage(), bs4.GetDebugMessage()); + auto script1{CScript() << OP_11}; + auto script2{foo->passScript(script1)}; + BOOST_CHECK_EQUAL(HexStr(script1), HexStr(script2)); + // Test cleanup: disconnect pipe and join thread disconnect_client(); thread.join(); diff --git a/src/test/ipc_test.h b/src/test/ipc_test.h index 2d215a20f1b..2304d8a4c0d 100644 --- a/src/test/ipc_test.h +++ b/src/test/ipc_test.h @@ -6,6 +6,7 @@ #define BITCOIN_TEST_IPC_TEST_H #include +#include