From 146940b561776fe78cb448e398b65e7ca5631c7e Mon Sep 17 00:00:00 2001 From: Yurii Prokulevych Date: Fri, 28 Jun 2024 07:42:51 +0200 Subject: [PATCH] system-test: Documentation for tests parameters (#71) --- tests/system-tests/rdscore/README.md | 241 +++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 tests/system-tests/rdscore/README.md diff --git a/tests/system-tests/rdscore/README.md b/tests/system-tests/rdscore/README.md new file mode 100644 index 000000000..2d5362f18 --- /dev/null +++ b/tests/system-tests/rdscore/README.md @@ -0,0 +1,241 @@ +# RDS Core System Tests + +Documentaion of parameters to be set for running this test suite. + +### _VerifySRIOVWorkloadsOnSameNodeDifferentNet_ + +This test verifies connectivity between pods that use different SR-IOV networks and are scheduled +on the same node. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +Messages are sent between the workloads and asserted they are present in pods' logs. + +**Requires 2 SR-IOV networks that have SR-IOV resources configured on the same node** + + +| parameter | description | example | +|-----------|-------------|---------| +|rdscore_wlkd_sriov_3_ns | Namespace where to deploy test workload | `my-ns-3` | +|rdscore_wlkd_sriov_cm_data_3 | Content of configMap that is mounted within a pod under `/opt/net/` | | +|rdscore_wlkd_sriov_3_image | Image used by the deployment | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd3_sriov_one_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_3_0_res_requests | Resource requests for 1st container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_3_0_res_limits | Resource limits for 1st container(_Optional_) | `memory: 100M` | +|rdscore_wlkd3_sriov_two_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_3_1_res_requests | Resource requests for 2nd container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_3_1_res_limits | Resource limits for 2nd container(_Optional_) | `memory: 100M` | +|rdscore_wlkd_sriov_net_one | SR-IOV Network for 1st workload | `sriov-net-one` | +|rdscore_wlkd_sriov_3_0_selector | Node selector for both workloads | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_sriov_net_two | SR-IOV Network for 2nd workload | `sriov-net-two` | +|rdscore_wlkd3_sriov_deploy_one_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_wlkd3_sriov_deploy_one_target_ipv6 | IPv6 address configured on 2nd workload(_Optional_) | | +|rdscore_wlkd3_sriov_deploy_two_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_wlkd3_sriov_deploy_two_target_ipv6 | IPv6 address configured on 1st workload(_Optional_) | | + + +### _VerifySRIOVWorkloadsOnDifferentNodesDifferentNet_ + +This test verifies connectivity between pods that use different SR-IOV networks and are scheduled +on different nodes. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +**Requires 2 nodes and 2 SR-IOV networks that have SR-IOV resources configured on the nodes** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_wlkd_sriov_4_ns | Namespace where to deploy test workload | `my-ns-4` | +|rdscore_wlkd_sriov_cm_data_4 | Content of configMap that is mounted within pods under `/opt/net/` | | +|rdscore_wlkd_sriov_4_image | Image used by the workloads | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd4_sriov_one_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_4_0_res_requests | Resource requests for 1st container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_4_0_res_limits | Resource limits for 1st container(_Optional_) | `memory: 100M` | +|rdscore_wlkd4_sriov_two_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_4_1_res_requests | Resource requests for 2nd container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_4_1_res_limits | Resource limits for 2nd container(_Optional_) | `memory: 100M` | +|rdscore_wlkd_sriov_net_one | SR-IOV Network for 1st workload | `sriov-net-one` | +|rdscore_wlkd_sriov_4_0_selector | Node selector for 1st workload | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_sriov_net_two | SR-IOV Network for 2nd workload | `sriov-net-two` | +|rdscore_wlkd_sriov_4_1_selector | Node selector for 2nd workload | `kubernetes.io/hostname: worker-Y` | +|rdscore_wlkd4_sriov_deploy_one_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_wlkd4_sriov_deploy_one_target_ipv6 | IPv6 address configured on 2nd workload(_Optional_) | | +|rdscore_wlkd4_sriov_deploy_two_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_wlkd4_sriov_deploy_two_target_ipv6 | IPv6 address configured on 1st workload(_Optional_) | | + + +### _VerifySRIOVWorkloadsOnSameNode_ + +This test verifies connectivity between pods that use same SR-IOV networks and are scheduled +on the same node. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +**Requires 1 node and 1 SR-IOV network that has SR-IOV resources configured on the node** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_wlkd_sriov_one_ns | Namespace where to deploy test workload | `my-ns-1` | +|rdscore_wlkd_sriov_cm_data_one | Content of configMap that is mounted within pods under `/opt/net/` | | +|rdscore_wlkd_sriov_one_image | Image used by the 1st workload | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd_sriov_one_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_one_res_requests | Resource requests for 1st container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_one_res_limits | Resource limits for 1st container(_Optional_) | `memory: 100M` | +|rdscore_wlkd_sriov_two_image | Image used by the 2nd workload | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd_sriov_two_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_two_res_requests | Resource requests for 2nd container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_two_res_limits | Resource limits for 2nd container(_Optional_) | `memory: 100M` | +|rdscore_wlkd_sriov_one_selector | Node selector for both workloads | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_sriov_deploy_one_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_wlkd_sriov_deploy_one_target_ipv6 | IPv6 address configured on 2nd workload(_Optional_) | | +|rdscore_wlkd_sriov_deploy_two_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_wlkd_sriov_deploy_two_target_ipv6 | IPv6 address configured on 1st workload(_Optional_) | | + +### _VerifySRIOVWorkloadsOnDifferentNodes_ + +This test verifies connectivity between pods that use same SR-IOV networks and are scheduled +on the the different nodes. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +**Requires 2 node and 1 SR-IOV network that has SR-IOV resources configured on the nodes** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_wlkd_sriov_one_ns | Namespace where to deploy test workload | `my-ns-1` | +|rdscore_wlkd_sriov_cm_data_one | Content of configMap that is mounted within pods under `/opt/net/` | | +|rdscore_wlkd_sriov_one_image | Image used by the 1st workload | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd2_sriov_one_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_one_res_requests | Resource requests for both containers(_Optional_) | `cpu: 1` | +|rdscore_wlkd_sriov_one_res_limits | Resource limits for both containers(_Optional_) | `memory: 100M` | +|rdscore_wlkd_sriov_two_image | Image used by the 2nd workload | `quay.io/myorg/my-sriov-app:1.1` | +|rdscore_wlkd2_sriov_two_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_sriov_one_selector | Node selector for 1st workload | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_sriov_two_selector | Node selector for 2nd workload | `kubernetes.io/hostname: worker-Y` | +|rdscore_wlkd2_sriov_deploy_one_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_wlkd2_sriov_deploy_one_target_ipv6 | IPv6 address configured on 2nd workload(_Optional_) | | +|rdscore_wlkd2_sriov_deploy_two_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_wlkd2_sriov_deploy_two_target_ipv6 | IPv6 address configured on 1st workload(_Optional_) | | + +### _ValidateAllPoliciesCompliant_ + +Checks that all governance policies are Complaint + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_policy_ns | Namespace where policies are created. If empty(_default_) check in all namespaces | `` | + +### _VerifyNROPWorkload_ + +Test deploys a pod with NROP scheduler + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_wlkd_nrop_one_ns | Namespace where to deploy test workload | `my-nrop-1` | +|rdscore_wlkd_nrop_one_image | Image used by the test workload | `quay.io/myorg/my-nrop-app:1.1` | +|rdscore_wlkd_nrop_one_cmd | Command executed by the container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_wlkd_nrop_one_res_requests | Resource requests for test container(_Optional_) | `cpu: 1` | +|rdscore_wlkd_nrop_one_res_limits | Resource limits for test container(_Optional_) | `memory: 100M` | +|rdscore_nrop_scheduler_name | Name of the NROP scheduler | `topo-aware-scheduler` | +|rdscore_wlkd_nrop_one_selector | Node selector for the test workload | `kubernetes.io/hostname: worker-X` | + +### _VerifyMacVlanOnDifferentNodes_ + +Verifies connectivity between test workloads that use same MACVLAN definition and are scheduled on different nodes. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +**Requires 2 nodes where the same MACVLAN network is configured** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_mcvlan_ns_one | Namespace for the test workload | `my-mc-1` | +|rdscore_mcvlan_cm_data_one | Content of configMap that is mounted within pods | | +|rdscore_mcvlan_deploy_img_one | Image used by the test workload | `quay.io/myorg/my-mc-app:1.1` | +|rdscore_mcvlan_deploy_1_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_mcvlan_deploy_2_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_mcvlan_nad_one_name | Name of the MacVlan network | `mcvlan-one` | +|rdscore_mcvlan_1_node_selector | Node selector for the 1st workload | `kubernetes.io/hostname: worker-X` | +|rdscore_mcvlan_2_node_selector | Node selector for the 1st workload | `kubernetes.io/hostname: worker-Y` | +|rdscore_macvlan_deploy_1_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_macvlan_deploy_1_target_ipv6 | IPv6 address configured on 2nd workload | | +|rdscore_macvlan_deploy_2_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_macvlan_deploy_2_target_ipv6 | IPv6 address configured on 1st workload | | + +### _VerifyMacVlanOnSameNode_ + +Verifies connectivity between test workloads that use same MACVLAN definition and are scheduled on the same node. + +Test expects `nc` process to listen on IP address(es) on SR-IOV interfaces on both workloads, +for e.g. on `192.168.12.22 1111` on 1st workload and `192.168.12.33 1111` on 2nd workload. + +**Requires 1 node where MACVLAN network is configured** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_mcvlan_ns_one | Namespace for the test workload | `my-mc-1` | +|rdscore_mcvlan_cm_data_one | Content of configMap that is mounted within pods | | +|rdscore_mcvlan_deploy_img_one | Image used by test workloads | `quay.io/myorg/my-mc-app:1.1` | +|rdscore_mcvlan_deploy_3_cmd | Command executed by 1st container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_mcvlan_deploy_4_cmd | Command executed by 2nd container | `["/bin/sh", "-c", "/myapp --run"]` | +|rdscore_mcvlan_nad_one_name | Name of the MacVlan network | `mcvlan-one` | +|rdscore_mcvlan_1_node_selector | Node selector for the 1st workload | `kubernetes.io/hostname: worker-X` | +|rdscore_macvlan_deploy_3_target | IPv4 address and port configured on 2nd workload | `192.168.12.22 1111` | +|rdscore_macvlan_deploy_3_target_ipv6 | IPv6 address configured on 2nd workload | | +|rdscore_macvlan_deploy_4_target | IPv4 address and port configured on 1st workload | `192.168.12.12 1111` | +|rdscore_macvlan_deploy_4_target_ipv6 | IPv6 address configured on 1st workload | | + +### _VerifyNMStateNamespaceExists_ + +Verifies namespace for _NMState_ operator exists + +| paremater | description | example | +|-----------|-------------|---------| +|nmstate_operator_namespace | Namespace where NMState operator is installed | `openshift-nmstate` | + +### _VerifyAllNNCPsAreOK_ + +Test assert all available NNCPs are Available, not progressing and not degraded. + +_No extra parameters are required_ + +### _VerifyCephFSPVC_ + +Create a workload that requests PVC backed by _CephFS_ volume. Deployment is created on the node specified by *rdscore_wlkd_odf_one_selector* +parameter. + +After data is stored in a a volume backed by the PVC deployment is scaled down and redeployed to the node specified by *rdscore_wlkd_odf_two_selector* parameter + +**Requires 2 nodes** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_sc_cephfs_name | storageClass name that provides _CephFS_ volumes | `my-cephfs-sc` | +|rdscore_storage_storage_wlkd_image | Image used by the test workload | `quay.io/myorg/my-app:v1.1` | +|rdscore_wlkd_odf_one_selector | Node selector for 1st node | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_odf_two_selector | Node selector for 2nd node | `kubernetes.io/hostname: worker-Y` | + +### _VerifyCephRBDPVC_ + +Create a workload that requests PVC backed by _CephRBD_ volume. Deployment is created on the node specified by *rdscore_wlkd_odf_one_selector* +parameter. + +After data is stored in a a volume backed by the PVC deployment is scaled down and redeployed to the node specified by *rdscore_wlkd_odf_two_selector* parameter + +**Requires 2 nodes** + +| paremater | description | example | +|-----------|-------------|---------| +|rdscore_sc_cephrbd_name | storageClass name that provides _CephRBD_ volumes | `my-cephrbd-sc` | +|rdscore_storage_storage_wlkd_image | Image used by the test workload | `quay.io/myorg/my-app:v1.1` | +|rdscore_wlkd_odf_one_selector | Node selector for 1st node | `kubernetes.io/hostname: worker-X` | +|rdscore_wlkd_odf_two_selector | Node selector for 2nd node | `kubernetes.io/hostname: worker-Y` | + +### _VerifyNMStateInstanceExists_ + +Verifies that _NMState_ instance `nmstate` exists