RPS latency numbers are recorded for every RPS run, as there is no noticeable impact on performance for doing so.
These latency numbers are currently not uploaded to the Database, they will be added at a later date. They are printed though.
Histograms of latency percentiles are also generated. Currently only the numbers from the last run of a set are uploaded to artifacts.
A 60 connection test was added to reduce utilization to a constant level.
0 size for upload or download doesn't make sense, as that case is handled by RPS, and you get no data (other then a single useless latency number) out of in in tput.
Then make 0 for all 3 tests an error, so 0's don't accidentally get uploaded to the server.
Also makes the test runner error if a 0 is received
* Rever a bunch of changes
* Send UDP timeout
* Reorder read
* Workarounds for timeout issue
* Fix reverts
* Handle errors properly
* Fix linux
* Cleanup in destructor
* Use ConnectionScope instead of manual deletion
* Add missing delete[] operator
* 1 more thing
* Create dumps on perf failures
* Destructors run before elements are destructed
* Fix kernel build
* Few other small fixes
* Some more testing, potential registration issue
* remove dump
* Add prints to error states in perf testing to display where initialization is failing
* Print current user and other small bugs found.
* Only print user name on windows
* Revert user print
* IOCTL Interface for MsQuic Performance Counters
* Add msquic_ioctl header, test API
* Remove all the file object stuff
* Remove service reading code
* Add ioctl test, onboard into CI pipeline
Still a bit of cleanup to do
* Incorrect test path name
* Fix review comments, clean up service stop code
* Fix clog issues
* Add ioctl header and test library to windows distribution
* nit: extra lines
* fix logs
Co-authored-by: Thad House <thhous@microsoft.com>
Starts the client portion of #462
Some interop tests still fail, and further investigation is needed.
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Matrix values were incorrect, and defaults were always being used. Throughput this didn't matter, RPS it did matter a lot. Also increases the test timeout, some of the RPS tests take longer to finish
* Combine loopback and remote into a single script.
By doing this, we make things much easier for PGO
* Fix perf pipeline
* Fix tools lookup
* Update PGO
* Create logs in the right place (/logs not /log)
* Unbuffer clog2text_lttng.
I only tested the "handshake" test case. With these changes, quic.log is now
always created. But there is still a race condition of some sort, because in
most of the runs, all it contains is something like "Decoded 0 in
00:00:00.0018700". In some runs, however, almost 50K of log are written.
* Add sidechannel to perf runner to enable stopping the tests safely internally.
Only currently implemented in user mode, kernel mode will be different but done when kernel mode is finished
The TLS alert buffer was being provided to Schannel incorrectly, causing the alert to always be zero.
A new TLS test was introduced to the platform unittests to cover this as well.
Adds a script to make it easier to run quicping.exe for repro and debugging purposes.
Skip TlsTest.CertificateError on non-Schannel platforms.
Fixes#255
New performance driver is custom built specifically for performance, rather then using quicping.
Also will be compatible with server mode, and baseline support is part of this commit.
* Switch CI flag to be explicit skip flags for debugging helper flags
Will help to default local builds to be identical to CI. However, some of these flags can affect debugging in certain cases, so a flag is needed to disable them.
* Remove CI flag
* Fix clog in kernel mode
Bad files were being picked up, in addition clog wasn't being installed, and the kernel build is just ignoring this. I need to figure that out, but wanted the build fixed first
* Change clog to use a published nuget package
Much cleaner and easier to update. The executable now contains all the clog dependencies, and extracts them when we run --installDependencies
Timeout added to local run (configurable)
Local matcher now prints error on failure
Release mode as default
Automatically configure tls to match system if not set
Validate sets for tls and arch to enable tab completion
Perf Tests can now run either locally or cross systems. A setup has been created to make this work automatically on AZP.
Additionally, machine name is now published, along with other smaller code changes.
* Allow QuicPing server to specify number of connections allowed before shutting down
By doing this, performance tests can be cleaner to run, as they can explicitly state how many connections are expected. Also adds parity with the client
Currently uses a test file in the data/performance branch, and is testing using quicping. More tests will be added in the future, along with a better data storage story.
This will ensure we don't race manually cleaning up the unregistered connections and work being done on them by the datapath.
Also updates quicspin to loop, allowing the shutdown path to be hit more often.
Should fix#482
Adds testing of the platform layers, and fixes an issue in the OpenSSL hash calculation discovered by these tests.
Fixes#93
Co-authored-by: Nick Banks <nibanks@microsoft.com>