From 543c5d2242a17ee3f91a38f21439b0c4c3114054 Mon Sep 17 00:00:00 2001 From: Jan Gelety Date: Fri, 11 Sep 2020 11:08:39 +0200 Subject: Test: Add ramp-up phase to nat44ed-udir tests Change-Id: I3aa50ec1ef9b0445014daa31e767323060f4a03f Signed-off-by: Jan Gelety (cherry picked from commit d68be735d882bafcb672ebb27a66efbcabbeb02d) Change-Id: Iad67c8445e18b22eccbea25d75b91827b398775f Signed-off-by: Jan Gelety --- resources/libraries/python/NATUtil.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'resources/libraries/python/NATUtil.py') diff --git a/resources/libraries/python/NATUtil.py b/resources/libraries/python/NATUtil.py index aabcd36cda..620e14aea1 100644 --- a/resources/libraries/python/NATUtil.py +++ b/resources/libraries/python/NATUtil.py @@ -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 -- cgit 1.2.3-korg