X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Ftcp.py;h=f3a24cbd06e7bbd5ab11f2e964f229f1dea15fc7;hb=ae7dc0011f376861ba9259b7cb5166777520799c;hp=5ae1ebf929b82a1b82a709932a90c428f5820524;hpb=a95c54b7821596402e0aa7136cd7d1de71a5b187;p=csit.git diff --git a/resources/libraries/python/tcp.py b/resources/libraries/python/tcp.py index 5ae1ebf929..f3a24cbd06 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: @@ -14,23 +14,75 @@ """TCP util library. """ -from resources.libraries.python.VatExecutor import VatTerminal +from resources.libraries.python.PapiExecutor import PapiSocketExecutor +from resources.libraries.python.Constants import Constants class TCPUtils(object): """Implementation of the TCP utilities. """ + www_root_dir = '{rmt_fw_dir}/{wrk_www}'\ + .format(rmt_fw_dir=Constants.REMOTE_FW_DIR, + wrk_www=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 """ - - with VatTerminal(node) as vat: - vat.vat_terminal_exec_cmd_from_template("start_http_server.vat") + if http_static_plugin: + cmd = 'http static server www-root {www_root} '\ + 'prealloc-fifos {prealloc_fifos} fifo-size {fifo_size}'\ + ' private-segment-size {pvt_seg_size}'\ + .format(www_root=cls.www_root_dir, + prealloc_fifos=prealloc_fifos, fifo_size=fifo_size, + pvt_seg_size=private_segment_size) + else: + cmd = 'test http server static prealloc-fifos {prealloc_fifos} '\ + 'fifo-size {fifo_size} private-segment-size {pvt_seg_size}'\ + .format(prealloc_fifos=prealloc_fifos, fifo_size=fifo_size, + pvt_seg_size=private_segment_size) + PapiSocketExecutor.run_cli_cmd(node, cmd)