Documentation ¶
Index ¶
- func AddTestKeys(sess db.Session, msmt *Measurement, tk interface{}) error
- func Connect(path string) (sess db.Session, err error)
- func CreateOrUpdateURL(sess db.Session, urlStr string, categoryCode string, countryCode string) (int64, error)
- func DeleteResult(sess db.Session, resultID int64) error
- func GetMeasurementJSON(sess db.Session, measurementID int64) (map[string]interface{}, error)
- func ListResults(sess db.Session) ([]ResultNetwork, []ResultNetwork, error)
- func RunMigrations(sess *sql.DB) error
- func UpdateUploadedStatus(sess db.Session, result *Result) error
- type Measurement
- type MeasurementURLNetwork
- type Network
- type PerformanceTestKeys
- type Result
- type ResultNetwork
- type URL
- type UploadedTotalCount
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddTestKeys ¶
func AddTestKeys(sess db.Session, msmt *Measurement, tk interface{}) error
AddTestKeys writes the summary to the measurement
func CreateOrUpdateURL ¶
func CreateOrUpdateURL(sess db.Session, urlStr string, categoryCode string, countryCode string) (int64, error)
CreateOrUpdateURL will create a new URL entry to the urls table if it doesn't exists, otherwise it will update the category code of the one already in there.
func DeleteResult ¶
DeleteResult will delete a particular result and the relative measurement on disk.
func GetMeasurementJSON ¶
GetMeasurementJSON returns a map[string]interface{} given a database and a measurementID
func ListResults ¶
func ListResults(sess db.Session) ([]ResultNetwork, []ResultNetwork, error)
ListResults return the list of results
func RunMigrations ¶
RunMigrations runs the database migrations
func UpdateUploadedStatus ¶ added in v3.10.0
UpdateUploadedStatus will check if all the measurements inside of a given result set have been uploaded and if so will set the is_uploaded flag to true
Types ¶
type Measurement ¶
type Measurement struct { ID int64 `db:"measurement_id,omitempty"` TestName string `db:"test_name"` StartTime time.Time `db:"measurement_start_time"` Runtime float64 `db:"measurement_runtime"` // Fractional number of seconds IsDone bool `db:"measurement_is_done"` IsUploaded bool `db:"measurement_is_uploaded"` IsFailed bool `db:"measurement_is_failed"` FailureMsg sql.NullString `db:"measurement_failure_msg,omitempty"` IsUploadFailed bool `db:"measurement_is_upload_failed"` UploadFailureMsg sql.NullString `db:"measurement_upload_failure_msg,omitempty"` IsRerun bool `db:"measurement_is_rerun"` ReportID sql.NullString `db:"report_id,omitempty"` URLID sql.NullInt64 `db:"url_id,omitempty"` // Used to reference URL MeasurementID sql.NullInt64 `db:"collector_measurement_id,omitempty"` IsAnomaly sql.NullBool `db:"is_anomaly,omitempty"` // FIXME we likely want to support JSON. See: https://github.com/upper/db/issues/462 TestKeys string `db:"test_keys"` ResultID int64 `db:"result_id"` ReportFilePath sql.NullString `db:"report_file_path,omitempty"` MeasurementFilePath sql.NullString `db:"measurement_file_path,omitempty"` }
Measurement model
func CreateMeasurement ¶
func CreateMeasurement(sess db.Session, reportID sql.NullString, testName string, measurementDir string, idx int, resultID int64, urlID sql.NullInt64) (*Measurement, error)
CreateMeasurement writes the measurement to the database a returns a pointer to the Measurement
func (*Measurement) Done ¶
func (m *Measurement) Done(sess db.Session) error
Done marks the measurement as completed
func (*Measurement) Failed ¶
func (m *Measurement) Failed(sess db.Session, failure string) error
Failed writes the error string to the measurement
func (*Measurement) UploadFailed ¶
func (m *Measurement) UploadFailed(sess db.Session, failure string) error
UploadFailed writes the error string for the upload failure to the measurement
func (*Measurement) UploadSucceeded ¶
func (m *Measurement) UploadSucceeded(sess db.Session) error
UploadSucceeded writes the error string for the upload failure to the measurement
type MeasurementURLNetwork ¶
type MeasurementURLNetwork struct { Measurement `db:",inline"` Network `db:",inline"` Result `db:",inline"` URL `db:",inline"` }
MeasurementURLNetwork is used for the JOIN between Measurement and URL
func ListMeasurements ¶
func ListMeasurements(sess db.Session, resultID int64) ([]MeasurementURLNetwork, error)
ListMeasurements given a result ID
type Network ¶
type Network struct { ID int64 `db:"network_id,omitempty"` NetworkName string `db:"network_name"` NetworkType string `db:"network_type"` IP string `db:"ip"` ASN uint `db:"asn"` CountryCode string `db:"network_country_code"` }
Network represents a network tested by the user
func CreateNetwork ¶
func CreateNetwork(sess db.Session, loc enginex.LocationProvider) (*Network, error)
CreateNetwork will create a new network in the network table
type PerformanceTestKeys ¶
type PerformanceTestKeys struct { Upload float64 `json:"upload"` Download float64 `json:"download"` Ping float64 `json:"ping"` Bitrate float64 `json:"median_bitrate"` }
PerformanceTestKeys is the result summary for a performance test
type Result ¶
type Result struct { ID int64 `db:"result_id,omitempty"` TestGroupName string `db:"test_group_name"` StartTime time.Time `db:"result_start_time"` NetworkID int64 `db:"network_id"` // Used to include a Network Runtime float64 `db:"result_runtime"` // Runtime is expressed in fractional seconds IsViewed bool `db:"result_is_viewed"` IsDone bool `db:"result_is_done"` IsUploaded bool `db:"result_is_uploaded"` DataUsageUp float64 `db:"result_data_usage_up"` DataUsageDown float64 `db:"result_data_usage_down"` MeasurementDir string `db:"measurement_dir"` }
Result model
type ResultNetwork ¶
type ResultNetwork struct { Result `db:",inline"` Network `db:",inline"` AnomalyCount uint64 `db:"anomaly_count"` TotalCount uint64 `db:"total_count"` TestKeys string `db:"test_keys"` }
ResultNetwork is used to represent the structure made from the JOIN between the results and networks tables.
type URL ¶
type URL struct { ID sql.NullInt64 `db:"url_id,omitempty"` URL sql.NullString `db:"url"` CategoryCode sql.NullString `db:"category_code"` CountryCode sql.NullString `db:"url_country_code"` }
URL represents URLs from the testing lists
type UploadedTotalCount ¶ added in v3.10.0
type UploadedTotalCount struct { UploadedCount int64 `db:",inline"` TotalCount int64 `db:",inline"` }
UploadedTotalCount is the count of the measurements which have been uploaded vs the total measurements in a given result set