integration

package
v0.0.0-...-ca78c08 Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2022 License: Apache-2.0 Imports: 20 Imported by: 0

README

Integration Tests

Integration tests should be used to test a specific functionality of k3s that exists across multiple Go packages, either via exported function calls, or more often, CLI commands. Integration tests should be used for "black box" testing.

Framework

All integration tests in TStac follow a Behavior Diven Development (BDD) style. Specifically, TStac uses Ginkgo and Gomega to drive the tests.
To generate an initial test, the command ginkgo bootstrap can be used.

To facilitate TStac CLI testing, see tests/util/cmd.go helper functions.

Format

All integration tests should be placed under tests/integration/<TEST_NAME>.
All integration test files should be named: <TEST_NAME>_int_test.go.
All integration test functions should be named: Test_Integration<TEST_NAME>.
See the local storage test as an example.

Running

Integration tests can be run with no k3s cluster present, each test will spin up and kill the appropriate k3s server it needs.
Note: Integration tests must be run as root, prefix the commands below with sudo -E env "PATH=$PATH" if a sudo user.

go test ./tests/integration/... -run Integration

Additionally, to generate JUnit reporting for the tests, the Ginkgo CLI is used

ginkgo --junit-report=result.xml ./tests/integration/...

Integration tests can be run on an existing single-node cluster via compile time flag, tests will skip if the server is not configured correctly.

go test -ldflags "-X 'github.com/TinyStac/tinystack/tests/integration.existingServer=True'" ./tests/integration/... -run Integration

Integration tests can also be run via a Sonobuoy plugin on an existing single-node cluster.

./scripts/build-tests-sonobuoy
sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml sonobuoy run --plugin ./dist/artifacts/k3s-int-tests.yaml

Check the sonobuoy status and retrieve results

sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml sonobuoy status
sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml sonobuoy retrieve
sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml sonobuoy results <TAR_FILE_FROM_RETRIEVE>

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckDeployments

func CheckDeployments(deployments []string) error

CheckDeployments checks if the provided list of deployments are ready, otherwise returns an error

func FindStringInCmdAsync

func FindStringInCmdAsync(scanner *bufio.Scanner, target string) bool

func IsExistingServer

func IsExistingServer() bool

func IsRoot

func IsRoot() bool

IsRoot return true if the user is root (UID 0)

func ParseNodes

func ParseNodes() ([]corev1.Node, error)

func ParsePods

func ParsePods(opts metav1.ListOptions) ([]corev1.Pod, error)

func RunCommand

func RunCommand(cmd string) (string, error)

RunCommand Runs command on the host

func ServerArgsPresent

func ServerArgsPresent(neededArgs []string) bool

ServerArgsPresent checks if the given arguments are found in the running k3s server

func TStacCleanup

func TStacCleanup(k3sTestLock int, dataDir string) error

TStacCleanup unlocks the test-lock and attempts to cleanup networking and files leftover from an integration test. This is similar to the k3s-killall.sh script, but we dynamically generate that on install, so we don't have access to it during testing.

func TStacCmd

func TStacCmd(inputArgs ...string) (string, error)

TStacCmd launches the provided TStac command via exec. Command blocks until finished. Command output from both Stderr and Stdout is provided via string. Input can be a single string with space separated args, or multiple string args cmdEx1, err := TStacCmd("etcd-snapshot", "ls") cmdEx2, err := TStacCmd("kubectl get pods -A") cmdEx2, err := TStacCmd("kubectl", "get", "pods", "-A")

func TStacDefaultDeployments

func TStacDefaultDeployments() error

TStacDefaultDeployments checks if the default deployments for TStac are ready, otherwise returns an error

func TStacDumpLog

func TStacDumpLog(server *TStacServer) error

func TStacKillServer

func TStacKillServer(server *TStacServer) error

TStacKillServer terminates the running TStac server and its children

func TStacServerArgs

func TStacServerArgs() []string

TStacServerArgs returns the list of arguments that the k3s server launched with

func TStacTestLock

func TStacTestLock() (int, error)

Types

type TStacServer

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

func TStacStartServer

func TStacStartServer(inputArgs ...string) (*TStacServer, error)

TStacStartServer acquires an exclusive lock on a temporary file, then launches a k3s cluster with the provided arguments. Subsequent/parallel calls to this function will block until the original lock is cleared using TStacKillServer

Jump to

Keyboard shortcuts

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