"""
import binascii
+import copy
import glob
import json
import shutil
api_json_directory = None
crc_checker_instance = None
- def __init__(self, node, remote_vpp_socket="/run/vpp-api.sock"):
+ def __init__(self, node, remote_vpp_socket=Constants.SOCKSVR_PATH):
"""Store the given arguments, declare managed variables.
:param node: Node to connect to and forward unix domain socket from.
self._ssh_control_socket = None
self._local_vpp_socket = None
- @property
- def crc_checker(self):
+ def create_crc_checker(self):
"""Return the cached instance or create new one from directory.
It is assumed self.api_json_directory is set, as a class variable.
cls.api_json_directory = tmp_dir + "/usr/share/vpp/api"
# Perform initial checks before .api.json files are gone,
# by accessing the property (which also creates its instance).
- self.crc_checker
+ self.create_crc_checker()
# When present locally, we finally can find the installation path.
package_path = glob.glob(tmp_dir + installed_papi_glob)[0]
# Package path has to be one level above the vpp_papi directory.
def add(self, csit_papi_command, history=True, **kwargs):
"""Add next command to internal command list; return self.
+ Unless disabled, new entry to papi history is also added at this point.
The argument name 'csit_papi_command' must be unique enough as it cannot
be repeated in kwargs.
- Unless disabled, new entry to papi history is also added at this point.
+ The kwargs dict is deep-copied, so it is safe to use the original
+ with partial modifications for subsequent commands.
Any pending conflicts from .api.json processing are raised.
Then the command name is checked for known CRCs.
PapiHistory.add_to_papi_history(
self._node, csit_papi_command, **kwargs)
self._api_command_list.append(
- dict(api_name=csit_papi_command, api_args=kwargs))
+ dict(api_name=csit_papi_command, api_args=copy.deepcopy(kwargs)))
return self
def get_replies(self, err_msg="Failed to get replies."):
The argument name 'csit_papi_command' must be unique enough as it cannot
be repeated in kwargs.
+ The kwargs dict is deep-copied, so it is safe to use the original
+ with partial modifications for subsequent commands.
:param csit_papi_command: VPP API command.
:param history: Enable/disable adding command to PAPI command history.
if history:
PapiHistory.add_to_papi_history(
self._node, csit_papi_command, **kwargs)
- self._api_command_list.append(dict(api_name=csit_papi_command,
- api_args=kwargs))
+ self._api_command_list.append(dict(
+ api_name=csit_papi_command, api_args=copy.deepcopy(kwargs)))
return self
def get_stats(self, err_msg="Failed to get statistics.", timeout=120):