summaryrefslogtreecommitdiff
path: root/src/mongo/transport/service_state_machine_test.cpp
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2018-02-09 14:18:11 -0500
committerMathias Stearn <mathias@10gen.com>2018-02-13 19:04:39 -0500
commited15b99846db007f06d74d1cb5f8d37f954aa244 (patch)
treec6613360f29cc52a955ade71534dfdef077a1588 /src/mongo/transport/service_state_machine_test.cpp
parent66d2a03579bb1a259aec36038f9250e681ede08c (diff)
downloadmongo-ed15b99846db007f06d74d1cb5f8d37f954aa244.tar.gz
SERVER-33255 clean up TransportLayer API
Diffstat (limited to 'src/mongo/transport/service_state_machine_test.cpp')
-rw-r--r--src/mongo/transport/service_state_machine_test.cpp84
1 files changed, 40 insertions, 44 deletions
diff --git a/src/mongo/transport/service_state_machine_test.cpp b/src/mongo/transport/service_state_machine_test.cpp
index d74fcbcdfc7..0cc4aa0634a 100644
--- a/src/mongo/transport/service_state_machine_test.cpp
+++ b/src/mongo/transport/service_state_machine_test.cpp
@@ -38,7 +38,6 @@
#include "mongo/db/service_context_noop.h"
#include "mongo/stdx/memory.h"
#include "mongo/transport/mock_session.h"
-#include "mongo/transport/mock_ticket.h"
#include "mongo/transport/service_entry_point.h"
#include "mongo/transport/service_executor.h"
#include "mongo/transport/service_executor_task_names.h"
@@ -115,62 +114,59 @@ private:
using namespace transport;
class MockTL : public TransportLayerMock {
public:
- ~MockTL() = default;
+ class Session : public MockSession {
+ public:
+ using MockSession::MockSession;
- Ticket sourceMessage(const SessionHandle& session,
- Message* message,
- Date_t expiration = Ticket::kNoExpirationDate) override {
- ASSERT_EQ(_ssm->state(), ServiceStateMachine::State::Source);
- _lastTicketSource = true;
+ StatusWith<Message> sourceMessage() override {
+ auto tl = checked_cast<MockTL*>(getTransportLayer());
+ ASSERT_EQ(tl->_ssm->state(), ServiceStateMachine::State::SourceWait);
+ tl->_lastTicketSource = true;
- _ranSource = true;
- log() << "In sourceMessage";
+ tl->_ranSource = true;
+ log() << "In sourceMessage";
- if (_nextShouldFail & Source) {
- return TransportLayer::TicketSessionClosedStatus;
- }
+ if (tl->_waitHook)
+ tl->_waitHook();
- OpMsgBuilder builder;
- builder.setBody(BSON("ping" << 1));
- *message = builder.finish();
+ if (tl->_nextShouldFail & Source) {
+ return TransportLayer::TicketSessionClosedStatus;
+ }
- return TransportLayerMock::sourceMessage(session, message, expiration);
- }
+ auto out = MockSession::sourceMessage();
+ if (out.isOK()) {
+ OpMsgBuilder builder;
+ builder.setBody(BSON("ping" << 1));
+ out.getValue() = builder.finish();
+ }
+ return out;
+ }
- Ticket sinkMessage(const SessionHandle& session,
- const Message& message,
- Date_t expiration = Ticket::kNoExpirationDate) override {
- ASSERT_EQ(_ssm->state(), ServiceStateMachine::State::Process);
- _lastTicketSource = false;
+ Status sinkMessage(Message message) override {
+ auto tl = checked_cast<MockTL*>(getTransportLayer());
+ ASSERT_EQ(tl->_ssm->state(), ServiceStateMachine::State::SinkWait);
+ tl->_lastTicketSource = false;
- log() << "In sinkMessage";
- _ranSink = true;
+ log() << "In sinkMessage";
+ tl->_ranSink = true;
- if (_nextShouldFail & Sink) {
- return TransportLayer::TicketSessionClosedStatus;
- }
+ if (tl->_waitHook)
+ tl->_waitHook();
- _lastSunk = message;
+ if (tl->_nextShouldFail & Sink) {
+ return TransportLayer::TicketSessionClosedStatus;
+ }
- return TransportLayerMock::sinkMessage(session, message, expiration);
- }
+ auto out = MockSession::sinkMessage(message);
+ if (out.isOK())
+ tl->_lastSunk = message;
- Status wait(Ticket&& ticket) override {
- if (!ticket.valid()) {
- return ticket.status();
+ return out;
}
- ASSERT_EQ(_ssm->state(),
- _lastTicketSource ? ServiceStateMachine::State::SourceWait
- : ServiceStateMachine::State::SinkWait);
-
- log() << "In wait. ssm state: " << stateToString(_ssm->state());
- if (_waitHook)
- _waitHook();
- return TransportLayerMock::wait(std::move(ticket));
- }
+ };
- void asyncWait(Ticket&& ticket, TicketCallback callback) override {
- MONGO_UNREACHABLE;
+ MockTL() {
+ createSessionHook = [](TransportLayer* tl) { return std::make_unique<Session>(tl); };
}
void setSSM(ServiceStateMachine* ssm) {