-*** Settings ***
-Suite Setup Coe.Start Suite
-Suite Teardown Coe.Stop Suite
-Test Teardown Coe.Tear Down
-Library BuiltIn
-Library SSHLibrary
-Library String
-Resource ../../libraries/Coe.robot
-Resource ../../libraries/DataModels.robot
-Resource ../../libraries/SSHKeywords.robot
-Resource ../../libraries/Utils.robot
-Resource ../../variables/netvirt/Variables.robot
-Resource ../../variables/Variables.robot
-
-*** Variables ***
-${BUSY_BOX} ${CURDIR}/../../variables/coe/busy-box.yaml
-${VARIABLES_PATH} ${CURDIR}/../../variables/coe
-@{BB_NAMES} busybox1 busybox2 busybox3 busybox4
-@{BUSY_BOXES} busy-box-1.yaml busy-box-2.yaml busy-box-3.yaml busy-box-4.yaml
-
-*** Test Cases ***
-Verify L2 Connectivity Between Pods
- [Documentation] This testcase verifies the connectivity between pods brought up on the same node.Pods are brought on the same node by using the same node selector in busybox.yaml files.
- Create Pods ssd ${BUSY_BOXES[0]} ${BB_NAMES[0]}
- Create Pods ssd ${BUSY_BOXES[1]} ${BB_NAMES[1]}
- BuiltIn.Wait Until Keyword Succeeds 55s 2s Coe.Check Pod Status Is Running
- Ping Pods
-
-Verify L3 Connectivity Between Pods
- [Documentation] This testcase verifies the connectivity between pods brought up on different nodes.Nodes are given different labels(eg : ssd,ssl) through Coe.Label Nodes keyword.
- ... These labels are also inlcuded as node selectors in busybox.yaml files ,thus the pods are placed on the desired nodes avoiding random allocation of pods.
- ... For the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels.
- Create Pods ssd ${BUSY_BOXES[2]} ${BB_NAMES[2]}
- Create Pods ssl ${BUSY_BOXES[3]} ${BB_NAMES[3]}
- BuiltIn.Wait Until Keyword Succeeds 55s 2s Coe.Check Pod Status Is Running
- Ping Pods
-
-*** Keywords ***
-Create Pods
- [Arguments] ${label} ${yaml} ${name}
- [Documentation] Creates pods using the labels of the nodes and busy box names passed as arguments.
- ${busybox} = OperatingSystem.Get File ${BUSY_BOX}
- ${busybox} = String.Replace String ${busybox} string ${label}
- ${busybox} = String.Replace String ${busybox} busyboxname ${name}
- OperatingSystem.Create File ${VARIABLES_PATH}/${yaml} ${busybox}
- SSHKeywords.Move_file_To_Remote_System ${K8s_MASTER_IP} ${VARIABLES_PATH}/${yaml} ${USER_HOME}
- Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl create -f ${yaml}
-
-Ping Pods
- [Documentation] Ping pods to check connectivity between them
- ${lines} = Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl get pods -o wide
- ${pod_name} = String.Get Line ${lines} 1
- ${pod_name} = Builtin.Should Match Regexp ${pod_name} ^\\w+
- @{lines} = String.Split To Lines ${lines} 2
- : FOR ${status} IN @{lines}
- \ ${pod_ip} = Builtin.Should Match Regexp ${status} \\d+.\\d+.\\d+.\\d+
- \ ${ping} = Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl exec -it ${pod_name} -- ping -c 3 ${pod_ip}
- \ Builtin.Should Match Regexp ${ping} ${PING_REGEXP}