Test: Add ramp-up phase to nat44ed-udir tests 89/29089/23
authorJan Gelety <jgelety@cisco.com>
Fri, 11 Sep 2020 09:08:39 +0000 (11:08 +0200)
committerJan Gelety <jgelety@cisco.com>
Sat, 12 Sep 2020 20:01:41 +0000 (22:01 +0200)
Change-Id: I3aa50ec1ef9b0445014daa31e767323060f4a03f
Signed-off-by: Jan Gelety <jgelety@cisco.com>
resources/libraries/python/NATUtil.py
resources/libraries/robot/ip/nat.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot

index aabcd36..620e14a 100644 (file)
@@ -13,6 +13,7 @@
 
 """NAT utilities library."""
 
+from math import log2, modf
 from pprint import pformat
 from enum import IntEnum
 
@@ -140,8 +141,10 @@ class NATUtil:
 
         :param node: Topology node.
         :type node: dict
+        :returns: NAT44 summary data.
+        :rtype: str
         """
-        PapiSocketExecutor.run_cli_cmd(node, u"show nat44 summary")
+        return PapiSocketExecutor.run_cli_cmd(node, u"show nat44 summary")
 
     @staticmethod
     def show_nat_base_data(node):
@@ -197,10 +200,33 @@ class NATUtil:
         :returns: Value of max_translations_per_thread NAT44 parameter.
         :rtype: int
         """
-        from math import log2, modf
         rest, mult = modf(log2(sessions/(10*threads)))
         return 2 ** (int(mult) + (1 if rest else 0)) * 10
 
+    @staticmethod
+    def get_nat44_sessions_number(node, proto):
+        """Get number of established NAT44 sessions from actual NAT44 mapping
+        data.
+
+        :param node: DUT node.
+        :param proto: Required protocol - TCP/UDP/ICMP.
+        :type node: dict
+        :type proto: str
+        :returns: Number of established NAT44 sessions.
+        :rtype: int
+        :raises ValueError: If not supported protocol.
+        """
+        nat44_data = dict()
+        if proto in [u"UDP", u"TCP", u"ICMP"]:
+            for line in NATUtil.show_nat44_summary(node).splitlines():
+                sum_k, sum_v = line.split(u":") if u":" in line \
+                    else (line, None)
+                nat44_data[sum_k] = sum_v.strip() if isinstance(sum_v, str) \
+                    else sum_v
+        else:
+            raise ValueError(f"Unsupported protocol: {proto}!")
+        return nat44_data.get(f"total {proto.lower()} sessions", 0)
+
     # DET44 PAPI calls
     # DET44 means deterministic mode of NAT44
     @staticmethod
index b78575a..e80e1e1 100644 (file)
 | | ... | ${dut2} | ${out_net} | ${out_mask} | gateway=${dut1_if2_ip4}
 | | ... | interface=${DUT2_${int}1}[0]
 
+| Verify NAT44 TCP sessions number on DUT1 node
+| | [Documentation] | Verify that all required NAT44 TCP sessions are
+| | ... | established on DUT1 node.
+| |
+| | Verify NAT44 sessions number | ${nodes['DUT1']} | ${n_sessions} | TCP
+
+| Verify NAT44 UDP sessions number on DUT1 node
+| | [Documentation] | Verify that all required NAT44 UDP sessions are
+| | ... | established on DUT1 node.
+| |
+| | Verify NAT44 sessions number | ${nodes['DUT1']} | ${n_sessions} | UDP
+
+| Verify NAT44 sessions number
+| | [Documentation] | Verify that all required NAT44 sessions of required
+| | ... | protocol are established.
+| |
+| | ... | *Arguments:*
+| | ... | - node - DUT node. Type: dictionary
+| | ... | - exp_n_sessions - Expected number of NAT44 sessions. Type: integer
+| | ... | - proto - Required protocol. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Verify NAT44 sessions number \| ${nodes['DUT1']} \| ${64512} \
+| | ... | \| UDP \|
+| |
+| | [Arguments] | ${node} | ${exp_n_sessions} | ${proto}
+| |
+| | ${nat44_sessions}= | Get NAT44 Sessions Number | ${node} | ${proto}
+| | Should Be Equal As Integers | ${nat44_sessions} | ${exp_n_sessions}
+| | ... | Not all NAT44 ${proto} sessions have been established
+
 # DET44 - NAT44 deterministic
 | Enable DET44 plugin on DUT
 | | [Documentation] | Enable DET44 plugin on DUT.
 
 | Initialize NAT44 deterministic mode in circular topology
 | | [Documentation] | Initialization of NAT44 deterministic mode (DET44)
-| | ... | on DUT1.
+| | ... | on DUT1 node.
 | |
 | | Enable DET44 plugin on DUT | ${dut1}
 | | Configure DET44 interfaces
index c0f974e..89ba6e4 100644 (file)
 | ${n_hosts}= | ${1024}
 | ${n_ports}= | ${63}
 | ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Ramp-up settings
+| ${ramp_up_rate}= | ${500000}
+| ${ramp_up_duration}= | ${1}
 # Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-1024u63p-udir
+| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
 
 *** Keywords ***
 | Local Template
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding for NAT44 in circular topology
 | | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
+| | Then Send ramp-up traffic
+| | And Verify NAT44 UDP sessions number on DUT1 node
+| | And Find NDR and PDR intervals using optimized search
 | | ... | traffic_directions=${1}
 
 *** Test Cases ***
index ea33f8c..0f421e3 100644 (file)
 | ${n_hosts}= | ${16384}
 | ${n_ports}= | ${63}
 | ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Ramp-up settings
+| ${ramp_up_rate}= | ${500000}
+| ${ramp_up_duration}= | ${4.5}
 # Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-16384u63p-udir
+| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
 
 *** Keywords ***
 | Local Template
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding for NAT44 in circular topology
 | | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
+| | Then Send ramp-up traffic
+| | And Verify NAT44 UDP sessions number on DUT1 node
+| | And Find NDR and PDR intervals using optimized search
 | | ... | traffic_directions=${1}
 
 *** Test Cases ***
index dd940f6..9f17649 100644 (file)
 | ${n_hosts}= | ${262144}
 | ${n_ports}= | ${63}
 | ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Ramp-up settings
+| ${ramp_up_rate}= | ${500000}
+| ${ramp_up_duration}= | ${72.7}
 # Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-262144u63p-udir
+| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
 # Main heap size multiplicator
 | ${heap_size_mult}= | ${3}
 
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding for NAT44 in circular topology
 | | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
+| | Then Send ramp-up traffic
+| | And Verify NAT44 UDP sessions number on DUT1 node
+| | And Find NDR and PDR intervals using optimized search
 | | ... | traffic_directions=${1}
 
 *** Test Cases ***
index a0d19bb..b201e36 100644 (file)
 | ${n_hosts}= | ${4096}
 | ${n_ports}= | ${63}
 | ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Ramp-up settings
+| ${ramp_up_rate}= | ${500000}
+| ${ramp_up_duration}= | ${1.1}
 # Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-4096u63p-udir
+| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
 
 *** Keywords ***
 | Local Template
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding for NAT44 in circular topology
 | | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
+| | Then Send ramp-up traffic
+| | And Verify NAT44 UDP sessions number on DUT1 node
+| | And Find NDR and PDR intervals using optimized search
 | | ... | traffic_directions=${1}
 
 *** Test Cases ***
index f6e6503..dfc88b3 100644 (file)
 | ${n_hosts}= | ${65536}
 | ${n_ports}= | ${63}
 | ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Ramp-up settings
+| ${ramp_up_rate}= | ${500000}
+| ${ramp_up_duration}= | ${18.2}
 # Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-65536u63p-udir
+| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
 # Main heap size multiplicator
 | ${heap_size_mult}= | ${2}
 
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding for NAT44 in circular topology
 | | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
+| | Then Send ramp-up traffic
+| | And Verify NAT44 UDP sessions number on DUT1 node
+| | And Find NDR and PDR intervals using optimized search
 | | ... | traffic_directions=${1}
 
 *** Test Cases ***