# Copyright (c) 2018 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: # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """TCP util library. """ from resources.libraries.python.VatExecutor import VatTerminal class TCPUtils(object): """Implementation of the TCP utilities. """ def __init__(self): pass @staticmethod def start_http_server(node): """Start HTTP server on the given node. :param node: Node to start HTTP server on. :type node: dict """ with VatTerminal(node) as vat: vat.vat_terminal_exec_cmd_from_template( "start_http_server.vat") @staticmethod def start_http_server_params(node, prealloc_fifos, fifo_size, private_segment_size): """Start HTTP server on the given node. test http server static prealloc-fifos <N> fifo-size <size in kB> private-segment-size <seg_size expressed as number + unit, e.g. 100m> Where N is the max number of connections you expect to handle at one time and <size> 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 test http server static prealloc-fifos 10000 fifo-size 64 private-segment-size 4000m For RPS test http server static prealloc-fifos 500000 fifo-size 4 test http server static prealloc-fifos 500000 fifo-size 4 private-segment-size 4000m :param node: Node to start HTTP server on. :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 prealloc_fifos: str :type fifo_size: str :type private_segment_size: str """ with VatTerminal(node, json_param=False) as vat: vat.vat_terminal_exec_cmd_from_template( "start_http_server_params.vat", prealloc_fifos=prealloc_fifos, fifo_size=fifo_size, private_segment_size=private_segment_size)