integration

package
v0.37.0 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CleanupSPO = []*Command{
	{
		Name: "RemoveSecurityProfilesOperator",
		Cmd: `
		kubectl delete seccompprofile --all --all-namespaces
		kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/security-profiles-operator/v0.6.0/deploy/operator.yaml --ignore-not-found
		kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v1.10.0/cert-manager.yaml --ignore-not-found
		`,
		Cleanup: true,
	},
	{
		Name: "PatchSecurityProfilesOperatorProfiles",
		Cmd: `
		while true; do
		  # Ensure we have profiles to clean, otherwise just exit.
		  NAMESPACES=$(kubectl get seccompprofile --all-namespaces --no-headers --ignore-not-found -o custom-columns=":metadata.namespace" | uniq)
		  if [ -z $NAMESPACES ]; then
		    break
		  fi

		  # Patch profiles in each namespace, ignore any errors since it can already be deleted.
		  for NAMESPACE in $NAMESPACES; do
		    PROFILES=$(kubectl get seccompprofile --namespace $NAMESPACE -o name)
		    for PROFILE in $PROFILES; do
		      kubectl patch $PROFILE -n $NAMESPACE -p '{"metadata":{"finalizers":null}}' --type=merge || true
		    done
		  done

		  # Give some time before starting next cycle.
		  sleep 1
		done
		`,
		Cleanup: true,
	},
}

CleanupSPO cleans up security profile operator in Kubernetes

View Source
var DefaultTestComponent = InspektorGadgetTestComponent

DefaultTestComponent indicates component under testing allowing component specific logic e.g. indicating whether we have to enrich error message with InspektorGadget logs

Functions

func BuildBaseEvent

func BuildBaseEvent(namespace string, options ...CommonDataOption) eventtypes.Event

func BuildBaseEventK8s added in v0.26.0

func BuildBaseEventK8s(namespace string, options ...CommonDataOption) eventtypes.Event

func BuildCommonData

func BuildCommonData(namespace string, options ...CommonDataOption) eventtypes.CommonData

func BuildCommonDataK8s added in v0.26.0

func BuildCommonDataK8s(namespace string, options ...CommonDataOption) eventtypes.CommonData

func CheckNamespace added in v0.11.0

func CheckNamespace(ns string) bool

func GenerateTestNamespaceName

func GenerateTestNamespaceName(namespace string) string

GenerateTestNamespaceName returns a string which can be used as unique namespace. The returned value is: namespace_parameter-random_integer.

func GetContainerRuntime added in v0.28.0

func GetContainerRuntime() (string, error)

GetContainerRuntime returns the container runtime the cluster is using.

func GetIPVersion added in v0.21.0

func GetIPVersion(t *testing.T, address string) uint8

GetIPVersion returns the version of the IP, 4 or 6. It makes the test fail in case of error. Based on https://stackoverflow.com/a/48519490

func GetPodIPsFromLabel added in v0.17.0

func GetPodIPsFromLabel(t *testing.T, ns string, label string) []string

func GetPodNode added in v0.15.0

func GetPodNode(t *testing.T, ns string, podname string) string

func GetPodUID added in v0.19.0

func GetPodUID(t *testing.T, ns, podname string) string

func GetSeed added in v0.22.0

func GetSeed() int64

func GetTestPodIP

func GetTestPodIP(t *testing.T, ns string, podname string) string

func IsDockerRuntime added in v0.19.0

func IsDockerRuntime(t *testing.T) bool

IsDockerRuntime checks whether the container runtime of the first node in the Kubernetes cluster is Docker or not.

func PrintLogsFn added in v0.14.0

func PrintLogsFn(namespaces ...string) func(t *testing.T)

PrintLogsFn returns a function that print logs in case the test fails.

func RunTestSteps added in v0.12.0

func RunTestSteps(steps []TestStep, t *testing.T, options ...Option)

RunTestSteps is used to run a list of test steps with stopping/clean up logic. executeBeforeCleanup is executed before calling the cleanup functions, it can be use for instance to print extra logs when the test fails.

func StartRegistry added in v0.25.0

func StartRegistry(t *testing.T, name string) testutils.Container

func WithCbBeforeCleanup added in v0.14.0

func WithCbBeforeCleanup(f func(t *testing.T)) func(opts *runTestStepsOpts)

Types

type Command

type Command struct {
	// Name of the command to be run, used to give information.
	Name string

	// Cmd is a string of the command which will be run.
	Cmd string

	// ExpectedString contains the exact expected output of the command.
	ExpectedString string

	// ExpectedRegexp contains a regex used to match against the command output.
	ExpectedRegexp string

	// ValidateOutput is a function used to verify the output. It must make the test fail in
	// case of error.
	ValidateOutput func(t *testing.T, output string)

	// Cleanup indicates this command is used to clean resource and should not be
	// skipped even if previous commands failed.
	Cleanup bool

	// StartAndStop indicates this command should first be started then stopped.
	// It corresponds to gadget like execsnoop which wait user to type Ctrl^C.
	StartAndStop bool
	// contains filtered or unexported fields
}

func BusyboxPodCommand

func BusyboxPodCommand(namespace, cmd string) *Command

BusyboxPodCommand returns a Command that creates a pod and runs "cmd" in it.

func BusyboxPodRepeatCommand

func BusyboxPodRepeatCommand(namespace, cmd string) *Command

BusyboxPodRepeatCommand returns a Command that creates a pod and runs "cmd" each 0.1 seconds inside the pod.

func CreateTestNamespaceCommand

func CreateTestNamespaceCommand(namespace string) *Command

CreateTestNamespaceCommand returns a Command which creates a namespace whom name is given as parameter.

func DeleteRemainingNamespacesCommand

func DeleteRemainingNamespacesCommand() *Command

DeleteRemainingNamespacesCommand returns a Command which deletes a namespace whom name is given as parameter.

func DeleteTestNamespaceCommand

func DeleteTestNamespaceCommand(namespace string) *Command

DeleteTestNamespaceCommand returns a Command which deletes a namespace whom name is given as parameter.

func DeploySPO

func DeploySPO(limitReplicas, patchWebhookConfig, bestEffortResourceMgmt bool) *Command

func JobCommand added in v0.23.0

func JobCommand(jobname, image, namespace, command string, commandArgs ...string) *Command

JobCommand returns a Command which runs a job with a specified image, command and args

func PodCommand

func PodCommand(podname, image, namespace, command, commandArgs string) *Command

PodCommand returns a Command that starts a pod with a specified image, command and args

func SleepForSecondsCommand added in v0.11.0

func SleepForSecondsCommand(seconds int) *Command

SleepForSecondsCommand returns a Command which sleeps for given seconds

func WaitUntilJobCompleteCommand added in v0.23.0

func WaitUntilJobCompleteCommand(namespace string, jobname string) *Command

WaitUntilJobCompleteCommand returns a Command which waits until the job with the specified name in the given namespace is complete.

func WaitUntilPodReadyCommand

func WaitUntilPodReadyCommand(namespace string, podname string) *Command

WaitUntilPodReadyCommand returns a Command which waits until pod with the specified name in the given as parameter namespace is ready.

func WaitUntilPodReadyOrOOMKilledCommand added in v0.27.0

func WaitUntilPodReadyOrOOMKilledCommand(namespace string, podname string) *Command

WaitUntilPodReadyOrOOMKilledCommand returns a Command which waits until pod with the specified name in the given as parameter namespace is ready or was oomkilled.

func WaitUntilTestPodReadyCommand

func WaitUntilTestPodReadyCommand(namespace string) *Command

WaitUntilTestPodReadyCommand returns a Command which waits until test-pod in the given as parameter namespace is ready.

func WaitUntilTestPodReadyOrOOMKilledCommand added in v0.27.0

func WaitUntilTestPodReadyOrOOMKilledCommand(namespace string) *Command

WaitUntilTestPodReadyOrOOMKilledCommand returns a Command which waits until test-pod in the given as parameter namespace is ready or was oomkilled.

func (*Command) DisplayName added in v0.28.0

func (c *Command) DisplayName() string

func (*Command) IsCleanup added in v0.12.0

func (c *Command) IsCleanup() bool

func (*Command) IsStartAndStop added in v0.12.0

func (c *Command) IsStartAndStop() bool

func (*Command) KillWithoutTest

func (c *Command) KillWithoutTest() error

KillWithoutTest kills a Command started with StartWithoutTest() or RunWithoutTest() and we do not need to verify its output. This is thought to be used in TestMain().

func (*Command) Run

func (c *Command) Run(t *testing.T)

Run runs the Command on the given as parameter test.

func (*Command) RunWithoutTest

func (c *Command) RunWithoutTest() error

RunWithoutTest runs the Command, this is thought to be used in TestMain().

func (*Command) Running added in v0.12.0

func (c *Command) Running() bool

func (*Command) Start

func (c *Command) Start(t *testing.T)

Start starts the Command on the given as parameter test, you need to wait it using Stop().

func (*Command) StartWithoutTest

func (c *Command) StartWithoutTest() error

StartWithoutTest starts the Command, this is thought to be used in TestMain().

func (*Command) Stop

func (c *Command) Stop(t *testing.T)

Stop stops a Command previously started with Start(). To do so, it Kill() the process corresponding to this Cmd and then wait for its termination. Cmd output is then checked with regard to ExpectedString and ExpectedRegexp

func (*Command) WaitWithoutTest

func (c *Command) WaitWithoutTest() error

WaitWithoutTest waits for a Command that was started with StartWithoutTest(), this is thought to be used in TestMain().

type CommonDataOption added in v0.19.0

type CommonDataOption func(commonData *eventtypes.CommonData)

func WithContainerImageName added in v0.19.0

func WithContainerImageName(imageName string, isDockerRuntime bool) CommonDataOption

WithContainerImageName sets the ContainerImageName to facilitate the tests

func WithPodLabels added in v0.26.0

func WithPodLabels(podName string, namespace string, enable bool) CommonDataOption

WithPodLabels sets the PodLabels to facilitate the tests

func WithRuntimeMetadata added in v0.19.0

func WithRuntimeMetadata(runtime string) CommonDataOption

WithRuntimeMetadata sets the runtime and container name in the common data. Notice the container name is taken from the Kubernetes metadata.

type Option added in v0.14.0

type Option func(*runTestStepsOpts)

type TestComponent added in v0.12.0

type TestComponent string
const (
	InspektorGadgetTestComponent TestComponent = "$KUBECTL_GADGET"
	IgTestComponent              TestComponent = "ig"
)

type TestStep added in v0.12.0

type TestStep interface {
	// DisplayName returns a short descriptive name for the step.
	DisplayName() string

	// Run runs the step and wait its completion.
	Run(t *testing.T)

	// Start starts the step and immediately returns, it does wait until
	// its completion, use Stop() for that.
	Start(t *testing.T)

	// Stop stops the step and waits its completion.
	Stop(t *testing.T)

	// IsCleanup returns true if the step is used to clean resource and
	// should not be skipped even if previous commands failed.
	IsCleanup() bool

	// IsStartAndStop returns true if the step should first be started then
	// stopped after some time.
	IsStartAndStop() bool

	// Running returns true if the step has been started.
	Running() bool
}

TestStep allows combining different steps (e.g command, container creation) to allow simplified/consistent flow for tests via RunTestSteps

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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