Documentation
¶
Index ¶
- type AdditionalFlags
- type AnsibleGroups
- type AnsibleTimeouts
- type CSV
- type Config
- type Defaults
- type Dump
- type Excelize
- type FilePath
- type GoChart
- type Hosts
- type IPerf3
- type KubernetesHosts
- type KubernetesServiceAccounts
- type KubernetesTimeouts
- type MySQL
- type Output
- type RunMode
- type RunOptions
- type Runner
- type RunnerAnsible
- type RunnerKubernetes
- type RunnerMock
- type SQLite
- type Test
- type TestHosts
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdditionalFlags ¶
type AdditionalFlags struct {
// List of additional flags for clients
Clients []string `yaml:"clients"`
// List of additional flags for server
Server []string `yaml:"server"`
}
AdditionalFlags additional flags structure for Server and Clients
type AnsibleGroups ¶
type AnsibleGroups struct {
// Server inventory server group name
Server string `yaml:"server"`
// Clients inventory clients group name
Clients string `yaml:"clients"`
}
AnsibleGroups server and clients host group names in the used inventory file(s)
type AnsibleTimeouts ¶
type AnsibleTimeouts struct {
// Timeout duration for `ansible` and `ansible-inventory` calls (NOT task command timeouts)
CommandTimeout time.Duration `yaml:"commandTimeout"`
// Timeout duration for `ansible` Task command calls
TaskCommandTimeout time.Duration `yaml:"taskCommandTimeout"`
}
AnsibleTimeouts timeouts for Ansible command runs
type Config ¶
type Config struct {
Version string `yaml:"version"`
Runner Runner `yaml:"runner"`
Tests []*Test `yaml:"tests"`
}
Config Config object for the config file
type Defaults ¶
type Defaults interface {
Defaults()
}
Defaults interface to implement for config parts which allow a "verification" / Setting Defaults
type Excelize ¶
type Excelize struct {
FilePath
// After what amount of rows the Excel file should be saved
SaveAfterRows int `yaml:"saveAfterRows"`
}
Excelize Excelize Output config options. TODO implement
type FilePath ¶
type FilePath struct {
// File base path for output
FilePath string `yaml:"filePath" validate:"required,min=1"`
// File name pattern templated from various availables during output generation
NamePattern string `yaml:"namePattern" validate:"required,min=1"`
}
FilePath file path and name pattern for outputs file generation
type GoChart ¶
type GoChart struct {
FilePath
// Types of charts to produce from the testers output data
Types []string `yaml:"types" validate:"required,min=1"`
}
GoChart GoChart Output config options
type Hosts ¶
type Hosts struct {
// Name of this hosts selection.
Name string `yaml:"name"`
// If all hosts available should be used.
All bool `yaml:"all"`
// Select `Count` Random hosts from the available hosts list.
Random bool `yaml:"random"`
// Must be used with `Random`, will cause `Count` times Nodes to be randomly selected from all applicable hosts.
Count int `yaml:"count"`
// Static list of hosts (this list is not checked for accuracy)
Hosts []string `yaml:"hosts"`
// "Label" selector for the dynamically generated hosts list, e.g., Kubernetes label selector
HostSelector map[string]string `yaml:"hostSelector"`
// AntiAffinity not implemented yet
AntiAffinity []string `yaml:"antiAffinity"`
}
Hosts options for hosts selection for a Test
type IPerf3 ¶
type IPerf3 struct {
// Additional flags for client and server
AdditionalFlags AdditionalFlags `yaml:"additionalFlags"`
// If UDP should be used for the IPerf3 test
UDP *bool `yaml:"udp"`
}
IPerf3 IPerf3 config structure for testers.Tester config
type KubernetesHosts ¶
type KubernetesHosts struct {
// If Nodes that are `SchedulingDisabled` should be ignored
IgnoreSchedulingDisabled *bool `yaml:"ignoreSchedulingDisabled"`
// List of Kubernetes corev1.Toleration to tolerate when selecting Nodes
Tolerations []corev1.Toleration `yaml:"tolerations"`
}
KubernetesHosts hosts selection options for Kubernetes
func (*KubernetesHosts) SetDefaults ¶
func (c *KubernetesHosts) SetDefaults()
SetDefaults set defaults on config part
type KubernetesServiceAccounts ¶
type KubernetesServiceAccounts struct {
// Server ServiceAccount name to use for server Pods
Server string `yaml:"server,omitempty"`
// Clients ServiceAccount name to use for client Pods
Clients string `yaml:"clients,omitempty"`
}
KubernetesServiceAccounts server and client ServiceAccount name to use for the created Pods
type KubernetesTimeouts ¶
type KubernetesTimeouts struct {
// Timeout for object deletion
DeleteTimeout int `yaml:"deleteTimeout"`
// Timeout for "Pod running" check
RunningTimeout int `yaml:"runningTimeout"`
// Timeout for "Pod succeded" check (e.g., client Pod exits after Pod)
SucceedTimeout int `yaml:"succeedTimeout"`
}
KubernetesTimeouts timeouts for operations with Kubernetess
func (*KubernetesTimeouts) SetDefaults ¶
func (c *KubernetesTimeouts) SetDefaults()
SetDefaults set defaults on config part
type MySQL ¶
type MySQL struct {
// MySQL DSN, format `[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]`, for more information see https://github.com/go-sql-driver/mysql#dsn-data-source-name
DSN string `yaml:"dsn"`
// Pattern used for templating the name of the table used in the MySQL database, the tables are created automatically when MySQL.AutoCreateTables is set to `true`
TableNamePattern string `yaml:"tableNamePattern"`
// Automatically create tables in the MySQL database (default `true`)
AutoCreateTables *bool `yaml:"autoCreateTables"`
}
MySQL MySQL Output config options
type Output ¶
type Output struct {
// Name of this output
Name string `yaml:"name"`
// CSV output options
CSV *CSV `yaml:"csv"`
// GoChart output options
GoChart *GoChart `yaml:"goChart"`
// Dump output options
Dump *Dump `yaml:"dump"`
// Excelize output options
Excelize *Excelize `yaml:"excelize"`
// SQLite output options
SQLite *SQLite `yaml:"sqlite"`
// MySQL output options
MySQL *MySQL `yaml:"mysql"`
}
Output Output config structure pointing to the other config options for each output
type RunOptions ¶
type RunOptions struct {
// Continue on error during test runs (recommended to set to `true`) (default is `true`)
ContinueOnError *bool `yaml:"continueOnError,omitempty"`
// Amount of test rounds (repetitions) to do for a test plan
Rounds int `yaml:"rounds"`
// Time interval to sleep / wait between (default `10s`)
Interval time.Duration `yaml:"interval,omitempty"`
// Run mode can be `parallel` or `sequential` (see `RunMode`, default is `sequential`)
Mode RunMode `yaml:"mode"`
// **NOT IMPLEMENTED YET** amount of test tasks to run when using `parallel` RunOptions.Mode
ParallelCount int `yaml:"parallelCount"`
}
RunOptions options for running the tasks
func (*RunOptions) SetDefaults ¶
func (c *RunOptions) SetDefaults()
SetDefaults set defaults on config part
type Runner ¶
type Runner struct {
// Name of the runner
Name string `yaml:"name"`
// Kubernetes runner options
Kubernetes *RunnerKubernetes `yaml:"kubernetes"`
// Ansible runner options
Ansible *RunnerAnsible `yaml:"ansible"`
// Mock runner options (userd for testing purposes)
Mock *RunnerMock `yaml:"mock"`
}
Runner structure with all available runners config options
type RunnerAnsible ¶
type RunnerAnsible struct {
// InventoryFilePath Path to inventory file to use
InventoryFilePath string `yaml:"inventoryFilePath"`
// Groups server and clients group names
Groups *AnsibleGroups `yaml:"groups"`
// Path to the ansible command (if empty will be searched for in `PATH`)
AnsibleCommand string `yaml:"ansibleCommand"`
// Path to the ansible-inventory command (if empty will be searched for in `PATH`)
AnsibleInventoryCommand string `yaml:"ansibleInventoryCommand"`
// Timeout settings for ansible command runs
Timeouts *AnsibleTimeouts `yaml:"timeouts"`
}
RunnerAnsible Ansible Runner config options
func (*RunnerAnsible) SetDefaults ¶
func (c *RunnerAnsible) SetDefaults()
SetDefaults set defaults on config part
type RunnerKubernetes ¶
type RunnerKubernetes struct {
// If the Kubernetes client should use the in-cluster config for the cluster communication
InClusterConfig bool `yaml:"inClusterConfig"`
// Path to your kubeconfig file, if not set the following order will be tried out, `KUBECONFIG` and `$HOME/.kube/config`
Kubeconfig string `yaml:"kubeconfig,omitempty"`
// The image used for the spawned Pods for the tests (default `quay.io/galexrt/container-toolbox`)
Image string `yaml:"image"`
// Namespace to execute the tests in
Namespace string `yaml:"namespace" validate:"max=63"`
// If `hostNetwork` mode should be used for the test Pods
HostNetwork *bool `yaml:"hostNetwork,omitempty"`
// Timeout settings for operations against the Kubernetes API
Timeouts *KubernetesTimeouts `yaml:"timeouts,omitempty"`
// Annotations to put on the test Pods
Annotations map[string]string `yaml:"annotations,omitempty"`
// Host selection specific options
Hosts *KubernetesHosts `yaml:"hosts"`
// ServiceAccounst to use server and client Pods
ServiceAccounts *KubernetesServiceAccounts `yaml:"serviceaccounts,omitempty"`
}
RunnerKubernetes Kubernetes Runner config options
func (*RunnerKubernetes) SetDefaults ¶
func (c *RunnerKubernetes) SetDefaults()
SetDefaults set defaults on config part
type RunnerMock ¶
type RunnerMock struct {
}
RunnerMock Mock Runner config options (here for good measure)
type SQLite ¶
type SQLite struct {
FilePath
// Pattern used for templating the name of the table used in the SQLite database, the tables are created automatically
TableNamePattern string `yaml:"tableNamePattern"`
}
SQLite SQLite Output config options
type Test ¶
type Test struct {
// Test name
Name string `yaml:"name"`
// The tester to use, e.g., for `iperf3` set to `iperf3` and so on
Type string `yaml:"type"`
// Options for the execution of the test
RunOptions RunOptions `yaml:"runOptions"`
// List of Outputs to use for processing data from the testers.
Outputs []Output `yaml:"outputs"`
// Hosts selection for client and server
Hosts TestHosts `yaml:"hosts"`
// IPerf3 test options
IPerf3 *IPerf3 `yaml:"iperf3"`
}
Test Config options for each Test