config

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(ctx context.Context) (Config, Clients, error)

New returns a new instance of Config.

Types

type Clients

type Clients struct {
	Clientset  *kubernetes.Clientset
	CtrlClient ctrlclient.Client
	WebClient  *http.Client
}

Clients holds the various clients used to talk to things

type Config

type Config struct {
	OperatorPromURL string `envconfig:"OPERATOR_PROM_URL" default:""`
	K8sPromURL      string `envconfig:"K8S_PROM_URL" default:""`
	Kubeconfig      string `envconfig:"KUBECONFIG" default:""`
	K8sAPIHost      string `envconfig:"KUBERNETES_SERVICE_HOST" default:""`
	K8sAPIPort      string `envconfig:"KUBERNETES_SERVICE_PORT" default:""`
	ESUrl           string `envconfig:"ELASTICSEARCH_URL" default:""`
	ESUser          string `envconfig:"ELASTICSEARCH_USER" default:"elastic"`
	ESPassword      string `envconfig:"ELASTICSEARCH_TOKEN" default:""`
	ESAPIKey        string `envconfig:"ELASTICSEARCH_KEY" default:""`
	TestTimeout     int    `default:"600"`
	ResultsFile     string `envconfig:"RESULTS_FILE" default:"/results/results.json"`
	CalicoVersion   string `default:""`
	ProxyAddress    string `envconfig:"HTTP_PROXY" default:""`
	TestConfigFile  string `envconfig:"TESTCONFIGFILE" required:"true"`
	LogLevel        string `envconfig:"LOG_LEVEL" default:"info"`
	WebServerImage  string `envconfig:"WEBSERVER_IMAGE" default:"quay.io/tigeradev/tiger-bench-nginx:v0.6.0"`
	PerfImage       string `envconfig:"PERF_IMAGE" default:"quay.io/tigeradev/tiger-bench-perf:v0.6.0"`
	TTFRImage       string `envconfig:"TTFR_IMAGE" default:"quay.io/tigeradev/tiger-bench-ttfr:v0.6.0"`
	TestConfigs     testConfigs
}

Config represents the global configuration for the benchmark.

type DNSConfig added in v0.2.0

type DNSConfig struct {
	NumDomains    int         `validate:"gte=0"`
	Mode          DNSPerfMode `validate:"omitempty,oneof=Inline NoDelay DelayDeniedPacket DelayDNSResponse"`
	RunStress     bool        `default:"true" validate:"omitempty"`
	TestDNSPolicy bool        `default:"true" validate:"omitempty"`
	NumTargetPods int         `default:"100" validate:"gte=1"`
	TargetType    string      `default:"pod" validate:"omitempty,oneof=pod service"`
}

DNSConfig contains the configuration specific to DNSPerf tests.

type DNSPerfMode

type DNSPerfMode string

DNSPerfMode represents the mode to use for DNSPerf.

const (
	DNSPerfModeInline            DNSPerfMode = "Inline"
	DNSPerfModeNoDelay           DNSPerfMode = "NoDelay"
	DNSPerfModeDelayDeniedPacket DNSPerfMode = "DelayDeniedPacket"
	DNSPerfModeDelayDNSResponse  DNSPerfMode = "DelayDNSResponse"
	DNSPerfModeUnset             DNSPerfMode = ""
)

DNSPerfMode possible values.

type DataPlane

type DataPlane string

DataPlane represents the data plane to use.

const (
	DataPlaneIPTables DataPlane = "iptables"
	DataPlaneBPF      DataPlane = "bpf"
	DataPlaneNftables DataPlane = "nftables"
	DataPlaneUnset    DataPlane = ""
)

DataPlane possible values.

type Encap

type Encap string

Encap represents the encapsulation type to use.

const (
	EncapNone  Encap = "none"
	EncapVXLAN Encap = "vxlan"
	EncapIPIP  Encap = "ipip"
	EncapUnset Encap = ""
)

Encap possible values.

type PerfConfig added in v0.2.0

type PerfConfig struct {
	Direct           bool   // Whether to do a direct pod-pod test
	Service          bool   // Whether to do a pod-service-pod test
	External         bool   // Whether to test from this container to the external IP for an external-service-pod test
	ControlPort      int    // The port to use for the control connection in tests.  Used by qperf tests.
	TestPort         int    // The port to use for the test connection in tests.  Used by qperf and iperf tests
	ExternalIPOrFQDN string // The external IP or DNS name to connect to for an external-service-pod test
}

PerfConfig details which tests to run in thruput-latency and iperf tests.

type TTFRConfig added in v0.3.0

type TTFRConfig struct {
	TestPodsPerNode int     `validate:"gte=0"`
	Rate            float64 `validate:"gte=0"`
}

TTFRConfig contains the configuration specific to TTFR tests.

type TestConfig

type TestConfig struct {
	TestKind            TestKind  `validate:"required,oneof=none dnsperf iperf thruput-latency ttfr"`
	Encap               Encap     `validate:"omitempty,oneof=none vxlan ipip"`
	Dataplane           DataPlane `validate:"omitempty,oneof=iptables bpf nftables"`
	NumPolicies         int       `validate:"gte=0"`
	NumIdlePolicies     int       `default:"0" validate:"gte=0"`
	NumServices         int       `validate:"gte=0"`
	NumPods             int       `validate:"gte=0"`
	HostNetwork         bool
	TestNamespace       string      `default:"testns"`
	Iterations          int         `default:"1" validate:"gte=0"`
	Duration            int         `default:"60"`
	DNSPerf             *DNSConfig  `validate:"required_if=TestKind dnsperf"`
	Perf                *PerfConfig `validate:"required_if=TestType thruput-latency,required_if=TestType iperf"`
	TTFRConfig          *TTFRConfig `validate:"required_if=TestType ttfr"`
	CalicoNodeCPULimit  string
	LeaveStandingConfig bool
}

TestConfig represents a test to run on a cluster, and the configuration for the test.

type TestKind

type TestKind string

TestKind represents the kind of test to run.

const (
	TestKindNone    TestKind = "none"
	TestKindDNSPerf TestKind = "dnsperf"
	TestKindIperf   TestKind = "iperf"
	TestKindQperf   TestKind = "thruput-latency"
	TestKindTTFR    TestKind = "ttfr"
)

TestKind possible values.

Jump to

Keyboard shortcuts

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