aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYulong Pei <yulong.pei@intel.com>2023-02-06 08:09:02 +0000
committerPeter Mikus <peter.mikus@protonmail.ch>2023-02-13 10:47:03 +0000
commit9a0d6a86aadb5dfcc9fb55af2a8efc4881540579 (patch)
treea4c910c56fe79c64e952d677b07b2c7cb36d4d04
parent72aba98d0d6325c34cc4412401f9020497688388 (diff)
Fix issue in csit hoststack test
1. ABTool.py, fix error in parsing the return result of ab 2. DUTSetup.py, add sleep to wait for the program to start Signed-off-by: Peng Lu <pengx.lu@intel.com> Signed-off-by: Xinfeng Zhao <xinfengx.zhao@intel.com> Signed-off-by: Yulong Pei <yulong.pei@intel.com> Change-Id: I1cffa28d8492bcc27ae188f1e084b80afad60502
-rw-r--r--resources/libraries/python/DUTSetup.py37
-rw-r--r--resources/tools/ab/ABTools.py12
2 files changed, 17 insertions, 32 deletions
diff --git a/resources/libraries/python/DUTSetup.py b/resources/libraries/python/DUTSetup.py
index 6e3530277a..419a4e291f 100644
--- a/resources/libraries/python/DUTSetup.py
+++ b/resources/libraries/python/DUTSetup.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -207,42 +207,25 @@ class DUTSetup:
exec_cmd_no_error(node, cmd, message=f"{program} is not installed")
@staticmethod
- def get_pid(node, process):
+ def get_pid(node, process, retries=3):
"""Get PID of running process.
:param node: DUT node.
:param process: process name.
+ :param retries: How many times to retry on failure.
:type node: dict
:type process: str
+ :type retries: int
:returns: PID
:rtype: int
:raises RuntimeError: If it is not possible to get the PID.
"""
- ssh = SSH()
- ssh.connect(node)
-
- retval = None
- for i in range(3):
- logger.trace(f"Try {i}: Get {process} PID")
- ret_code, stdout, stderr = ssh.exec_command(f"pidof {process}")
-
- if int(ret_code):
- raise RuntimeError(
- f"Not possible to get PID of {process} process on node: "
- f"{node[u'host']}\n {stdout + stderr}"
- )
-
- pid_list = stdout.split()
- if len(pid_list) == 1:
- return [int(stdout)]
- if not pid_list:
- logger.debug(f"No {process} PID found on node {node[u'host']}")
- continue
- logger.debug(f"More than one {process} PID found " \
- f"on node {node[u'host']}")
- retval = [int(pid) for pid in pid_list]
-
- return retval
+ cmd = f"pidof {process}"
+ stdout, _ = exec_cmd_no_error(
+ node, cmd, retries=retries,
+ message=f"No {process} PID found on node {node[u'host']}")
+ pid_list = stdout.split()
+ return [int(pid) for pid in pid_list]
@staticmethod
def get_vpp_pids(nodes):
diff --git a/resources/tools/ab/ABTools.py b/resources/tools/ab/ABTools.py
index bb21ea351f..b929b49fdd 100644
--- a/resources/tools/ab/ABTools.py
+++ b/resources/tools/ab/ABTools.py
@@ -13,6 +13,7 @@
"""ab implementation into CSIT framework."""
+from re import search
from resources.libraries.python.Constants import Constants
from resources.libraries.python.model.ExportResult import (
export_hoststack_results
@@ -167,15 +168,16 @@ class ABTools:
failed_requests = None
for line in stdout.splitlines():
if f"Connection {rps_cps} rate:" in line:
- rate = float(line.split(" ")[3])
+ rate = float(search(r":\s*(\d+\.?\d+)", line).group(1))
elif "Transfer Rate:" in line:
- bandwidth = float(line.split(" ")[2]) * 8000
+ bandwidth = \
+ float(search(r":\s*(\d+\.?\d+)", line).group(1)) * 8000
elif "Latency:" in line:
- latency = float(line.split(" ")[1])
+ latency = float(search(r":\s*(\d+\.?\d+)", line).group(1))
elif "Completed requests:" in line:
- completed_requests = int(line.split(" ")[2])
+ completed_requests = int(search(r":\s*(\d+)", line).group(1))
elif "Failed requests" in line:
- failed_requests = int(line.split(" ")[2])
+ failed_requests = int(search(r":\s*(\d+)", line).group(1))
export_hoststack_results(
bandwidth, rate, rate_unit, latency, failed_requests,