X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Ftcp.py;h=62cff2f4ff3b4a043ade552ff0865d57074b504e;hb=79f5ba9bf7656972dd988508eff9465562dde42c;hp=5ae1ebf929b82a1b82a709932a90c428f5820524;hpb=a95c54b7821596402e0aa7136cd7d1de71a5b187;p=csit.git diff --git a/resources/libraries/python/tcp.py b/resources/libraries/python/tcp.py index 5ae1ebf929..62cff2f4ff 100644 --- a/resources/libraries/python/tcp.py +++ b/resources/libraries/python/tcp.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 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: @@ -11,26 +11,70 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""TCP util library. -""" +"""TCP util library.""" -from resources.libraries.python.VatExecutor import VatTerminal +from resources.libraries.python.Constants import Constants +from resources.libraries.python.PapiExecutor import PapiSocketExecutor -class TCPUtils(object): - """Implementation of the TCP utilities. - """ +class TCPUtils: + """Implementation of the TCP utilities.""" + + www_root_dir = f"{Constants.REMOTE_FW_DIR}/{Constants.RESOURCES_TP_WRK_WWW}" def __init__(self): pass - @staticmethod - def start_http_server(node): - """Start HTTP server on the given node. + @classmethod + def start_vpp_http_server_params( + cls, node, http_static_plugin, prealloc_fifos, fifo_size, + private_segment_size): + """Start the test HTTP server internal application or + the HTTP static server plugin internal applicatoin on the given node. + + http static server www-root prealloc-fifos + fifo-size + private-segment-size + -- or -- + test http server static prealloc-fifos fifo-size + private-segment-size + + + Where N is the max number of connections you expect to handle at one + time and should be small if you test for CPS and exchange few + bytes, say 4, if each connection just exchanges few packets. Or it + should be much larger, up to 1024/4096 (i.e. 1-4MB) if you have only + one connection and exchange a lot of packets, i.e., when you test for + RPS. If you need to allocate lots of FIFOs, so you test for CPS, make + private-segment-size something like 4g. + + Example: + + For CPS + http static server www-root prealloc-fifos 10000 + fifo-size 64 private-segment-size 4000m + + For RPS + test http server static prealloc-fifos 500000 fifo-size 4 + private-segment-size 4000m :param node: Node to start HTTP server on. + :param http_static_plugin: Run HTTP static server plugin + :param prealloc_fifos: Max number of connections you expect to handle at + one time. + :param fifo_size: FIFO size in kB. + :param private_segment_size: Private segment size. Number + unit. :type node: dict + :type http_static_plugin: boolean + :type prealloc_fifos: str + :type fifo_size: str + :type private_segment_size: str """ + cmd = f"http static server www-root {cls.www_root_dir} " \ + f"prealloc-fifos {prealloc_fifos} fifo-size {fifo_size} " \ + f"private-segment-size {private_segment_size}" \ + if http_static_plugin \ + else f"test http server static prealloc-fifos {prealloc_fifos} " \ + f"fifo-size {fifo_size} private-segment-size {private_segment_size}" - with VatTerminal(node) as vat: - vat.vat_terminal_exec_cmd_from_template("start_http_server.vat") + PapiSocketExecutor.run_cli_cmd(node, cmd)