aboutsummaryrefslogtreecommitdiffstats
path: root/robot/resources
diff options
context:
space:
mode:
Diffstat (limited to 'robot/resources')
-rw-r--r--robot/resources/mariadb_galera_interface.robot48
1 files changed, 48 insertions, 0 deletions
diff --git a/robot/resources/mariadb_galera_interface.robot b/robot/resources/mariadb_galera_interface.robot
new file mode 100644
index 00000000..9dd6f4af
--- /dev/null
+++ b/robot/resources/mariadb_galera_interface.robot
@@ -0,0 +1,48 @@
+*** Settings ***
+Documentation The main interface for interacting with Mariadb Galera. It contains the keywords which will login to the Mariadb Galera pod and validates SO databases connectivity.
+
+Library Collections
+Library OperatingSystem
+Library String
+
+*** Variables ***
+&{MARIADB_GALERA_CREDENTIALS} user=root password=secretpassword
+@{MARIADB_GALERA_SO_DATABASES} catalogdb requestdb camundabpmn
+@{CONNECTION_ERROR_MESSAGE} Can't connect No such file or directory command terminated
+${POD_LOGGED_IN_MESSAGE} logged into Mariadb Galera pod
+${MYSQL_STATUS_MESSAGE} Current database:
+
+
+*** Keywords ***
+Fetch Namespace
+ [Documentation] This keyword is responsible for fetching and returning the value of namespace from the provided Global IP Address variable.
+ [Arguments] ${GLOBAL_INJECTED_SO_BPMN_IP_ADDR}
+ ${namespace}= Evaluate "${GLOBAL_INJECTED_SO_BPMN_IP_ADDR}".split(".")[-1]
+ [Return] ${namespace}
+
+Check for Mariadb Galera Pod Connection
+ [Documentation] This keyword is responsible for logging into the Mariadb Galera pod and check if we can login to the Mariadb Galera pod. To verify we print a string and match the output whether the same string was returned or not.
+ [Arguments] ${message}=${POD_LOGGED_IN_MESSAGE}
+ ${namespace}= Fetch Namespace ${GLOBAL_INJECTED_SO_BPMN_IP_ADDR}
+ # Extracting the mariadb galera pod and storing it into a variable
+ ${mariadb_pod}= Run kubectl -n ${namespace} get po -o name | grep -w 'mariadb-galera-[0-9]'
+ ${pod_connectivity_command}= Catenate kubectl -n ${namespace} exec ${mariadb_pod} -- sh -c "echo ${message}"
+ ${pod_connectivity_output}= Run ${pod_connectivity_command}
+ # The output should contain the exact same message which we are printing by logging into the Mariadb Galera pod
+ Should Contain ${pod_connectivity_output} ${message} ignore_case=True
+
+Check for SO Databases Connection
+ [Documentation] This keyword is responsible for logging into the Mariadb Galera pod and check if we can login to the SO MySQL Databases.
+ ${namespace}= Fetch Namespace ${GLOBAL_INJECTED_SO_BPMN_IP_ADDR}
+ # Extracting the mariadb galera pod and storing it into a variable
+ ${mariadb_pod}= Run kubectl -n ${namespace} get po -o name | grep -w 'mariadb-galera-[0-9]'
+ # Looping through all 3 mariadb galera databases (catalogdb, requestdb and camundabpmn) to validate SO connectivity
+ FOR ${index} IN RANGE 3
+ ${mysql_connectivity_command}= Catenate kubectl -n ${namespace} exec ${mariadb_pod} -- sh
+ ... -c "mysql -u ${MARIADB_GALERA_CREDENTIALS}[user] -p${MARIADB_GALERA_CREDENTIALS}[password] ${MARIADB_GALERA_SO_DATABASES}[${index}]
+ ... -e 'status'"
+ ${mysql_connectivity_output}= Run ${mysql_connectivity_command}
+ # The output should contain the message that is having SO databases name.
+ Should Contain ${mysql_connectivity_output} ${MYSQL_STATUS_MESSAGE} ${MARIADB_GALERA_SO_DATABASES}[${index}] ignore_case=True
+ Should Not Contain Any ${CONNECTION_ERROR_MESSAGE} ${mysql_connectivity_output} ignore_case=True
+ END