Create a test utility for sending and receiving data from QuartcDataSources.

QuartcPeer serves as a delegate for QuartcEndpoint, QuartcSession, and
QuartcDataSource.  It does not own a QuartcEndpoint--it instead expects the
endpoint to be set up by a test.  It waits for the endpoint to create a session,
then initializes QuartcDataSources according to a vector of configs.  It then
sends the data produced by those sources as QUIC datagrams.

QuartcPeer is responsible for adapting the data sources to the interface
provided by the session.  It adjusts bitrates and maximum frame sizes in order
to ensure that ensure that the data produced fits in the session (in accordance
with the session's max datagram frame size and bandwidth estimate).

QuartcPeer tracks messages it receives.  It parses each message as a frame sent
by QuartcDataSource, then attaches a receive timestamp.

This cl also fixes some bugs in QuartcDataSource.  It now produces at least
enough data to include the full frame header in each of its frames.  It no
longer reschedules the send alarm if SetEnabled(true) is called when the source
is already enabled.

gfe-relnote: n/a (Quartc only)
PiperOrigin-RevId: 243879297
Change-Id: I79412e9582fbbe98eaeaf33dca3ee621261c4846
6 files changed
tree: fc63b511152b7d01e1595b91803dd94b826b182e
  1. epoll_server/
  2. http2/
  3. quic/
  4. spdy/
  5. CONTRIBUTING.md
  6. LICENSE
  7. README.md
README.md

QUICHE

QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects.

The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.