Once a tag is created on the repository, a new build would be produced
and automatically released on github. The version of the build is also
set automatically in the binary using -ldflags option.
Initial version of -r for TCP bandwidth tests + few other enhancements:
- Add timestamp in log messages.
- Handle the case where timer tick is delayed on client side. Server side still
needs work.
- Use high value of GOMAXPROCS to fix starvation of some goroutines.
- Support option to disable per connection statistics. If large number
of sessions are used, then per connection stats were making it hard
to read the results on console.
- Synchronize stats timer between client/server. This makes server and
client print similar test results. Earlier, under varying TCP throuhgput,
results in server and client side were different due to different time
periods for calculating throughput.
* Fix command line arguments to enable supporting external server mode.
* Initial version of external mode server. This can work behind a load
balancer.
* Intermediate changes for xserver/xclient.
* Few fixes for external mode. Add support for 'g' for gap in connection
latency test.
Initial version of HTTPS support. This uses a dynamically generated self-signed certificate. The main use case is to measure performance of middle boxes like firewalls and proxies.
WSL does not seem to have /proc/net/snmp. Convering this error to debug
message since there is nothing actionable on this. This only impacts UI
functionality cosmetically as UI won't be able to display TCP retransmit
count.
Initial version of TCP ping.
This needs enhancements listed below, but is a workable solution (for now):
- Better goroutine synchronization for exit tracking
- Code cleanup for handling of warmup run
- Support for custom number of warmup connections
- Support for custom sleep between successive connections
- Option to select -4 or -6 to force IP version
- Logging the results in json format
* Add support for custom ports for server. This allows listening on ports other than default ports.
Also add support for OS in travis CI. Ignore failures on go version master and windows since it results in go command not found error on Travis windows builds.
This way CGO isn't required. The struct was generated using the same
script that the Go teams uses in golang.org/x/sys/unix, which uses `cgo
-godefs` (see https://golang.org/cmd/cgo/#hdr-Go_references_to_C).
Since we're not calling any C functions but rather using a struct, the
struct can be defined in Go and the bytes can be read into the Go
struct, `cgo -godefs` handles the difference in alignment between Go and
C.
Use low level syscall to fetch the tcpstats
Use cgo to get the systems definition for struct tcpstats.
This makes the solution portable across different versions of the OS.