diff --git a/internal/cli/run/run.go b/internal/cli/run/run.go index 77252bd..cafaf7b 100644 --- a/internal/cli/run/run.go +++ b/internal/cli/run/run.go @@ -36,6 +36,7 @@ func init() { } for _, nt := range group.Nettests { + log.Debugf("Running test %T", nt) ctl := nettests.NewController(ctx, result) if err := nt.Run(ctl); err != nil { log.WithError(err).Errorf("Failed to run %s", group.Label) diff --git a/nettests/groups/groups.go b/nettests/groups/groups.go index 033bd62..a76f867 100644 --- a/nettests/groups/groups.go +++ b/nettests/groups/groups.go @@ -17,6 +17,7 @@ var NettestGroups = map[string]nettests.NettestGroup{ "performance": nettests.NettestGroup{ Label: "Performance", Nettests: []nettests.Nettest{ + performance.Dash{}, performance.NDT{}, }, }, diff --git a/nettests/nettests.go b/nettests/nettests.go index 3e97249..6d8c083 100644 --- a/nettests/nettests.go +++ b/nettests/nettests.go @@ -32,7 +32,7 @@ func NewController(ctx *ooni.Context, res *database.Result) *Controller { // Controller is passed to the run method of every Nettest type Controller struct { - ctx *ooni.Context + Ctx *ooni.Context res *database.Result } @@ -40,9 +40,9 @@ type Controller struct { func (c *Controller) Init(nt *mk.Nettest) { log.Debugf("Init: %v", nt) nt.Options = mk.NettestOptions{ - IncludeIP: c.ctx.Config.Sharing.IncludeIP, - IncludeASN: c.ctx.Config.Sharing.IncludeASN, - IncludeCountry: c.ctx.Config.Advanced.IncludeCountry, + IncludeIP: c.Ctx.Config.Sharing.IncludeIP, + IncludeASN: c.Ctx.Config.Sharing.IncludeASN, + IncludeCountry: c.Ctx.Config.Advanced.IncludeCountry, DisableCollector: false, SoftwareName: "ooniprobe", SoftwareVersion: version.Version, diff --git a/nettests/performance/dash.go b/nettests/performance/dash.go new file mode 100644 index 0000000..538028d --- /dev/null +++ b/nettests/performance/dash.go @@ -0,0 +1,41 @@ +package performance + +import ( + "github.com/measurement-kit/go-measurement-kit" + "github.com/openobservatory/gooni/nettests" +) + +// Dash test implementation +type Dash struct { +} + +// Run starts the test +func (d Dash) Run(ctl *nettests.Controller) error { + dash := mk.Nettest{Name: "Dash"} + ctl.Init(&dash) + return dash.Run() +} + +// DashSummary for the test +// TODO: process 'receiver_data' to provide an array of performance for a chart. +type DashSummary struct { + Latency float32 + Bitrate int64 + Delay float32 +} + +// Summary generates a summary for a test run +func (d Dash) Summary(tk map[string]interface{}) interface{} { + simple := tk["simple"].(map[string]interface{}) + + return DashSummary{ + Latency: simple["connect_latency"].(float32), + Bitrate: simple["median_bitrate"].(int64), + Delay: simple["min_playout_delay"].(float32), + } +} + +// LogSummary writes the summary to the standard output +func (d Dash) LogSummary(s string) error { + return nil +}