testfixtures

package
v0.16.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	TestJobset                               = "testJobset"
	TestQueue                                = "testQueue"
	TestQueue1                               = "testQueue1"
	TestQueue2                               = "testQueue2"
	TestPool                                 = "testPool"
	TestPool2                                = "testPool2"
	AwayPool                                 = "awayPool"
	TestHostnameLabel                        = "kubernetes.io/hostname"
	ClusterNameLabel                         = "cluster"
	PoolNameLabel                            = "pool"
	NodeTypeLabel                            = "nodetype"
	PriorityClass0                           = "priority-0"
	PriorityClass1                           = "priority-1"
	PriorityClass2                           = "priority-2"
	PriorityClass2NonPreemptible             = "priority-2-non-preemptible"
	PriorityClass3                           = "priority-3"
	PriorityClass4PreemptibleAway            = "armada-preemptible-away"
	PriorityClass5PreemptibleAwayLowPriority = "armada-preemptible-away-lower"
	PriorityClass6Preemptible                = "armada-preemptible"
)

Variables

View Source
var (
	TestResourceListFactory    = MakeTestResourceListFactory()
	TestEmptyFloatingResources = MakeTestFloatingResourceTypes(nil)
	TestFloatingResources      = MakeTestFloatingResourceTypes(TestFloatingResourceConfig)
	TestFloatingResourceConfig = []schedulerconfiguration.FloatingResourceConfig{
		{
			Name: "test-floating-resource",
			Pools: []schedulerconfiguration.FloatingResourcePoolConfig{
				{
					Name:     "pool",
					Quantity: resource.MustParse("10"),
				},
			},
		},
	}
	BaseTime, _         = time.Parse("2006-01-02T15:04:05.000Z", "2022-03-01T15:04:05.000Z")
	BasetimeProto       = protoutil.ToTimestamp(BaseTime)
	TestPriorityClasses = map[string]types.PriorityClass{
		PriorityClass0:                           {Priority: 0, Preemptible: true},
		PriorityClass1:                           {Priority: 1, Preemptible: true},
		PriorityClass2:                           {Priority: 2, Preemptible: true},
		PriorityClass2NonPreemptible:             {Priority: 2, Preemptible: false},
		PriorityClass3:                           {Priority: 3, Preemptible: false},
		PriorityClass4PreemptibleAway:            {Priority: 30000, Preemptible: true, AwayNodeTypes: []types.AwayNodeType{{Priority: 29000, WellKnownNodeTypeName: "gpu"}, {Priority: 29000, WellKnownNodeTypeName: "large"}}},
		PriorityClass5PreemptibleAwayLowPriority: {Priority: 30000, Preemptible: true, AwayNodeTypes: []types.AwayNodeType{{Priority: 28000, WellKnownNodeTypeName: "gpu"}, {Priority: 28000, WellKnownNodeTypeName: "large"}}},
		PriorityClass6Preemptible:                {Priority: 30000, Preemptible: true},
	}
	TestDefaultPriorityClass = PriorityClass3
	TestPriorities           = []int32{0, 1, 2, 3}
	TestResources            = []schedulerconfiguration.ResourceType{
		{Name: "cpu", Resolution: resource.MustParse("1")},
		{Name: "memory", Resolution: resource.MustParse("128Mi")},
		{Name: "nvidia.com/gpu", Resolution: resource.MustParse("1")},
	}
	TestResourceNames = slices.Map(
		TestResources,
		func(v schedulerconfiguration.ResourceType) string { return v.Name },
	)
	TestIndexedTaints      = []string{"largeJobsOnly", "gpu"}
	TestIndexedNodeLabels  = []string{"largeJobsOnly", "gpu", ClusterNameLabel, PoolNameLabel, NodeTypeLabel}
	TestWellKnownNodeTypes = []schedulerconfiguration.WellKnownNodeType{
		{
			Name:   "gpu",
			Taints: []v1.Taint{{Key: "gpu", Value: "true", Effect: v1.TaintEffectNoSchedule}},
		},
		{
			Name:   "large",
			Taints: []v1.Taint{{Key: "largeJobsOnly", Value: "true", Effect: v1.TaintEffectNoSchedule}},
		},
	}
	TestNodeFactory = internaltypes.NewNodeFactory(TestIndexedTaints, TestIndexedNodeLabels, TestPriorityClasses, TestResourceListFactory)

	// SchedulingKeyGenerator to use in testing.
	// Has to be consistent since creating one involves generating a random key.
	// If this key isn't consistent, scheduling keys generated are not either.
	// We use the all-zeros key here to ensure scheduling keys are cosnsitent between tests.
	SchedulingKeyGenerator = schedulerobjects.NewSchedulingKeyGeneratorWithKey(make([]byte, 32))
	// Used for job creation.
	JobDb = NewJobDb(TestResourceListFactory)
)

Functions

func Cpu added in v0.16.0

func CpuMem added in v0.16.0

func CpuMem(cpu string, memory string) internaltypes.ResourceList

func CpuMemGpu added in v0.16.0

func CpuMemGpu(cpu string, memory string, gpu string) internaltypes.ResourceList

func GetTestSupportedResourceTypes added in v0.4.48

func GetTestSupportedResourceTypes() []schedulerconfiguration.ResourceType

func IntRange

func IntRange(a, b int) []int

func MakeTestQueue added in v0.4.29

func MakeTestQueue() *api.Queue

func MakeTestQueue2 added in v0.9.8

func MakeTestQueue2() *api.Queue

func MakeTestQueueCordoned added in v0.9.8

func MakeTestQueueCordoned() *api.Queue

func MakeTestResourceListFactory added in v0.4.48

func MakeTestResourceListFactory() *internaltypes.ResourceListFactory

func N16Cpu128GiJobs added in v0.3.79

func N16Cpu128GiJobs(queue string, priorityClassName string, n int) []*jobdb.Job

func N1Cpu16GiJobs added in v0.3.79

func N1Cpu16GiJobs(queue string, priorityClassName string, n int) []*jobdb.Job

func N1Cpu4GiJobs added in v0.3.79

func N1Cpu4GiJobs(queue string, priorityClassName string, n int) []*jobdb.Job

func N1Cpu4GiJobsWithPrice added in v0.15.7

func N1Cpu4GiJobsWithPrice(queue string, bidPrice float64, n int) []*jobdb.Job

func N1CpuPodReqs added in v0.3.69

func N1CpuPodReqs(queue string, priority int32, n int) []*schedulerobjects.PodRequirements

func N1GpuJobs added in v0.3.69

func N1GpuJobs(queue string, priorityClassName string, n int) []*jobdb.Job

func N32Cpu256GiJobs added in v0.3.79

func N32Cpu256GiJobs(queue string, priorityClassName string, n int) []*jobdb.Job

func N32CpuNodes added in v0.3.69

func N32CpuNodes(n int, priorities []int32) []*internaltypes.Node

func N8GpuNodes added in v0.3.69

func N8GpuNodes(n int, priorities []int32) []*internaltypes.Node

func NTainted32CpuNodes added in v0.3.69

func NTainted32CpuNodes(n int, priorities []int32) []*internaltypes.Node

func NewJob added in v0.6.0

func NewJob(
	jobId string,
	jobSet string,
	queue string,
	priority uint32,
	price float64,
	schedulingInfo *schedulerobjects.JobSchedulingInfo,
	queued bool,
	queuedVersion int32,
	cancelRequested bool,
	cancelByJobSetRequested bool,
	cancelled bool,
	created int64,
	validated bool,
) *jobdb.Job

func NewJobDb added in v0.4.0

func NewJobDb(resourceListFactory *internaltypes.ResourceListFactory) *jobdb.JobDb

NewJobDb returns a new default jobDb with defaults to use in tests.

func NewJobDbWithJobs added in v0.4.12

func NewJobDbWithJobs(jobs []*jobdb.Job) *jobdb.JobDb

func Repeat

func Repeat[T any](v T, n int) []T

func SingleQueuePriorityOne added in v0.4.29

func SingleQueuePriorityOne(name string) []*api.Queue

func Test16Cpu128GiJob added in v0.3.79

func Test16Cpu128GiJob(queue string, priorityClassName string) *jobdb.Job

func Test16Cpu128GiPodReqs added in v0.3.79

func Test16Cpu128GiPodReqs(queue string, jobId ulid.ULID, priority int32) *schedulerobjects.PodRequirements

func Test1Cpu16GiJob added in v0.3.79

func Test1Cpu16GiJob(queue string, priorityClassName string) *jobdb.Job

func Test1Cpu16GiPodReqs added in v0.3.79

func Test1Cpu16GiPodReqs(queue string, jobId ulid.ULID, priority int32) *schedulerobjects.PodRequirements

func Test1Cpu4GiJob added in v0.3.79

func Test1Cpu4GiJob(queue string, priorityClassName string) *jobdb.Job

func Test1Cpu4GiPodReqs added in v0.3.79

func Test1Cpu4GiPodReqs(queue string, jobId ulid.ULID, priority int32) *schedulerobjects.PodRequirements

func Test1GpuJob added in v0.3.69

func Test1GpuJob(queue string, priorityClassName string) *jobdb.Job

func Test1GpuPodReqs added in v0.3.69

func Test1GpuPodReqs(queue string, jobId ulid.ULID, priority int32) *schedulerobjects.PodRequirements

func Test32Cpu256GiJob added in v0.3.79

func Test32Cpu256GiJob(queue string, priorityClassName string) *jobdb.Job

func Test32Cpu256GiPodReqs added in v0.3.79

func Test32Cpu256GiPodReqs(queue string, jobId ulid.ULID, priority int32) *schedulerobjects.PodRequirements

func Test32CpuNode added in v0.3.69

func Test32CpuNode(priorities []int32) *internaltypes.Node

func Test8GpuNode added in v0.3.69

func Test8GpuNode(priorities []int32) *internaltypes.Node

func TestJob added in v0.3.69

func TestJob(queue string, jobId ulid.ULID, priorityClassName string, req *schedulerobjects.PodRequirements) *jobdb.Job

func TestNode added in v0.3.69

func TestNode(priorities []int32, resources map[string]resource.Quantity) *internaltypes.Node

func TestPodReqs added in v0.3.69

func TestPodReqs(queue string, jobId ulid.ULID, priority int32, requests v1.ResourceList) *schedulerobjects.PodRequirements

func TestQueuedJobDbJob

func TestQueuedJobDbJob() *jobdb.Job

func TestRunningJobDbJob

func TestRunningJobDbJob(startTime int64) *jobdb.Job

func TestSchedulerObjectsNode added in v0.16.0

func TestSchedulerObjectsNode(priorities []int32, resources map[string]resource.Quantity) *schedulerobjects.Node

func TestSchedulingConfigWithPools added in v0.14.0

func TestSchedulingConfigWithPools(pools []schedulerconfiguration.PoolConfig) schedulerconfiguration.SchedulingConfig

func TestSimpleNode added in v0.16.0

func TestSimpleNode(id string) *internaltypes.Node

func TestTainted32CpuNode added in v0.3.69

func TestTainted32CpuNode(priorities []int32) *internaltypes.Node

func TestUnitReqs

func TestUnitReqs() *schedulerobjects.PodRequirements

func UUIDFromInt added in v0.4.12

func UUIDFromInt(i uint64) uuid.UUID

func WithAnnotationsJobs

func WithAnnotationsJobs(annotations map[string]string, jobs []*jobdb.Job) []*jobdb.Job

func WithGangAnnotationsJobs

func WithGangAnnotationsJobs(jobs []*jobdb.Job) []*jobdb.Job

func WithGlobalSchedulingRateLimiterConfig added in v0.3.92

func WithGlobalSchedulingRateLimiterConfig(maximumSchedulingRate float64, maximumSchedulingBurst int, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithIdNodes added in v0.16.0

func WithIdNodes(nodeId string, nodes []*internaltypes.Node) []*internaltypes.Node

func WithIndexNode added in v0.16.0

func WithIndexNode(idx uint64, node *internaltypes.Node) *internaltypes.Node

func WithIndexedNodeLabelsConfig

func WithIndexedNodeLabelsConfig(indexedNodeLabels []string, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithMaxQueueLookbackConfig added in v0.3.66

func WithMaxQueueLookbackConfig(maxQueueLookback uint, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithMaxUnacknowledgedJobsPerExecutorConfig added in v0.3.78

func WithMaxUnacknowledgedJobsPerExecutorConfig(v uint, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithNodeAffinityJobs added in v0.3.78

func WithNodeAffinityJobs(nodeSelectorTerms []v1.NodeSelectorTerm, jobs []*jobdb.Job) []*jobdb.Job

func WithNodeSelectorJob added in v0.3.78

func WithNodeSelectorJob(selector map[string]string, job *jobdb.Job) *jobdb.Job

func WithNodeSelectorJobs

func WithNodeSelectorJobs(selector map[string]string, jobs []*jobdb.Job) []*jobdb.Job

func WithNodeTypeNodes added in v0.4.36

func WithNodeTypeNodes(nodeType *internaltypes.NodeType, nodes []*internaltypes.Node) []*internaltypes.Node

func WithNodeUniformityGangAnnotationsJobs added in v0.9.0

func WithNodeUniformityGangAnnotationsJobs(jobs []*jobdb.Job, nodeUniformityLabel string) []*jobdb.Job

func WithNodeUniformityLabelAnnotationJobs added in v0.3.79

func WithNodeUniformityLabelAnnotationJobs(label string, jobs []*jobdb.Job) []*jobdb.Job

func WithPerQueueSchedulingLimiterConfig added in v0.3.92

func WithPerQueueSchedulingLimiterConfig(maximumPerQueueSchedulingRate float64, maximumPerQueueSchedulingBurst int, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithPools added in v0.14.0

func WithPools(jobs []*jobdb.Job, pools []string) []*jobdb.Job

func WithPriorityJobs added in v0.3.90

func WithPriorityJobs(priority uint32, jobs []*jobdb.Job) []*jobdb.Job

func WithProtectedFractionOfFairShareConfig added in v0.3.78

func WithProtectedFractionOfFairShareConfig(v float64, config schedulerconfiguration.SchedulingConfig) schedulerconfiguration.SchedulingConfig

func WithRequestsJobs added in v0.3.78

func WithRequestsJobs(rl schedulerobjects.ResourceList, jobs []*jobdb.Job) []*jobdb.Job

func WithRoundLimitsPoolConfig added in v0.3.66

func WithUsedResourcesNodes

func WithUsedResourcesNodes(p int32, rl internaltypes.ResourceList, nodes []*internaltypes.Node) []*internaltypes.Node

Types

type MockIDProvider added in v0.11.0

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

func NewMockIDProvider added in v0.11.0

func NewMockIDProvider() *MockIDProvider

func (*MockIDProvider) New added in v0.11.0

func (p *MockIDProvider) New() string

type MockPassiveClock added in v0.4.12

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

func NewMockPassiveClock added in v0.4.12

func NewMockPassiveClock() *MockPassiveClock

func (*MockPassiveClock) Now added in v0.4.12

func (p *MockPassiveClock) Now() time.Time

func (*MockPassiveClock) Since added in v0.4.12

Jump to

Keyboard shortcuts

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