Граф коммитов

426 Коммитов

Автор SHA1 Сообщение Дата
Thad House 68482a1561
Create nuget packages for distribution (#1881)
* Package openssl files into a nuget for distribution

* Add nuget to path

* Package nuget on windows

* Add schannel builds, update licenses

* Add commit hash to package

* Insert repo url into package
2021-08-09 10:39:46 -07:00
Thad House 83d962c43f
Fix third party notices missing from OpenSSL packaging (#1883) 2021-08-06 16:48:45 -07:00
Thad House 801132a6cf
Add distribution stage to onebranch builds (#1879)
* Start work on distribution

* yaml

* Another try

* Some more updates

* Fix package distribution

* Another join path fix

* Another fix

* Add all other builds

* Add distribution step to pipeline

* Fix indentation

* Adds tests yml

* Package distribution zips in public pipeline

* Fix trigger

* Another try

* Fixup trigger

* Another attempt at triggering tests

* Try again
2021-08-05 12:08:01 -07:00
Thad House dcad91e894
Add minimum compiler requirements for CI builds (#1876)
* Add minimum compiler requirements for CI builds

For builds coming out of our CI, we want a minimum set up required flags and definitions, both for compliance and performance reasons. On linux, these checks are properly handled if missing at runtime, but we want them there in the binaries we build

* Fixup checks

* Clean up linux a bit

* Fix build, add lttng check
2021-08-04 11:58:46 -07:00
Thad House 97dc7bb5ad
Rename onebranch kernel build script (#1877)
Muscle memory has me hitting tab once to access build.ps1. However, build-kernel.cmd is higher in the sort order when just b is entered. Rename the script to fix this
2021-08-04 11:26:57 -07:00
Thad House 58448d1003
Add onebranch pipelines (#1869)
* Adding OneBranch pipeline YAML config
2021-08-03 12:22:09 -07:00
Thad House a5cbcbd9d4
General build cleanups and speedups (#1863)
Remove excess prints from static builds
Remove gmock and gtest_main from builds
Allow using alternate build systems on windows builds with warning about dev command promt
Tested with VS 2022. Default is still 2019. Might add an option later to automatically detect 2022
2021-07-29 17:06:10 -07:00
Thad House 74b43cddaf
Remove generated folder before globbing source files for clog (#1853) 2021-07-26 14:10:20 -05:00
Tomas Weinfurt a3d98d6ece
improve packaging (#1852) 2021-07-25 11:14:07 -05:00
Thad House b00fb5eb33
Save generated CLOG files in Repo, use them for linux build (#1845)
* Pregenerate clog files

This removes the build time dependency on clog, which removes the build time dependency on .NET

* Add a few missing logs, cleanup

* Fixup linux build

* Make linux builds default to parallel

* Only install clog for dev, fix builds without logging

* Only link include dirs to logged programs
2021-07-23 12:07:27 -07:00
Thad House 8dd714517e
Add support for building openssl with jom (#1839)
* Add support for building openssl with jom

Jom is a QT NMAKE replacement which supports parallel builds. Its done as an optional dependency to make builds still work without it installed

* Fix prepare machine

* Fixup cmake targets for openssl

* Extra comment

* Fully remove cache support

* Clean up code relating to cache
2021-07-22 16:10:48 -07:00
Thad House acdebe43a0
Add android native library build support (#1835) 2021-07-21 16:47:45 -05:00
Tomas Weinfurt 7e8f28fec1
add option to create debug package from debug build (#1830)
* add option to create debug package from debug build

* Update description

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-07-19 13:00:49 -05:00
Nick Banks 5677bb63fc
Stream Priority Support (#1778) 2021-07-06 15:01:40 -07:00
Thad House a08321be74
Enable renaming the output shared binary (#1790) 2021-07-02 09:18:03 -07:00
Jeremy Ong 24cc30ec9f
Add initial static library support (Windows Only) (#1446)
* Add initial static library support

* Revert change to msquic.lttng target

Also adds a missing newline at init.c's EOF

* Add whole static lib archiving support

* Add static build configuration to windows platforms in build.ps1 and
exclude system libs

* Invert build.ps1 switch and add documentation

* Resolve static link issues with repeated definition of QuicTraceRundown

* Add win32 static configurations to the azure pipeline build job lists

* Correctly ignore MSVC runtime libraries and fix documentation

* Passively create the static lib directly if it doesn't exist

In the event that a different output directory is specified, cmake's
generator will generally create the directory if it doesn't exist.
For the static monolith however, we emit the file with link.exe
directly, and this will fail if the parent directory doesn't exist.

* Try fix CI

* Add STATIC target annotation on perflib and testlib

* Reject libs without a valid ARCHIVE_OUTPUT_DIRECTORY path and inject CI
cached binaries

* Try to fix tests

* Force static build of gtest and support statically linked tools

* Remove kernel static build mods and handle MsQuicUnload in atexit
handlers

* Enforce a different means to enforce static builds for gtest artifacts

* Fix interop static

* One more?

* Change static linkage load/unload invocations to lazy lockfree approach

* Re-add exclusion list which was needed for the release build

* Introduce empty.c file and make msquic_static library a physical target

* Add missing InterlockedAnd to advertise the unloading sequence is
complete

* Inline MsQuicOpen to prevent duplicate symbol issues on Windows

* Temp workaround - Just use macro

* One more fix

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-06-27 14:03:07 -07:00
Nick Banks 7a5af86721
Add Salted Hash Support To Etw Collection (#1734) 2021-06-17 14:13:14 -07:00
Thad House 790e79606d
Fix kernel perf finally script (#1712)
Finally was killing the wrong driver name, which is a problem
2021-06-14 13:51:59 -07:00
Tomas Weinfurt 4113531fc1
create Linux packages from package-distribution.ps1 (#1695) 2021-06-14 11:29:21 -07:00
Anthony Rossi 5f9b5482f0
Test sign drivers for kernel mode testing. (#1694) 2021-06-10 14:46:34 -07:00
Tomas Weinfurt 25ee678a7f
add basic packaging script (#1692) 2021-06-09 14:26:07 -07:00
Thad House 07c4d29272
Properly allow default parameters for get-buildconfig (#1683) 2021-06-02 13:55:17 -07:00
Thad House d952a9bd93
Add helper script for grabbing build config and artifact directory for local machine (#1650)
* Add helper script for grabbing build config and artifact directory for local machine

* Make script only a single purpose

* Allow empty parameter

* Don't pass a default for platform
2021-06-01 20:30:19 -07:00
Anthony Rossi 6acbc210a3
Remove dependence on WIL submodule. (#1619) 2021-05-20 14:18:12 -07:00
Thad House 80e314e701
Run release mode tests in CI (#1593)
* Run release mode tests in CI

The internal windows build uses release mode msquic and msquictest binaries, however this is not tested anywhere in CI. Its possible for tests to be added that break this, and this won't then be detectable until a windows build. Run a build in CI so this can be detected early

* Fix stage name

* Disable certficiate tests and fix datagram tests in release mode

* Fix more handshake things

* 1 last fix

* Fix build deps

* Disable nth alloc in releasem ode

* Filters
2021-05-14 13:58:06 -07:00
Thad House 7c3fb1c3d5
Fail interop tests in CI if interop crashes (#1590) 2021-05-13 16:14:58 -07:00
Nick Banks f8a656a62c
Increase Throughput Perf Threshold to 10% (#1580) 2021-05-12 15:28:11 -07:00
Nick Banks c9dd1eec2f
Expose MsQuic Version to API Client (#1571) 2021-05-11 10:52:56 -07:00
Anthony Rossi 1480f5ace8
Fix more SpinQuic random allocation failure bugs (#1541)
* Fix OpenSSL failure.
* Fix CID allocation issue. Allow MsQuicOpen to fail.
* Fix UDP clean up on failure on Windows.
* Kill client connection when no DestCid is available.

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-05-11 00:56:29 -07:00
Thad House e6a3f5986b
Read commit url in try for perf previous data results (#1564)
Without this, feature branches will crash in the perf pipeline
2021-05-10 12:15:21 -07:00
Thad House a00a254f57
Add more logging for gtest run errors (#1555) 2021-05-06 15:31:47 -07:00
Thad House 96c378382f
Add exit code debugging to kernel mode test runs (#1551)
We seem to have an issue that might be related to bad exit codes. So add some logging so we can figure out why
2021-05-06 11:49:11 -07:00
Anthony Rossi 2084736032
Add support for randomly failing memory allocations to SpinQuic. (#1537)
Add runtime support for enabling random memory allocation failure to SpinQuic. Only available on Debug builds.
2021-05-03 18:28:08 -07:00
Nick Banks 521882d411
Simplify Test Scripts (#1540) 2021-05-03 11:07:35 -07:00
Thad House 332f0a5688
Log exception if a failure occurs in BVT run (#1538) 2021-05-03 10:41:38 -07:00
Thad House 8834935fd9
Increase linux regression thresholds (#1539)
Linux has a lot of performance fluctuation, and we don't currently have the time or knowledge to work on this. Its a future goal, but for now just increase the thresholds
2021-05-03 10:20:14 -07:00
Thad House e49e3eadfb
Average the last 5 results of runs for performance comparison (#1535)
* Average the last 5 results of runs for performance comparison

That way a jump from low to high doesn't break everything

* Fix a few variables

* 1 more fix

* Fix objects

* Make number of commits a variable
2021-04-30 16:29:04 -07:00
Anthony Rossi 145bbffddc
Use same RNG seed for TCP vs. QUIC random loss WAN tests. (#1533) 2021-04-29 22:03:58 -07:00
Max eb349b9d8c
Add support for Address Sanitizer in Windows (Dynamic Linkage only) (#1488) 2021-04-29 16:04:28 -07:00
Thad House 23361ac5d2
Special case targets in HPS tests (#1532)
* Parallelize HPS Client

* Use parallel values in test

* Use hex values, use valid kernel code for printing string
2021-04-29 14:30:14 -07:00
Thad House c7f2e05e33
Update GetValue function to check for full string, and validate length (#1507)
* Update GetValue function to check for full string, and validate length

Previously, -requests: would match a check for 
equest as the strnicmp just checks for length. This changes ensures that the character after the check is a :, and also that the string length for the argument is acceptable

* Add a separate function to grab a flag

* Fix a few missing flags

* Fix pfx path
2021-04-27 08:42:09 -07:00
Thad House f1dc5cc258
Run kernel mode perf tests with a kernel mode client (#1501)
* Run kernel mode perf tests with a kernel mode client

* fix user mode tests
2021-04-23 13:59:13 -04:00
Thad House bf01a24c0a
Enhance performance logging capabilities (#1504)
* Enhance performance logging capabilities

Use the existing log scripts to perform logging, allow perf pipeline to log any supported log profile

* Fixup log profile

* Fix script root

* Fix cleanup

* A bit more logging, mainly to figure out why robocopy failed. And fix local

* Fix remote

* Another client and server fix

* Fix runs

* Disable prints

* Extra new line..

* 1 more log fix
2021-04-21 16:30:51 -07:00
Thad House 6b80dc5fde
Compare manually ran builds to main (#1503) 2021-04-21 10:01:32 -07:00
Nick Banks 9ba0ce4bce
Remove Unused QuicPing Tool (#1498) 2021-04-20 10:18:35 -07:00
Thad House e05e6dd3f1
Support running tests without administrator (#1478)
We shouldn't require administrator to run tests. A warning has been added that crash dumps will not be generated without administrator privileges
2021-04-14 12:43:10 -07:00
Thad House 0db4cd6d5a
Add perf stats to server side (#1472) 2021-04-13 15:41:30 -07:00
Thad House 2018103673
Add stats logging option to perf, log debug output to file (#1471)
* Add stats logging option to perf, log debug output to file

Logging connection stats can be an easy way to debug certain issues with the performance tool. Add an option to make this work.

By default, the pwsh script only prints logs in debug mode. Instead, write all output to a file as well, so this can be later reviewed as well. Otherwise all data from step 1 would just be lost.

* Fix builds

* Spacing nit

* Removing extra comma

* Fix incorrect log file

* Extra backtick

* 1 more parameter check

* Actually log local results

* Add build version to machine name

* Fix log name

* Hopefully 1 last fix

* Don't overwrite release logs with debug logs

* Toggle kernel as well

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-04-13 09:08:01 -07:00
Thad House 6c0aa76b0e
Default to send buffering off in secnetpert (#1449)
* Default to send buffering off in secnetpert

We usually want to be testing with no send buffering, however thats not the default. That makes manual testing more difficult, as thats something we have to explicitly set. Make the default no send buffering, and require it to be enabled explcitly

* Adjust tcp throughput thresholds
2021-04-08 07:50:09 -07:00
Thad House cd39ac185e
Add support for TCP run during performance testing (#1445)
* Add support for TCP run during performance testing

* Fixup script
2021-04-06 14:39:42 -07:00
Anthony Rossi a97c81acea
Enable ChaCha20-Poly1305 for OpenSSL (#1431) 2021-04-05 15:11:08 -07:00
Anthony Rossi 0ce6b335f4
Client Certificate validation (#1366)
Implement server-side validation of client certificates in Schannel. Add new tests to ensure that client certificates are validated.
QUIC_CREDENTIAL_FLAG_REQUIRE_CLIENT_AUTHENTICATION will automatically turn on client certificate validation, but client certificates that fail validation will cause the handshake to fail.
QUIC_CREDENTIAL_FLAG_DEFER_CERTIFICATE_VALIDATION is required to allow the handshake to proceed with client certificates that fail validation
2021-04-01 12:06:21 -07:00
Thad House b46c90ec28
Properly handle IPv4 addresses in Invoke-EtwTraceCollection (#1422)
* Properly handle IPv4 addresses in Invoke-EtwTraceCollection

Because of the port number, an IPv4 address would actually enter the IPv6 case in the regex, which would then not match. Explicitly check IPv4 first before checking IPv6.

* Fix naming
2021-04-01 10:15:34 -07:00
Thad House 4136685957
Build M1 OpenSSL Builds, Create Universal Binaries (#1414)
* Add support to M1 Mac builds in CI
2021-03-31 08:41:29 -07:00
Thad House b1940ba5ec
Remove stub TLS (#1411)
* Remove stub TLS

We were only using stub TLS to be compatible with ASAN. Now that OpenSSL and Asan work together, we can remove stub TLS and reduce our TLS scope.
2021-03-30 14:22:39 -07:00
Thad House 99501f12d7
Run Asan on OpenSSL builds instead of Stub builds (#1399)
* Attempt to run Asan on OpenSSL builds instead of Stub builds

* Fix build

* Fix openssl asan, fix resumption leak

* Properly  fix resumption ticket buffer

* Free Key in CryptTest

* Missed a few other frees

* Async read streams

There is a deadlock that exists in the existing code, which can happen if there is a large stderror write

* Fix leak of openssl session

* Replace stub spinquic with asan openssl spinquic

* Fixup spinquic

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-03-30 12:57:19 -07:00
Nick Banks edf0372970
Adds Start/Stop and Updates Flush for EtwTraceCollection (#1410) 2021-03-30 12:03:31 -07:00
Thad House ede9ae650e
Fix Cmake generator arguments (#1405)
* Fix Cmake generator arguments

CMake 3.20 seems to have gotten a lot more strict on the generator arguments. Properly use quotes, and also use -G not -g for generator

* Revert quotes

* Another fix test

* Only add quotes if generator has spaces

* Try lowercase ninja

* Actually fix build...

* 1 last fix

* Fix arm build
2021-03-30 10:33:28 -07:00
Nick Banks dd4f4ede0f
Remove miTLS (#1398) 2021-03-29 17:21:54 -07:00
Nick Banks 8e21db733f
Update Interop Runner Client to Use v1 (#1396) 2021-03-29 11:39:54 -07:00
Nick Banks 074ed62473
Update Interop for 0-RTT (#1392) 2021-03-27 13:05:51 -07:00
Thad House 8a3da9e2c1
Properly detect arm current platform for macos pwsh builds (#1388)
Theres no direct flag in powershell to detect which architecture is being used. Use uname to get the processor, and if it shows up as x86_64 check to see if we're running in translated mode.

Works on an M1 mac. CI as that is running native on Intel, that will test the native intel case. Native arm powershell does not exist yet, but when it does that case is handled as well
2021-03-27 08:48:14 -07:00
Nick Banks f59abba921
Improve Invoke-EtwTraceCollection.ps1 (#1386) 2021-03-26 14:34:28 -07:00
Thad House e7a168ed49
Add script to invoke ETW trace (#1385)
Currently doesn't actually invoke the trace, but has support for sanitizing IP Addresses
2021-03-26 13:55:24 -07:00
Thad House eb0803512e
Add secnetperf to vpack for Windows (#1375) 2021-03-25 13:44:40 -07:00
Thad House 19980a556f
Support multiple instances of secnetperf in kernel mode (#1374)
* Support multiple instances of secnetperf in kernel mode

This way loopback tests can be supported. Done by allowing user to supply driver name

* Get working with loopback and remote

* Run for infinite time
2021-03-25 12:35:33 -07:00
Tomas Weinfurt a1644f90e8
add basic support for pkcs12 import (#1351) 2021-03-24 13:38:46 -07:00
Nick Banks d7450bfbd8
Update BVT Task to Fail (#1367) 2021-03-24 10:49:20 -07:00
Thad House 40751ee0b0
Rename quicperf to netsecperf (#1368)
* Rename quicperf to netsecperf

Since TCP is now included, its now a network security perf test tool, not just quic perf

* Fix file names

* Fix clog

* 1 more name fix
2021-03-23 14:05:41 -07:00
Nick Banks 7c00782b84
Make WAN Perf Previous Results Failure Resilient (#1363) 2021-03-22 11:42:14 -07:00
Nick Banks 2dd8b7bf3c
Change Test Cert Password to placeholder (#1362) 2021-03-22 09:26:56 -07:00
Anthony Rossi 9d654f40aa
Update lttng to 2.12 (#1344) 2021-03-17 15:43:05 -07:00
Anthony Rossi cc104e836a
Expand certificate testing (#1324) 2021-03-16 20:55:37 -07:00
Thad House 5e9249aa41
Add WANPerf previous result comparisons (#1337)
* Add WANPerf previous result comparisons

Currently, only works for mainline builds and not periodic. Also doesn't currently fail on regressions

* Missing variable

* Trailing ocmma

* Fix wrong variable

* Clean up prints, remove extra file, enable periodic
2021-03-15 15:39:38 -07:00
Thad House 7f9c509c6a
Fix version update script to update QNS file as well (#1332) 2021-03-12 13:59:53 -08:00
Thad House 41d3bfcd2b
Use system libcrypto (#1320)
* Use system libcrypto

* Only use system crypto if found

* Make system openssl optional, fix incorrect artifact upload, allow publishing multiples of same base artifacts

* Test system libcrypto build

* Fix platform build
2021-03-12 11:02:40 -08:00
Thad House 6a3d62a3bc
Force medians to be sorted by number (#1317)
Currently theyre sorted by strings.
2021-03-08 10:30:21 -08:00
Thad House c2fddfb4ed
Add script to merge macos binaries (#1298)
Apple recommends shipping universal binaries on macOS, and actually require it if shipping to store. The easiest way to do this is post build. This adds a script that will merge all artifact binaries that can then be used and shipped.

Not currently hooked into azure, as this requires we build both platforms with the same tls provider, and arm64 openssl builds have issues there. I did test this locally, and got universal binaries that worked.
2021-02-27 10:21:05 -08:00
Thad House be57e5ed30
Start adding support for arm64 builds on macOS (#1289)
* Add support for building arm64 binaries on macOS

This will not create universal binaries, that is better handled as a post processing step to merge the 2 output libraries together

* Fixup multiple binaries

* Try forcing arm compiler openssl

* Work on getting stub arm64 working

* Fixup custom assembly

* Remove current, replace with empty
2021-02-26 12:50:27 -08:00
Thad House 43530758bf
Use no wait flag when cancelling lttng (#1281)
By default, destroy will ensure all trace data has been finalized before returning. When cancelling, we don't need this behavior, so pass the no wait flag, which massively reduces the amount of time needed for logging
2021-02-25 07:46:39 -08:00
Nick Banks cba827d7fd
More Periodic Perf Data (#1277) 2021-02-24 13:42:36 -08:00
Oguz Bastemur b3e49c068f
prepare-machine: Detect default PS and warn dev to install the latest (#1261)
* prepare-machine: Detect default PS and warn dev to install the latest

* Remove unnecessary exit

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-02-22 16:38:13 -08:00
Thad House 75c4100513
Fix distribution of linux binaries (#1233) 2021-02-12 12:29:22 -08:00
Thad House 50683f5b39
macOS Support (#1226)
Adds macos support to msquic.

Currently, it builds, and core tests will pass, but many datapath tests will not. This is because the datapath depends on ipv4 and ipv6 dual mode sockets, which have issues on macos. However, we want this merged so it doesn't get 4 months stale again.

The datapath is basically a clone of the epoll datapath, except using kqueue.

Co-authored-by: Max <mxms@me.com>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Co-authored-by: Lars Eggert <200328+larseggert@users.noreply.github.com>
2021-02-12 10:58:41 -08:00
Nick Banks b104600215
Telemetry Assert Events (#1227) 2021-02-11 14:18:03 -08:00
Thad House 7dca51521c
Add support for RSS on linux (#1217)
* Add support for RSS on linux

We had a thread per socket context, so we only needed to configure the bpf for rss to get it working

* Hard affinitize

* Remove hard affinitizing threads

* Keep trying sidechannel shutdown

* Set current thread affinity properly on linux

* Try to fix rps clients ending

* Actually use proper start time

* Use diff

* Add watchdog timeout

* Fix thread context, fix printf

* Properly stop threads upon client destruction

* Add override specifier

* Print ulimit

* Another ulimit attempt

* Add watchdog back in, force rlimit to max

* Fix unreachable

* Only run RPS tests, collect logs

* Print out why conn dies

* Fix rss impl

* Fix per proc context

* Fixup code

* 1 more semicolon

* 1 more socket count fix

* Fixup extra added things

* Don't pair client socket proc and thread proc

* Fix review comments
2021-02-10 17:27:06 -08:00
Thad House 163fd78647
Add Linux performance testing (#1214)
* Start work on linux perf

* Add linux rps and hps tests

* Remove test functions

* Add linux perf

* Add low latency rps

* Use new machines for loopback too

* Fix windows tests
2021-02-08 14:51:51 -08:00
Nick Banks a1fc73ce1a
RPS Latency Test Case (#1211) 2021-02-03 14:18:35 -08:00
Nick Banks 52cf0094b6
Fix Emulated Perf Reorder Bug (#1210) 2021-02-03 11:47:33 -08:00
Nick Banks 329e6746b6
Add Logs and Fix TCP Perf Code (#1207) 2021-02-02 15:01:46 -08:00
Thad House d8536e6dfa
Remove unused submodules from kernel build (#1203)
* Fake initialize submodule repos for CI kernel builds

* Use a fake init rather then submodule init

* 1 more attempt, by removing submodule
2021-01-29 14:37:09 -08:00
Nick Banks d5d2078a0e
Add MaxRuntime Support to QuicPerf (#1193) 2021-01-27 09:39:18 -08:00
Lars Eggert 9d7cada9e7
Add CI build that runs static code checkers (#1187) 2021-01-26 08:37:43 -08:00
Nick Banks 2226775d06
Add WAN Perf to Periodic Perf Pipeline (#1189) 2021-01-25 12:44:49 -08:00
Nick Banks 1ebfc0f4ad
TCP Perf: Support Abort Stream (#1182) 2021-01-25 09:08:45 -08:00
Nick Banks 0ef8feb637
TCP/TLS Performance Interface (#1160) 2021-01-22 11:56:31 -08:00
Thad House baea006c94
Upload WanPerf data to artifacts for later parsing (#1177) 2021-01-22 08:20:33 -08:00
Thad House ae23d37c0f
Add third party notices license, add that license to distribution (#1162) 2021-01-15 12:53:25 -08:00
Thad House fe99749428
Fix Powershell not installing correctly (#1163)
* Fix Powershell not installing correctly

Azure VM's updated, which broke powershell packages. Make install script take a parameter of which OS to use

* Passed args incorrectly

* Use 18.04 for raspbian build
2021-01-15 11:34:08 -08:00
Thad House f02a622b19
Rename quicperf driver to quicperfdrv, add private instance (#1154)
* Rename quicperf driver to quicperfdrv, add private instance

Changing the name makes symbols not interfere between executable and driver, and we need a version that links into shipping msquic for internel tests

* Fix spacing, move to single argument with different config

* Fix error

* Fix a build break

* Actually properly check kernelpriv
2021-01-12 10:37:17 -08:00
Nick Banks 7606e78519
Rename Datapath Log Prefix (#1155) 2021-01-12 10:33:30 -08:00
Thad House 5abcc3da74
Fail build on CI if prepare-machine fails (#1153) 2021-01-11 14:18:30 -08:00
Thad House 37caa7bae4
Support using SMB to copy performance artifacts (#1152)
* Use SMB copy if possible for perf copy

* Fix how copy works

* Use cmdlet to get smb share path

* Another attempt at not failing

* A bit more debug

* One more error code fix

* 1 more
2021-01-11 13:41:35 -08:00
Thad House 3e982dd22b
Add full RPS matrix, and a pipeline to run it. (#1146)
* Add full RPS matrix, and a pipeline to run it.

Pipeline is manual only currently, and test suite likely needs more, but adding more is easy once this is going

* Fix name to periodic, trigger the blank space group

* fixup comments, add cron trigger

* Fix yaml

* Another yaml fix

* Turn into full run matrix

* Catch on missing old results

* Expand timeout to 5 hours

* Another timeout fix attempt

* 1 more attempt at timeout fixes
2021-01-08 18:02:55 -08:00
Thad House 44aeb9c76e
Add support for running tests as a full matrix rather then a default and changing 1 variable. (#1143)
* Add support for running tests as a full matrix rather then a default and changing 1 variable.

Necessary for long run RPS tests

* Revert fake matrix, it works
2021-01-06 15:01:09 -08:00
Thad House bfa71b1db6
Cleanup perf scripts (#1135)
* Cleanup perf scripts

This removes a lot of what was generic about the remotes, and instead moves remote to a common root context.

This makes new tests much easier to add, especially once we get the full matrix RPS

* Fix progress preference
2021-01-06 09:39:44 -08:00
Thad House c9108938be
Add option to open the debugger from the download logs script (#1132)
* Add forced test failures to check logs, work on making script selectable

* Run way less tests

* disable more tests, fix assert, force assert in spinquic too

* Revert all test changes, finish up script
2021-01-04 11:54:34 -08:00
Thad House 415caaf793
Remove performance database code, and publishing to perf database (#1130)
With using files in repo, this is no longer necessary
2020-12-30 14:00:20 -08:00
Thad House 3ff8f950d5
Add a script to download all failures and related binaries for a specific build (#1129) 2020-12-30 12:23:56 -08:00
Thad House d51f5bc23d
Make OpenSSL on windows only build for current build type (#1118) 2020-12-23 16:08:35 -08:00
Thad House 75ee39cbba
Get performance data from perf repo branch (#1117)
* Get performance data from perf repo branch

This will properly have data for branches

* Fix hps tests, add flag to force a compare branch name

* Fixup date parsing
2020-12-22 18:21:26 -08:00
Thad House b25f13722f
Insert current commit date into performance results. (#1115)
This will be used from the perf scripts to get the date of when the commit happened
2020-12-22 11:28:48 -08:00
Nick Banks 74cb48f685
Some Minor Logging Improvements (#1108) 2020-12-16 12:48:36 -08:00
Nick Banks dcf83eb9a0
NASM Mirror as Fallback (#1107) 2020-12-16 12:47:45 -08:00
Thad House 2732d84ccb
Move perf tracking to branch on repo (#1104)
* Initial New Pipeline Changes for Perf Post Processing

* Put branch name in auth key location

We can't safely add a new variable, but auth key is overwritten by the db publish script, so we can hijack that for now

* Another trial for post processing failures

* Fix path

* Fix how git clones, fix paths

* Force inline script

* Fix up publishing

* Fix up arguments...

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-12-16 11:22:27 -08:00
Thad House ddcd8e3a3b
Update CLOG to clean up sidecar (#1088)
Removes both the macro definition and the user code line for each trace. Makes it so file is half the number of lines, and updates to the caller variables will not require a sidecar update
2020-12-07 15:43:59 -08:00
Nick Banks 3748604c7b
TCP WAN Perf Support via netput (#1087) 2020-12-07 11:29:17 -08:00
Nick Banks b431ed124a
Replace Output Directory with Path (#1084) 2020-12-03 14:43:09 -08:00
Anthony Rossi 7eb14dbfc3
Fix ChaCha20 bug in mitls and update logging. (#1076) 2020-12-03 08:11:03 -08:00
Nick Banks 9bbc2a731b
WanPerf: BDP Ratio (#1060) 2020-11-24 09:48:18 -08:00
Nick Banks df96055076
WanPerf: Logging and Pacing (#1058) 2020-11-23 15:10:14 -08:00
Nick Banks 425ef75cd5
WanPerf Pipeline (#1053) 2020-11-20 12:55:49 -08:00
Thad House 1270e186f3
Increase HPS threshold to 40% (#1051)
OpenSSL has some nasty variations in it
2020-11-20 11:44:19 -08:00
Thad House f9d8c374f6
Use clog 0.1.9 (#1050)
This enables using .NET 5 as well as .NET Core 3.1. Docs have been updated to note this
2020-11-20 10:53:38 -08:00
Nick Banks 49b0c107a1
QuicPerf Throughput Improvements (#1048) 2020-11-19 15:13:32 -08:00
Anthony Rossi 05687ce9ed
Fix outputting SSLKEYLOGFILE in QNS (#1032) 2020-11-13 08:18:14 -08:00
Anthony Rossi 2a680e871d
Fix Datagram Receive setting not working in some instances. (#1027) 2020-11-12 19:13:47 -08:00
Anthony Rossi 077a4e9c14
Add SSLKEYLOGFILE support to quicinterop client (#1020) 2020-11-12 13:28:14 -08:00
Thad House 662e8a6052
Mark perf failures as failing on Azure (#1008) 2020-11-10 15:57:35 -08:00
Thad House 2caea326bb
Fail build if throughput up test has a 5% or more performance drop (#990)
* Fail build if throughput up test has a 5% or more performance drop

* Allow tests to finish, write failures at end

* Move thesholds to json files

* Fail loopback on regressions to, but use larger threshold

* Fix arguments

* Actual print failures at end

* Fix all negative regressions not counting

* Print more

* Slightly different output

* Fix not triggering

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-11-10 11:05:05 -08:00
Thad House 4079b6a30c
Fix StartExecutable returning multiple values under AppVerifier (#1003)
This would cause the wait task to fail when looking for the process
2020-11-09 16:28:54 -08:00
Nick Banks 69a548f767
Finish Porting over WPA Plugin Code (#984) 2020-11-07 11:24:44 -08:00
Thad House 155cae9571
Upload perf dumps and results on failure, and fix stack trace print (#957) 2020-11-02 13:12:12 -08:00
Nick Banks 673fc597b8
Use Separate Thread for RPS Tests (#955) 2020-11-02 13:10:35 -08:00
Thad House bce6dc58e5
Add RPS Latency metrics to performance testing (#931)
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.
2020-10-30 11:46:02 -07:00
Thad House 69dadb833c
Print out clog error messages at end of prepare-machine.ps1 (#953) 2020-10-29 13:14:32 -07:00
Thad House 425d57fd99
Disallow 0 sizes in tput tests, make 0 in all perf tests an error (#944)
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
2020-10-23 14:16:16 -07:00
Thad House a4943e5b0c
Properly set thread affinity for throughput tests (#920)
* Properly set thread affinity for throughput tests
2020-10-16 16:11:48 -07:00
Thad House 3196aeb565
Properly close RPS tests upon failure (#919)
* 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
2020-10-16 13:41:44 -07:00
Nick Banks 92b0703788
Support Random Memory Allocation Failures (For Testing) (#909) 2020-10-14 09:18:35 -07:00
Nick Banks 6ecce3b14f
Cut out the ':' in interop runner 2020-10-14 07:56:05 -07:00
Nick Banks b210964408
Don't Hardcode Interop Server Name (#908) 2020-10-13 12:21:12 -07:00
Nick Banks 1506e3f434
5 Iterations for All Perf Tests (#898) 2020-10-09 12:15:59 -07:00
Nick Banks 1627dcf13f
Download Perf Support (#897) 2020-10-09 11:44:40 -07:00
Nick Banks e577b482b9
Add noexit Option for Interop Server (#891) 2020-10-07 15:37:06 -07:00
Anthony Rossi 0d86ab0df4
Remove resumption and ecn tests from interop until fully supported. (#882) 2020-10-02 07:30:22 -07:00
Thad House 65458cd3c0
Add prints to error states in perf testing to display where initialization is failing (#875)
* 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
2020-09-30 15:47:13 -07:00
Nick Banks 9a651b1b7c
QUIC Configuration Interface (#777) 2020-09-29 12:11:57 -07:00
Anthony Rossi d83d9d5f9d
Improve interop client pass rate (#868) 2020-09-28 15:28:38 -07:00
Thad House 72e121d773
Print how long each test run took (#867) 2020-09-28 14:14:54 -07:00
Thad House 88056bbc54
Revert "IOCTL Interface for MsQuic Performance Counters (#849)" (#859)
* Revert "IOCTL Interface for MsQuic Performance Counters (#849)"

This reverts commit 9364795475.

* Keep necessary changes for new API
2020-09-24 17:24:11 -07:00
Nick Banks 9364795475
IOCTL Interface for MsQuic Performance Counters (#849)
* 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>
2020-09-23 13:53:08 -07:00
Nick Banks 828c230f4f
Binary Version Updates (#850) 2020-09-22 13:49:23 -07:00
Lars Eggert ea04c8cee2
Use certs provided by interop framework (#853) 2020-09-22 07:22:03 -07:00
Nick Banks ef6f3b62bf
Draft 30 Support (#848) 2020-09-18 08:14:05 -07:00
Anthony Rossi ffc1e35ee2
Add diagnostic prints to quicinterop (#847) 2020-09-17 17:25:53 -07:00
Thad House 27e6789f63
Always use self signed certificates for remote performance tests. (#846) 2020-09-17 14:21:54 -07:00
Thad House e133a7a0be
Configure Performance Tests to run OpenSSL Remote Performance (#831)
* Configure Performance to run OpenSSL Remote Performance

* Try remote openssl perf

* Update so skipping properly works

* Fix RPS and HPS

* Add Mitls remote

* Mitls remote
2020-09-17 11:58:44 -07:00
Anthony Rossi da2c232fc1
Add multifile support to quicinterop (#842)
Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-09-16 20:17:08 -07:00
Nick Banks 584cf2cd2c
Handshakes Per Second Perf Test (#830) 2020-09-14 10:51:49 -07:00
Anthony Rossi c9e7b6acac
Add msquic client support to QNS (#802)
Starts the client portion of #462
Some interop tests still fail, and further investigation is needed.

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-09-04 18:01:14 -07:00
Thad House 00503513ab
Support OpenSSL on Windows (#778) 2020-09-01 16:37:11 -07:00
Thad House 15c09ba087
Update to CLOG 0.1.8 (#797)
Fixes output of characters, and also properly updates sidecar
2020-09-01 09:45:16 -07:00
Nick Banks db3fe4ed8e
Default CLOG Off in CMake (#796) 2020-09-01 08:31:44 -07:00
Nick Banks b7894676ba
Fixed Nonbuffered IO (#795) 2020-09-01 08:30:55 -07:00
Thad House 97336e4b24
Add vpid and vtid to lttng logs (#793)
They need to be explicitly enabled with a context, so this enables them in the 2 places we grab logs from
2020-08-31 11:33:13 -07:00
Thad House ce3bc8da6b
Fix issues with perf test matrix (#787)
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
2020-08-28 20:26:34 -07:00
Nick Banks 1f4bfd765b
Perf Protocol Refactor (#785) 2020-08-28 12:43:34 -07:00
Thad House fbe48b14b9
Fix unaligned read and write ASAN error in stub TLS (#764)
* Fix unaligned read and write ASAN error in stub TLS

The pointer punning was unaligned, and ASAN warns about this

* Use memcmp and ZeroMemory
2020-08-26 09:32:13 -07:00
Thad House 0985f496a7
Combine loopback and remote performance runs into a single script. (#767)
* 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
2020-08-25 16:04:57 -07:00
Nick Banks 1ab02a8ed6
Clean up Logs on Failure (#766) 2020-08-25 16:01:48 -07:00
Nick Banks a2747c31c0
Add RPS Helper Script (#765) 2020-08-25 10:14:55 -07:00
Nick Banks b62956ff01
Clean up after Master to Main Rename (#757) 2020-08-22 11:32:02 -07:00
Thad House c62d90db53
Implement Kernel Mode Performance Testing (#722)
Changed required include using a private kernel library for CI testing, as msquic.sys can't be properly unloaded.
2020-08-21 13:46:39 -07:00
Anthony Rossi c05262bf5c
Create initial performance counters. (#723)
Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-08-20 15:18:45 -07:00
Thad House 2263745042
Upload separate PGO for localhost vs remote (#731)
Closes #727
2020-08-17 13:42:08 -07:00
Thad House b0e9c5f7b5
Fix missed clog version replacement in docker install script (#730) 2020-08-17 12:15:54 -07:00
Thad House 6e099b4ecb
Update to clog 0.1.7 (#729)
Fixes decoder build
2020-08-17 12:06:22 -07:00
Nick Banks ab78b59436
Interop Client Siduck Support (#717) 2020-08-13 07:25:14 -07:00
Thad House 638d821dc3
Onboard clang into build scripts and CI (#714) 2020-08-13 07:20:18 -07:00
chgray 21247b9dc7
Integrate clog 0.1.6 (#710) 2020-08-13 07:19:09 -07:00
Lars Eggert 681712b39d
Some improvements to docker interop logging. (#707)
* 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.
2020-08-11 06:07:34 -07:00
Thad House 51b96dcbfd
Add RPS into perf test suite (#703)
With the sidechannel exit, remote tests should work again
2020-08-10 15:34:47 -07:00
Thad House b3c057cd7d
Add sidechannel to perf runner to enable stopping the tests safely internally (#702)
* 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
2020-08-10 14:34:01 -07:00
Nick Banks a35529c2c7
Cleanup Logging Script Args (#699) 2020-08-10 12:37:19 -07:00
Nick Banks bdbabadbbe
QUIC Network Simulation Logging Support (#675) 2020-08-10 12:07:43 -07:00
Nick Banks 7dd33418cf
Initial RPS Perf Code (#694) 2020-08-10 09:22:15 -07:00
Thad House eb158467c5
Fix some minor perf script bugs (#697)
Units were forced to kbps, default arguments were incorrect
2020-08-07 15:27:20 -07:00
Anthony Rossi c7794ffd2b
Fix Schannel TLS alerts not being read correctly. (#695)
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
2020-08-07 14:04:07 -07:00
Thad House eaf58f0832
Recreate perf database to allow running perf tests with changing arguments (#692)
Each test now has its own database group.

Also runs a matrix of arguments.
2020-08-07 13:18:58 -07:00
Nick Banks 937e84cd61
Refactored Perf Code (#691) 2020-08-06 13:20:13 -07:00
Thad House 5896832bdc
Finish switching clog to a dynamic tracepoint provider (#671) 2020-08-04 13:09:55 -07:00
Nick Banks ca85764ce4
Exercise Settings Code Paths (#670) 2020-08-03 12:03:12 -07:00
chgray 4088c46563
Fully Enable CLOG (LTTng) for Linux (#590) 2020-08-03 11:45:48 -07:00
Nick Banks 6798a1c95e
Connection Initialization Cleanup (#666) 2020-08-03 09:33:03 -07:00
Thad House 5bf71fb42d
Fix cmake installs since we added clog. (#636) 2020-07-30 07:33:11 -07:00
Thad House 091633d726
Create new Performance Execution Driver (#626)
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.
2020-07-29 16:31:27 -07:00
Thad House ba4b76ab98
Fix distribution builds (#653)
Name of clog library was incorrect.
2020-07-28 16:25:11 -07:00
Thad House d985d44364
Increase Receive Buffer Drain Ratio (#651)
* Add Multi-Machine Tests to Perf Pipeline

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-07-28 14:05:50 -07:00
Nick Banks ea4e033357
Support Disable 1-RTT Encryption Extension (#560) 2020-07-24 20:24:13 -07:00