From 3b408b7ea702dd3817442186035121fe862cbf7f Mon Sep 17 00:00:00 2001
From: Jan Gelety <jgelety@cisco.com>
Date: Tue, 8 Sep 2020 12:14:21 +0200
Subject: 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>
---
 resources/libraries/python/NATUtil.py | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

(limited to 'resources/libraries/python')

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.
@@ -261,6 +261,38 @@ class NATUtil:
         with PapiSocketExecutor(node) as papi_exec:
             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.
-- 
cgit