6#include <capnp/capability.h>
13#include <ipc/test/fuzz/ipc_fuzz.capnp.h>
14#include <ipc/test/fuzz/ipc_fuzz.capnp.proxy.h>
30 std::promise<std::unique_ptr<mp::ProxyClient<test::fuzz::messages::IpcFuzzInterface>>>
client_promise;
38 auto server_connection = std::make_unique<mp::Connection>(
42 auto server_proxy = kj::heap<mp::ProxyServer<test::fuzz::messages::IpcFuzzInterface>>(
43 std::make_shared<IpcFuzzImplementation>(), connection);
44 return capnp::Capability::Client(kj::mv(server_proxy));
46 server_connection->onDisconnect([&] { server_connection.reset(); });
48 auto client_connection = std::make_unique<mp::Connection>(loop, kj::mv(pipe.ends[1]));
49 auto client_proxy = std::make_unique<mp::ProxyClient<test::fuzz::messages::IpcFuzzInterface>>(
51 .castAs<test::fuzz::messages::IpcFuzzInterface>(),
52 client_connection.get(),
54 (void)client_connection.release();
59 m_client = client_future.get();
68 std::unique_ptr<mp::ProxyClient<test::fuzz::messages::IpcFuzzInterface>> m_client;
74static IpcFuzzSetup* g_ipc;
76static void initialize_ipc()
78 static const auto testing_setup = MakeNoLogFileContext<>();
86 thread_local static IpcFuzzSetup
ipc;
98 static constexpr int MIN_ADD{-1'000'000};
99 static constexpr int MAX_ADD{1'000'000};
102 assert(
ipc.m_client->add(a, b) == a + b);
108 assert(
ipc.m_client->passOutPoint(outpoint) == expected);
112 std::vector<uint8_t> expected{value.rbegin(), value.rend()};
113 assert(
ipc.m_client->passVectorUint8(value) == expected);
124 assert(
ipc.m_client->passUniValue(value).write() == value.
write());
128 if (mutable_tx.
vin.empty())
return;
130 assert(*
ipc.m_client->passTransaction(tx) == *tx);
An outpoint - a combination of a transaction hash and an index n into its vout.
Serialized script, used inside transaction inputs and outputs.
std::string ConsumeRandomLengthString(size_t max_length)
T ConsumeIntegralInRange(T min, T max)
std::string write(unsigned int prettyIndent=0, unsigned int indentLevel=0) const
bool read(std::string_view raw)
Object holding network & rpc state associated with either an incoming server connection,...
Event loop implementation.
kj::AsyncIoContext m_io_context
Capnp IO context.
static transaction_identifier FromUint256(const uint256 &id)
LIMITED_WHILE(provider.remaining_bytes(), 10000)
std::thread m_loop_thread
std::promise< std::unique_ptr< ProxyClient< messages::FooInterface > > > client_promise
std::thread thread
Thread variable should be after other struct members so the thread does not start until the other mem...
thread_local ThreadContext g_thread_context
static CTransactionRef MakeTransactionRef(Tx &&txIn)
std::shared_ptr< const CTransaction > CTransactionRef
A mutable version of CTransaction.
Log level
The severity level of this message.
std::string message
Message to be logged.
Vat id for server side of connection.
The thread_local ThreadContext g_thread_context struct provides information about individual threads ...
CScript ConsumeScript(FuzzedDataProvider &fuzzed_data_provider, const bool maybe_p2wsh) noexcept
CMutableTransaction ConsumeTransaction(FuzzedDataProvider &fuzzed_data_provider, const std::optional< std::vector< Txid > > &prevout_txids, const int max_num_in, const int max_num_out) noexcept
uint256 ConsumeUInt256(FuzzedDataProvider &fuzzed_data_provider) noexcept
size_t CallOneOf(FuzzedDataProvider &fuzzed_data_provider, Callables... callables)
FuzzedDataProvider & fuzzed_data_provider