summaryrefslogtreecommitdiff
path: root/rpm
AgeCommit message (Collapse)Author
2024-01-26[Bugfix] Only probes collected during stable MAD countWill Hawkins
For calculating the final RPM, only those probes that are sent/received during the stable MAD should count. Signed-off-by: Will Hawkins <[email protected]>
2024-01-19[Bugfix] Continue Adding LGCs During Responsiveness StabilizationWill Hawkins
The client was not continuing to add load-generating connections at each stability-check interval (as called for by the spec). Also, the client now properly obeys the `--rpm.id` option given on the command line. Signed-off-by: Will Hawkins <[email protected]>
2024-01-04[Feature] Support for testing upload/download in parallelWill Hawkins
Use the `--rpm.parallel` to test in parallel mode. The default testing mode is serial. Signed-off-by: Will Hawkins <[email protected]>
2023-07-25[Feature] Add support for L4SWill Hawkins
Signed-off-by: Will Hawkins <[email protected]>
2023-07-14[Feature] Relative RPMWill Hawkins
With this feature, the user can use `--relative-rpm` to gather additional data: a relative RPM. The relative RPM score 1. Calculates an RPM before working conditions are achieved. 2. Achieves working conditions (upload and download) 3. Calculates an RPM under working conditions (upload and download) 4. Calculates the percent difference between the RPM calculated in (1) and the RPMs calculated in (3). Signed-off-by: Will Hawkins <[email protected]>
2023-07-14[Bugfix] Accessing channel without protectionWill Hawkins
I was accessing a lock-protected channel without holding the lock. That definitely seems to defeat the purpose of having the lock in the first place. Signed-off-by: Will Hawkins <[email protected]>
2023-07-14Probe direction is unnused in probe.Probe -- remove itWill Hawkins
Signed-off-by: Will Hawkins <[email protected]>
2023-07-14Use defer to unlock probe data point channel lockWill Hawkins
This approach *seems* like a good idea. Signed-off-by: Will Hawkins <[email protected]>
2023-07-14Suppress non-error of cancelled context causing probe send to failWill Hawkins
It is not an error (per se) for a probe not to be able to be sent when the context of its execution is cancelled. Log the error when debugging only. Signed-off-by: Will Hawkins <[email protected]>
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-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-05-23Additional debugging around non-reused connectionsWill Hawkins
When a probe does not properly reuse an existing connection, do some additional logging to help the debugging process.
2023-05-19Trim some long lines in `rpm/rpm.go`Will Hawkins
Thanks to integration of `gofumpt` it is easier to catch places where the lines are *way* too long.
2023-05-19[Bugfix] Handle a not-yet-started connectionWill Hawkins
When it is time to calculate the instantaneous throughput, it may be the case that some newly established connection has not yet started. When that is the case, it is not necessarily an error. Fixes #48
2023-04-25[Bugfix] Tighten up check for probe connection reuseWill Hawkins
Even with previous fixes it was *still* possible for a self-down probe to have started before the underlying load-generating connection came online (or so it seems!). This patch will move changing the status of an underlying lgc from not-running state to running state even later to eliminate even the smallest possible gap. Re: #47
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] 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-20lint/deprecation cleanupRandall Meyer
2023-02-10[Cleanup] Long-lines cleanupWill 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-11-20[Feature] Use LoadGeneratingConnectionCollectionWill Hawkins
Use the new structure to manage the collection of open load-generating connections.
2022-11-20[Feature] Collect the number of open connections in throughput data pointWill Hawkins
Include the number of open connections in a throughput data point.
2022-11-07[Feature] Allow caller to define rampup interval for load generators.Will Hawkins
2022-11-07[Refactor] Make RPM functions dumberWill Hawkins
Make the functions in the rpm package dumber. These functions are now mostly controlled from main in networkQuality.go. That means that they are more RISC-y and can be used in different ways. This flexibility makes them especially useful for crafting the implementation of Rev 3 of the spec.
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-09-07[Bugfix] Broken extended-stats compilation for macOSWill Hawkins
Sorry everyone!
2022-08-18Force No CompressionJeroen Schickendantz
Force http-compression off by: Sending header "Accept-Encoding: identity" in request. Checking header "Content-Encoding" in response.
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-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 v2 2/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-05-17[Comments] Fix a few commentsWill Hawkins
1. A misleading comment was corrected. 2. A typo was fixed.
2022-05-13[Improvement] Increase granularity of transfer rate calculationWill Hawkins
Previously the code relied on the fact that the go runtime would wake up the saturation go function at exactly 1 second intervals, as we asked. With this change, the code takes into account any minor fluctuations in that time when calculating the throughput in an interval. I hope that this change is an improvement.
2022-05-13[Refactor] Additional (general) refactoring.Will Hawkins
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-12[Functionality] Match Apple's Client RPM Calcuation -- Remove DNSWill Hawkins
Per a (to-be-released) update from the spec, the time for a DNS lookup is no longer considered to make up a portion of the RPM.
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-11[Bugfix] Support reused connections in calculating RPMWill Hawkins
There was an error in prior versions when calculating the RPM in the presence of reused connections because invalid time values were being compared. This patch fixes that error.