27c6edb6292509fa5aebc95e2661326838bf7c77
[it/test.git] / ric_robot_suite / helm / nanobot / configmap-src / public / resources / mcxapp_interface.robot
1 #   Copyright (c) 2019 AT&T Intellectual Property.
2 #
3 #   Licensed under the Apache License, Version 2.0 (the "License");
4 #   you may not use this file except in compliance with the License.
5 #   You may obtain a copy of the License at
6 #
7 #       http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #   Unless required by applicable law or agreed to in writing, software
10 #   distributed under the License is distributed on an "AS IS" BASIS,
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #   See the License for the specific language governing permissions and
13 #   limitations under the License.
14
15 *** Settings ***
16 Documentation  Tools for interacting with the MC XApp
17
18 Resource       /robot/resources/global_properties.robot
19 Resource       /robot/resources/mcxapp_properties.robot
20
21 Library        Collections
22 Library        String
23 Library        KubernetesEntity       ${GLOBAL_XAPP_NAMESPACE}
24
25 *** Variables ***
26
27 ${listenerStatSubstring}              (mcl) mtype=
28 ${listenerStatRegex}                  ^\\s*([0-9]+)\\s+\\[STAT\\]\\s+\\(mcl\\)\\s+mtype=([^\\s]+)\\s+total\\s+writes=([0-9]+)\\s+total\\s+drops=([0-9]+);.*writes=([0-9]+)\\s+drops=([0-9]+)
29
30 *** Keywords ***
31 Retrieve Listener Message Counts
32   ${pods} =       Retrieve Pods For Deployment  ${MCDeployment}
33   # for now, i'm just going to completely ignore the possibility
34   # of multiple MC XApp pods.  that seems safe, i think.
35   ${pod} =        Get From List         ${pods}  0
36   ${log} =        Retrieve Log For Pod  ${pod}   tail=500
37   ${statLogs} =   Get Matches           ${log}   glob=*${listenerStatSubstring}*
38   ${stats} =      Parse Listener Statistics      ${statLogs}
39   [Return]        ${stats}
40
41 Parse Listener Statistics
42   [Arguments]  ${logLines}
43   # while it's almost certainly safe to assume the log
44   # lines are sorted by timestamp, it's not something i'm
45   # going to take for granted.
46   ${stats} =         Create Dictionary
47   FOR  ${statLine}  IN  @{logLines}
48      ${match}  ${ts}  ${mtype}  ${tWrites}  ${tDrops}  ${rWrites}  ${rDrops} =
49      ...  Should Match Regexp   ${statLine}  ${listenerStatRegex}
50      ${stat} =        Create Dictionary
51      ...              timestamp=${ts}
52      ...              totalWrites=${tWrites}
53      ...              totalDrops=${tDrops}
54      ...              recentWrites=${rWrites}
55      ...              recentDrops=${rDrops}
56      ${s}  ${d} =     Run Keyword And Ignore Error
57      ...              Get From Dictionary  ${stats}  ${mtype}
58      ${prevTS} =      Run Keyword If       "${s}" == "PASS"
59      ...              Get From Dictionary  ${d}  timestamp
60      ...  ELSE
61      ...              Set Variable         -1
62      Run Keyword If   ${ts} > ${prevTS}
63      ...              Set To Dictionary  ${stats}  ${mtype}  ${stat}
64   END
65   [Return]     ${stats}