Set of TCs to test K8s layer via Robot
[validation.git] / ha / ha_etcd_api_ctl_sch.robot
diff --git a/ha/ha_etcd_api_ctl_sch.robot b/ha/ha_etcd_api_ctl_sch.robot
new file mode 100644 (file)
index 0000000..31b6f0b
--- /dev/null
@@ -0,0 +1,218 @@
+##############################################################################
+# Copyright (c) 2019 AT&T Intellectual Property.                             #
+# Copyright (c) 2019 Nokia.                                                  #
+#                                                                            #
+# Licensed under the Apache License, Version 2.0 (the "License");            #
+# you maynot use this file except in compliance with the License.            #
+#                                                                            #
+# You may obtain a copy of the License at                                    #
+#       http://www.apache.org/licenses/LICENSE-2.0                           #
+#                                                                            #
+# Unless required by applicable law or agreed to in writing, software        #
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT  #
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.           #
+# See the License for the specific language governing permissions and        #
+# limitations under the License.                                             #
+##############################################################################
+
+
+*** Settings ***
+Documentation     HA tests: etcd, api-server, controller-manager, scheduler
+Library           SSHLibrary
+Library           OperatingSystem
+Library           BuiltIn
+Suite Setup       Open Connection And Log In
+Suite Teardown    Close All Connections
+
+*** Variables ***
+${HOST}           localhost
+${USERNAME}       localadmin
+${NODENAME}       aknode109
+${LOG}            /opt/akraino/validation/ha/print_etcd_api_ctl-manager_sch.txt
+
+
+## kubernetes-etcd
+
+*** Test Cases ***
+Verify etcd status
+        [Documentation]         etcd label defined
+        ${output}=              Execute Command        date
+        Append To File          ${LOG}  ${output}${\n}
+        Start Command           kubectl describe node ${NODENAME} | egrep "Labels|etcd"    sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-etcd=enabled
+
+
+Failure of etcd in node
+        [Documentation]         kubernetes etcd removed
+        Start Command           kubectl label node ${NODENAME} kubernetes-etcd-    sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   3s
+        Should Contain          ${stdout}              labeled
+        Sleep                   40s
+        ${output}=              Execute Command        kubectl describe node ${NODENAME} | egrep "Labels|etcd"    sudo=True
+        Append To File          ${LOG}  ${output}${\n}
+
+
+Enable etcd in node
+        [Documentation]         etcd label re-established
+        Start Command           kubectl label node ${NODENAME} kubernetes-etcd=enabled    sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   5s
+        Should Contain          ${stdout}              labeled
+        Sleep                   40s
+        ${output}=              Execute Command        kubectl describe node ${NODENAME} | egrep "Labels|etcd"     sudo=True
+        Append To File          ${LOG}  ${output}${\n}
+
+
+Verify etcd health
+        [Documentation]         etcd endpoint healthy
+        Sleep                   25s
+        Start Command           kubectl exec -it -n kube-system kubernetes-etcd-${NODENAME} etcdctl endpoint health      sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   5s
+        Should Contain          ${stdout}              is healthy: successfully committed
+
+
+Check etcd node list
+        [Documentation]         member list started
+        Start Command           kubectl exec -it -n kube-system kubernetes-etcd-${NODENAME} etcdctl member list      sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Should Contain          ${stdout}              started, ${NODENAME}
+
+## kubernetes-api
+
+
+Verify api-server status
+        [Documentation]         kubernetes api-server state
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-apiserver=enabled
+
+
+Failure of api-server in node
+        [Documentation]         kubernetes api-server removed
+        Start Command           kubectl label node ${NODENAME} kubernetes-apiserver-     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   3s
+        Should Contain          ${stdout}              labeled
+        Sleep                   40s
+        ${output}=              Execute Command        kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver'     sudo=True
+        Append To File          ${LOG}  ${output}${\n}
+
+
+Enable api-server in node
+        [Documentation]         api-serverd label re-established
+        Start Command           kubectl label node ${NODENAME} kubernetes-apiserver=enabled      sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   5s
+        Should Contain          ${stdout}              labeled
+        Sleep                   30s
+
+
+Check api-server status
+        [Documentation]         kubernetes api-server re-established
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-apiserver=enabled
+
+##kubernetes controller-manager
+
+Verify controller-manager status
+        [Documentation]         kubernetes controller-manager state
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|controller-manager'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-controller-manager=enabled
+
+
+Failure of controller-manager in node
+        [Documentation]         kubernetes controller removed
+        Start Command           kubectl label node ${NODENAME} kubernetes-controller-manager-     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   3s
+        Should Contain          ${stdout}              labeled
+        Sleep                   40s
+        ${output}=              Execute Command        kubectl describe node ${NODENAME} | egrep 'Label|controller-manager'     sudo=True
+        Append To File          ${LOG}  ${output}${\n}
+
+
+Enable controller-manager in node
+        [Documentation]         controller-manager re-established
+        Start Command           kubectl label node ${NODENAME} kubernetes-controller-manager=enabled      sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   5s
+        Should Contain          ${stdout}              labeled
+        Sleep                   30s
+
+
+Check controller-manager status
+        [Documentation]         kubernetes controller-manager re-established
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|controller-manager'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-controller-manager=enabled
+
+## kubernetes-scheduler
+
+Verify k8s-scheduler status
+        [Documentation]         kubernetes scheduler state
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|scheduler'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-scheduler=enabled
+
+
+Failure of scheduler in node
+        [Documentation]         kubernetes scheduler removed
+        Start Command           kubectl label node ${NODENAME} kubernetes-scheduler-     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   3s
+        Should Contain          ${stdout}              labeled
+        Sleep                   40s
+        ${output}=              Execute Command        kubectl describe node ${NODENAME} | egrep 'Label|scheduler'     sudo=True
+        Append To File          ${LOG}  ${output}${\n}
+
+
+Enable scheduler in node
+        [Documentation]         scheduler re-established
+        Start Command           kubectl label node ${NODENAME} kubernetes-scheduler=enabled      sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   5s
+        Should Contain          ${stdout}              labeled
+        Sleep                   30s
+
+
+Check k8s scheduler status
+        [Documentation]         kubernetes scheduler re-established
+        Start Command           kubectl describe node ${NODENAME} | egrep 'Label|scheduler'     sudo=True
+        ${stdout}=              Read Command Output
+        Append To File          ${LOG}  ${stdout}${\n}
+        Sleep                   2s
+        Should Contain          ${stdout}              kubernetes-scheduler=enabled
+
+
+*** Keywords ***
+Open Connection And Log In
+  Open Connection       ${HOST}
+  Login With Public Key    ${USERNAME}  /root/.ssh/${USERNAME}_id_rsa
+