proxygen
MockCodecDownstreamTest Class Reference
Inheritance diagram for MockCodecDownstreamTest:
testing::Test

Public Member Functions

 MockCodecDownstreamTest ()
 
void onWriteChain (folly::AsyncTransportWrapper::WriteCallback *callback, std::shared_ptr< IOBuf >, WriteFlags)
 
 ~MockCodecDownstreamTest () override
 
void SetUp () override
 
template<class T >
void onIngressImpl (T f)
 
void testGoaway (bool doubleGoaway, bool dropConnection)
 
void testConnFlowControlBlocked (bool timeout)
 
- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
virtual ~Test ()
 
virtual ~Test ()
 

Protected Attributes

EventBase eventBase_
 
StrictMock< MockHTTPCodec > * codec_
 
std::string userAgent_ {"MockCodec"}
 
HTTPCodec::CallbackcodecCallback_ {nullptr}
 
NiceMock< MockAsyncTransport > * transport_
 
folly::AsyncTransportWrapper::ReadCallbacktransportCb_
 
folly::HHWheelTimer::UniquePtr transactionTimeouts_
 
StrictMock< MockControllermockController_
 
HTTPDownstreamSessionhttpSession_
 
HTTPCodec::StreamID pushStreamID_ {0}
 
bool reusable_ {true}
 
bool transportGood_ {true}
 
bool drainPending_ {false}
 
bool doubleGoaway_ {false}
 
bool liveGoaways_ {false}
 
bool invokeWriteSuccess_ {false}
 
uint32_t writeCount_ {0}
 
std::vector< folly::AsyncTransportWrapper::WriteCallback * > cbs_
 

Additional Inherited Members

- Public Types inherited from testing::Test
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void TearDown ()
 
 Test ()
 
virtual void TearDown ()
 
 Test ()
 
virtual void TearDown ()
 

Detailed Description

Definition at line 52 of file MockCodecDownstreamTest.cpp.

Constructor & Destructor Documentation

MockCodecDownstreamTest::MockCodecDownstreamTest ( )
inline

Definition at line 54 of file MockCodecDownstreamTest.cpp.

References testing::_, folly::IOBufQueue::append(), testing::Assign(), codec_, EXPECT_CALL, folly::getEventBase(), testing::Invoke(), testing::InvokeWithoutArgs(), kDefaultIngressSettings, proxygen::localAddr, proxygen::mockTransportInfo, onWriteChain(), proxygen::peerAddr, testing::Return(), testing::ReturnRef(), transport_, and fizz::detail::writeBuf().

55  : eventBase_(),
59 
60  EXPECT_CALL(*transport_, writeChain(_, _, _))
61  .WillRepeatedly(Invoke(this, &MockCodecDownstreamTest::onWriteChain));
62  EXPECT_CALL(*transport_, good())
63  .WillRepeatedly(ReturnPointee(&transportGood_));
64  EXPECT_CALL(*transport_, closeNow())
65  .WillRepeatedly(Assign(&transportGood_, false));
67  .WillRepeatedly(Return(&eventBase_));
68  EXPECT_CALL(*transport_, setReadCB(_))
69  .WillRepeatedly(SaveArg<0>(&transportCb_));
70  EXPECT_CALL(mockController_, getGracefulShutdownTimeout())
71  .WillRepeatedly(Return(std::chrono::milliseconds(0)));
72  EXPECT_CALL(mockController_, attachSession(_));
73  EXPECT_CALL(*codec_, setCallback(_))
74  .WillRepeatedly(SaveArg<0>(&codecCallback_));
75  EXPECT_CALL(*codec_, supportsParallelRequests())
76  .WillRepeatedly(Return(true));
77  EXPECT_CALL(*codec_, supportsPushTransactions())
78  .WillRepeatedly(Return(true));
79  EXPECT_CALL(*codec_, getTransportDirection())
80  .WillRepeatedly(Return(TransportDirection::DOWNSTREAM));
81  EXPECT_CALL(*codec_, getEgressSettings());
82  EXPECT_CALL(*codec_, supportsStreamFlowControl())
83  .WillRepeatedly(Return(true));
84  EXPECT_CALL(*codec_, getProtocol())
85  .WillRepeatedly(Return(CodecProtocol::SPDY_3_1));
86  EXPECT_CALL(*codec_, getUserAgent())
87  .WillRepeatedly(ReturnRef(userAgent_));
88  EXPECT_CALL(*codec_, setParserPaused(_))
89  .WillRepeatedly(Return());
90  EXPECT_CALL(*codec_, supportsSessionFlowControl())
91  .WillRepeatedly(Return(true)); // simulate spdy 3.1
92  EXPECT_CALL(*codec_, getIngressSettings())
93  .WillRepeatedly(Return(&kDefaultIngressSettings));
94  EXPECT_CALL(*codec_, isReusable())
95  .WillRepeatedly(ReturnPointee(&reusable_));
96  EXPECT_CALL(*codec_, isWaitingToDrain())
97  .WillRepeatedly(ReturnPointee(&drainPending_));
98  EXPECT_CALL(*codec_, generateSettings(_));
99  EXPECT_CALL(*codec_, getDefaultWindowSize())
100  .WillRepeatedly(Return(65536));
101  EXPECT_CALL(*codec_, createStream())
102  .WillRepeatedly(InvokeWithoutArgs([&] {
103  return pushStreamID_ += 2;
104  }));
105  EXPECT_CALL(*codec_, enableDoubleGoawayDrain())
106  .WillRepeatedly(Invoke([&] { doubleGoaway_ = true; }));
107  EXPECT_CALL(*codec_, generateGoaway(_, _, _, _))
108  .WillRepeatedly(Invoke([this](IOBufQueue& writeBuf,
109  HTTPCodec::StreamID /*lastStream*/,
110  ErrorCode,
111  std::shared_ptr<folly::IOBuf>) {
112  if (reusable_) {
113  reusable_ = false;
115  } else if (!drainPending_) {
116  return 0;
117  } else {
118  drainPending_ = false;
119  }
120  if (liveGoaways_) {
121  writeBuf.append(string("x"));
122  }
123  return 1;
124  }));
125  EXPECT_CALL(*codec_, generateRstStream(_, _, _))
126  .WillRepeatedly(Return(1));
127  EXPECT_CALL(*codec_, addPriorityNodes(_, _, _))
128  .WillOnce(Return(0));
129  EXPECT_CALL(*codec_, mapPriorityToDependency(_))
130  .WillRepeatedly(Return(0));
131 
132  HTTPSession::setDefaultReadBufferLimit(65536);
134  transactionTimeouts_.get(),
136  &mockController_, std::unique_ptr<HTTPCodec>(codec_),
137  mockTransportInfo, nullptr);
139  eventBase_.loop();
140  }
folly::HHWheelTimer::UniquePtr makeInternalTimeoutSet(EventBase *evb)
Definition: TestUtils.cpp:22
HTTPCodec::Callback * codecCallback_
void append(std::unique_ptr< folly::IOBuf > &&buf, bool pack=false)
Definition: IOBufQueue.cpp:143
const SocketAddress peerAddr
Definition: TestUtils.cpp:20
EventBase * getEventBase()
void onWriteChain(folly::AsyncTransportWrapper::WriteCallback *callback, std::shared_ptr< IOBuf >, WriteFlags)
HTTPDownstreamSession * httpSession_
const wangle::TransportInfo mockTransportInfo
Definition: TestUtils.cpp:18
PolymorphicAction< internal::InvokeWithoutArgsAction< FunctionImpl > > InvokeWithoutArgs(FunctionImpl function_impl)
internal::ReturnRefAction< R > ReturnRef(R &x)
void writeBuf(const Buf &buf, folly::io::Appender &out)
std::unique_ptr< AsyncTransportWrapper, Destructor > UniquePtr
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
StrictMock< MockController > mockController_
folly::AsyncTransportWrapper::ReadCallback * transportCb_
StrictMock< MockHTTPCodec > * codec_
folly::HHWheelTimer::UniquePtr transactionTimeouts_
const SocketAddress localAddr
Definition: TestUtils.cpp:19
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
#define EXPECT_CALL(obj, call)
uint64_t StreamID
Definition: HTTPCodec.h:49
const internal::AnythingMatcher _
const HTTPSettings kDefaultIngressSettings
NiceMock< MockAsyncTransport > * transport_
internal::ReturnAction< R > Return(R value)
MockCodecDownstreamTest::~MockCodecDownstreamTest ( )
inlineoverride

Definition at line 153 of file MockCodecDownstreamTest.cpp.

References folly::AsyncSocketException::UNKNOWN.

153  {
155  for (auto& cb : cbs_) {
156  cb->writeErr(0, ex);
157  }
158  }
string UNKNOWN
Definition: tokenize.py:53
std::vector< folly::AsyncTransportWrapper::WriteCallback * > cbs_

Member Function Documentation

template<class T >
void MockCodecDownstreamTest::onIngressImpl ( T  f)
inline

Definition at line 167 of file MockCodecDownstreamTest.cpp.

References testing::_, codec_, folly::IOBuf::computeChainDataLength(), EXPECT_CALL, f, testing::Invoke(), and folly::detail::timeout.

167  {
168  EXPECT_CALL(*codec_, onIngress(_))
169  .WillOnce(Invoke([&f] (const IOBuf& buf) {
170  CHECK_GT(buf.computeChainDataLength(), 0);
171  // The test should be independent of the dummy buffer,
172  // so don't pass it in.
173  f();
174  return buf.computeChainDataLength();
175  }));
176 
177  void* buf;
178  size_t bufSize;
179  transportCb_->getReadBuffer(&buf, &bufSize);
181  }
virtual void readDataAvailable(size_t len) noexcept=0
auto f
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
virtual void getReadBuffer(void **bufReturn, size_t *lenReturn)=0
folly::AsyncTransportWrapper::ReadCallback * transportCb_
StrictMock< MockHTTPCodec > * codec_
std::size_t computeChainDataLength() const
Definition: IOBuf.cpp:501
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
void MockCodecDownstreamTest::onWriteChain ( folly::AsyncTransportWrapper::WriteCallback callback,
std::shared_ptr< IOBuf ,
WriteFlags   
)
inline

Definition at line 142 of file MockCodecDownstreamTest.cpp.

References folly::AsyncWriter::WriteCallback::writeSuccess().

Referenced by MockCodecDownstreamTest().

144  {
145  writeCount_++;
146  if (invokeWriteSuccess_) {
147  callback->writeSuccess();
148  } else {
149  cbs_.push_back(callback);
150  }
151  }
std::vector< folly::AsyncTransportWrapper::WriteCallback * > cbs_
virtual void writeSuccess() noexcept=0
void MockCodecDownstreamTest::SetUp ( )
inlineoverridevirtual

Reimplemented from testing::Test.

Definition at line 160 of file MockCodecDownstreamTest.cpp.

160  {
161  HTTPSession::setDefaultWriteBufferLimit(65536);
162  }
void MockCodecDownstreamTest::testConnFlowControlBlocked ( bool  timeout)

Definition at line 968 of file MockCodecDownstreamTest.cpp.

References testing::_, folly::IOBufQueue::append(), codec_, EXPECT_CALL, EXPECT_EQ, proxygen::Exception::getProxygenError(), proxygen::HTTP_HEADER_CONTENT_LENGTH, testing::Invoke(), proxygen::kErrorTimeout, proxygen::http2::kInitialWindow, makeBuf(), proxygen::makeGetRequest(), proxygen::makeResponse(), folly::gen::move, testing::Return(), uint64_t, and fizz::detail::writeBuf().

968  {
969  // Let the connection level flow control window fill and then make sure
970  // control frames still can be processed
971  InSequence enforceOrder;
972  NiceMock<MockHTTPHandler> handler1;
973  NiceMock<MockHTTPHandler> handler2;
974  auto wantToWrite = spdy::kInitialWindow + 50000;
975  auto wantToWriteStr = folly::to<string>(wantToWrite);
976  auto req1 = makeGetRequest();
977  auto req2 = makeGetRequest();
978  auto resp1 = makeResponse(200);
979  resp1->getHeaders().set(HTTP_HEADER_CONTENT_LENGTH, wantToWriteStr);
980  auto resp2 = makeResponse(200);
981  resp2->getHeaders().set(HTTP_HEADER_CONTENT_LENGTH, wantToWriteStr);
982  invokeWriteSuccess_ = true;
983 
984  EXPECT_CALL(mockController_, getRequestHandler(_, _))
985  .WillOnce(Return(&handler1));
986  EXPECT_CALL(handler1, setTransaction(_))
987  .WillOnce(SaveArg<0>(&handler1.txn_));
988  EXPECT_CALL(handler1, onHeadersComplete(_));
989  EXPECT_CALL(*codec_, generateHeader(_, 1, _, _, _))
990  .WillOnce(Invoke([] (folly::IOBufQueue& writeBuf,
992  const HTTPMessage&,
993  bool,
994  HTTPHeaderSize*) {
995  writeBuf.append("", 1);
996  }));
997  unsigned bodyLen = 0;
998  EXPECT_CALL(*codec_, generateBody(_, 1, _, _, false))
999  .WillRepeatedly(Invoke([&](folly::IOBufQueue& /*writeBuf*/,
1001  std::shared_ptr<folly::IOBuf> chain,
1003  bool /*eom*/) {
1004  bodyLen += chain->computeChainDataLength();
1005  return 0; // don't want byte events
1006  }));
1007 
1008  codecCallback_->onMessageBegin(1, req1.get());
1010  codecCallback_->onWindowUpdate(1, wantToWrite); // ensure the per-stream
1011  // window doesn't block
1012  handler1.txn_->sendHeaders(*resp1);
1013  handler1.txn_->sendBody(makeBuf(wantToWrite)); // conn blocked, stream open
1014  handler1.txn_->sendEOM();
1015  eventBase_.loop(); // actually send (most of) the body
1016  CHECK_EQ(bodyLen, spdy::kInitialWindow); // should have written a full window
1017 
1018  EXPECT_CALL(mockController_, getRequestHandler(_, _))
1019  .WillOnce(Return(&handler2));
1020  EXPECT_CALL(handler2, setTransaction(_))
1021  .WillOnce(SaveArg<0>(&handler2.txn_));
1022  EXPECT_CALL(handler2, onHeadersComplete(_));
1023  EXPECT_CALL(*codec_, generateHeader(_, 3, _, _, _))
1024  .WillOnce(Invoke([] (folly::IOBufQueue& writeBuf,
1026  const HTTPMessage&,
1027  bool,
1028  HTTPHeaderSize*) {
1029  writeBuf.append("", 1);
1030  }));
1031 
1032  auto writeCount = writeCount_;
1033 
1034  // Make sure we can send headers of response to a second request
1035  codecCallback_->onMessageBegin(3, req2.get());
1037  handler2.txn_->sendHeaders(*resp2);
1038 
1039  eventBase_.loop();
1040 
1041  EXPECT_EQ(writeCount + 1, writeCount_);
1042 
1043  if (timeout) {
1044  // don't send a window update, the handlers will get timeouts
1045  EXPECT_CALL(handler1, onError(_))
1046  .WillOnce(Invoke([] (const HTTPException& ex) {
1048  }));
1049  EXPECT_CALL(handler2, onError(_))
1050  .WillOnce(Invoke([] (const HTTPException& ex) {
1052  }));
1053  EXPECT_CALL(mockController_, detachSession(_));
1054  // send a window update to refresh the stream level timeout
1056  // silly, the timeout set is internal and there's no fd, so hold the
1057  // eventBase open until the timeout can fire
1058  eventBase_.runAfterDelay([] {}, 500);
1059 
1060  transactionTimeouts_->cancelAll();
1061  } else {
1062  // Give a connection level window update of 10 bytes -- this
1063  // should allow 10 bytes of the txn1 response to be written
1065  EXPECT_CALL(*codec_, generateBody(_, 1, PtrBufHasLen(uint64_t(10)),
1066  _, false));
1067  eventBase_.loop();
1068 
1069  // Just tear everything down now.
1070  EXPECT_CALL(handler1, detachTransaction());
1071  codecCallback_->onAbort(handler1.txn_->getID(),
1072  ErrorCode::INTERNAL_ERROR);
1073  eventBase_.loop();
1074 
1075  EXPECT_CALL(handler2, detachTransaction());
1076  EXPECT_CALL(mockController_, detachSession(_));
1078  }
1079 
1080  eventBase_.loop();
1081 }
HTTPCodec::Callback * codecCallback_
void append(std::unique_ptr< folly::IOBuf > &&buf, bool pack=false)
Definition: IOBufQueue.cpp:143
const uint32_t kInitialWindow
virtual void onMessageBegin(StreamID stream, HTTPMessage *msg)=0
ProxygenError getProxygenError() const
Definition: Exception.h:50
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
void dropConnection() override
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
HTTPDownstreamSession * httpSession_
std::unique_ptr< folly::IOBuf > makeBuf(uint32_t size)
Definition: ZlibTests.cpp:26
void writeBuf(const Buf &buf, folly::io::Appender &out)
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
StrictMock< MockController > mockController_
std::unique_ptr< HTTPMessage > makeResponse(uint16_t statusCode)
Definition: TestUtils.cpp:147
StrictMock< MockHTTPCodec > * codec_
virtual void onHeadersComplete(StreamID stream, std::unique_ptr< HTTPMessage > msg)=0
virtual void onAbort(StreamID, ErrorCode)
Definition: HTTPCodec.h:192
folly::HHWheelTimer::UniquePtr transactionTimeouts_
std::unique_ptr< HTTPMessage > makeGetRequest()
Definition: TestUtils.cpp:98
void runAfterDelay(Func cob, uint32_t milliseconds, InternalEnum internal=InternalEnum::NORMAL)
#define EXPECT_CALL(obj, call)
uint64_t StreamID
Definition: HTTPCodec.h:49
const internal::AnythingMatcher _
virtual void onWindowUpdate(StreamID, uint32_t)
Definition: HTTPCodec.h:243
internal::ReturnAction< R > Return(R value)
void MockCodecDownstreamTest::testGoaway ( bool  doubleGoaway,
bool  dropConnection 
)

Definition at line 1275 of file MockCodecDownstreamTest.cpp.

References testing::_, testing::Assign(), testing::AtLeast(), codec_, testing::DoAll(), EXPECT_CALL, EXPECT_EQ, EXPECT_FALSE, handler(), testing::Invoke(), proxygen::makeGetRequest(), folly::gen::move, testing::Return(), transport_, folly::AsyncSocketException::UNKNOWN, folly::AsyncWriter::WriteCallback::writeErr(), and folly::AsyncWriter::WriteCallback::writeSuccess().

1276  {
1278  MockHTTPHandler pushHandler;
1279 
1280  liveGoaways_ = true;
1281  if (doubleGoaway) {
1282  EXPECT_CALL(mockController_, getRequestHandler(_, _))
1283  .WillOnce(Return(&handler));
1284  EXPECT_CALL(handler, setTransaction(_))
1285  .WillOnce(SaveArg<0>(&handler.txn_));
1286 
1287  EXPECT_CALL(handler, onHeadersComplete(_));
1288  EXPECT_CALL(handler, onEOM())
1289  .WillOnce(Invoke([&] {
1290  handler.sendReply();
1291  }));
1292  EXPECT_CALL(*codec_, generateHeader(_, 1, _, _, _));
1293  EXPECT_CALL(*codec_, generateEOM(_, 1));
1294  EXPECT_CALL(handler, detachTransaction());
1295 
1296  // Turn on double GOAWAY drain
1297  codec_->enableDoubleGoawayDrain();
1298  }
1299 
1300  // Send a GOAWAY acking uninitiated transactions
1303  EXPECT_EQ(drainPending_, doubleGoaway);
1305 
1306  if (doubleGoaway) {
1307  // Should be able to process new requests
1308  auto req1 = makeGetRequest();
1309  codecCallback_->onMessageBegin(1, req1.get());
1311  codecCallback_->onMessageComplete(1, false);
1312  }
1313 
1315  EXPECT_CALL(*transport_, writeChain(_, _, _))
1316  .WillOnce(Invoke([&] (folly::AsyncTransportWrapper::WriteCallback* callback,
1317  const shared_ptr<IOBuf>,
1318  WriteFlags) {
1319  // don't immediately flush the goaway
1320  cb = callback;
1321  }));
1322  if (doubleGoaway || !dropConnection) {
1323  // single goaway, drop connection doesn't get onIngressEOF
1324  EXPECT_CALL(*codec_, onIngressEOF());
1325  }
1326  eventBase_.loopOnce();
1327 
1328  EXPECT_CALL(mockController_, detachSession(_));
1329  if (dropConnection) {
1330  EXPECT_CALL(*transport_, closeWithReset())
1331  .Times(AtLeast(1))
1332  .WillOnce(DoAll(Assign(&transportGood_, false),
1333  Invoke([cb] {
1336  cb->writeErr(0, ex);
1337  })));
1338 
1340  } else {
1341  EXPECT_CALL(*codec_, isBusy());
1343  cb->writeSuccess();
1344  }
1347 }
HTTPCodec::Callback * codecCallback_
GTEST_API_ Cardinality AtLeast(int n)
virtual void onMessageBegin(StreamID stream, HTTPMessage *msg)=0
virtual void onMessageComplete(StreamID stream, bool upgrade)=0
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
void dropConnection() override
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
HTTPDownstreamSession * httpSession_
string UNKNOWN
Definition: tokenize.py:53
void handler(int, siginfo_t *, void *)
bool loopOnce(int flags=0)
Definition: EventBase.cpp:271
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
StrictMock< MockController > mockController_
StrictMock< MockHTTPCodec > * codec_
void notifyPendingShutdown() override
virtual void onHeadersComplete(StreamID stream, std::unique_ptr< HTTPMessage > msg)=0
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
internal::DoBothAction< Action1, Action2 > DoAll(Action1 a1, Action2 a2)
std::unique_ptr< HTTPMessage > makeGetRequest()
Definition: TestUtils.cpp:98
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
virtual void writeSuccess() noexcept=0
virtual void writeErr(size_t bytesWritten, const AsyncSocketException &ex) noexcept=0
void closeWhenIdle() override
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
NiceMock< MockAsyncTransport > * transport_
internal::ReturnAction< R > Return(R value)

Member Data Documentation

std::vector<folly::AsyncTransportWrapper::WriteCallback*> MockCodecDownstreamTest::cbs_
protected

Definition at line 207 of file MockCodecDownstreamTest.cpp.

StrictMock<MockHTTPCodec>* MockCodecDownstreamTest::codec_
protected

Definition at line 191 of file MockCodecDownstreamTest.cpp.

HTTPCodec::Callback* MockCodecDownstreamTest::codecCallback_ {nullptr}
protected

Definition at line 193 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::doubleGoaway_ {false}
protected

Definition at line 203 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::drainPending_ {false}
protected

Definition at line 202 of file MockCodecDownstreamTest.cpp.

EventBase MockCodecDownstreamTest::eventBase_
protected

Definition at line 189 of file MockCodecDownstreamTest.cpp.

HTTPDownstreamSession* MockCodecDownstreamTest::httpSession_
protected

Definition at line 198 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::invokeWriteSuccess_ {false}
protected

Definition at line 205 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::liveGoaways_ {false}
protected

Definition at line 204 of file MockCodecDownstreamTest.cpp.

StrictMock<MockController> MockCodecDownstreamTest::mockController_
protected

Definition at line 197 of file MockCodecDownstreamTest.cpp.

HTTPCodec::StreamID MockCodecDownstreamTest::pushStreamID_ {0}
protected

Definition at line 199 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::reusable_ {true}
protected

Definition at line 200 of file MockCodecDownstreamTest.cpp.

folly::HHWheelTimer::UniquePtr MockCodecDownstreamTest::transactionTimeouts_
protected

Definition at line 196 of file MockCodecDownstreamTest.cpp.

NiceMock<MockAsyncTransport>* MockCodecDownstreamTest::transport_
protected

Definition at line 194 of file MockCodecDownstreamTest.cpp.

folly::AsyncTransportWrapper::ReadCallback* MockCodecDownstreamTest::transportCb_
protected

Definition at line 195 of file MockCodecDownstreamTest.cpp.

bool MockCodecDownstreamTest::transportGood_ {true}
protected

Definition at line 201 of file MockCodecDownstreamTest.cpp.

std::string MockCodecDownstreamTest::userAgent_ {"MockCodec"}
protected

Definition at line 192 of file MockCodecDownstreamTest.cpp.

uint32_t MockCodecDownstreamTest::writeCount_ {0}
protected

Definition at line 206 of file MockCodecDownstreamTest.cpp.


The documentation for this class was generated from the following file: