X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=ric_robot_suite%2Frobot%2Ftestsuites%2Fmcxapp.robot;fp=ric_robot_suite%2Frobot%2Ftestsuites%2Fmcxapp.robot;h=dd85e452e9c2c7a378e6a090e9bf3f986203464c;hb=e41f46a29c4d635ee3f864e36cfd0ac123bac4ec;hp=0000000000000000000000000000000000000000;hpb=7bd8a0bd3e84d325d1a5d1df6feb7a259fee2004;p=it%2Ftest.git diff --git a/ric_robot_suite/robot/testsuites/mcxapp.robot b/ric_robot_suite/robot/testsuites/mcxapp.robot new file mode 100644 index 0000000..dd85e45 --- /dev/null +++ b/ric_robot_suite/robot/testsuites/mcxapp.robot @@ -0,0 +1,103 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not 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 Tests for the Measurement Campaign XApp + +Resource ../resources/xapps/mcxapp_properties.robot +Resource ../resources/global_properties.robot + +Library Collections +Library KubernetesEntity ${GLOBAL_XAPP_NAMESPACE} + +*** Variables *** +${deploymentName} = ${GLOBAL_XAPP_NAMESPACE}-mcxapp +${listenerContainerName} = mc-xapp-listener +${listenerStatRegex} = ^[0-9]+\\s*\\[STAT\\]\\s*\\(mcl\\) +${recentListenerDrops} = last 60s.*drops\\s*=\\s*[1-9] +${recentListenerErrors} = last 60s.*errs\\s*=\\s*[1-9] + +*** Test Cases *** +MC XApp Should Be Available + [Tags] etetests xapptests mcxapptests + ${deploy} = Deployment ${deploymentName} + ${status} = Most Recent Availability Condition @{deploy.status.conditions} + Should Be Equal As Strings ${status} True ignore_case=True + +MC XApp Listener Should Not Be Dropping Messages + [Tags] etetests xapptests mcxapptests + ${log} = Most Recent Container Log ${listenerContainerName} ${listenerStatRegex} + Should Not Contain Match ${log} ${recentListenerDrops} + +MC XApp Listener Should Not Be Producing Errors + [Tags] etetests xapptests mcxapptests + ${log} = Most Recent Container Log ${listenerContainerName} ${listenerStatRegex} + Should Not Contain Match ${log} ${recentListenerErrors} + +Writer Should Be Successfully Sending Statistics + [Tags] etetests xapptests mcxapptests + Set Test Variable ${finalStatus} PASS + :FOR ${stat} IN @{GLOBAL_MCXAPP_WRITER_STATISTICS} + \ ${statRE} = Regexp Escape ${stat} + \ ${log} = Most Recent Container Log + ... ${GLOBAL_MCXAPP_WRITER_NAME} + ... ^${statRE}:\\s+successful\\s+ves\\s+posts\\.* + \ ${status} ${u} = Run Keyword And Ignore Error + ... Should Contain Match ${log} regexp=${writerVesSuccesses} + \ ${finalStatus} = Set Variable If "${status}" == "FAIL" + ... FAIL + ... ${finalStatus} + \ Run Keyword If "${status}" == "FAIL" + ... Log No messages have been sent to VES for ${stat} + \ ${status} ${u} = Run Keyword And Ignore Error + ... Should Not Contain Match ${log} regexp=${writerVesErrors} + \ ${finalStatus} = Set Variable If "${status}" == "FAIL" + ... FAIL + ... ${finalStatus} + \ Run Keyword If "${status}" == "FAIL" + ... Log ${stat} is producing errors logging to VES + Run Keyword If "${finalStatus}" == "FAIL" + ... Fail One or more statistics is not being succesfully logged + +*** Keywords *** +Most Recent Availability Condition + # this makes the probably-unsafe assumption that the conditions are ordered + # temporally. + [Arguments] @{Conditions} + ${status} = Set Variable 'False' + :FOR ${Condition} IN @{Conditions} + \ ${status} = Set Variable If '${Condition.type}' == 'Available' ${Condition.status} ${status} + [Return] ${status} + +Most Recent Match + [Arguments] ${list} ${regex} + ${matches} = Get Matches ${list} regexp=${regex} + Should Not Be Empty ${matches} No log entries matching ${regex} + ${match} = Get From List ${matches} -1 + [Return] ${match} + +Most Recent Container Log + [Arguments] ${container}=${EMPTY} ${regex}=${EMPTY} + ${pods} = Retrieve Pods For Deployment ${deploymentName} + ${logs} = Create List + :FOR ${pod} IN @{pods} + \ ${log} = Retrieve Log For Pod ${pod} ${container} + \ Should Not Be Empty ${log} No log entries for ${pod}/${container} + \ ${line} = Run Keyword If "${regex}" != "${EMPTY}" + ... Most Recent Match ${log} ${regex} + ... ELSE + ... Get From List ${log} -1 + \ Append To List ${logs} ${line} + [Return] ${logs} +