| 76 | } // namespace |
| 77 | |
| 78 | class MessageExchangeTest : public ::testing::Test { |
| 79 | protected: |
| 80 | // Spins up a loopback Asio acceptor/connector pair on a background |
| 81 | // thread. acceptor_ is declared before client_transport_/ |
| 82 | // server_transport_ so it outlives them (member destruction runs in |
| 83 | // reverse declaration order): AsioTransport's server ctor references |
| 84 | // the acceptor's io_context without owning it. |
| 85 | void ConnectSockets() { |
| 86 | acceptor_.emplace(); |
| 87 | std::thread server_thread([this] { |
| 88 | server_transport_.emplace( |
| 89 | acceptor_->accept(std::chrono::seconds{5})); |
| 90 | }); |
| 91 | client_transport_.emplace("127.0.0.1", acceptor_->port()); |
| 92 | server_thread.join(); |
| 93 | ASSERT_TRUE(client_transport_->is_connected()); |
| 94 | ASSERT_TRUE(server_transport_.has_value()); |
| 95 | } |
| 96 | |
| 97 | std::optional<AsioAcceptor> acceptor_; |
| 98 | std::optional<AsioTransport> client_transport_; |
| 99 | std::optional<AsioTransport> server_transport_; |
| 100 | }; |
| 101 | |
| 102 | TEST_F(MessageExchangeTest, PrimitiveBlockSize) { |
| 103 | PrimitiveBlock block(TEST_VALUE_42); |
nothing calls this directly
no outgoing calls
no test coverage detected