aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2020-09-08 12:14:21 +0200
committerJan Gelety <jgelety@cisco.com>2020-09-11 01:58:48 +0200
commit48c0b29eb90856d524b924e0576d2573785b9168 (patch)
treeedbe2efeb4636ef20d537ff371924ca77beb9f79 /resources/libraries
parentdbbcb19c5c84ca068dba5baf307f7ca0ea7532f4 (diff)
test: nat44det - add session number check
- some tests need to reduce rate for ramp-up phase - some tests need to extend trail duration in ramp-up phase - removed 2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63 suite as nat out ports are randomly selected from available port range so T-Rex stateless is not able to provide required out2in traffic Change-Id: I1145496610d202f81d911e68aa819844d7600918 Signed-off-by: Jan Gelety <jgelety@cisco.com> (cherry picked from commit 3b408b7ea702dd3817442186035121fe862cbf7f) Change-Id: I53da8c086373d06e0842e5563964d9287c0fa403 Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'resources/libraries')
-rw-r--r--resources/libraries/python/NATUtil.py34
-rw-r--r--resources/libraries/robot/ip/nat.robot17
-rw-r--r--resources/libraries/robot/performance/performance_utils.robot22
3 files changed, 69 insertions, 4 deletions
diff --git a/resources/libraries/python/NATUtil.py b/resources/libraries/python/NATUtil.py
index 4ce72d84b4..857870393e 100644
--- a/resources/libraries/python/NATUtil.py
+++ b/resources/libraries/python/NATUtil.py
@@ -186,7 +186,7 @@ class NATUtil:
PapiSocketExecutor.dump_and_log(node, cmds)
# DET44 PAPI calls
- # DET44 means deterministic mode of NAT
+ # DET44 means deterministic mode of NAT44
@staticmethod
def enable_det44_plugin(node, inside_vrf=0, outside_vrf=0):
"""Enable DET44 plugin.
@@ -262,6 +262,38 @@ class NATUtil:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
@staticmethod
+ def get_det44_mapping(node):
+ """Get DET44 mapping data.
+
+ :param node: DUT node.
+ :type node: dict
+ :returns: Dictionary of DET44 mapping data.
+ :rtype: dict
+ """
+ cmd = u"det44_map_dump"
+ err_msg = f"Failed to get DET44 mapping data on the host " \
+ f"{node[u'host']}!"
+ args_in = dict()
+ with PapiSocketExecutor(node) as papi_exec:
+ details = papi_exec.add(cmd, **args_in).get_reply(err_msg)
+
+ return details
+
+ @staticmethod
+ def get_det44_sessions_number(node):
+ """Get number of established DET44 sessions from actual DET44 mapping
+ data.
+
+ :param node: DUT node.
+ :type node: dict
+ :returns: Number of established DET44 sessions.
+ :rtype: int
+ """
+ det44_data = NATUtil.get_det44_mapping(node)
+
+ return det44_data.get(u"ses_num", 0)
+
+ @staticmethod
def show_det44(node):
"""Show DET44 data.
diff --git a/resources/libraries/robot/ip/nat.robot b/resources/libraries/robot/ip/nat.robot
index 25218af456..2c88cbb294 100644
--- a/resources/libraries/robot/ip/nat.robot
+++ b/resources/libraries/robot/ip/nat.robot
@@ -190,3 +190,20 @@
| | [Arguments] | ${node}
| |
| | Show DET44 | ${node}
+
+| Verify DET44 sessions number
+| | [Documentation] | Verify that all required DET44 sessions are established.
+| |
+| | ... | *Arguments:*
+| | ... | - node - DUT node. Type: dictionary
+| | ... | - exp_n_sessions - Expected number of DET44 sessions. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Verify DET44 sessions number \| ${nodes['DUT1']} \| ${64512} \|
+| |
+| | [Arguments] | ${node} | ${exp_n_sessions}
+| |
+| | ${det44_sessions}= | Get DET44 Sessions Number | ${node}
+| | Should Be Equal As Integers | ${det44_sessions} | ${exp_n_sessions}
+| | ... | Not all DET44 sessions have been established
diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot
index af58da07e0..d820d5c187 100644
--- a/resources/libraries/robot/performance/performance_utils.robot
+++ b/resources/libraries/robot/performance/performance_utils.robot
@@ -30,6 +30,11 @@
| ${trial_duration}= | ${PERF_TRIAL_DURATION}
| ${trial_multiplicity}= | ${PERF_TRIAL_MULTIPLICITY}
| ${extended_debug}= | ${EXTENDED_DEBUG}
+| # Variable holding trial duration extension [s] used in pre_stats action
+| # clear-show-runtime-with-traffic. By default it is set to 0 but some
+| # tests (e.g. NAT) needs this duration extension in ramp up phase (e.g. to
+| # create all required nat sessions).
+| ${pre_stats_duration_ext}= | ${0}
*** Keywords ***
| Find NDR and PDR intervals using optimized search
@@ -681,12 +686,23 @@
| | ... | Additional Statistics Action for clear and show runtime counters with
| | ... | running traffic.
| |
+| | ${trial_duration}= | Evaluate
+| | ... | ${trial_duration} + ${pre_stats_duration_ext}
+| | ${rate}= | Get Variable Value | ${pre_stats_rate} | ${rate}
| | Clear and show runtime counters with running traffic
-| | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | ${traffic_directions} | ${tx_port} | ${rx_port}
+| | ... | ${trial_duration} | ${rate}
+| | ... | ${frame_size} | ${traffic_profile} | ${traffic_directions}
+| | ... | ${tx_port} | ${rx_port}
+
+| Additional Statistics Action For vpp-det44-verify-sessions
+| | [Documentation]
+| | ... | Additional Statistics Action to verify that all required DET44
+| | ... | sessions are established.
+| |
+| | Verify DET44 sessions number | ${nodes['DUT1']} | ${n_sessions}
| Additional Statistics Action For noop
| | [Documentation]
| | ... | Additional Statistics Action for no operation.
| |
-| | No operation \ No newline at end of file
+| | No operation