speedtest

package
v0.0.0-...-ded95ce Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2022 License: BSD-3-Clause Imports: 7 Imported by: 0

Documentation

Overview

Package speedtest contains both server and client code for running speedtests between tailscale nodes.

Index

Constants

View Source
const (
	MinDuration     = 5 * time.Second  // minimum duration for a test
	DefaultDuration = MinDuration      // default duration for a test
	MaxDuration     = 30 * time.Second // maximum duration for a test

	DefaultPort = 20333
)

Variables

This section is empty.

Functions

func Serve

func Serve(l net.Listener) error

Serve starts up the server on a given host and port pair. It starts to listen for connections and handles each one in a goroutine. Because it runs in an infinite loop, this function only returns if any of the speedtests return with errors, or if the listener is closed.

func ServeConn

func ServeConn(conn net.Conn) error

ServeConn handles the initial exchange between the server and the client. It reads the testconfig message into a config struct. If any errors occur with the testconfig (specifically, if there is a version mismatch), it will return those errors to the client with a configResponse. After the exchange, it will start the speed test.

Types

type Direction

type Direction int
const (
	Download Direction = iota
	Upload
)

func (*Direction) Reverse

func (d *Direction) Reverse()

func (Direction) String

func (d Direction) String() string

type Result

type Result struct {
	Bytes         int       // number of bytes sent/received during the interval
	IntervalStart time.Time // start of the interval
	IntervalEnd   time.Time // end of the interval
	Total         bool      // if true, this result struct represents the entire test, rather than a segment of the test
}

This represents the Result of a speedtest within a specific interval

func RunClient

func RunClient(direction Direction, duration time.Duration, host string) ([]Result, error)

RunClient dials the given address and starts a speedtest. It returns any errors that come up in the tests. If there are no errors in the test, it returns a slice of results.

func RunClientWithConn

func RunClientWithConn(direction Direction, duration time.Duration, conn net.Conn) ([]Result, error)

func (Result) Interval

func (r Result) Interval() time.Duration

func (Result) MBitsPerSecond

func (r Result) MBitsPerSecond() float64

func (Result) MegaBits

func (r Result) MegaBits() float64

func (Result) MegaBytes

func (r Result) MegaBytes() float64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL