Documentation
¶
Index ¶
- Variables
- func AppendTrial(dir string, trial Trial) error
- func BrowserURL(c Cluster, t Topology, cell Cell, mode string) string
- func LoadHints(path, mode string) (map[string]int, error)
- func SaveHints(path, mode string, report Report) error
- type Analysis
- type Attempt
- type Bounds
- type Cell
- type Cluster
- type Hosts
- type JanusConfig
- type JitsiConfig
- type LiveKitConfig
- type MediasoupConfig
- type Observation
- type Options
- type Quality
- type Remote
- type Report
- type Request
- type RoomGroup
- type SSH
- func (s SSH) Run(ctx context.Context, host, command string) (string, error)
- func (s SSH) Stream(ctx context.Context, host, command string, output io.Writer) error
- func (s SSH) Upload(ctx context.Context, host, destination string, content io.Reader, ...) error
- func (s SSH) Write(ctx context.Context, host, path string, data []byte) error
- type SearchResult
- type Topology
- type Trial
- type TrialExecutor
- type TrialSpec
Constants ¶
This section is empty.
Variables ¶
View Source
var Clients = []string{"rtcbench", "webrtcperf", "chromium"}
View Source
var SFUs = pluginIDs()
Functions ¶
func AppendTrial ¶
Types ¶
type Analysis ¶
type Cell ¶
func ParseCells ¶
type Cluster ¶
type Cluster struct {
SSHKey string `yaml:"ssh_key" json:"ssh_key"`
SSHUser string `yaml:"ssh_user" json:"ssh_user"`
Sender string `yaml:"sender,omitempty" json:"sender,omitempty"`
Viewer string `yaml:"viewer,omitempty" json:"viewer,omitempty"`
SFU Hosts `yaml:"sfu" json:"sfu"`
Receivers Hosts `yaml:"receivers,omitempty" json:"receivers,omitempty"`
Senders Hosts `yaml:"senders,omitempty" json:"senders,omitempty"`
DataIPs map[string]string `yaml:"data_ips,omitempty" json:"data_ips,omitempty"`
JanusConfig `yaml:",inline"`
JitsiConfig `yaml:",inline"`
LiveKitConfig `yaml:",inline"`
MediasoupConfig `yaml:",inline"`
NICMbps float64 `yaml:"nic_mbps,omitempty" json:"nic_mbps,omitempty"`
VideoMbps float64 `yaml:"video_bitrate_mbps" json:"video_bitrate_mbps"`
InitialHi map[string]int `yaml:"initial_hi,omitempty" json:"initial_hi,omitempty"`
StartupSeconds int `yaml:"startup_timeout_seconds" json:"startup_timeout_seconds"`
WarmupSeconds int `yaml:"warmup_seconds" json:"warmup_seconds"`
DurationSeconds int `yaml:"steady_state_seconds" json:"steady_state_seconds"`
StartLeadSeconds int `yaml:"start_lead_seconds" json:"start_lead_seconds"`
SampleSeconds int `yaml:"sample_seconds" json:"sample_seconds"`
TeardownSeconds int `yaml:"teardown_seconds" json:"teardown_seconds"`
MinBitrate float64 `yaml:"min_bitrate_bps" json:"min_bitrate_bps"`
MinFPS float64 `yaml:"min_fps" json:"min_fps"`
HealthyFraction float64 `yaml:"healthy_fraction" json:"healthy_fraction"`
Cores string `yaml:"cores,omitempty" json:"cores,omitempty"`
RTCBenchImage string `yaml:"rtcbench_image" json:"rtcbench_image"`
BrowserImage string `yaml:"webrtcperf_image" json:"webrtcperf_image"`
RemoteIVF string `yaml:"remote_ivf_dir" json:"remote_ivf_dir"`
VideoPath string `yaml:"video_path" json:"video_path"`
BinariesDir string `yaml:"binaries_dir" json:"binaries_dir"`
IVFDir string `yaml:"ivf_dir" json:"ivf_dir"`
}
func ParseCluster ¶
type JanusConfig ¶
type JanusConfig = janusbench.Config
type JitsiConfig ¶
type JitsiConfig = jitsibench.Config
type LiveKitConfig ¶
type LiveKitConfig = livekitbench.Config
type MediasoupConfig ¶
type MediasoupConfig = mediasoupbench.Config
type Observation ¶
type Quality ¶
type Remote ¶
type Remote interface {
Run(context.Context, string, string) (string, error)
Write(context.Context, string, string, []byte) error
}
Remote implementations must support concurrent calls.
type Report ¶
type Report struct {
Simulated bool `json:"simulated"`
Phase string `json:"phase"`
Results map[string]SearchResult `json:"results"`
Trials []Trial `json:"trials"`
}
type Request ¶
type Request struct {
Name string `json:"name"`
ClusterYAML string `json:"cluster"`
Mode string `json:"mode"`
Cells []Cell `json:"cells"`
Bounds Bounds `json:"bounds"`
Repetitions int `json:"repetitions"`
Provision bool `json:"provision"`
UploadAssets bool `json:"uploadAssets"`
DryRun bool `json:"dryRun"`
Hints map[string]int `json:"hints,omitempty"`
}
type SearchResult ¶
type Topology ¶
type Topology struct {
Load int `json:"loadPerMachine"`
Rooms int `json:"rooms"`
PerRoom int `json:"limitPerRoom"`
TotalSenders int `json:"totalSenders"`
TotalReceivers int `json:"totalReceivers"`
ExpectedStreams int `json:"expectedStreams"`
Workers []string `json:"workers"`
Observer string `json:"observer"`
SFUIP string `json:"sfuIP"`
Groups []RoomGroup `json:"groups"`
}
type Trial ¶
type Trial struct {
Cell
Load int `json:"load"`
Repeat int `json:"repeat"`
Repetitions int `json:"repetitions"`
StartedAt time.Time `json:"startedAt"`
EndedAt time.Time `json:"endedAt"`
Passed bool `json:"passed"`
Reason string `json:"reason"`
Error string `json:"error,omitempty"`
Topology Topology `json:"topology"`
Samples []Observation `json:"samples"`
Artifacts string `json:"artifacts"`
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.