summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-06-04[Bugfix #21] Bad alignment of elements in structs accessed atomicallyWill Hawkins
Fixes #21
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-12[Functionality] Change definition of percent changeWill Hawkins
Switch from calculating "difference" as percent difference to calculating the difference as percent change.
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.
2022-05-11Refactor RPM calculationsWill Hawkins
Refactor RPM calculations to make them more reusble. Enable (perhaps temporarily) probe calculations on the saturated connections. This change is to check whether this makes our RPM calculations match the ones generated by Apple's native client.
2022-05-09[Data analysis] Script that generated those dataWill Hawkins
2022-05-09[Data Analysis] First data analysis resultsWill Hawkins
The first set of raw data and a tool for munging it into csv files. The data look promising but there are a few things that we need to address.
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-18Document why `http2.Transport{}` is required.Will Hawkins
2022-03-18Make sure that we format with short lines.Will Hawkins
2022-03-18Rework RPM calculation to (hopefully) better match section 4.2.1.Will Hawkins
2022-03-18Forgot to change module location upon changing between repository owners.Will Hawkins
2022-03-18Format long times.Will Hawkins
2022-03-18Move from hawkinsw repository ownership to Apple repository ownership.Will Hawkins
2022-03-17Merge pull request #7 from richb-hanover/mainWill Hawkins
Add Dockerfile, minor tweaks to format of displayed stats
2022-03-17Add Dockerfile;Rich Brown
Pretty-print output (add banner, only display three sig-figs, etc)
2022-03-16Format: Add a line-length formatting.Will Hawkins
2022-03-16Refactor: Move magic numbers in to a constants module.Will Hawkins
2022-03-16Bugfix: Update README.md to include instructions for modules.Will Hawkins
2022-03-16Bugfix: Commit go.sum for easier buildingWill Hawkins
Resolves Issue #6.
2022-03-16Bugfix: Stop doing load-inducing downloads before RPM calculationWill Hawkins
This fix might be controversial and we will have to confirm it with the protocol designers: We will stop the actual download of the "large" file when we are about to start doing the RPM calculation.
2022-03-16Refactor: Cleanup the RTT calculation functionality.Will Hawkins
2022-03-15Update README.mdWill Hawkins
1. Add information about how to test against the Apple infrastructure 2. Add updated `-help` output (after -ssl-key-file support was added)
2022-03-15Major update: SSL Key Logging, HTTP2 supportWill Hawkins
This is a "How was this ever working?" update. 1. As it turns out, when you customize a Transport for an http.Client, the transport is 'naturally' an HTTP1 transport. To make it connect via HTTP2, you must use an http2.Transport from the golang.org/x/net/http2 package. 2. Add support for logging TLS per-session keys in order to aid debugging.
2022-03-15Add utility function for seeking to the end of a file.Will Hawkins
2022-03-15Add a helper for doing concurrent writes to files.Will Hawkins
2022-03-14Fix typos reported by @richb-hanoverWill Hawkins
2022-03-14Add a license.Will Hawkins
2022-03-14Add README.md and Update go.mod.Will Hawkins
2021-12-28Bugfix: Create new transports for each HTTP connectionWill Hawkins
By default go's network stack "helpfully" reuses the Transports among http.Clients. This will artifically inhibit the full use of the network. Creating new Transports for every http.Client will keep this from happening.
2021-12-18Performance (Try 3): Experiment with preallocating buffers.Will Hawkins
2021-12-18Performance (Take 2): A different attempt at improving perfWill Hawkins
Try intercepting a reader.
2021-12-17Bugfix: Old way of reading downloaded data was slowWill Hawkins
The previous method for reading the download was slow -- it involved too many "context switches" out of library code where the reading was actually happening. This method appears to be better. We'll see.
2021-12-17Feature: Add support for profiling the client.Will Hawkins
2021-12-16Bugfix: Calculation of RPM was off by a factor of 5Will Hawkins
The factor of five being included to account for the fact that a single test accumulated five RTTs was being applied twice. This patch fixes that.
2021-12-16Bugfix: Make sure that debugging output is properly omittedWill Hawkins
In the case where the user omitted the -debug flag the client would still output debugging information regardless. This commit fixes that.