diff --git a/tests/networking/helper/helper.go b/tests/networking/helper/helper.go index d86e5e075..70d02739f 100644 --- a/tests/networking/helper/helper.go +++ b/tests/networking/helper/helper.go @@ -18,12 +18,10 @@ import ( "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/utils/deployment" "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/utils/service" corev1 "k8s.io/api/core/v1" - "k8s.io/utils/ptr" "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/globalhelper" appsv1 "k8s.io/api/apps/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -436,66 +434,3 @@ func DefineDeploymentWithContainerPorts(name, namespace string, return deploymentStruct, nil } - -func DefineDpdkPod(podName, namespace string) *corev1.Pod { - cpuLimit := "1" - memoryLimit := "512Mi" - containerCommand := []string{"/bin/sh", "-c", "touch /tmp/healthy", "sleep infinity"} - - containerResource := corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse(cpuLimit), - corev1.ResourceMemory: resource.MustParse(memoryLimit), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse(cpuLimit), - corev1.ResourceMemory: resource.MustParse(memoryLimit), - }, - } - - containerSecurityContext := &corev1.SecurityContext{ - Privileged: ptr.To[bool](true), - RunAsUser: ptr.To[int64](0), - Capabilities: &corev1.Capabilities{ - Add: []corev1.Capability{"IPC_LOCK", "SYS_RESOURCE", "NET_RAW"}}, - } - - annotations := make(map[string]string) - annotations["k8s.v1.cni.cncf.io/networks"] = "sriovnet1" - - return &corev1.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: podName, - Namespace: namespace, - Labels: tsparams.TestDeploymentLabels, - Annotations: annotations, - }, - Spec: corev1.PodSpec{ - TerminationGracePeriodSeconds: ptr.To[int64](0), - Containers: []corev1.Container{ - { - Name: "app-container", - Image: "registry.redhat.io/openshift4/dpdk-base-rhel8:v4.9", - Command: containerCommand, - Resources: containerResource, - SecurityContext: containerSecurityContext, - VolumeMounts: []corev1.VolumeMount{ - { - Name: "hugepage", - MountPath: "/dev/hugepages", - }, - }}, - }, - Volumes: []corev1.Volume{ - { - Name: "hugepage", - VolumeSource: corev1.VolumeSource{ - EmptyDir: &corev1.EmptyDirVolumeSource{ - Medium: corev1.StorageMediumHugePages, - }, - }, - }, - }, - }, - } -} diff --git a/tests/networking/helper/helper_test.go b/tests/networking/helper/helper_test.go index 469fa0512..903c88546 100644 --- a/tests/networking/helper/helper_test.go +++ b/tests/networking/helper/helper_test.go @@ -5,8 +5,6 @@ import ( "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func TestFindListIntersections(t *testing.T) { @@ -108,58 +106,3 @@ func TestCreateContainerSpecsFromContainerPorts(t *testing.T) { } } } - -func TestDefineDpdkPod(t *testing.T) { - testCases := []struct { - name string - namespace string - expected *corev1.Pod - }{ - { - name: "test-pod", - namespace: "test-namespace", - expected: &corev1.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: "test-pod", - Namespace: "test-namespace", - Labels: map[string]string{ - "app": "test-pod", - }, - }, - Spec: corev1.PodSpec{ - Containers: []corev1.Container{ - { - Name: "app-container", - Image: "registry.redhat.io/openshift4/dpdk-base-rhel8:v4.9", - Ports: []corev1.ContainerPort{ - { - Name: "port1", - ContainerPort: 80, - }, - }, - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - "intel.com/intel_sriov_netdevice": resource.MustParse("1"), - }, - }, - }, - }, - NodeSelector: nil, - HostNetwork: false, - HostPID: false, - HostIPC: false, - }, - }, - }, - } - - for _, testCase := range testCases { - pod := DefineDpdkPod(testCase.name, testCase.namespace) - assert.Equal(t, testCase.expected.Spec.Containers[0].Name, pod.Spec.Containers[0].Name) - assert.Equal(t, testCase.expected.Spec.Containers[0].Image, pod.Spec.Containers[0].Image) - assert.Equal(t, testCase.expected.Spec.NodeSelector, pod.Spec.NodeSelector) - assert.Equal(t, testCase.expected.Spec.HostNetwork, pod.Spec.HostNetwork) - assert.Equal(t, testCase.expected.Spec.HostPID, pod.Spec.HostPID) - assert.Equal(t, testCase.expected.Spec.HostIPC, pod.Spec.HostIPC) - } -} diff --git a/tests/networking/parameters/parameters.go b/tests/networking/parameters/parameters.go index 40bb916ac..f319d6f51 100644 --- a/tests/networking/parameters/parameters.go +++ b/tests/networking/parameters/parameters.go @@ -33,9 +33,7 @@ var ( CertsuiteUndeclaredContainerPortsUsageTcName = "networking-undeclared-container-ports-usage" CertsuiteReservedPartnerPortsTcName = "networking-reserved-partner-ports" CertsuiteDualStackServiceTcName = "networking-dual-stack-service" - CertsuiteDpdkCPUPinningExecProbe = "networking-dpdk-cpu-pinning-exec-probe" - DpdkPodName = "dpdk-pod" NetworkingTestSkipLabel = map[string]string{"redhat-best-practices-for-k8s.com/skip_connectivity_tests": ""} NetworkingTestMultusSkipLabel = map[string]string{"redhat-best-practices-for-k8s.com/skip_multus_connectivity_tests": ""} ) @@ -71,7 +69,6 @@ const ( CertsuiteNetworkingPtpDaemonTcName = "networking-ptp-daemon" CertsuiteNetworkingRestartUnderTestTcName = "networking-restart-on-reboot" CertsuiteNetworkingDpdkCPUPinningTcName = "networking-dpdk-cpu-pinning" - CertsuiteNetworkingDpdkExecProbeTcName = "networking-dpdk-cpu-pinning-exec-probe" CertsuiteNetworkingMultipleIPTcName = "networking-multiple-ip-families" CertsuiteNetworkingMultusBridgeTcName = "networking-multus-bridge" CertsuiteNetworkingMultusIpamTcName = "networking-multus-ipam" diff --git a/tests/performance/helper/helper.go b/tests/performance/helper/helper.go index 49f328539..603aa67d5 100644 --- a/tests/performance/helper/helper.go +++ b/tests/performance/helper/helper.go @@ -269,3 +269,66 @@ func DefineRtPodInIsolatedCPUPool(namespace string, rtc *nodev1.RuntimeClass) (* return testPod, nil } + +func DefineDpdkPod(podName, namespace string) *corev1.Pod { + cpuLimit := "1" + memoryLimit := "512Mi" + containerCommand := []string{"/bin/sh", "-c", "touch /tmp/healthy && sleep infinity"} + + containerResource := corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse(cpuLimit), + corev1.ResourceMemory: resource.MustParse(memoryLimit), + }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse(cpuLimit), + corev1.ResourceMemory: resource.MustParse(memoryLimit), + }, + } + + containerSecurityContext := &corev1.SecurityContext{ + Privileged: ptr.To[bool](true), + RunAsUser: ptr.To[int64](0), + Capabilities: &corev1.Capabilities{ + Add: []corev1.Capability{"IPC_LOCK", "SYS_RESOURCE", "NET_RAW"}}, + } + + annotations := make(map[string]string) + annotations["k8s.v1.cni.cncf.io/networks"] = "sriovnet1" + + return &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: podName, + Namespace: namespace, + Labels: tsparams.CertsuiteTargetPodLabels, + Annotations: annotations, + }, + Spec: corev1.PodSpec{ + TerminationGracePeriodSeconds: ptr.To[int64](0), + Containers: []corev1.Container{ + { + Name: "app-container", + Image: "registry.redhat.io/openshift4/dpdk-base-rhel8:v4.9", + Command: containerCommand, + Resources: containerResource, + SecurityContext: containerSecurityContext, + VolumeMounts: []corev1.VolumeMount{ + { + Name: "hugepage", + MountPath: "/dev/hugepages", + }, + }}, + }, + Volumes: []corev1.Volume{ + { + Name: "hugepage", + VolumeSource: corev1.VolumeSource{ + EmptyDir: &corev1.EmptyDirVolumeSource{ + Medium: corev1.StorageMediumHugePages, + }, + }, + }, + }, + }, + } +} diff --git a/tests/performance/parameters/parameters.go b/tests/performance/parameters/parameters.go index 24ed7ed08..95d0fcfce 100644 --- a/tests/performance/parameters/parameters.go +++ b/tests/performance/parameters/parameters.go @@ -14,6 +14,7 @@ var ( testPodLabelValue = "testing" TestPodLabel = fmt.Sprintf("%s: %s", testPodLabelPrefixName, testPodLabelValue) TestPodName = "performance-pod" + DpdkPodName = "dpdk-pod" CertsuiteTargetPodLabels = map[string]string{ testPodLabelPrefixName: testPodLabelValue, "app": "test", @@ -32,6 +33,7 @@ const ( CertsuiteRtIsolatedCPUPoolSchedulingPolicy = "performance-isolated-cpu-pool-rt-scheduling-policy" CertsuiteRtExclusiveCPUPoolSchedulingPolicy = "performance-exclusive-cpu-pool-rt-scheduling-policy" CertsuiteRtAppsNoExecProbes = "performance-rt-apps-no-exec-probes" + CertsuiteCPUPinningNoExecProbes = "performance-cpu-pinning-no-exec-probes" PrivilegedRoleName = "privileged-role" CertsuiteRunTimeClass = "performance-rtc" diff --git a/tests/networking/tests/networking_dpdk_cpu_pinning_exec_probe.go b/tests/performance/tests/cpu_pinning_no_exec_probes.go similarity index 84% rename from tests/networking/tests/networking_dpdk_cpu_pinning_exec_probe.go rename to tests/performance/tests/cpu_pinning_no_exec_probes.go index b95eab5a2..bf4e7f688 100644 --- a/tests/networking/tests/networking_dpdk_cpu_pinning_exec_probe.go +++ b/tests/performance/tests/cpu_pinning_no_exec_probes.go @@ -6,17 +6,17 @@ import ( "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/globalhelper" "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/globalparameters" - tshelper "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/networking/helper" - tsparams "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/networking/parameters" + tshelper "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/performance/helper" + tsparams "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/performance/parameters" "github.com/redhat-best-practices-for-k8s/certsuite-qe/tests/utils/pod" ) /* - The setup needs to be as mentioned here : + The setup needs to be as mentioned here: https://developers.redhat.com/articles/2021/08/27/using-virtual-functions-dpdk-red-hat-openshift */ -var _ = Describe("Networking dpdk-cpu-pinning-exec-probe,", func() { +var _ = Describe("performance-cpu-pinning-no-exec-probes", func() { var randomNamespace string var randomReportDir string var randomCertsuiteConfigDir string @@ -24,7 +24,7 @@ var _ = Describe("Networking dpdk-cpu-pinning-exec-probe,", func() { BeforeEach(func() { // Create random namespace and keep original report and certsuite config directories randomNamespace, randomReportDir, randomCertsuiteConfigDir = - globalhelper.BeforeEachSetupWithRandomNamespace(tsparams.TestNetworkingNameSpace) + globalhelper.BeforeEachSetupWithRandomNamespace(tsparams.PerformanceNamespace) By("Define certsuite config file") err := globalhelper.DefineCertsuiteConfig( @@ -54,28 +54,28 @@ var _ = Describe("Networking dpdk-cpu-pinning-exec-probe,", func() { }) It("one dpdk pod with no probe", func() { - By("Deploy dpdk pod namespace") + By("Deploy dpdk pod") dpdkPod := tshelper.DefineDpdkPod(tsparams.DpdkPodName, randomNamespace) err := globalhelper.CreateAndWaitUntilPodIsReady(dpdkPod, tsparams.WaitingTime) if err != nil { Skip("DPDK is not deployed. There may be some problems in setup. Hence, skipping.") } - By("Start tests") + By("Start cpu-pinning-no-exec-probes test") err = globalhelper.LaunchTests( - tsparams.CertsuiteDpdkCPUPinningExecProbe, + tsparams.CertsuiteCPUPinningNoExecProbes, globalhelper.ConvertSpecNameToFileName(CurrentSpecReport().FullText()), randomReportDir, randomCertsuiteConfigDir) Expect(err).ToNot(HaveOccurred()) By("Verify test case status in Claim report") err = globalhelper.ValidateIfReportsAreValid( - tsparams.CertsuiteDpdkCPUPinningExecProbe, + tsparams.CertsuiteCPUPinningNoExecProbes, globalparameters.TestCasePassed, randomReportDir) Expect(err).ToNot(HaveOccurred()) }) It("one dpdk pod with exec probe [negative]", func() { - By("Deploy dpdk pod namespace") + By("Deploy dpdk pod") dpdkPod := tshelper.DefineDpdkPod(tsparams.DpdkPodName, randomNamespace) By("Redefine liveness probe") @@ -86,15 +86,15 @@ var _ = Describe("Networking dpdk-cpu-pinning-exec-probe,", func() { Skip("DPDK is not deployed. There may be some problems in setup. Hence, skipping.") } - By("Start tests") + By("Start cpu-pinning-no-exec-probes test") err = globalhelper.LaunchTests( - tsparams.CertsuiteDpdkCPUPinningExecProbe, + tsparams.CertsuiteCPUPinningNoExecProbes, globalhelper.ConvertSpecNameToFileName(CurrentSpecReport().FullText()), randomReportDir, randomCertsuiteConfigDir) Expect(err).ToNot(HaveOccurred()) By("Verify test case status in Claim report") err = globalhelper.ValidateIfReportsAreValid( - tsparams.CertsuiteDpdkCPUPinningExecProbe, + tsparams.CertsuiteCPUPinningNoExecProbes, globalparameters.TestCaseFailed, randomReportDir) Expect(err).ToNot(HaveOccurred()) }) diff --git a/tests/performance/tests/cpu_pinning_no_exec_probes_test.go b/tests/performance/tests/cpu_pinning_no_exec_probes_test.go new file mode 100644 index 000000000..ca8701d29 --- /dev/null +++ b/tests/performance/tests/cpu_pinning_no_exec_probes_test.go @@ -0,0 +1 @@ +package tests