| Age | Commit message (Collapse) | Author |
|
Make the percentile used by RPM calculations user-controlled. Note: A
percentile-based calculation is not part of the spec. This is an
optional feature.
Signed-off-by: Will Hawkins <[email protected]>
|
|
The upload direction reused bucket IDs used during the test in the
download direction which caused an incorrect grand-total RPM
calculation. To solve the problem, this patch adds a global bucket
ID generator and passes that to everyone that needs it.
TODO: Make the bucket generator type more generic.
Signed-off-by: Will Hawkins <[email protected]>
|
|
* Added units to printout
* Made QualityRequirement and PercentileLatencyPair private
*Removed the hist struct from the SimpleQualityAttenuation struct
(it was only used for testing)
|
|
|
|
Among other major feature additions, this version of the client tracks
any measurements that may be long delayed and considers their presence
or absence as part of a stability measurement.
This version of the client also more closely tracks the spec. In
particular, it performs a sinle-sided trimmed mean rather than a
double-sided trimmed mean.
Signed-off-by: Will Hawkins <[email protected]>
|
|
Beginning of a release candidate for support for IETF 02 tag of the
responsiveness spec.
|
|
Thank you to @gregbo.
Fixes #54.
|
|
Fixed silly error in calculating sample variance
|
|
|
|
A long-overdue change to split certain packages once smashed into the
RPM package into their own package. The resulting code should make it
easier for people to navigate the source code.
In the process, fixed a bug where a self probe being started on a
load-generating connection races with the establishment of the
load-generating connection and causes a panic because the self probe is
not establishing a connection on an already established connection.
|
|
Well, that's embarrassing.
|
|
In the case where the scheduler allowed a delay between go threads in a
particular order, it was possible that a self prober would attempt to use a
connection before an HTTP connection was established.
Fixes #45. (at least I hope!)
|
|
Allows user to override DNS for the initial config request. This is
accomplished using a custom DialContext overring the hostname used to
Dial to. This allows for TLS certificate validation to still
happen(optionally) while connecting to TLS secured resources.
Also,
- allows for optional enforcement of certificate verification
- stamp built git version into binary and adds a --version option
- adds a user-agent to all outgoing request
- exit(1) on failures for easier shell error detection
|
|
|
|
This enables passing in a single URL for easier running
eg networkQuality --url https://networkquality.example.com/path/to/config
|
|
|
|
|
|
When a test_endpoint is returned in the config for a test, all
requests will be sent to that host but the :authority pseudo header
(nee: Host: message header) will contain the host specified in
the various `_url` fields of the config data.
|
|
Granular throughput logging
Measures on both Up/Down connections
Adds "[OMIT]" tag to csvlogger
|
|
|
|
With this commit the project is being relicensed under GPLv2. All
contributors to the code prior to this commit have given their explicit
approval for the project to be relicensed (see
https://github.com/network-quality/goresponsiveness/issues/41).
|
|
Extends throughput logging to continue even after saturation has been reached by the algorithm.
|
|
|
|
This patch adds support for logging the underlying RTT and Cwnd of the
TCP connection used when doing probes. More work to follow in order to
add support for this information on Windows and Darwin.
|
|
We never really implemented it any way!
|
|
With this patch, data logging now supports reporting the moving
average of upload/download throughput as saturation is pursued.
|
|
|
|
Besides work to complete the support for v2 of the RFC, this patch adds
support for logging each of the probe results to a CSV file
(--logger-filename).
|
|
|
|
This is a WIP for supporting v2 of the RPM spec.
|
|
Besides running golines (for the first time in a while now that
the tool supports generics), this commit removes punctuation and
newlines from Errorf parameters -- something that gofmt does not
like (I never knew!).
|
|
Now that there is support for GetTCPConnectionInfo on macOS, we can
re-enable extended stats on the macOS platform!
|
|
|
|
|
|
IncorporateConnectionStats
Errors as a result of failed type assertions in
IncorporateConnectionStats were caught/logged but there was no
function-termination control flow associated with these error
conditions. As a result, control would continue and cause problems. This
patch fixes that.
|
|
Now that we are conditionally building parts of the source code so that
we can use *nix's platform support for TCPInfo, it is hard to make sure
that I have all platforms working right at the same time.
@Schickendantzj helped debug this error this morning.
|
|
On *nix platforms, there is now a `-extended-stats` option that will
print out some extended statistics for the test. The statistics are
based on information gleaned from the `TCP_INFO` of the underlying TCP
connections. What is implemented so far is just a proof of concept of
the extended stats that could be calculated. Depending on what users
want, we can add additional extended statistics.
|
|
Now there is functionality for conditionally supporting GetTCPInfo
depending on the platform. If the platform supports it, then the client
can call utilities.GetTCPInfo. In the case that the platform does not
support the GetTCPInfo function call, the result is an error of the type
`NotImplemented`.
|
|
This will only work on *nix systems. Code that displays information
in this PR is only exemplary -- I am sure that there are better
places in the code to display it!
|
|
1. Create a separate package to handle the config information.
2. Move the saturate functionality into the rpm package.
3. Do general renaming/refactoring so that we are consistently
saying measurement and not RTT (this nomenclature is more consistent
with the standard).
|
|
As it turns out, I was misreading the algorithm for calculating the RPM
based upon the measurements taken during execution. This patch fixes
that mistake and also (starts) renames "RTT" as "measurement" (those are
technically a better nomenclature according to the spec.)
|
|
When there is no debugging enabled, there was a null pointer dereference
as a result of invoking `saturate` with a null pointer to a `debug.Debugging`
structure.
|
|
This patch begins the work on updated RPM calculations using
the httptrace infrastructure. Because we are still not able
to break out the TLS handshake time due to upstream bugs, there
are some workarounds in place. However, the numbers appear much
more sane.
|
|
1. Make a traceable interface for all things that can be wrapped
in an httptrace.ClientTrace.
2. Refactor debugging system into debug package.
|
|
Two unrelated changes:
1. Add full support for self-signed HTTPS certificates on the server
2. Add support for multiple log levels: So far we only use one, but
adding support for additional levels will help us tier the levels to
filter out excessive messages.
|
|
|
|
See Issue #10.
Begin implementing the plumbing required to perform more precise RTT/RPM
measurements.
|
|
The newest version of the specification replaces the term
bearing with the term generating. This patch brings the updated
language to the code to make it easier to track the implementation's
conformance to the spec.
|
|
When running without SSL key logging enabled, the client
will segfault. This patch corrects that (obvious) error.
|
|
|