kubernetes: github.com/ramr/kubernetes/test/e2e Index | Files

package e2e

import "github.com/ramr/kubernetes/test/e2e"

This is a utility for prometheus pushing functionality.

Index

Package Files

addon_update.go autoscaling.go cadvisor.go cluster_upgrade.go container_probe.go core.go density.go dns.go docker_containers.go downward_api.go empty_dir.go es_cluster_logging.go etcd_failure.go events.go examples.go expansion.go framework.go host_path.go kibana_logging.go kube-ui.go kubectl.go kubelet.go kubelet_stats.go load.go max_pods.go monitoring.go namespace.go networking.go pd.go persistent_volumes.go pods.go pre_stop.go prompush.go proxy.go rc.go reboot.go resize_nodes.go restart.go secrets.go service.go service_accounts.go service_latency.go ssh.go util.go volumes.go

Constants

const NodeStartupThreshold = 4 * time.Second

NodeStartupThreshold is a rough estimate of the time allocated for a pod to start on a node.

Variables

var MaxContainerFailures = 0

Maximum container failures this test tolerates before failing.

var ServiceNodePortRange = util.PortRange{Base: 30000, Size: 2768}

This should match whatever the default/configured range is

func BadEvents Uses

func BadEvents(events []*api.Event) int

Prints the histogram of the events and returns the number of bad events.

func CheckCadvisorHealthOnAllNodes Uses

func CheckCadvisorHealthOnAllNodes(c *client.Client, timeout time.Duration)

func ClusterLevelLoggingWithElasticsearch Uses

func ClusterLevelLoggingWithElasticsearch(f *Framework)

ClusterLevelLoggingWithElasticsearch is an end to end test for cluster level logging.

func ClusterLevelLoggingWithKibana Uses

func ClusterLevelLoggingWithKibana(f *Framework)

ClusterLevelLoggingWithKibana is an end to end test that checks to see if Kibana is alive.

func ConsumeCpu Uses

func ConsumeCpu(f *Framework, id string, cores int)

func ConsumeMemory Uses

func ConsumeMemory(f *Framework, id string, gigabytes int)

func DeleteRC Uses

func DeleteRC(c *client.Client, ns, name string) error

Delete a Replication Controller and all pods it spawned

func FailedContainers Uses

func FailedContainers(pod *api.Pod) map[string]ContainerFailures

FailedContainers inspects all containers in a pod and returns failure information for containers that have failed or been restarted. A map is returned where the key is the containerID and the value is a struct containing the restart and failure information

func Failf Uses

func Failf(format string, a ...interface{})

func GetKubeletPods Uses

func GetKubeletPods(c *client.Client, node string) (*api.PodList, error)

GetKubeletPods retrieves the list of running pods on the kubelet. The pods includes necessary information (e.g., UID, name, namespace for pods/containers), but do not contain the full spec.

func HighLatencyKubeletOperations Uses

func HighLatencyKubeletOperations(c *client.Client, threshold time.Duration, nodeName string) ([]KubeletMetric, error)

HighLatencyKubeletOperations logs and counts the high latency metrics exported by the kubelet server via /metrics.

func HighLatencyRequests Uses

func HighLatencyRequests(c *client.Client, threshold time.Duration, ignoredResources util.StringSet) (int, error)

Prints summary metrics for request types with latency above threshold and returns number of such request types.

func LaunchNetTestPodPerNode Uses

func LaunchNetTestPodPerNode(f *Framework, nodes *api.NodeList, name, version string) []string

func Logf Uses

func Logf(format string, a ...interface{})

func NodeSSHHosts Uses

func NodeSSHHosts(c *client.Client) ([]string, error)

NodeSSHHosts returns SSH-able host names for all nodes. It returns an error if it can't find an external IP for every node, though it still returns all hosts that it found in that case.

func ParseKubeletMetrics Uses

func ParseKubeletMetrics(metricsBlob string) ([]KubeletMetric, error)

ReadKubeletMetrics reads metrics from the kubelet server running on the given node

func ReadLatencyMetrics Uses

func ReadLatencyMetrics(c *client.Client) ([]LatencyMetric, error)

func ReserveCpu Uses

func ReserveCpu(f *Framework, id string, millicores int)

func ReserveMemory Uses

func ReserveMemory(f *Framework, id string, gigabytes int)

func RunRC Uses

func RunRC(config RCConfig) error

RunRC Launches (and verifies correctness) of a Replication Controller and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling cleanup).

func SSH Uses

func SSH(cmd, host, provider string) (string, string, int, error)

SSH synchronously SSHs to a node running on provider and runs cmd. If there is no error performing the SSH, the stdout, stderr, and exit code are returned.

func ScaleRC Uses

func ScaleRC(c *client.Client, ns, name string, size uint) error

func ServeImageOrFail Uses

func ServeImageOrFail(f *Framework, test string, image string)

A basic test to check the deployment of an image using a replication controller. The image serves its hostname which is checked for each replica.

func SkipIfProviderIs Uses

func SkipIfProviderIs(unsupportedProviders ...string)

func SkipUnlessNodeCountIsAtLeast Uses

func SkipUnlessNodeCountIsAtLeast(minNodeCount int)

func SkipUnlessProviderIs Uses

func SkipUnlessProviderIs(supportedProviders ...string)

func Skipf Uses

func Skipf(format string, args ...interface{})

func StopConsuming Uses

func StopConsuming(f *Framework, id string)

type CloudConfig Uses

type CloudConfig struct {
    ProjectID         string
    Zone              string
    Cluster           string
    MasterName        string
    NodeInstanceGroup string
    NumNodes          int
    ClusterTag        string

    Provider cloudprovider.Interface
}

type ContainerFailures Uses

type ContainerFailures struct {
    // contains filtered or unexported fields
}

type Framework Uses

type Framework struct {
    BaseName string

    Namespace *api.Namespace
    Client    *client.Client
}

Framework supports common operations used by e2e tests; it will keep a client & a namespace for you. Eventual goal is to merge this with integration test framework.

func NewFramework Uses

func NewFramework(baseName string) *Framework

NewFramework makes a new framework and sets up a BeforeEach/AfterEach for you (you can write additional before/after each functions).

func (*Framework) ReadFileViaContainer Uses

func (f *Framework) ReadFileViaContainer(podName, containerName string, path string) (string, error)

Read a file using kubectl exec cat <path>

func (*Framework) TestContainerOutput Uses

func (f *Framework) TestContainerOutput(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)

Runs the given pod and verifies that the output of exact container matches the desired output.

func (*Framework) WaitForAnEndpoint Uses

func (f *Framework) WaitForAnEndpoint(serviceName string) error

WaitForAnEndpoint waits for at least one endpoint to become available in the service's corresponding endpoints object.

func (*Framework) WaitForPodRunning Uses

func (f *Framework) WaitForPodRunning(podName string) error

WaitForPodRunning waits for the pod to run in the namespace.

func (*Framework) WriteFileViaContainer Uses

func (f *Framework) WriteFileViaContainer(podName, containerName string, path string, contents string) error

Write a file using kubectl exec echo <contents> > <path> via specified container Because of the primitive technique we're using here, we only allow ASCII alphanumeric characters

type KubeletMetric Uses

type KubeletMetric struct {
    // eg: list, info, create
    Operation string
    // eg: sync_pods, pod_worker
    Method string
    // 0 <= quantile <=1, e.g. 0.95 is 95%tile, 0.5 is median.
    Quantile float64
    Latency  time.Duration
}

KubeletMetric stores metrics scraped from the kubelet server's /metric endpoint. TODO: Get some more structure aroud the metrics and this type

type KubeletMetricByLatency Uses

type KubeletMetricByLatency []KubeletMetric

KubeletMetricByLatency implements sort.Interface for []KubeletMetric based on the latency field.

func (KubeletMetricByLatency) Len Uses

func (a KubeletMetricByLatency) Len() int

func (KubeletMetricByLatency) Less Uses

func (a KubeletMetricByLatency) Less(i, j int) bool

func (KubeletMetricByLatency) Swap Uses

func (a KubeletMetricByLatency) Swap(i, j int)

type LatencyMetric Uses

type LatencyMetric struct {
    Verb     string
    Resource string
    // 0 <= quantile <=1, e.g. 0.95 is 95%tile, 0.5 is median.
    Quantile float64
    Latency  time.Duration
}

LatencyMetrics stores data about request latency at a given quantile broken down by verb (e.g. GET, PUT, LIST) and resource (e.g. pods, services).

type LatencyMetricByLatency Uses

type LatencyMetricByLatency []LatencyMetric

LatencyMetricByLatency implements sort.Interface for []LatencyMetric based on the latency field.

func (LatencyMetricByLatency) Len Uses

func (a LatencyMetricByLatency) Len() int

func (LatencyMetricByLatency) Less Uses

func (a LatencyMetricByLatency) Less(i, j int) bool

func (LatencyMetricByLatency) Swap Uses

func (a LatencyMetricByLatency) Swap(i, j int)

type PodDiff Uses

type PodDiff map[string]*podInfo

PodDiff is a map of pod name to podInfos

func Diff Uses

func Diff(oldPods []*api.Pod, curPods []*api.Pod) PodDiff

Diff computes a PodDiff given 2 lists of pods.

func (PodDiff) Print Uses

func (p PodDiff) Print(ignorePhases util.StringSet)

Print formats and prints the give PodDiff.

type RCConfig Uses

type RCConfig struct {
    Client        *client.Client
    Image         string
    Command       []string
    Name          string
    Namespace     string
    PollInterval  time.Duration
    Timeout       time.Duration
    PodStatusFile *os.File
    Replicas      int
    CpuLimit      int64 // millicores
    MemLimit      int64 // bytes

    // Env vars, set the same for every pod.
    Env map[string]string

    // Extra labels added to every pod.
    Labels map[string]string

    // Ports to declare in the container (map of name to containerPort).
    Ports map[string]int

    // Pointer to a list of pods; if non-nil, will be set to a list of pods
    // created by this RC by RunRC.
    CreatedPods *[]*api.Pod

    // Maximum allowable container failures. If exceeded, RunRC returns an error.
    // Defaults to replicas*0.1 if unspecified.
    MaxContainerFailures *int
}

type State Uses

type State struct {
    Received map[string]int
}

partially cloned from webserver.go

type TestContextType Uses

type TestContextType struct {
    KubeConfig  string
    KubeContext string
    CertDir     string
    Host        string
    RepoRoot    string
    Provider    string
    CloudConfig CloudConfig
    KubectlPath string
    OutputDir   string

    MinStartupPods        int
    UpgradeTarget         string
    PrometheusPushGateway string
    // contains filtered or unexported fields
}

type VolumeTestConfig Uses

type VolumeTestConfig struct {
    // contains filtered or unexported fields
}

Configuration of one tests. The test consist of: - server pod - runs serverImage, exports ports[] - client pod - does not need any special configuration

type WebserverTest Uses

type WebserverTest struct {
    ServiceName string
    Namespace   string
    Client      *client.Client

    TestId string
    Labels map[string]string
    // contains filtered or unexported fields
}

Simple helper class to avoid too much boilerplate in tests

func NewWebserverTest Uses

func NewWebserverTest(client *client.Client, namespace string, serviceName string) *WebserverTest

func (*WebserverTest) BuildServiceSpec Uses

func (t *WebserverTest) BuildServiceSpec() *api.Service

Build default config for a service (which can then be changed)

func (*WebserverTest) Cleanup Uses

func (t *WebserverTest) Cleanup() []error

func (*WebserverTest) CreateService Uses

func (t *WebserverTest) CreateService(service *api.Service) (*api.Service, error)

Create a service, and record it for cleanup

func (*WebserverTest) CreateWebserverRC Uses

func (t *WebserverTest) CreateWebserverRC(replicas int) *api.ReplicationController

CreateWebserverRC creates rc-backed pods with the well-known webserver configuration and records it for cleanup.

func (*WebserverTest) DeleteService Uses

func (t *WebserverTest) DeleteService(serviceName string) error

Delete a service, and remove it from the cleanup list

Package e2e imports 55 packages (graph). Updated 2018-01-22. Refresh now. Tools for package owners.