Lines Matching defs:self

89     def __init__(self, node_config: SutNodeConfiguration):
96 self.virtual_devices = []
97 self.dpdk_prefix_list = []
98 self._env_vars = {}
99 self._remote_tmp_dir = self.main_session.get_remote_tmp_dir()
100 self.__remote_dpdk_tree_path = None
101 self._remote_dpdk_build_dir = None
102 self._app_compile_timeout = 90
103 self._dpdk_kill_session = None
104 self.dpdk_timestamp = (
107 self._dpdk_version = None
108 self._node_info = None
109 self._compiler_version = None
110 self._path_to_devbind_script = None
111 self._ports_bound_to_dpdk = False
112 self._logger.info(f"Created node: {self.name}")
115 def _remote_dpdk_tree_path(self) -> str | PurePath:
117 if self.__remote_dpdk_tree_path:
118 return self.__remote_dpdk_tree_path
120 self._logger.warning(
127 def remote_dpdk_build_dir(self) -> str | PurePath:
129 if self._remote_dpdk_build_dir:
130 return self._remote_dpdk_build_dir
132 self._logger.warning(
139 def dpdk_version(self) -> str | None:
141 if self._dpdk_version is None:
142 self._dpdk_version = self.main_session.get_dpdk_version(self._remote_dpdk_tree_path)
143 return self._dpdk_version
146 def node_info(self) -> OSSessionInfo:
148 if self._node_info is None:
149 self._node_info = self.main_session.get_node_info()
150 return self._node_info
153 def compiler_version(self) -> str | None:
155 if self._compiler_version is None:
156 self._logger.warning("The `compiler_version` is None because a pre-built DPDK is used.")
158 return self._compiler_version
161 def compiler_version(self, value: str) -> None:
167 self._compiler_version = value
170 def path_to_devbind_script(self) -> PurePath | str:
172 if self._path_to_devbind_script is None:
173 self._path_to_devbind_script = self.main_session.join_remote_path(
174 self._remote_dpdk_tree_path, "usertools", "dpdk-devbind.py"
176 return self._path_to_devbind_script
178 def get_dpdk_build_info(self) -> DPDKBuildInfo:
184 return DPDKBuildInfo(dpdk_version=self.dpdk_version, compiler_version=self.compiler_version)
187 self,
203 self.virtual_devices.append(VirtualDevice(vdev))
204 self._set_up_dpdk(dpdk_build_config)
206 def tear_down_test_run(self) -> None:
209 self.virtual_devices = []
210 self._tear_down_dpdk()
213 self,
227 self._set_remote_dpdk_tree_path(dpdk_tree)
229 self._copy_dpdk_tree(dpdk_tree)
231 self._validate_remote_dpdk_tarball(tarball)
232 self._prepare_and_extract_dpdk_tarball(tarball)
234 remote_tarball = self._copy_dpdk_tarball_to_remote(tarball)
235 self._prepare_and_extract_dpdk_tarball(remote_tarball)
239 self._set_remote_dpdk_build_dir(build_dir)
241 self._configure_dpdk_build(build_options)
242 self._build_dpdk()
244 self.bind_ports_to_driver()
246 def _tear_down_dpdk(self) -> None:
248 self._env_vars = {}
249 self.__remote_dpdk_tree_path = None
250 self._remote_dpdk_build_dir = None
251 self._dpdk_version = None
252 self.compiler_version = None
253 self.bind_ports_to_driver(for_dpdk=False)
255 def _set_remote_dpdk_tree_path(self, dpdk_tree: PurePath):
268 if not self.main_session.remote_path_exists(dpdk_tree):
272 if not self.main_session.is_remote_dir(dpdk_tree):
275 self.__remote_dpdk_tree_path = dpdk_tree
277 def _copy_dpdk_tree(self, dpdk_tree_path: Path) -> None:
283 self._logger.info(
284 f"Copying DPDK source tree to SUT: '{dpdk_tree_path}' into '{self._remote_tmp_dir}'."
286 self.main_session.copy_dir_to(
288 self._remote_tmp_dir,
293 self.__remote_dpdk_tree_path = self.main_session.join_remote_path(
294 self._remote_tmp_dir, PurePath(dpdk_tree_path).name
297 def _validate_remote_dpdk_tarball(self, dpdk_tarball: PurePath) -> None:
308 if not self.main_session.remote_path_exists(dpdk_tarball):
310 if not self.main_session.is_remote_tarfile(dpdk_tarball):
313 def _copy_dpdk_tarball_to_remote(self, dpdk_tarball: Path) -> PurePath:
322 self._logger.info(
323 f"Copying DPDK tarball to SUT: '{dpdk_tarball}' into '{self._remote_tmp_dir}'."
325 self.main_session.copy_to(dpdk_tarball, self._remote_tmp_dir)
326 return self.main_session.join_remote_path(self._remote_tmp_dir, dpdk_tarball.name)
328 def _prepare_and_extract_dpdk_tarball(self, remote_tarball_path: PurePath) -> None:
353 tarball_top_dir = self.main_session.get_tarball_top_dir(remote_tarball_path)
354 self.__remote_dpdk_tree_path = self.main_session.join_remote_path(
359 self._logger.info(
361 f"'{remote_tarball_path}' into '{self._remote_dpdk_tree_path}'."
363 self.main_session.extract_remote_tarball(
365 self._remote_dpdk_tree_path,
368 def _set_remote_dpdk_build_dir(self, build_dir: str):
383 remote_dpdk_build_dir = self.main_session.join_remote_path(
384 self._remote_dpdk_tree_path, build_dir
386 if not self.main_session.remote_path_exists(remote_dpdk_build_dir):
391 self._remote_dpdk_build_dir = PurePath(remote_dpdk_build_dir)
393 def _configure_dpdk_build(self, dpdk_build_config: DPDKBuildOptionsConfiguration) -> None:
402 self._env_vars = {}
403 self._env_vars.update(self.main_session.get_dpdk_build_env_vars(dpdk_build_config.arch))
405 self._env_vars["CC"] = f"'{compiler_wrapper} {dpdk_build_config.compiler.name}'"
407 self._env_vars["CC"] = dpdk_build_config.compiler.name
409 self.compiler_version = self.main_session.get_compiler_version(
413 self._remote_dpdk_build_dir = self.main_session.join_remote_path(
414 self._remote_dpdk_tree_path, dpdk_build_config.name
417 def _build_dpdk(self) -> None:
423 self.main_session.build_dpdk(
424 self._env_vars,
426 self._remote_dpdk_tree_path,
427 self.remote_dpdk_build_dir,
430 def build_dpdk_app(self, app_name: str, **meson_dpdk_args: str | bool) -> PurePath:
445 self.main_session.build_dpdk(
446 self._env_vars,
449 self._remote_dpdk_tree_path,
450 self.remote_dpdk_build_dir,
452 timeout=self._app_compile_timeout,
456 return self.main_session.join_remote_path(self.remote_dpdk_build_dir, "examples")
457 return self.main_session.join_remote_path(
458 self.remote_dpdk_build_dir, "examples", f"dpdk-{app_name}"
461 def kill_cleanup_dpdk_apps(self) -> None:
463 if self._dpdk_kill_session and self._dpdk_kill_session.is_alive():
465 self._dpdk_kill_session.kill_cleanup_dpdk_apps(self.dpdk_prefix_list)
468 self._dpdk_kill_session = self.create_session("dpdk_kill")
469 self.dpdk_prefix_list = []
472 self, app_path: PurePath, eal_params: EalParams, timeout: float = 30
487 return self.main_session.send_command(
491 def bind_ports_to_driver(self, for_dpdk: bool = True) -> None:
498 if self._ports_bound_to_dpdk == for_dpdk:
501 for port in self.ports:
503 self.main_session.send_command(
504 f"{self.path_to_devbind_script} -b {driver} --force {port.pci}",
508 self._ports_bound_to_dpdk = for_dpdk