mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 18:54:06 +00:00
Expect NoSwap on NodeConformance, test LimitedSwap only in serial tests
Signed-off-by: Itamar Holder <iholder@redhat.com>
This commit is contained in:
parent
ab5f84e8ed
commit
e9b1a5e185
@ -71,22 +71,9 @@ var _ = SIGDescribe("Swap", "[LinuxOnly]", nodefeature.Swap, func() {
|
|||||||
pod = runPodAndWaitUntilScheduled(f, pod)
|
pod = runPodAndWaitUntilScheduled(f, pod)
|
||||||
|
|
||||||
gomega.Expect(isPodCgroupV2(f, pod)).To(gomega.BeTrueBecause("cgroup v2 is required for swap"))
|
gomega.Expect(isPodCgroupV2(f, pod)).To(gomega.BeTrueBecause("cgroup v2 is required for swap"))
|
||||||
|
gomega.Expect(getSwapBehavior()).To(gomega.Or(gomega.Equal(types.NoSwap), gomega.BeEmpty()), "NodeConformance is expected to run with NoSwap")
|
||||||
|
|
||||||
switch swapBehavior := getSwapBehavior(); swapBehavior {
|
|
||||||
case types.LimitedSwap:
|
|
||||||
if qosClass != v1.PodQOSBurstable || memoryRequestEqualLimit {
|
|
||||||
expectNoSwap(f, pod)
|
expectNoSwap(f, pod)
|
||||||
} else {
|
|
||||||
expectedSwapLimit := calcSwapForBurstablePod(f, pod)
|
|
||||||
expectLimitedSwap(f, pod, expectedSwapLimit)
|
|
||||||
}
|
|
||||||
|
|
||||||
case types.NoSwap, "":
|
|
||||||
expectNoSwap(f, pod)
|
|
||||||
|
|
||||||
default:
|
|
||||||
gomega.Expect(swapBehavior).To(gomega.Or(gomega.Equal(types.LimitedSwap), gomega.Equal(types.NoSwap)), "unknown swap behavior")
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
ginkgo.Entry("QOS Best-effort", v1.PodQOSBestEffort, false),
|
ginkgo.Entry("QOS Best-effort", v1.PodQOSBestEffort, false),
|
||||||
ginkgo.Entry("QOS Burstable", v1.PodQOSBurstable, false),
|
ginkgo.Entry("QOS Burstable", v1.PodQOSBurstable, false),
|
||||||
@ -96,6 +83,39 @@ var _ = SIGDescribe("Swap", "[LinuxOnly]", nodefeature.Swap, func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
f.Context(framework.WithSerial(), func() {
|
f.Context(framework.WithSerial(), func() {
|
||||||
|
|
||||||
|
enableLimitedSwap := func(ctx context.Context, initialConfig *config.KubeletConfiguration) {
|
||||||
|
msg := "swap behavior is already set to LimitedSwap"
|
||||||
|
|
||||||
|
if swapBehavior := initialConfig.MemorySwap.SwapBehavior; swapBehavior != types.LimitedSwap {
|
||||||
|
initialConfig.MemorySwap.SwapBehavior = types.LimitedSwap
|
||||||
|
msg = "setting swap behavior to LimitedSwap"
|
||||||
|
}
|
||||||
|
|
||||||
|
ginkgo.By(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
f.Context("Basic functionality", func() {
|
||||||
|
tempSetCurrentKubeletConfig(f, enableLimitedSwap)
|
||||||
|
|
||||||
|
ginkgo.DescribeTable("with configuration", func(qosClass v1.PodQOSClass, memoryRequestEqualLimit bool) {
|
||||||
|
ginkgo.By(fmt.Sprintf("Creating a pod of QOS class %s. memoryRequestEqualLimit: %t", qosClass, memoryRequestEqualLimit))
|
||||||
|
pod := getSwapTestPod(f, qosClass, memoryRequestEqualLimit)
|
||||||
|
pod = runPodAndWaitUntilScheduled(f, pod)
|
||||||
|
|
||||||
|
gomega.Expect(isPodCgroupV2(f, pod)).To(gomega.BeTrueBecause("cgroup v2 is required for swap"))
|
||||||
|
gomega.Expect(getSwapBehavior()).To(gomega.Equal(types.LimitedSwap))
|
||||||
|
|
||||||
|
expectedSwapLimit := calcSwapForBurstablePod(f, pod)
|
||||||
|
expectLimitedSwap(f, pod, expectedSwapLimit)
|
||||||
|
},
|
||||||
|
ginkgo.Entry("QOS Best-effort", v1.PodQOSBestEffort, false),
|
||||||
|
ginkgo.Entry("QOS Burstable", v1.PodQOSBurstable, false),
|
||||||
|
ginkgo.Entry("QOS Burstable with memory request equals to limit", v1.PodQOSBurstable, true),
|
||||||
|
ginkgo.Entry("QOS Guaranteed", v1.PodQOSGuaranteed, false),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
// These tests assume the following, and will fail otherwise:
|
// These tests assume the following, and will fail otherwise:
|
||||||
// - The node is provisioned with swap
|
// - The node is provisioned with swap
|
||||||
// - The node is configured with cgroup v2
|
// - The node is configured with cgroup v2
|
||||||
@ -138,16 +158,7 @@ var _ = SIGDescribe("Swap", "[LinuxOnly]", nodefeature.Swap, func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.Context("LimitedSwap", func() {
|
ginkgo.Context("LimitedSwap", func() {
|
||||||
tempSetCurrentKubeletConfig(f, func(ctx context.Context, initialConfig *config.KubeletConfiguration) {
|
tempSetCurrentKubeletConfig(f, enableLimitedSwap)
|
||||||
msg := "swap behavior is already set to LimitedSwap"
|
|
||||||
|
|
||||||
if swapBehavior := initialConfig.MemorySwap.SwapBehavior; swapBehavior != types.LimitedSwap {
|
|
||||||
initialConfig.MemorySwap.SwapBehavior = types.LimitedSwap
|
|
||||||
msg = "setting swap behavior to LimitedSwap"
|
|
||||||
}
|
|
||||||
|
|
||||||
ginkgo.By(msg)
|
|
||||||
})
|
|
||||||
|
|
||||||
getRequestBySwapLimit := func(swapPercentage int64) *resource.Quantity {
|
getRequestBySwapLimit := func(swapPercentage int64) *resource.Quantity {
|
||||||
gomega.ExpectWithOffset(1, swapPercentage).To(gomega.And(
|
gomega.ExpectWithOffset(1, swapPercentage).To(gomega.And(
|
||||||
|
Loading…
Reference in New Issue
Block a user