These tests (especially unconstrained versions) can get very
backlogged and may take a while to finish. We sometimes flake waiting
for that. This is not hazardous (IMO), as the scripts that run these
tests already have timeouts to make sure that these don't truly go on
forever.
2. Make the time spent in the benchmark phase actually be
benchmark_seconds rather than benchmark_seconds-warmup_seconds
as it is currently.
It now allows pluggging in "reporter" instances to process the benchmark results arbitrarily.
This would allow, for example, to send results to a leaderboard and/or other systems for tracking performance metrics.
This allows us to get back to single binary tests where appropriate, which will help in-depth profiling efforts.
I've built this atop my smoke_test changes as they inspired me to get this done.
-) using dupenv_s instead of getenv_s and calling strdup ourselves.
-) few impossible-to-obtain if checks.
-) various signed/unsigned casting.
-) using time_t instead of time32_t
-) checking output of FormatMessage for failures.
-) don't redefine _WIN32_WINNT without undefining it first.
-) fixed msvc's interlocked casting.
-) renamed AddPort to AddListeningPort.
-) added protobuf's third_party includes to search path.
-) added a missing definition for inet_ntop in mingw32.
-) removed useless declarations.