commit | 306b53faffacc0f0f93fdf0279a00196a529a13c | [log] [tgz] |
---|---|---|
author | QUICHE team <quiche-dev@google.com> | Tue Apr 09 10:33:01 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Apr 09 10:34:20 2019 -0700 |
tree | 27daed74c731ee90ddccb09294266c372fd32359 | |
parent | 35e749e45bf9b713fc38cad773f1924fe227fb23 [diff] |
Create a QuicAlarm-based source for random test data for Quartc. This is the first element required to reimplement quic_quality_test. By basing it on the QuicAlarm, we can use it in either a controlled environment (such as the one provided by quic::simulator::Simulator) or with a real thread (eg. by using QuartcAlarmFactory). Use in a controlled environment will make it easier to write tests that reproduce specific corner cases in congestion control. A quality test will likely use two of these in each direction, configured to simulate an audio source and a video source. Note that audio and video each have different bitrate constraints (min/max) and frame intervals. The QuartcDataSource generates a frame of random data every frame_interval. The frame's size depends on a bitrate allocation, which can be updated dynamically. The bitrate can be configured with a min and max (to emulate streams of different sizes, such as audio/video). Each frame includes a 20-byte header which includes: - A source id (to distinguish between sources when multiple are in use) - A sequence number (incremented for every frame, useful for telling the difference between 'source was disabled' and 'frames were lost') - A send timestamp (when the data was generated, to compute end-to-end delay) The remainder of each frame is randomly-generated payload data. The utility also comes with a struct and parse function which may be used to deserialize its output. This is useful for its own unit test, but is included in the library so that other tests may use it to read data from the header. gfe-relnote: n/a (Quartc/test only) PiperOrigin-RevId: 242693623 Change-Id: Ia496667bedcb518232c92c4b73c41813cd20b9cb
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.