summaryrefslogtreecommitdiff
path: root/networkQuality.go
AgeCommit message (Collapse)Author
2023-07-14Parameterize Percentile in RPM CalculationsWill Hawkins
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]>
2023-07-12[Bugfix] Duplicate bucket IDs caused incorrect resultsWill Hawkins
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]>
2023-07-12Addressed pull request commentsBjørn Ivar Teigen
* Added units to printout * Made QualityRequirement and PercentileLatencyPair private *Removed the hist struct from the SimpleQualityAttenuation struct (it was only used for testing)
2023-07-10Added QoO and Cablelabs latency histogramBjørn Ivar Teigen
2023-07-10[Feature] Major update: Track measurements that may be delayedWill Hawkins
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]>
2023-06-21Major Update/Refactor to Support IETF 02Will Hawkins
Beginning of a release candidate for support for IETF 02 tag of the responsiveness spec.
2023-06-06[Bugfix] Fix comment typoWill Hawkins
Thank you to @gregbo. Fixes #54.
2023-05-23Adressed pull request comments.Bjørn Ivar Teigen
Fixed silly error in calculating sample variance
2023-05-19Implemented basic Quality AttenuationBjørn Ivar Teigen
2023-04-22[Refactor] Move components into separate packagesWill Hawkins
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.
2023-04-19[Bugfix] Wrong URL for upload load-generating connectionWill Hawkins
Well, that's embarrassing.
2023-04-19[Bugfix] Probers starting too soon caused panicWill Hawkins
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!)
2023-02-22new flag: --connect-toRandall Meyer
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
2023-02-20Emit Prometheus stats if requestedRandall Meyer
2023-02-20new flag: --urlRandall Meyer
This enables passing in a single URL for easier running eg networkQuality --url https://networkquality.example.com/path/to/config
2023-02-10[Cleanup] Output and commentsWill Hawkins
2023-01-27[FEATURE] Finalize implementation of rev3 of the draftWill Hawkins
2022-12-12[Feature] Add support for test_endpointWill Hawkins
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.
2022-12-11[Feature] Granular ThroughputJeroen Schickendantz
Granular throughput logging Measures on both Up/Down connections Adds "[OMIT]" tag to csvlogger
2022-12-11[Feature] Rev 3 of Stability (Basic implementation)Will Hawkins
2022-10-14Relicense with GPLv2Will Hawkins
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).
2022-09-30[Feature] Extend Throughput LoggingJeroen Schickendantz
Extends throughput logging to continue even after saturation has been reached by the algorithm.
2022-08-17Update code format to meet 80-column requirement.Will Hawkins
2022-08-17[Feature] Add TCP information (RTT and Cwnd) to LoggingWill Hawkins
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.
2022-08-17Remove the -strict optionWill Hawkins
We never really implemented it any way!
2022-07-29[Feature] Add support for logging throughput measurementsWill Hawkins
With this patch, data logging now supports reporting the moving average of upload/download throughput as saturation is pursued.
2022-07-16[Formatting] Cleanup long lines.Will Hawkins
2022-07-16[Feature] Support spec v2 (4/4); Add data loggingWill Hawkins
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).
2022-07-02[Feature] Support spec v2 3/nWill Hawkins
2022-07-01[Feature] Support spec v2Will Hawkins
This is a WIP for supporting v2 of the RPM spec.
2022-06-22[Cleanup] Make long lines shorter and fix static fmt warningsWill Hawkins
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!).
2022-06-17[Feature] Use the new GetTCPConnectionInfo API for extended stats on macOSWill Hawkins
Now that there is support for GetTCPConnectionInfo on macOS, we can re-enable extended stats on the macOS platform!
2022-06-13Merge branch 'main' into timeout-patchJJ
2022-06-13Add optional timeoutsJJ
2022-06-12[Bugfix] Dereference nil when type assertions failed in ↵Will Hawkins
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.
2022-06-07[Bugfix] Conditional build support broken for WindowsWill Hawkins
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.
2022-06-05[Feature] Add -extended-stats for *nix platformsWill Hawkins
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.
2022-06-04[Feature] Add conditional compilation support for GetTCPInfoWill Hawkins
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`.
2022-06-04[Feature] Access TCP_INFO about underlying TCP connectionsWill Hawkins
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!
2022-05-13[Refactor] Create config package and package-ify saturate()Will Hawkins
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).
2022-05-11[Refactor/Bugfix] Refactor RPM calculation and fix calculation algorithmWill Hawkins
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.)
2022-05-05[Bugfix] Null pointer dereference when debugging disabledWill Hawkins
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.
2022-05-05Upgraded RPM Calculation Support (Take 1)Will Hawkins
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.
2022-05-04Make Traceable Interface and Refactor DebuggingWill Hawkins
1. Make a traceable interface for all things that can be wrapped in an httptrace.ClientTrace. 2. Refactor debugging system into debug package.
2022-05-04Fully support self-signed certificates (and add debug levels)Will Hawkins
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.
2022-04-01Feature: Add support for self-signed certs from the test configuration server.Will Hawkins
2022-03-26Feature: More Precise RTT/RPM calculationWill Hawkins
See Issue #10. Begin implementing the plumbing required to perform more precise RTT/RPM measurements.
2022-03-19Rename: Change bearing to generatingWill Hawkins
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.
2022-03-19Bugfix: (#8) Segfault when running w/o SSL debuggingWill Hawkins
When running without SSL key logging enabled, the client will segfault. This patch corrects that (obvious) error.
2022-03-18Make sure that we format with short lines.Will Hawkins