e2e

package
v1.0.2 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	OperationCreate = "create"
	OperationUpdate = "update"
	OperationGet    = "get"
	OperationList   = "list"
	OperationDelete = "delete"
	OperationAll    = "all"
)

Operation constants for RBAC testing

View Source
const LONGTIMEOUT = "10m"
View Source
const POLLING = "250ms"
View Source
const POLLINGLONG = "1s"
View Source
const TIMEOUT = "5m"

Variables

View Source
var (
	InvalidRenderedVersionErr = fmt.Errorf("invalid rendered version")
)

Functions

func Cleanup added in v0.10.0

func Cleanup(h *Harness)

Cleanup performs standard harness cleanup and removes VMs from the global pool This should be used for rollout tests and other scenarios where VMs are created with custom worker IDs

func ConditionExists added in v0.7.0

func ConditionExists(d *v1beta1.Device, condType v1beta1.ConditionType, condStatus v1beta1.ConditionStatus, condReason string) bool

ConditionExists checks if a specific condition exists for the device with the given type, status, and reason.

func ConditionStatusExists added in v0.9.0

func ConditionStatusExists(conditions []v1beta1.Condition, condType v1beta1.ConditionType, status v1beta1.ConditionStatus) bool

ConditionStatusExists returns true if the specified type and status exists on the condition slice

func CreateFailingServiceOnDevice added in v1.0.0

func CreateFailingServiceOnDevice(h *Harness, serviceName string) error

func ExecuteReadOnlyResourceOperations added in v0.10.0

func ExecuteReadOnlyResourceOperations(harness *Harness, resourceTypes []string, shouldSucceed bool) error

ExecuteReadOnlyResourceOperations tests read-only operations for the given resource types shouldSucceed determines whether the operations are expected to succeed or fail

func ExecuteResourceOperations added in v0.10.0

func ExecuteResourceOperations(ctx context.Context, harness *Harness, resourceTypes []string, shouldSucceed bool, testLabels *map[string]string, namespace string, operations []string) error

ExecuteResourceOperations tests all CRUD operations for the given resource types shouldSucceed determines whether the operations are expected to succeed or fail

func ExtractAuthURL added in v1.0.0

func ExtractAuthURL(provider *v1beta1.AuthProvider) string

ExtractAuthURL extracts the authentication URL from an AuthProvider based on its type

func GetBaseDiskPath added in v0.10.0

func GetBaseDiskPath() (string, error)

GetBaseDiskPath finds the base qcow2 disk path

func GetContext added in v1.0.0

func GetContext() (string, error)

GetContext returns the Kubernetes context (KIND or OCP) or an error

func GetDeviceConfig added in v0.6.0

func GetDeviceConfig[T any](device *v1beta1.Device, configType v1beta1.ConfigProviderType,
	asConfig func(v1beta1.ConfigProviderSpec) (T, error)) (T, error)

GetDeviceConfig is a generic helper function to retrieve device configurations

func GetRenderedVersion added in v0.9.0

func GetRenderedVersion(device *v1beta1.Device) (int, error)

func GetWorkerContext added in v0.10.0

func GetWorkerContext() context.Context

GetWorkerContext retrieves the context for the current worker.

func GinkgoBeforeSuite added in v0.10.0

func GinkgoBeforeSuite()

GinkgoBeforeSuite is a convenience function that sets up worker harness in BeforeSuite. Use this in your test suite's BeforeSuite if you want a simple setup.

func HaveReason added in v0.10.0

func HaveReason(expected string) types.GomegaMatcher

HaveReason returns a type-safe Gomega matcher for the Condition's Reason field.

func HaveStatus added in v0.10.0

func HaveStatus(expected v1beta1.ConditionStatus) types.GomegaMatcher

HaveStatus returns a type-safe Gomega matcher for the Condition's Status field.

func IsDeviceUpdateObserved added in v1.0.0

func IsDeviceUpdateObserved(device *v1beta1.Device, expectedVersion int) bool

IsDeviceUpdateObserved returns true if the device is updating or has already updated to the expected version.

func RemoveSystemdService added in v1.0.0

func RemoveSystemdService(h *Harness, serviceName string) error

RemoveSystemdService disables and removes a systemd unit file on the device and reloads systemd.

func RemoveVMFromPool added in v0.10.0

func RemoveVMFromPool(workerID int) error

RemoveVMFromPool removes a VM from the global pool for the given worker ID Note: This should be called AFTER harness.Cleanup() which handles VM destruction

func RestoreServiceOnDevice added in v1.0.0

func RestoreServiceOnDevice(h *Harness, serviceName string) error

func SetupVMForWorker added in v0.10.0

func SetupVMForWorker(workerID int, tempDir string, sshPortBase int) (vm.TestVMInterface, error)

SetupVMForWorker is a convenience function that initializes the VM pool and returns a VM for the worker. VMs are created on-demand if they don't already exist in the pool.

func StopServiceOnDevice added in v1.0.0

func StopServiceOnDevice(h *Harness, serviceName string) error

Types

type ConsoleSession added in v0.9.0

type ConsoleSession struct {
	Stdin  io.WriteCloser
	Stdout *Buffer
}

ConsoleSession represents a PTY console session to a device

func (*ConsoleSession) Close added in v0.9.0

func (cs *ConsoleSession) Close()

Close terminates the console session

func (*ConsoleSession) MustExpect added in v0.9.0

func (cs *ConsoleSession) MustExpect(pattern string)

MustExpect waits for a pattern to appear in the console output

func (*ConsoleSession) MustSend added in v0.9.0

func (cs *ConsoleSession) MustSend(cmd string)

MustSend sends a command to the console session

type GitServerConfig added in v0.10.0

type GitServerConfig struct {
	Host     string
	Port     int
	User     string
	Password string
	SSHKey   string // path to SSH private key if using key auth
}

GitServerConfig holds configuration for the git server

type Harness

type Harness struct {
	Client  *apiclient.ClientWithResponses
	Context context.Context
	Cluster kubernetes.Interface

	VM vm.TestVMInterface
	// contains filtered or unexported fields
}

func GetWorkerHarness added in v0.10.0

func GetWorkerHarness() *Harness

GetWorkerHarness retrieves the harness for the current worker. This should be called from your test suite's BeforeEach or tests.

func NewTestHarnessWithVMPool added in v0.10.0

func NewTestHarnessWithVMPool(ctx context.Context, workerID int) (*Harness, error)

NewTestHarnessWithVMPool creates a new test harness with VM pool management. This centralizes the VM pool logic that was previously duplicated in individual tests.

func NewTestHarnessWithoutVM added in v0.10.0

func NewTestHarnessWithoutVM(ctx context.Context) (*Harness, error)

func SetupWorkerHarness added in v0.10.0

func SetupWorkerHarness() (*Harness, context.Context, error)

SetupWorkerHarness sets up a VM and harness for the current worker. This should be called in BeforeSuite.

func (*Harness) AddConfigToDeviceWithRetries added in v0.9.0

func (h *Harness) AddConfigToDeviceWithRetries(deviceId string, config v1beta1.ConfigProviderSpec) error

func (*Harness) AddLabelsToYAML added in v0.10.0

func (h *Harness) AddLabelsToYAML(yamlContent string, addLabels map[string]string) (string, error)

TODO: Modify addTestLabelsToYAML to include other labels and remove addLabelsToYAML

func (*Harness) ApiEndpoint

func (h *Harness) ApiEndpoint() string

func (*Harness) ApplyResource added in v0.10.0

func (h *Harness) ApplyResource(yamlPath string) (string, error)

func (*Harness) ApplyTempIfSuggested added in v1.0.0

func (h *Harness) ApplyTempIfSuggested(out string, cliErr error) error

ApplyTempIfSuggested looks for "Your changes have been saved to:" in CLI output. If found, it automatically applies the saved file to complete the edit flow.

func (*Harness) ApproveEnrollment

func (h *Harness) ApproveEnrollment(id string, approval *v1beta1.EnrollmentRequestApproval)

func (*Harness) CLI

func (h *Harness) CLI(args ...string) (string, error)

func (*Harness) CLIWithEnvAndShell added in v0.10.0

func (h *Harness) CLIWithEnvAndShell(env map[string]string, shellCommand string) (string, error)

CLIWithEnvAndShell runs a shell command with custom environment variables (for complex commands with pipes)

func (*Harness) CLIWithStdin

func (h *Harness) CLIWithStdin(stdin string, args ...string) (string, error)

func (*Harness) ChangeK8sContext added in v0.10.0

func (h *Harness) ChangeK8sContext(ctx context.Context, k8sContext string) (string, error)

ChangeK8sContext changes the kubernetes context

func (*Harness) CheckApplicationComposeFileExist added in v0.8.0

func (h *Harness) CheckApplicationComposeFileExist(applicationName string, ComposeFile string) error

func (*Harness) CheckApplicationDirectoryExist added in v0.8.0

func (h *Harness) CheckApplicationDirectoryExist(applicationName string) error

func (Harness) CheckApplicationStatus added in v0.8.0

func (h Harness) CheckApplicationStatus(deviceId string, applicationName string) (v1beta1.ApplicationStatusType, error)

func (*Harness) CheckDeviceStatus added in v0.6.0

func (h *Harness) CheckDeviceStatus(deviceId string, status v1beta1.DeviceSummaryStatusType) (*v1beta1.Device, error)

Check that the device summary status is equal to the status input

func (*Harness) CheckEnvInjectedToApplication added in v0.8.0

func (h *Harness) CheckEnvInjectedToApplication(envVarName string, image string) (string, error)

func (*Harness) CheckRunningContainers added in v0.7.0

func (h *Harness) CheckRunningContainers() (string, error)

CheckRunningContainers verifies the expected number of running containers on the VM.

func (*Harness) CleanUpAllTestResources added in v0.10.0

func (h *Harness) CleanUpAllTestResources() error

func (*Harness) CleanUpResource added in v0.10.0

func (h *Harness) CleanUpResource(resourceType string, resourceName string) (string, error)

func (*Harness) CleanUpTestResources added in v0.10.0

func (h *Harness) CleanUpTestResources(resourceTypes ...string) error

CleanUpTestResources deletes only resources that have the test label for the current test

func (*Harness) Cleanup

func (h *Harness) Cleanup(printConsole bool)

Harness cleanup, this will delete the VM and cancel the context if something failed we try to gather logs, console logs are optional and can be enabled by setting printConsole to true

func (*Harness) CleanupClusterRoles added in v0.10.0

func (h *Harness) CleanupClusterRoles(ctx context.Context, kubernetesClient kubernetes.Interface, clusterRoles []string, clusterRoleBindings []string)

func (*Harness) CleanupGitRepositories added in v0.10.0

func (h *Harness) CleanupGitRepositories() error

CleanupGitRepositories removes all git repositories created by the harness

func (*Harness) CleanupRoles added in v0.10.0

func (h *Harness) CleanupRoles(ctx context.Context, kubernetesClient kubernetes.Interface, roles []string, roleBindings []string, flightCtlNs string)

func (*Harness) CloneGitRepositoryFromServer added in v0.10.0

func (h *Harness) CloneGitRepositoryFromServer(repoName, localPath string) error

CloneGitRepositoryFromServer clones a repository from the git server to a local working directory

func (*Harness) CreateClusterRole added in v0.10.0

func (h *Harness) CreateClusterRole(ctx context.Context, kubernetesClient kubernetes.Interface, clusterRole *rbacv1.ClusterRole) (*rbacv1.ClusterRole, error)

func (*Harness) CreateClusterRoleBinding added in v0.10.0

func (h *Harness) CreateClusterRoleBinding(ctx context.Context, kubernetesClient kubernetes.Interface, clusterRoleBinding *rbacv1.ClusterRoleBinding) (*rbacv1.ClusterRoleBinding, error)

func (*Harness) CreateDeviceConfigInGitRepo added in v0.10.0

func (h *Harness) CreateDeviceConfigInGitRepo(repoName, deviceName string, deviceSpec v1beta1.DeviceSpec) error

CreateDeviceConfigInGitRepo creates a device configuration and pushes it to a git repository

func (*Harness) CreateFleetConfigInGitRepo added in v0.10.0

func (h *Harness) CreateFleetConfigInGitRepo(repoName, fleetName string, fleetSpec v1beta1.FleetSpec) error

CreateFleetConfigInGitRepo creates a fleet configuration and pushes it to a git repository

func (*Harness) CreateFleetDeviceSpec added in v0.8.1

func (h *Harness) CreateFleetDeviceSpec(deviceImageTag string, additionalConfigs ...v1beta1.ConfigProviderSpec) (v1beta1.DeviceSpec, error)

func (*Harness) CreateGitRepository added in v0.10.0

func (h *Harness) CreateGitRepository(repoName string, repositorySpec v1beta1.RepositorySpec) error

CreateRepository creates a Repository resource pointing to the git server repository

func (*Harness) CreateGitRepositoryOnServer added in v0.10.0

func (h *Harness) CreateGitRepositoryOnServer(repoName string) error

CreateGitRepositoryOnServer creates a new Git repository on the e2e git server

func (*Harness) CreateGitRepositoryWithContent added in v0.10.0

func (h *Harness) CreateGitRepositoryWithContent(repoName, filePath, content string, repositorySpec v1beta1.RepositorySpec) error

CreateGitRepositoryWithContent creates a git repository with initial content

func (*Harness) CreateOrUpdateTestFleet added in v0.6.0

func (h *Harness) CreateOrUpdateTestFleet(testFleetName string, fleetSpecOrSelector interface{}, deviceSpec ...v1beta1.DeviceSpec) error

Create a test fleet resource

func (*Harness) CreateRepository added in v0.6.0

func (h *Harness) CreateRepository(repositorySpec v1beta1.RepositorySpec, metadata v1beta1.ObjectMeta) error

Create a repository resource

func (*Harness) CreateResource added in v0.10.0

func (h *Harness) CreateResource(resourceType string) (string, string, []byte, error)

func (*Harness) CreateResourceSync added in v0.10.0

func (h *Harness) CreateResourceSync(name, repoName string, spec v1beta1.ResourceSyncSpec) error

CreateResourceSync creates a ResourceSync resource that points to a git repository

func (*Harness) CreateRole added in v0.10.0

func (h *Harness) CreateRole(ctx context.Context, kubernetesClient kubernetes.Interface, flightCtlNs string, role *rbacv1.Role) (*rbacv1.Role, error)

func (*Harness) CreateRoleBinding added in v0.10.0

func (h *Harness) CreateRoleBinding(ctx context.Context, kubernetesClient kubernetes.Interface, flightCtlNs string, roleBinding *rbacv1.RoleBinding) (*rbacv1.RoleBinding, error)

func (*Harness) CreateTestFleetWithConfig added in v0.6.0

func (h *Harness) CreateTestFleetWithConfig(testFleetName string, testFleetSelector v1beta1.LabelSelector, configProviderSpec v1beta1.ConfigProviderSpec) error

Create a test fleet with a configuration

func (*Harness) DeleteClusterRole added in v0.10.0

func (h *Harness) DeleteClusterRole(ctx context.Context, client kubernetes.Interface, clusterRoleName string) error

func (*Harness) DeleteClusterRoleBinding added in v0.10.0

func (h *Harness) DeleteClusterRoleBinding(ctx context.Context, client kubernetes.Interface, clusterRoleBindingName string) error

func (*Harness) DeleteFleet added in v0.9.0

func (h *Harness) DeleteFleet(testFleetName string) error

func (*Harness) DeleteGitRepositoryOnServer added in v0.10.0

func (h *Harness) DeleteGitRepositoryOnServer(repoName string) error

DeleteGitRepositoryOnServer deletes a Git repository from the e2e git server

func (*Harness) DeleteRepository added in v0.9.0

func (h *Harness) DeleteRepository(name string) error

DeleteRepository deletes the specified repository

func (*Harness) DeleteResourceSync added in v0.10.0

func (h *Harness) DeleteResourceSync(name string) error

DeleteResourceSync deletes the specified ResourceSync

func (*Harness) DeleteRole added in v0.10.0

func (h *Harness) DeleteRole(ctx context.Context, client kubernetes.Interface, namespace string, roleName string) error

func (*Harness) DeleteRoleBinding added in v0.10.0

func (h *Harness) DeleteRoleBinding(ctx context.Context, client kubernetes.Interface, namespace string, roleBindingName string) error

func (*Harness) EditWithRetry added in v1.0.0

func (h *Harness) EditWithRetry(format, editor, resource string) (string, error)

EditWithRetry runs: flightctl edit -o <format> --editor <editor> <resource> Retries briefly if the server responds with a Conflict (resourceVersion race).

func (*Harness) EnableTPMForDevice added in v0.10.0

func (h *Harness) EnableTPMForDevice() error

EnableTPMForDevice configures the agent to use TPM for device identity. This reads existing agent config, updates TPM settings, and writes it back.

func (*Harness) EnrollAndWaitForOnlineStatus added in v0.4.0

func (h *Harness) EnrollAndWaitForOnlineStatus(labels ...map[string]string) (string, *v1beta1.Device)

func (*Harness) EnsureDeviceContents added in v0.9.0

func (h *Harness) EnsureDeviceContents(deviceId string, description string, condition func(*v1beta1.Device) bool, timeout string)

EnsureDeviceContents ensures that the contents of the device match the specified condition for the entire timeout

func (*Harness) FixNetworkFailure added in v0.8.1

func (h *Harness) FixNetworkFailure() error

func (*Harness) FixNetworkFailureForCLI added in v0.8.1

func (h *Harness) FixNetworkFailureForCLI(ip, port string) error

FixNetworkFailureForCLI removes an entry from iptables if it exists. returns an error if no entry for the ip:port combo exists

func (*Harness) GetAgentVersion added in v0.10.0

func (h *Harness) GetAgentVersion() (string, error)

GetAgentVersion returns the agent version from the flightctl-agent version command

func (*Harness) GetAgentVersionFromLogs added in v0.10.0

func (h *Harness) GetAgentVersionFromLogs() (string, error)

GetAgentVersionFromLogs returns the agent version from the flightctl-agent service logs

func (*Harness) GetCertificateSigningRequestByYaml added in v0.4.0

func (h *Harness) GetCertificateSigningRequestByYaml(csrYaml string) v1beta1.CertificateSigningRequest

Wrapper function for CertificateSigningRequest

func (*Harness) GetCurrentDeviceGeneration added in v0.6.0

func (h *Harness) GetCurrentDeviceGeneration(deviceId string) (deviceRenderedVersionInt int64, err error)

func (*Harness) GetCurrentDeviceRenderedVersion added in v0.4.0

func (h *Harness) GetCurrentDeviceRenderedVersion(deviceId string) (int, error)

func (*Harness) GetDefaultK8sContext added in v0.10.0

func (h *Harness) GetDefaultK8sContext() (string, error)

GetDefaultK8sContext returns the a K8s context with default in its name

func (*Harness) GetDevice added in v0.6.0

func (h *Harness) GetDevice(deviceId string) (*v1beta1.Device, error)

Get device with response

func (*Harness) GetDeviceByYaml added in v0.4.0

func (h *Harness) GetDeviceByYaml(deviceYaml string) v1beta1.Device

Wrapper function for Device

func (*Harness) GetDeviceFromTestContext added in v0.10.0

func (h *Harness) GetDeviceFromTestContext() (string, *v1beta1.Device, bool)

GetDeviceFromTestContext retrieves device data from the test context

func (*Harness) GetDeviceGitConfig added in v0.6.0

func (h *Harness) GetDeviceGitConfig(device *v1beta1.Device, configName string) (v1beta1.GitConfigProviderSpec, error)

Get GitConfig

func (*Harness) GetDeviceHttpConfig added in v0.6.0

func (h *Harness) GetDeviceHttpConfig(device *v1beta1.Device, configName string) (v1beta1.HttpConfigProviderSpec, error)

Get HttpConfig

func (*Harness) GetDeviceInlineConfig added in v0.6.0

func (h *Harness) GetDeviceInlineConfig(device *v1beta1.Device, configName string) (v1beta1.InlineConfigProviderSpec, error)

Get InlineConfig

func (*Harness) GetDeviceOsImage added in v0.6.0

func (h *Harness) GetDeviceOsImage(device *v1beta1.Device) (image string, err error)

Get an http config of a device resource

func (*Harness) GetDeviceSystemInfo added in v0.9.0

func (h *Harness) GetDeviceSystemInfo(deviceID string) *v1beta1.DeviceSystemInfo

GetDeviceSystemInfo returns the device system info with proper error handling

func (*Harness) GetDeviceWithStatusSummary added in v0.4.0

func (h *Harness) GetDeviceWithStatusSummary(enrollmentID string) (v1beta1.DeviceSummaryStatusType, error)

func (*Harness) GetDeviceWithStatusSystem

func (h *Harness) GetDeviceWithStatusSystem(enrollmentID string) (*apiclient.GetDeviceResponse, error)

func (*Harness) GetDeviceWithUpdateStatus added in v0.4.0

func (h *Harness) GetDeviceWithUpdateStatus(enrollmentID string) (v1beta1.DeviceUpdatedStatusType, error)

func (*Harness) GetEnrollmentIDFromServiceLogs added in v0.10.0

func (h *Harness) GetEnrollmentIDFromServiceLogs(serviceName string) string

GetEnrollmentIDFromServiceLogs returns the enrollment ID from the service logs using journalctl. This is more reliable than console output as it captures service output regardless of how the service is started.

func (*Harness) GetEnrollmentRequestByYaml added in v0.4.0

func (h *Harness) GetEnrollmentRequestByYaml(erYaml string) *v1beta1.EnrollmentRequest

Wrapper function for EnrollmentRequest

func (*Harness) GetFleet added in v0.9.0

func (h *Harness) GetFleet(fleetName string) (*v1beta1.Fleet, error)

func (*Harness) GetFleetByYaml added in v0.4.0

func (h *Harness) GetFleetByYaml(fleetYaml string) v1beta1.Fleet

Wrapper function for Fleet

func (*Harness) GetFlightctlAgentLogs added in v0.10.0

func (h *Harness) GetFlightctlAgentLogs() (string, error)

GetServiceLogs returns the logs from the specified service using journalctl. This is useful for debugging service output and capturing logs from the latest service invocation.

func (*Harness) GetFlightctlPath added in v0.10.0

func (h *Harness) GetFlightctlPath() string

GetFlightctlPath returns the path to the flightctl binary

func (*Harness) GetGitRepoURL added in v0.10.0

func (h *Harness) GetGitRepoURL(repoName string) (string, error)

GetGitRepoURL returns the SSH URL for a git repository on the server

func (*Harness) GetGitServerConfig added in v0.10.0

func (h *Harness) GetGitServerConfig() GitServerConfig

GetGitServerConfig returns the configuration for the e2e git server

func (*Harness) GetK8sApiEndpoint added in v0.10.0

func (h *Harness) GetK8sApiEndpoint(ctx context.Context, k8sContext string) (string, error)

GetK8sApiEndpoint returns the API endpoint for a given K8s context

func (*Harness) GetRepository added in v0.10.0

func (h *Harness) GetRepository(repositoryName string) (*v1beta1.Repository, error)

func (*Harness) GetRepositoryByYaml added in v0.4.0

func (h *Harness) GetRepositoryByYaml(repoYaml string) v1beta1.Repository

Wrapper function for Repository

func (*Harness) GetResourceSyncByYaml added in v0.4.0

func (h *Harness) GetResourceSyncByYaml(rSyncYaml string) v1beta1.ResourceSync

Wrapper function for ResourceSync

func (*Harness) GetResourcesByName added in v0.8.1

func (h *Harness) GetResourcesByName(resourceType string, resourceName ...string) (string, error)

Wrapper function for Shell command to get resources by name

func (*Harness) GetRolloutStatus added in v0.8.1

func (h *Harness) GetRolloutStatus(fleetName string) (v1beta1.Condition, error)

func (*Harness) GetSelectedDevicesForBatch added in v0.8.1

func (h *Harness) GetSelectedDevicesForBatch(fleetName string) ([]*v1beta1.Device, error)

func (*Harness) GetServiceLogs added in v0.10.0

func (h *Harness) GetServiceLogs(serviceName string) (string, error)

GetServiceLogs returns the logs from the specified service using journalctl. This is useful for debugging service output and capturing logs from the latest service invocation.

func (*Harness) GetTestContext added in v0.10.0

func (h *Harness) GetTestContext() context.Context

GetTestContext returns the current test context. If no test context has been set, it returns the suite context.

func (*Harness) GetTestDataFromContext added in v0.10.0

func (h *Harness) GetTestDataFromContext(key string) (interface{}, bool)

GetTestDataFromContext retrieves arbitrary test data from the context using a string key

func (*Harness) GetTestIDFromContext added in v0.10.0

func (h *Harness) GetTestIDFromContext() string

GetTestIDFromContext retrieves the test ID from the context If no test ID is found, it indicates a programming error and will cause the test to fail

func (*Harness) GetUnavailableDevicesPerGroup added in v0.8.1

func (h *Harness) GetUnavailableDevicesPerGroup(fleetName string, groupBy []string) (map[string][]*v1beta1.Device, error)

func (*Harness) GetUpdatedDevices added in v0.8.1

func (h *Harness) GetUpdatedDevices(fleetName string) ([]*v1beta1.Device, error)

func (*Harness) GetVMFromPool added in v0.10.0

func (h *Harness) GetVMFromPool(workerID int) (vm.TestVMInterface, error)

GetVMFromPool retrieves a VM from the pool for the given worker ID. VMs are created on-demand if they don't already exist in the pool.

func (*Harness) GetVersionsFromCLI added in v0.10.0

func (h *Harness) GetVersionsFromCLI() (clientVersion, serverVersion, agentVersion string, err error)

GetVersionsFromCLI returns client, server, and agent versions from the flightctl CLI version command

func (*Harness) GetYAML added in v1.0.0

func (h *Harness) GetYAML(name string) (string, error)

GetYAML returns the YAML output of a given resource name via Harness.CLI. No test framework calls inside; returns (string, error).

func (*Harness) HeadlessEditorWrapper added in v1.0.0

func (h *Harness) HeadlessEditorWrapper(marker string) (string, error)

func (*Harness) ManageResource added in v0.7.0

func (h *Harness) ManageResource(operation, resource string, args ...string) (string, error)

ManageResource performs an operation ("apply", "delete", "approve" or "deny") on a specified resource.

func (*Harness) MarkClientAccessTokenExpired added in v0.8.1

func (h *Harness) MarkClientAccessTokenExpired(filePath string) error

MarkClientAccessTokenExpired updates the client configuration at the specified path by marking the token as expired If no path is supplied, the default config path will be used

func (*Harness) NewConsoleSession added in v0.9.0

func (h *Harness) NewConsoleSession(deviceID string) *ConsoleSession

NewConsoleSession starts a PTY console session to the specified device.

func (*Harness) PrepareNextDeviceGeneration added in v0.6.0

func (h *Harness) PrepareNextDeviceGeneration(deviceId string) (int64, error)

func (*Harness) PrepareNextDeviceVersion added in v0.4.0

func (h *Harness) PrepareNextDeviceVersion(deviceId string) (int, error)

func (*Harness) PushContentToGitServerRepo added in v0.10.0

func (h *Harness) PushContentToGitServerRepo(repoName, filePath, content, commitMessage string) error

PushContentToGitServerRepo pushes content to a git repository on the server

func (*Harness) ReadClientConfig added in v0.8.1

func (h *Harness) ReadClientConfig(filePath string) (*client.Config, error)

ReadClientConfig returns the client config for at the specified location. The default config path is used if no path is specified

func (*Harness) ReadPrimaryVMAgentLogs added in v0.9.0

func (h *Harness) ReadPrimaryVMAgentLogs(since string, unit string) (string, error)

ReadPrimaryVMAgentLogs reads flightctl-agent journalctl logs from the primary VM

func (*Harness) RegistryEndpoint added in v0.4.0

func (h *Harness) RegistryEndpoint() string

func (*Harness) ReloadFlightCtlAgent added in v0.10.0

func (h *Harness) ReloadFlightCtlAgent() error

ReloadFlightCtlAgent reloads the flightctl-agent service

func (*Harness) ReplaceRepository added in v0.9.0

func (h *Harness) ReplaceRepository(repositorySpec v1beta1.RepositorySpec, metadata v1beta1.ObjectMeta) error

ReplaceRepository ensures the specified repository exists and is updated to the appropriate values

func (*Harness) ReplaceResourceSync added in v0.10.0

func (h *Harness) ReplaceResourceSync(name, repoName string, spec v1beta1.ResourceSyncSpec) error

ReplaceResourceSync replaces an existing ResourceSync resource

func (*Harness) ReplaceVariableInString added in v0.4.0

func (h *Harness) ReplaceVariableInString(s string, old string, new string) string

func (*Harness) ResetAgent added in v0.9.0

func (h *Harness) ResetAgent() error

reset agent

func (*Harness) RestartFlightCtlAgent added in v0.10.0

func (h *Harness) RestartFlightCtlAgent() error

RestartFlightCtlAgent restarts the flightctl-agent service

func (*Harness) RunConsoleCommand added in v0.9.0

func (h *Harness) RunConsoleCommand(deviceID string, flags []string, cmd ...string) (string, error)

RunConsoleCommand executes the flightctl console command for the given device.

flags – optional CLI flags that go before "--" (e.g. "--notty").
cmd   – remote command (and its args) to execute after "--". Must contain
        at least one string; for interactive sessions use NewConsoleSession.

func (*Harness) RunGetDevices added in v0.7.0

func (h *Harness) RunGetDevices(args ...string) (string, error)

RunGetDevices executes "get devices" CLI command with optional arguments.

func (*Harness) RunGetEvents added in v0.8.1

func (h *Harness) RunGetEvents(args ...string) (string, error)

RunGetEvents executes "get events" CLI command with optional arguments.

func (*Harness) RunInteractiveCLI

func (h *Harness) RunInteractiveCLI(args ...string) (io.WriteCloser, io.ReadCloser, error)

func (*Harness) SH added in v0.3.0

func (h *Harness) SH(command string, args ...string) (string, error)

func (*Harness) SHWithStdin added in v0.3.0

func (h *Harness) SHWithStdin(stdin, command string, args ...string) (string, error)

func (*Harness) SetAgentConfig added in v0.10.0

func (h *Harness) SetAgentConfig(cfg *agentcfg.Config) error

SetAgentConfig configures the agent by writing the configuration file. This method should be called before starting the agent.

func (*Harness) SetLabelsForDevice added in v0.9.0

func (h *Harness) SetLabelsForDevice(deviceId string, labels map[string]string) error

func (*Harness) SetLabelsForDeviceMetadata added in v0.10.0

func (h *Harness) SetLabelsForDeviceMetadata(metadata *v1beta1.ObjectMeta, labels map[string]string)

SetLabelsForDeviceMetadata sets labels on device metadata while preserving the test-id label

func (*Harness) SetLabelsForDevicesByIndex added in v0.8.1

func (h *Harness) SetLabelsForDevicesByIndex(deviceIDs []string, labelsList []map[string]string, fleetName string) error

func (*Harness) SetLabelsForFleetMetadata added in v0.10.0

func (h *Harness) SetLabelsForFleetMetadata(metadata *v1beta1.ObjectMeta, labels map[string]string)

SetLabelsForFleetMetadata sets labels on fleet metadata while preserving the test-id label

func (*Harness) SetLabelsForRepositoryMetadata added in v0.10.0

func (h *Harness) SetLabelsForRepositoryMetadata(metadata *v1beta1.ObjectMeta, labels map[string]string)

SetLabelsForRepositoryMetadata sets labels on repository metadata while preserving the test-id label

func (*Harness) SetLabelsForResource added in v0.10.0

func (h *Harness) SetLabelsForResource(metadata *v1beta1.ObjectMeta, labels map[string]string)

SetLabelsForResource sets labels on any resource while preserving the test-id label

func (*Harness) SetTestContext added in v0.10.0

func (h *Harness) SetTestContext(ctx context.Context)

SetTestContext sets the context for the current test. This allows tests to use their own context for operations while keeping the suite context for cleanup operations.

func (*Harness) SetupDeviceWithTPM added in v0.10.0

func (h *Harness) SetupDeviceWithTPM(workerID int) error

SetupDeviceWithTPM prepares a device VM with TPM functionality enabled. This handles the complete TPM setup process in the correct order.

func (*Harness) SetupVMFromPoolAndStartAgent added in v0.10.0

func (h *Harness) SetupVMFromPoolAndStartAgent(workerID int) error

SetupVMFromPoolAndStartAgent sets up a VM from the pool, reverts to pristine snapshot, and starts the agent. This is useful for tests that use the VM pool pattern.

func (*Harness) SimulateNetworkFailure added in v0.8.1

func (h *Harness) SimulateNetworkFailure() error

func (*Harness) SimulateNetworkFailureForCLI added in v0.8.1

func (h *Harness) SimulateNetworkFailureForCLI(ip, port string) (func() error, error)

SimulateNetworkFailureForCLI adds an entry to iptables to drop tcp traffic to the specified port:ip It returns a function that will only execute once to undo the iptables modification

func (*Harness) StartFlightCtlAgent added in v0.10.0

func (h *Harness) StartFlightCtlAgent() error

StartFlightCtlAgent starts the flightctl-agent service

func (*Harness) StartVMAndEnroll

func (h *Harness) StartVMAndEnroll() string

func (*Harness) StopFlightCtlAgent added in v0.10.0

func (h *Harness) StopFlightCtlAgent() error

StopFlightCtlAgent stops the flightctl-agent service

func (*Harness) StoreDeviceInTestContext added in v0.10.0

func (h *Harness) StoreDeviceInTestContext(deviceId string, device *v1beta1.Device)

StoreDeviceInTestContext stores device data in the test context for use within the same test

func (*Harness) StoreTestDataInContext added in v0.10.0

func (h *Harness) StoreTestDataInContext(key string, value interface{})

StoreTestDataInContext stores arbitrary test data in the context using a string key

func (*Harness) TestEnrollmentApproval added in v0.10.0

func (h *Harness) TestEnrollmentApproval(labels ...map[string]string) *v1beta1.EnrollmentRequestApproval

func (*Harness) UpdateApplication added in v0.8.0

func (h *Harness) UpdateApplication(withRetries bool, deviceId string, appName string, appProvider any, envVars map[string]string) error

func (*Harness) UpdateClusterRole added in v0.10.0

func (h *Harness) UpdateClusterRole(ctx context.Context, kubernetesClient kubernetes.Interface, clusterRole *rbacv1.ClusterRole) (*rbacv1.ClusterRole, error)

func (*Harness) UpdateDevice added in v0.6.0

func (h *Harness) UpdateDevice(deviceId string, updateFunction func(*v1beta1.Device)) error

func (*Harness) UpdateDeviceConfigWithRetries added in v0.8.1

func (h *Harness) UpdateDeviceConfigWithRetries(deviceId string, configs []v1beta1.ConfigProviderSpec, nextRenderedVersion int) error

UpdateDeviceConfigWithRetries updates the configuration of a device with retries using the provided harness and config specs. It applies the provided configuration and waits for the device to reach the specified rendered version.

func (*Harness) UpdateDeviceWithRetries added in v0.3.0

func (h *Harness) UpdateDeviceWithRetries(deviceId string, updateFunction func(*v1beta1.Device)) error

func (*Harness) UpdateFleet added in v0.9.0

func (h *Harness) UpdateFleet(fleetName string, updateFunc func(*v1beta1.Fleet)) error

func (*Harness) UpdateFleetWithRetries added in v0.9.0

func (h *Harness) UpdateFleetWithRetries(fleetName string, updateFunction func(*v1beta1.Fleet))

func (*Harness) UpdateGitServerRepository added in v0.10.0

func (h *Harness) UpdateGitServerRepository(repoName, filePath, content, commitMessage string) error

UpdateGitServerRepository updates content in an existing git repository working directory

func (*Harness) UpdateRole added in v0.10.0

func (h *Harness) UpdateRole(ctx context.Context, kubernetesClient kubernetes.Interface, flightCtlNs string, role *rbacv1.Role) (*rbacv1.Role, error)

func (*Harness) UpdateSystemdMatchPatterns added in v1.0.0

func (h *Harness) UpdateSystemdMatchPatterns(deviceID string, patterns []string) error

UpdateSystemdMatchPatterns applies the given match patterns to device.spec.systemd.

func (*Harness) VerifyDeviceTPMAttestationData added in v0.10.0

func (h *Harness) VerifyDeviceTPMAttestationData(device *v1beta1.Device) error

VerifyDeviceTPMAttestationData checks for TPM attestation data in device SystemInfo Virtual TPM provides "tpmVendorInfo", real TPM provides "attestation" Returns error if attestation data is missing or empty

func (*Harness) VerifyEnrollmentTPMAttestationData added in v0.10.0

func (h *Harness) VerifyEnrollmentTPMAttestationData(systemInfo v1beta1.DeviceSystemInfo) error

VerifyEnrollmentTPMAttestationData checks for TPM attestation data in enrollment request SystemInfo Returns error if no TPM attestation data is found

func (*Harness) VerifyTPMFunctionality added in v0.10.0

func (h *Harness) VerifyTPMFunctionality() error

VerifyTPMFunctionality checks that TPM device is accessible and functional.

func (*Harness) WaitForBatchStart added in v0.8.1

func (h *Harness) WaitForBatchStart(fleetName string, batchNumber int)

func (*Harness) WaitForBootstrapAndUpdateToVersion added in v0.4.0

func (h *Harness) WaitForBootstrapAndUpdateToVersion(deviceId string, version string) (*v1beta1.Device, string, error)

func (*Harness) WaitForClusterRegistered added in v0.8.1

func (h *Harness) WaitForClusterRegistered(deviceId string, timeout time.Duration) error

func (*Harness) WaitForDeviceContents added in v0.3.0

func (h *Harness) WaitForDeviceContents(deviceId string, description string, condition func(*v1beta1.Device) bool, timeout string)

func (*Harness) WaitForDeviceNewGeneration added in v0.6.0

func (h *Harness) WaitForDeviceNewGeneration(deviceId string, newGeneration int64) (err error)

func (*Harness) WaitForDeviceNewRenderedVersion added in v0.4.0

func (h *Harness) WaitForDeviceNewRenderedVersion(deviceId string, newRenderedVersionInt int) (err error)

func (*Harness) WaitForEnrollmentRequest

func (h *Harness) WaitForEnrollmentRequest(id string) *v1beta1.EnrollmentRequest

func (*Harness) WaitForFileInDevice added in v0.8.1

func (h *Harness) WaitForFileInDevice(filePath string, timeout string, polling string) (*bytes.Buffer, error)

func (*Harness) WaitForFleetContents added in v0.9.0

func (h *Harness) WaitForFleetContents(fleetName string, description string, condition func(fleet *v1beta1.Fleet) bool, timeout string)

func (*Harness) WaitForFleetUpdateToFail added in v0.8.1

func (h *Harness) WaitForFleetUpdateToFail(fleetName string)

func (*Harness) WaitForResourceSyncStatus added in v0.10.0

func (h *Harness) WaitForResourceSyncStatus(name string, expectedStatus v1beta1.ConditionStatus, timeout string) error

WaitForResourceSyncStatus waits for a ResourceSync to reach a specific status

func (*Harness) WaitForSystemdUnitStatus added in v1.0.0

func (h *Harness) WaitForSystemdUnitStatus(deviceID, unitName string, timeout, polling any) v1beta1.SystemdUnitStatus

WaitForSystemdUnitStatus waits until the requested unit appears in status.systemd and returns it. timeout and polling mirror Gomega Eventually args (string or time.Duration).

func (*Harness) WaitForSystemdUnitsLen added in v1.0.0

func (h *Harness) WaitForSystemdUnitsLen(deviceID string, expectedLen int, timeout, polling any) int

WaitForSystemdUnitsLen waits until status.systemd has the expected number of units. Returns the final length for convenience.

func (*Harness) WaitForTPMInitialization added in v0.10.0

func (h *Harness) WaitForTPMInitialization() error

WaitForTPMInitialization waits for TPM hardware to be ready in the VM. This should be called after VM setup but before agent configuration.

type VMPool added in v0.10.0

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

VMPool manages VMs across all test suites

func GetOrCreateVMPool added in v0.10.0

func GetOrCreateVMPool(config VMPoolConfig) *VMPool

GetOrCreateVMPool returns the global VM pool instance, creating it if necessary

func (*VMPool) CleanupAll added in v0.10.0

func (p *VMPool) CleanupAll() error

CleanupAll cleans up all VMs in the pool

func (*VMPool) CleanupWorkerVM added in v0.10.0

func (p *VMPool) CleanupWorkerVM(workerID int) error

CleanupWorkerVM cleans up the VM for a specific worker

func (*VMPool) GetVMForWorker added in v0.10.0

func (p *VMPool) GetVMForWorker(workerID int) (vm.TestVMInterface, error)

GetVMForWorker returns a VM for the given worker ID, creating it on-demand if it doesn't exist. This method supports lazy VM creation to optimize resource usage.

type VMPoolConfig added in v0.10.0

type VMPoolConfig struct {
	BaseDiskPath string
	TempDir      string
	SSHPortBase  int
}

VMPoolConfig holds configuration for the VM pool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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