framework

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPodRequestResource

func GetPodRequestResource(pod *v1.Pod) *resources.Resource

func GetRegisteredTestScenarios

func GetRegisteredTestScenarios() map[string]TestScenario

func IsNodeReady

func IsNodeReady(node *v1.Node) bool

IsNodeReady returns true if a node is ready, false otherwise.

func ParseResourceFromResourceList

func ParseResourceFromResourceList(resourceList *v1.ResourceList) *resources.Resource

func Register

func Register(ts TestScenario)

Types

type AppAnalyzer

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

func NewAppAnalyzer

func NewAppAnalyzer(appInfo *AppInfo) *AppAnalyzer

func (*AppAnalyzer) GetLastTasks

func (aa *AppAnalyzer) GetLastTasks(lastN int) []*TaskStatus

func (*AppAnalyzer) GetTasksDistribution

func (aa *AppAnalyzer) GetTasksDistribution(condType TaskConditionType) [][]*TaskStatus

func (*AppAnalyzer) GetTasksDistributionInfo

func (aa *AppAnalyzer) GetTasksDistributionInfo(nodeInfos map[string]*NodeInfo) *TasksDistributionInfo

func (*AppAnalyzer) GetTasksProfiling

func (aa *AppAnalyzer) GetTasksProfiling() profiling.Profiling

func (*AppAnalyzer) GetTimeDistribution

func (aa *AppAnalyzer) GetTimeDistribution(condType TaskConditionType) []int

type AppInfo

type AppInfo struct {
	Namespace       string
	AppID           string
	Queue           string
	RequestInfos    []*RequestInfo
	PodSpec         apiv1.PodSpec
	PodTemplateSpec apiv1.PodTemplateSpec
	AppStatus       AppStatus
	TasksStatus     map[string]*TaskStatus
}

func NewAppInfo

func NewAppInfo(namespace, appID, queue string, requestInfos []*RequestInfo,
	podTemplateSpec apiv1.PodTemplateSpec, podSpec apiv1.PodSpec) *AppInfo

func (*AppInfo) GetDesiredNumTasks

func (appInfo *AppInfo) GetDesiredNumTasks() int32

func (*AppInfo) SetAppStatus

func (appInfo *AppInfo) SetAppStatus(desiredNum, createdNum, readyNum int)

type AppManager

type AppManager interface {
	Create(schedulerName string, appInfo *AppInfo) error
	Delete(appInfo *AppInfo) error
	RefreshAppStatus(appInfo *AppInfo) error
	RefreshTasksStatusAfterRunning(appInfo *AppInfo) error
	WaitForAppsToBeCleanedUp(appInfos *AppInfo, timeout time.Duration) error
	WaitForAppsToBeSatisfied(appInfos *AppInfo, timeout time.Duration) error
	// create an app and wait for it to be running, refresh tasks status at last
	CreateWaitAndRefreshTasksStatus(schedulerName string, appInfo *AppInfo, timeout time.Duration) error
	// delete an app and wait for it to be cleaned up
	DeleteWait(appInfo *AppInfo, timeout time.Duration) error
}

func NewDeploymentsAppManager

func NewDeploymentsAppManager(kubeClient *utils.KubeClient) AppManager

type AppStatus

type AppStatus struct {
	CreateTime time.Time
	// running time of the last task
	RunningTime time.Time
	DesiredNum  int
	CreatedNum  int
	ReadyNum    int
}

type CommonConfig

type CommonConfig struct {
	KubeConfigFile  string
	SchedulerName   string
	MaxWaitSeconds  int
	Queue           string
	Namespace       string
	OutputRootPath  string
	OutputPath      string
	NodeSelector    string
	PodSpec         apiv1.PodSpec
	PodTemplateSpec apiv1.PodTemplateSpec
}

type Config

type Config struct {
	Common    *CommonConfig
	Scenarios map[string]interface{}
}

func InitConfig

func InitConfig(configFile string) (*Config, error)

type DeploymentsAppManager

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

func (*DeploymentsAppManager) Create

func (dam *DeploymentsAppManager) Create(schedulerName string, appInfo *AppInfo) error

func (*DeploymentsAppManager) CreateWaitAndRefreshTasksStatus

func (dam *DeploymentsAppManager) CreateWaitAndRefreshTasksStatus(schedulerName string, appInfo *AppInfo,
	timeout time.Duration) error

func (*DeploymentsAppManager) Delete

func (dam *DeploymentsAppManager) Delete(appInfo *AppInfo) error

func (*DeploymentsAppManager) DeleteWait

func (dam *DeploymentsAppManager) DeleteWait(appInfo *AppInfo,
	timeout time.Duration) error

func (*DeploymentsAppManager) RefreshAppStatus

func (dam *DeploymentsAppManager) RefreshAppStatus(appInfo *AppInfo) error

func (*DeploymentsAppManager) RefreshTasksStatusAfterRunning

func (dam *DeploymentsAppManager) RefreshTasksStatusAfterRunning(appInfo *AppInfo) error

func (*DeploymentsAppManager) WaitForAppsToBeCleanedUp

func (dam *DeploymentsAppManager) WaitForAppsToBeCleanedUp(appInfo *AppInfo, timeout time.Duration) error

func (*DeploymentsAppManager) WaitForAppsToBeSatisfied

func (dam *DeploymentsAppManager) WaitForAppsToBeSatisfied(appInfo *AppInfo, timeout time.Duration) error

type NodeAnalyzer

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

func NewNodeAnalyzer

func NewNodeAnalyzer(kubeClient *utils.KubeClient, nodeSelector string) *NodeAnalyzer

func (*NodeAnalyzer) AnalyzeApp

func (na *NodeAnalyzer) AnalyzeApp(appInfo *AppInfo)

AnalyzeApp updates the state of nodes according to app status

func (*NodeAnalyzer) CalculateAllocatedResource

func (na *NodeAnalyzer) CalculateAllocatedResource()

CalculateAllocatedResource calculate allocated resource for nodes, which may be rather time-consuming when there are numerous pods in the cluster, so this should be called only if necessary!

func (*NodeAnalyzer) ClearApps

func (na *NodeAnalyzer) ClearApps()

func (*NodeAnalyzer) GetAllocatableNodes

func (na *NodeAnalyzer) GetAllocatableNodes() map[string]*NodeInfo

func (*NodeAnalyzer) GetNodeResourceDistribution

func (na *NodeAnalyzer) GetNodeResourceDistribution(tasksDistribution [][]*TaskStatus,
	resourceName string) [10][]int

func (*NodeAnalyzer) GetScheduledNodes

func (na *NodeAnalyzer) GetScheduledNodes() map[string]*NodeInfo

func (*NodeAnalyzer) GetTotalAllocatableResource

func (na *NodeAnalyzer) GetTotalAllocatableResource() *resources.Resource

func (*NodeAnalyzer) InitNodeInfosBeforeTesting

func (na *NodeAnalyzer) InitNodeInfosBeforeTesting() error

InitNodeInfosBeforeTesting records the snapshot of schedulable and ready nodes before testing

type NodeInfo

type NodeInfo struct {
	NodeID            string
	Tasks             map[string]*TaskStatus
	Capacity          *resources.Resource
	AllocatedResource ResourceInfo
}

func NewNodeInfo

func NewNodeInfo(nodeID string, capacityRes *resources.Resource, allocatedRes *resources.Resource) *NodeInfo

func (*NodeInfo) AddTask

func (ni *NodeInfo) AddTask(task *TaskStatus)

func (*NodeInfo) ClearTasks

func (ni *NodeInfo) ClearTasks()

func (*NodeInfo) GetSummary

func (ni *NodeInfo) GetSummary() string

type RequestInfo

type RequestInfo struct {
	Number           int32
	PriorityClass    string
	RequestResources map[string]string
	LimitResources   map[string]string
}

func NewRequestInfo

func NewRequestInfo(number int32, priorityClass string, requestResources, limitResources map[string]string) *RequestInfo

type ResourceInfo

type ResourceInfo struct {
	NodeResourceBefore *resources.Resource
	TasksTotalResource *resources.Resource
	NumTasks           int
}

func (*ResourceInfo) AddTaskResource

func (ri *ResourceInfo) AddTaskResource(taskReqResources *resources.Resource)

func (*ResourceInfo) ClearTaskResources

func (ri *ResourceInfo) ClearTaskResources()

func (*ResourceInfo) GetResource

func (ri *ResourceInfo) GetResource() *resources.Resource

type TaskCondition

type TaskCondition struct {
	CondType       TaskConditionType
	TransitionTime time.Time
}

type TaskConditionType

type TaskConditionType string
const (
	PodCreated      TaskConditionType = "PodCreated"
	PodScheduled    TaskConditionType = "PodScheduled"
	PodStarted      TaskConditionType = "PodStarted"
	PodInitialized  TaskConditionType = "Initialized"
	PodReady        TaskConditionType = "Ready"
	ContainersReady TaskConditionType = "ContainersReady"
)

func GetOrderedTaskConditionTypes

func GetOrderedTaskConditionTypes() []TaskConditionType

type TaskStatus

type TaskStatus struct {
	TaskID           string
	CreateTime       time.Time
	RunningTime      time.Time
	NodeID           string
	RequestResources *resources.Resource
	Conditions       []*TaskCondition
}

func NewTaskStatus

func NewTaskStatus(taskID, nodeID string, createTime, runningTime time.Time,
	requestResources *resources.Resource, conditions []*TaskCondition) *TaskStatus

func (*TaskStatus) GetTransitionTime

func (taskStatus *TaskStatus) GetTransitionTime(condType TaskConditionType) *time.Time

type TasksDistributionInfo

type TasksDistributionInfo struct {
	LeastNum        int
	LeastNumNodeID  string
	MostNum         int
	MostNumNodeID   string
	AvgNum          float64
	SortedNodeInfos []*NodeInfo
}

type TestScenario

type TestScenario interface {
	GetName() string
	Init(kubeClient *utils.KubeClient, config *Config) error
	Run(results *utils.Results)
}

type TestScenarios

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

Jump to

Keyboard shortcuts

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