* [RFC PATCH v1 01/15] dts: merge DTS dep/tclclient.tgz to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 02/15] dts: merge DTS dep/tgen.tgz " Juraj Linkeš
` (14 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dts/dep/tclclient.tgz
diff --git a/dts/dep/tclclient.tgz b/dts/dep/tclclient.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..96038ffcbf3bef07fab73fc6348c5b6caa73d28a
GIT binary patch
literal 199327
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
literal 0
HcmV?d00001
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 02/15] dts: merge DTS dep/tgen.tgz to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 01/15] dts: merge DTS dep/tclclient.tgz " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 03/15] dts: merge DTS dts " Juraj Linkeš
` (13 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dts/dep/tgen.tgz
diff --git a/dts/dep/tgen.tgz b/dts/dep/tgen.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..5b242a1ec15db3948b09456e9a8736c93ac337f2
GIT binary patch
literal 134392
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[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
literal 0
HcmV?d00001
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 03/15] dts: merge DTS dts to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 01/15] dts: merge DTS dep/tclclient.tgz " Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 02/15] dts: merge DTS dep/tgen.tgz " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 04/15] dts: merge DTS framework/__init__.py " Juraj Linkeš
` (12 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/dts | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100755 dts/dts
diff --git a/dts/dts b/dts/dts
new file mode 100755
index 0000000000..4d29e01aa3
--- /dev/null
+++ b/dts/dts
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# <COPYRIGHT_TAG>
+
+PWD=`dirname $0`
+
+pushd $PWD
+./main.py $@
+popd
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 04/15] dts: merge DTS framework/__init__.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (2 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 03/15] dts: merge DTS dts " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 05/15] dts: merge DTS framework/asan_test.py " Juraj Linkeš
` (11 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/__init__.py | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 dts/framework/__init__.py
diff --git a/dts/framework/__init__.py b/dts/framework/__init__.py
new file mode 100644
index 0000000000..ae0043b7ef
--- /dev/null
+++ b/dts/framework/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 05/15] dts: merge DTS framework/asan_test.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (3 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 04/15] dts: merge DTS framework/__init__.py " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 06/15] dts: merge DTS framework/checkCase.py " Juraj Linkeš
` (10 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/asan_test.py | 439 +++++++++++++++++++++++++++++++++++++
1 file changed, 439 insertions(+)
create mode 100644 dts/framework/asan_test.py
diff --git a/dts/framework/asan_test.py b/dts/framework/asan_test.py
new file mode 100644
index 0000000000..8ca0536bcc
--- /dev/null
+++ b/dts/framework/asan_test.py
@@ -0,0 +1,439 @@
+import configparser
+import os
+import re
+from contextlib import contextmanager
+
+import xlrd
+
+import framework.settings as settings
+from framework.excel_reporter import ExcelReporter
+from framework.test_result import Result
+
+from .json_reporter import JSONReporter
+from .stats_reporter import StatsReporter
+
+ASan_CONFIG_SECT = "ASan"
+ASan_FILTER_BOUNDS = "filter_bounds"
+ASan_PARAM_KEY = "build_param"
+ASan_CONFIG_FILE_PATH = "%s/asan.cfg" % settings.CONFIG_ROOT_PATH
+COMMAND_PATTERN_OF_ADDRESS_RANDOM_SWITCH = (
+ "echo %s > /proc/sys/kernel/randomize_va_space"
+)
+COMMAND_OF_CLOSE_ADDRESS_RANDOM = COMMAND_PATTERN_OF_ADDRESS_RANDOM_SWITCH % 0
+COMMAND_OF_OPEN_ADDRESS_RANDOM = COMMAND_PATTERN_OF_ADDRESS_RANDOM_SWITCH % 2
+NEW_TEST_REPORT_FILE = "asan_test_results.xls"
+NEW_JSON_REPORT_FILE = "asan_test_results.json"
+NEW_STATS_REPORT_FILE = "asan_statistics.txt"
+ORIGIN_TEST_REPORT_FILE = "test_results.xls"
+MIN_LENGTH_OF_FILTERED_OUTPUT = 50
+REPORT_OUTPUT_PATH = ""
+
+
+class ASanTestProcess(object):
+ IS_SUPPORT_ASan_TEST = False
+
+ @staticmethod
+ def test_prepare(is_support_ASan_test, output_dir):
+ if is_support_ASan_test:
+ ASanTestProcess.IS_SUPPORT_ASan_TEST = True
+ # use framework default or customer defined output dir
+ global REPORT_OUTPUT_PATH
+ REPORT_OUTPUT_PATH = output_dir
+ _FrameworkADAPTER.decorator_dts_run()
+ _FrameworkADAPTER.decorator_send_expect()
+ _FrameworkADAPTER.decorator_build_install_dpdk()
+
+ @staticmethod
+ def test_process():
+ if ASanTestProcess.IS_SUPPORT_ASan_TEST:
+ report_process_obj = _NewReport()
+ report_process_obj.process_report_header()
+ report_process_obj.process_report_detail()
+ report_process_obj.save_report()
+
+
+class _FrameworkADAPTER(object):
+ @staticmethod
+ def decorator_build_install_dpdk():
+ added_param = _ASanConfig().build_param
+ if added_param is not None:
+ from framework.project_dpdk import DPDKdut
+
+ origin_func = DPDKdut.build_install_dpdk
+
+ def new_func(*args, **kwargw):
+ kwargw["extra_options"] = " ".join(
+ [kwargw.get("extra_options", ""), added_param]
+ )
+ origin_func(*args, **kwargw)
+
+ DPDKdut.build_install_dpdk = new_func
+
+ @staticmethod
+ def decorator_dts_run():
+ import framework.dts as dts
+
+ origin_func = dts.dts_run_suite
+
+ def new_func(*args, **kwargs):
+ duts = args[0]
+ for dut in duts:
+ dut.send_expect(COMMAND_OF_CLOSE_ADDRESS_RANDOM, "#")
+
+ origin_func(*args, **kwargs)
+
+ for dut in duts:
+ dut.send_expect(COMMAND_OF_OPEN_ADDRESS_RANDOM, "#")
+
+ dts.dts_run_suite = new_func
+
+ @staticmethod
+ def decorator_send_expect():
+ import framework.ssh_pexpect as ssh_pexpect
+
+ origin_func = ssh_pexpect.SSHPexpect._SSHPexpect__flush
+
+ def new_func(self):
+ DELETE_CONTENT_PATTERN = r"^\s*\[?PEXPECT\]?#?\s*$"
+ befored_info = re.sub(
+ DELETE_CONTENT_PATTERN, "", self.session.before
+ ).strip()
+ if len(befored_info) > MIN_LENGTH_OF_FILTERED_OUTPUT and self.logger:
+ self.logger.info(f"Buffered info: {befored_info}")
+ origin_func(self)
+
+ ssh_pexpect.SSHPexpect._SSHPexpect__flush = new_func
+
+
+class _ASanConfig(object):
+ def __init__(
+ self,
+ ):
+ self.config = configparser.ConfigParser()
+ self.config.read(ASan_CONFIG_FILE_PATH)
+ self._filter_list = None
+ self._build_params = None
+
+ def _read_ASan_sect_conf(self, key):
+ return self.config.get(ASan_CONFIG_SECT, key)
+
+ def _set_ASan_filter(self):
+ try:
+ origin_filter_string = self._read_ASan_sect_conf(ASan_FILTER_BOUNDS)
+ self._filter_list = [
+ tuple(re.split(r":\s*", _filter))
+ for _filter in re.split(r",\s*", origin_filter_string)
+ ]
+ except KeyError:
+ self._filter_list = []
+
+ def _set_ASan_param(self):
+ try:
+ param_string = self._read_ASan_sect_conf(ASan_PARAM_KEY)
+ except KeyError:
+ param_string = ""
+ self._build_params = param_string
+
+ @property
+ def filter_list(self):
+ self._set_ASan_filter()
+ return self._filter_list
+
+ @property
+ def build_param(self):
+ self._set_ASan_param()
+ return self._build_params
+
+
+class _OldExcelReport(object):
+ def __init__(self):
+ self._report_file = os.path.join(REPORT_OUTPUT_PATH, ORIGIN_TEST_REPORT_FILE)
+ self._workbook: xlrd.Book = xlrd.open_workbook(self._report_file)
+ self._sheet_obj: xlrd.sheet.Sheet = self._workbook.sheets()[0]
+ self._rows = self._sheet_obj.nrows
+ self.current_row_num = 0
+
+ def generator_rows(self):
+ while True:
+ if self.current_row_num >= self._rows:
+ raise IndexError
+ row_number_of_jump_to = yield self._sheet_obj.row(self.current_row_num)
+ row = (
+ row_number_of_jump_to
+ if row_number_of_jump_to is not None
+ else self.current_row_num + 1
+ )
+ self.current_row_num = row
+
+
+class _OldExcelReportReader(object):
+ def __init__(self):
+ self._old_report = _OldExcelReport()
+ self._header_line_num = 1
+ self._test_env_content_column = None
+ self._test_suite_content_column = None
+ self._gen_report_rows = self._old_report.generator_rows()
+ next(self._gen_report_rows)
+ self._report_content_dict = dict()
+ self._current_suite = None
+
+ def get_report_info(self):
+ try:
+ self._get_first_line()
+ self._get_test_env()
+ self._get_cases_result()
+ except IndexError:
+ pass
+ return self._report_content_dict
+
+ def _get_first_line(self):
+ header_row_title = self._gen_report_rows.send(self._header_line_num - 1)
+ header_row_content = self._gen_report_rows.send(self._header_line_num)
+ cell_num = 0
+ while header_row_title[cell_num].value != "Test suite":
+ header_cell_title: str = header_row_title[cell_num].value
+ header_cell_content = header_row_content[cell_num].value
+ self._report_content_dict[
+ header_cell_title.lower().replace(" ", "_")
+ ] = header_cell_content
+ cell_num = cell_num + 1
+ self._test_env_content_column = cell_num - 1
+ self._test_suite_content_column = cell_num
+
+ @staticmethod
+ def _get_value_from_cell(cells_list_of_row):
+ return [cell.value for cell in cells_list_of_row]
+
+ def _get_test_env(self):
+ env_key_list = ["driver", "kdriver", "firmware", "package"]
+ for env_key in env_key_list:
+ env_info_row = next(self._gen_report_rows)
+ env_cell_value = env_info_row[self._test_env_content_column].value
+ if env_cell_value:
+ env_value = env_cell_value.split(": ")[1]
+ self._report_content_dict[env_key] = env_value
+ else:
+ self._report_content_dict[env_key] = None
+ # back to previous line
+ self._gen_report_rows.send(self._old_report.current_row_num - 1)
+
+ def _get_cases_result(self):
+ for row_cells in self._gen_report_rows:
+ suite_content_column_begin = self._test_suite_content_column
+ suite_content_column_end = self._test_suite_content_column + 3
+ suite_name, case_name, original_result_msg = self._get_value_from_cell(
+ row_cells[suite_content_column_begin:suite_content_column_end]
+ )
+ EMPTY_LINE_CONDITION = not suite_name and not case_name
+ NO_CASE_LINE_CONDITION = not case_name
+ SUITE_BEGIN_LINE_CONDITON = suite_name
+ if EMPTY_LINE_CONDITION or NO_CASE_LINE_CONDITION:
+ continue
+
+ if SUITE_BEGIN_LINE_CONDITON:
+ self._add_suite_info(suite_name)
+
+ self._add_case_info(case_name, original_result_msg)
+
+ def _add_suite_info(self, _suite):
+ self._report_content_dict.setdefault(_suite, dict())
+ self._current_suite = _suite
+
+ def _add_case_info(self, _case, _result_msg):
+ self._report_content_dict.get(self._current_suite)[_case] = _result_msg
+
+
+class _SuiteLogReader(object):
+ def __init__(self, suite_name):
+ self._suite_name = suite_name
+
+ @contextmanager
+ def suite_log_file(self):
+ from framework.test_case import TestCase
+ from framework.utils import get_subclasses
+
+ suite_full_name = "TestSuite_" + self._suite_name
+ suite_module = __import__(
+ "tests." + suite_full_name, fromlist=[suite_full_name]
+ )
+ suite_class_name = [
+ test_case_name
+ for test_case_name, _ in get_subclasses(suite_module, TestCase)
+ ][0]
+ log_file_path = os.path.join(REPORT_OUTPUT_PATH, suite_class_name)
+ log_file_obj = open(log_file_path + ".log", "r")
+ yield log_file_obj
+ log_file_obj.close()
+
+
+class _NewReport(object):
+ def __init__(self):
+ self._excel_report_file = os.path.join(REPORT_OUTPUT_PATH, NEW_TEST_REPORT_FILE)
+ self._json_report_file = os.path.join(REPORT_OUTPUT_PATH, NEW_JSON_REPORT_FILE)
+ self._stats_report_file = os.path.join(
+ REPORT_OUTPUT_PATH, NEW_STATS_REPORT_FILE
+ )
+ self._remove_history_asan_report()
+ self._excel_report = ExcelReporter(self._excel_report_file)
+ self._json_report = JSONReporter(self._json_report_file)
+ self._stats_report = StatsReporter(self._stats_report_file)
+ self._result_obj = Result()
+ self._old_report_reader = _OldExcelReportReader()
+ self._old_report_content: dict = self._old_report_reader.get_report_info()
+ self._new_suites_result = dict()
+ self._ASan_filter = _ASanConfig().filter_list
+ self._current_case = None
+ self._current_suite = None
+ self._filtered_line_cache = []
+ self._filter_begin = None
+ self._filter_end = None
+
+ def process_report_header(self):
+ head_key_list = [
+ "dut",
+ "kdriver",
+ "firmware",
+ "package",
+ "driver",
+ "dpdk_version",
+ "target",
+ "nic",
+ ]
+ for head_key in head_key_list:
+ head_value = self._old_report_content.setdefault(head_key, None)
+ self._old_report_content.pop(head_key)
+ setattr(self._result_obj, head_key, head_value)
+
+ def process_report_detail(self):
+ for suite in self._old_report_content.keys():
+ self._get_suite_new_result(suite)
+ self._parse_suite_result_to_result_obj()
+
+ def _get_suite_new_result(self, suite):
+ suite_log_reader = _SuiteLogReader(suite)
+ self._current_suite = suite
+ gen_suite_lines = suite_log_reader.suite_log_file()
+ self._get_case_result(gen_suite_lines)
+
+ def _parse_suite_result_to_result_obj(self):
+ self._result_obj.test_suite = self._current_suite
+ for case in self._old_report_content[self._current_suite]:
+ self._result_obj.test_case = case
+ if case in self._new_suites_result:
+ self._result_obj._Result__set_test_case_result(
+ *self._new_suites_result[case]
+ )
+ else:
+ origin_result = self._get_origin_case_result(case)
+ self._result_obj._Result__set_test_case_result(*origin_result)
+
+ def save_report(self):
+ for report in (self._excel_report, self._json_report, self._stats_report):
+ report.save(self._result_obj)
+
+ def _remove_history_asan_report(self):
+ for file in (
+ self._excel_report_file,
+ self._json_report_file,
+ self._stats_report_file,
+ ):
+ if os.path.exists(file):
+ os.remove(file)
+
+ def _get_origin_case_result(self, case_name):
+ origin_cases_result: dict = self._old_report_content.get(self._current_suite)
+ origin_case_result: str = origin_cases_result.get(case_name)
+ CASE_RESULT_AND_MSG_PATTERN = r"(\S+)\s?(.*)"
+ result, msg = re.search(
+ CASE_RESULT_AND_MSG_PATTERN, origin_case_result
+ ).groups()
+ if msg:
+ msg = msg.replace("'", "").replace('"', "")
+
+ return result, msg
+
+ def _get_case_result(self, suite_log_reader):
+ with suite_log_reader as log_file:
+ for line in log_file:
+ self._filter_asan_except(line)
+
+ self._log_file_end_handler()
+
+ def _filter_asan_except(self, line):
+ CASE_LOG_BEGIN_PATTERN = r"Test Case test_(\w+) Begin"
+ case_begin_match = re.search(CASE_LOG_BEGIN_PATTERN, line)
+
+ if case_begin_match:
+ case_name = case_begin_match.groups()[0]
+ self._case_begin_handler(case_name)
+ return
+
+ for filter_tuple in self._ASan_filter:
+ begin_filter, end_filter = filter_tuple
+ if begin_filter in line:
+ self._filter_matched_begin_handler(begin_filter, line)
+ return
+
+ if self._filter_begin is not None:
+ self._filter_matched_line_handler(line)
+ return
+
+ if end_filter in line:
+ self._filter_matched_end_handler(end_filter, line)
+ return
+
+ def _case_begin_handler(self, case_name):
+ self._save_previous_case_result_and_clean_env()
+ self._current_case = case_name
+
+ def _filter_matched_begin_handler(self, begin_key, line):
+ self._filter_begin = begin_key
+ self._filtered_line_cache.append(line)
+
+ def _filter_matched_line_handler(self, line):
+ self._filtered_line_cache.append(line)
+
+ def _filter_matched_end_handler(self, end_key, line):
+ self._filtered_line_cache.append(line)
+ self._filter_begin = end_key
+
+ def _log_file_end_handler(self):
+ self._save_previous_case_result_and_clean_env()
+
+ def _save_previous_case_result_and_clean_env(self):
+ exist_previous_case_condition = self._current_case is not None
+ origin_report_contain_previous_case_result = (
+ self._current_case in self._old_report_content.get(self._current_suite)
+ )
+
+ if exist_previous_case_condition and origin_report_contain_previous_case_result:
+ self._save_case_result()
+
+ self._filtered_line_cache.clear()
+ self._filter_begin = None
+ self._filter_end = None
+
+ def _save_case_result(self):
+ cached_content = self._get_filtered_cached_result()
+ if self._current_case in self._new_suites_result:
+ # Run multiple times and keep the last result
+ self._new_suites_result.pop(self._current_case)
+
+ if cached_content:
+ # filter hit scene
+ self._new_suites_result[self._current_case] = ("FAILED", cached_content)
+ else:
+ # filter not hit scene
+ self._new_suites_result[self._current_case] = self._get_origin_case_result(
+ self._current_case
+ )
+
+ def _get_filtered_cached_result(self):
+ ASan_FILTER_CONTENT_PATTERN = (
+ rf"{self._filter_begin}[\s\S]+(?!{self._filter_end})?"
+ )
+ key_search_result = re.findall(
+ ASan_FILTER_CONTENT_PATTERN, "".join(self._filtered_line_cache)
+ )
+
+ return key_search_result[0] if key_search_result else ""
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 06/15] dts: merge DTS framework/checkCase.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (4 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 05/15] dts: merge DTS framework/asan_test.py " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 07/15] dts: merge DTS framework/dts.py " Juraj Linkeš
` (9 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/checkCase.py | 214 +++++++++++++++++++++++++++++++++++++
1 file changed, 214 insertions(+)
create mode 100644 dts/framework/checkCase.py
diff --git a/dts/framework/checkCase.py b/dts/framework/checkCase.py
new file mode 100644
index 0000000000..7b2c22b3c0
--- /dev/null
+++ b/dts/framework/checkCase.py
@@ -0,0 +1,214 @@
+import collections
+import json
+import os
+
+from .settings import (
+ CONFIG_ROOT_PATH,
+ HOST_DRIVER_SETTING,
+ get_nic_name,
+ load_global_setting,
+)
+from .utils import RED
+
+filter_json_file = os.path.join(CONFIG_ROOT_PATH, "test_case_checklist.json")
+support_json_file = os.path.join(CONFIG_ROOT_PATH, "test_case_supportlist.json")
+
+
+class CheckCase(object):
+ """
+ Class for check test case running criteria. All information will be loaded
+ from DTS_CFG_FOLDER/test_case_*list.json. Current two files are maintained. One is
+ for check whether test case should skip, another one is for check whether
+ current environment support test case execution.
+ """
+
+ def __init__(self):
+ self.dut = None
+ self.comments = ""
+
+ self.check_function_dict = {}
+ self.support_function_dict = {}
+ try:
+ self.check_function_dict = json.load(
+ open(filter_json_file), object_pairs_hook=collections.OrderedDict
+ )
+ except:
+ print(
+ RED(
+ "Can't load check list for test cases, all case will be taken as supported"
+ )
+ )
+
+ try:
+ self.support_function_dict = json.load(
+ open(support_json_file), object_pairs_hook=collections.OrderedDict
+ )
+ except:
+ print(
+ RED(
+ "Can't load support list for test cases, all case will be taken as supported"
+ )
+ )
+
+ def check_dut(self, dut):
+ """
+ Change DUT instance for environment check
+ """
+ self.dut = dut
+
+ def _check_os(self, os_type):
+ if "all" == os_type[0].lower():
+ return True
+ dut_os_type = self.dut.get_os_type()
+ if dut_os_type in os_type:
+ return True
+ else:
+ return False
+
+ def _check_nic(self, nic_type):
+ if "all" == nic_type[0].lower():
+ return True
+ dut_nic_type = get_nic_name(self.dut.ports_info[0]["type"])
+ if dut_nic_type in nic_type:
+ return True
+ else:
+ return False
+
+ def _check_target(self, target):
+ if "all" == target[0].lower():
+ return True
+ if self.dut.target in target:
+ return True
+ else:
+ return False
+
+ def _check_host_driver(self, drivers):
+ host_driver = load_global_setting(HOST_DRIVER_SETTING)
+ if "all" == drivers[0].lower():
+ return True
+ if host_driver in drivers:
+ return True
+ else:
+ return False
+
+ def case_skip(self, case_name):
+ """
+ Check whether test case and DUT match skip criteria
+ Return True if skip should skip
+ """
+ skip_flag = False
+ self.comments = ""
+
+ if self.dut is None:
+ print(RED("No Dut assigned before case skip check"))
+ return skip_flag
+
+ if case_name in list(self.check_function_dict.keys()):
+ case_checks = self.check_function_dict[case_name]
+ # each case may have several checks
+ for case_check in case_checks:
+ # init result for each check
+ skip_flag = False
+ for key in list(case_check.keys()):
+ # some items like "Bug ID" and "Comments" do not need check
+ try:
+ if "Comments" == key:
+ continue
+ if "Bug ID" == key:
+ continue
+ check_function = getattr(self, "_check_%s" % key.lower())
+ except:
+ print(RED("can't check %s type" % key))
+
+ # skip this check if any item not matched
+ if check_function(case_check[key]):
+ skip_flag = True
+ else:
+ skip_flag = False
+ break
+
+ # if all items matched, this case should skip
+ if skip_flag:
+ if "Comments" in list(case_check.keys()):
+ self.comments = case_check["Comments"]
+ return skip_flag
+
+ return skip_flag
+
+ def case_support(self, case_name):
+ """
+ Check whether test case and DUT match support criteria
+ Return False if test case not supported
+ """
+ support_flag = True
+ self.comments = ""
+
+ if self.dut is None:
+ print(RED("No Dut assigned before case support check"))
+ return support_flag
+
+ if case_name in list(self.support_function_dict.keys()):
+ # each case may have several supports
+ case_supports = self.support_function_dict[case_name]
+ for case_support in case_supports:
+ # init result for each check
+ support_flag = True
+ for key in list(case_support.keys()):
+ # some items like "Bug ID" and "Comments" do not need check
+ try:
+ if "Comments" == key:
+ continue
+ if "Bug ID" == key:
+ continue
+ check_function = getattr(self, "_check_%s" % key.lower())
+ except:
+ print(RED("can't check %s type" % key))
+
+ # skip this case if any item not matched
+ if check_function(case_support[key]):
+ support_flag = True
+ else:
+ support_flag = False
+ break
+
+ if support_flag is False:
+ if "Comments" in list(case_support.keys()):
+ self.comments = case_support["Comments"]
+ return support_flag
+
+ return support_flag
+
+
+class simple_dut(object):
+ def __init__(self, os="", target="", nic=""):
+ self.ports_info = [{}]
+ self.os = os
+ self.target = target
+ self.ports_info[0]["type"] = nic
+
+ def get_os_type(self):
+ return self.os
+
+
+if __name__ == "__main__":
+ dut = simple_dut(os="linux", target="x86_64-native-linuxapp-gcc", nic="177d:a034")
+ dut1 = simple_dut(
+ os="freebsd", target="x86_64-native-linuxapp-gcc", nic="8086:158b"
+ )
+
+ # create instance for check/support case list
+ case_inst = CheckCase()
+
+ # check dut
+ case_inst.check_dut(dut)
+ print(case_inst.case_skip("fdir_flexword_drop_ipv4"))
+ print(case_inst.comments)
+ print(case_inst.case_support("Vxlan_tunnel"))
+ print(case_inst.comments)
+
+ # check other dut
+ case_inst.check_dut(dut1)
+ print(case_inst.case_skip("fdir_flexword_drop_ipv4"))
+ print(case_inst.comments)
+ print(case_inst.case_support("Vxlan_tunnel"))
+ print(case_inst.comments)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 07/15] dts: merge DTS framework/dts.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (5 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 06/15] dts: merge DTS framework/checkCase.py " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:55 ` [RFC PATCH v1 08/15] dts: merge DTS framework/exception.py " Juraj Linkeš
` (8 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/dts.py | 721 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 721 insertions(+)
create mode 100644 dts/framework/dts.py
diff --git a/dts/framework/dts.py b/dts/framework/dts.py
new file mode 100644
index 0000000000..c06bcedf33
--- /dev/null
+++ b/dts/framework/dts.py
@@ -0,0 +1,721 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2019 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import atexit # register callback when exit
+import configparser # config parse module
+import copy # copy module for duplicate variable
+import imp
+import inspect # load attribute
+import json # json format
+import logging
+import os # operation system module
+import re # regular expressions module
+import signal # signal module for debug mode
+import sys # system module
+import time # time module for unique output folder
+import traceback # exception traceback
+
+import framework.debugger as debugger
+import framework.logger as logger
+import framework.rst as rst # rst file support
+import framework.settings as settings # dts settings
+from framework.asan_test import ASanTestProcess
+
+from .checkCase import CheckCase
+from .config import CrbsConf
+from .dut import Dut
+from .excel_reporter import ExcelReporter
+from .exception import ConfigParseException, TimeoutException, VerifyFailure
+from .json_reporter import JSONReporter
+from .logger import getLogger
+from .serializer import Serializer
+from .stats_reporter import StatsReporter
+from .test_case import TestCase
+from .test_result import Result
+from .tester import Tester
+from .utils import (
+ check_dts_python_version,
+ copy_instance_attr,
+ create_parallel_locks,
+ get_subclasses,
+)
+
+imp.reload(sys)
+
+requested_tests = None
+result = None
+excel_report = None
+json_report = None
+stats_report = None
+log_handler = None
+
+
+def dts_parse_param(config, section, log_handler):
+ """
+ Parse execution file parameters.
+ """
+ # default value
+ performance = False
+ functional = False
+ # Set parameters
+ shared_lib_parameters = ""
+ try:
+ shared_lib_parameters = config.get(section, "shared_lib_param")
+ except Exception as e:
+ shared_lib_parameters = ""
+ shared_lib_parameters = shared_lib_parameters.split(":")
+
+ parameters = config.get(section, "parameters").split(":")
+ drivername = config.get(section, "drivername").split("=")[-1]
+
+ driver = drivername.split(":")
+ if len(driver) == 2:
+ drivername = driver[0]
+ drivermode = driver[1]
+ settings.save_global_setting(settings.HOST_DRIVER_MODE_SETTING, drivermode)
+ else:
+ drivername = driver[0]
+
+ settings.save_global_setting(settings.HOST_DRIVER_SETTING, drivername)
+
+ shared_lib_paramDict = dict()
+ for param in shared_lib_parameters:
+ (key, _, value) = param.partition("=")
+ shared_lib_paramDict[key] = value
+ if (
+ "use_shared_lib" in shared_lib_paramDict
+ and shared_lib_paramDict["use_shared_lib"].lower() == "true"
+ ):
+ settings.save_global_setting(settings.HOST_SHARED_LIB_SETTING, "true")
+ else:
+ settings.save_global_setting(settings.HOST_SHARED_LIB_SETTING, "false")
+
+ if "shared_lib_path" in shared_lib_paramDict:
+ if not shared_lib_paramDict["shared_lib_path"] and settings.load_global_setting(
+ settings.HOST_SHARED_LIB_SETTING
+ ):
+ raise ValueError("use shared lib but shared lib path is empty")
+ settings.save_global_setting(
+ settings.HOST_SHARED_LIB_PATH, shared_lib_paramDict["shared_lib_path"]
+ )
+
+ paramDict = dict()
+ for param in parameters:
+ (key, _, value) = param.partition("=")
+ paramDict[key] = value
+
+ if "perf" in paramDict and paramDict["perf"] == "true":
+ performance = True
+ if "func" in paramDict and paramDict["func"] == "true":
+ functional = True
+
+ if "nic_type" not in paramDict:
+ paramDict["nic_type"] = "any"
+
+ settings.save_global_setting(settings.HOST_NIC_SETTING, paramDict["nic_type"])
+
+ # save perf/function setting in environment
+ if performance:
+ settings.save_global_setting(settings.PERF_SETTING, "yes")
+ else:
+ settings.save_global_setting(settings.PERF_SETTING, "no")
+
+ if functional:
+ settings.save_global_setting(settings.FUNC_SETTING, "yes")
+ else:
+ settings.save_global_setting(settings.FUNC_SETTING, "no")
+
+
+def dts_parse_config(config, section):
+ """
+ Parse execution file configuration.
+ """
+ duts = [dut_.strip() for dut_ in config.get(section, "crbs").split(",")]
+ targets = [target.strip() for target in config.get(section, "targets").split(",")]
+ test_suites = [
+ suite.strip() for suite in config.get(section, "test_suites").split(",")
+ ]
+ try:
+ rx_mode = config.get(section, "rx_mode").strip().lower()
+ except:
+ rx_mode = "default"
+
+ settings.save_global_setting(settings.DPDK_RXMODE_SETTING, rx_mode)
+
+ for suite in test_suites:
+ if suite == "":
+ test_suites.remove(suite)
+
+ return duts, targets, test_suites
+
+
+def dts_parse_commands(commands):
+ """
+ Parse command information from dts arguments
+ """
+ dts_commands = []
+
+ if commands is None:
+ return dts_commands
+
+ args_format = {"shell": 0, "crb": 1, "stage": 2, "check": 3, "max_num": 4}
+ cmd_fmt = r"\[(.*)\]"
+
+ for command in commands:
+ args = command.split(":")
+ if len(args) != args_format["max_num"]:
+ log_handler.error("Command [%s] is lack of arguments" % command)
+ raise VerifyFailure("commands input is not corrected")
+ continue
+ dts_command = {}
+
+ m = re.match(cmd_fmt, args[0])
+ if m:
+ cmds = m.group(1).split(",")
+ shell_cmd = ""
+ for cmd in cmds:
+ shell_cmd += cmd
+ shell_cmd += " "
+ dts_command["command"] = shell_cmd[:-1]
+ else:
+ dts_command["command"] = args[0]
+ if args[1] == "tester":
+ dts_command["host"] = "tester"
+ else:
+ dts_command["host"] = "dut"
+ if args[2] == "post-init":
+ dts_command["stage"] = "post-init"
+ else:
+ dts_command["stage"] = "pre-init"
+ if args[3] == "ignore":
+ dts_command["verify"] = False
+ else:
+ dts_command["verify"] = True
+
+ dts_commands.append(dts_command)
+
+ return dts_commands
+
+
+def dts_run_commands(crb, dts_commands):
+ """
+ Run dts input commands
+ """
+ for dts_command in dts_commands:
+ command = dts_command["command"]
+ if dts_command["host"] in crb.NAME:
+ if crb.stage == dts_command["stage"]:
+ ret = crb.send_expect(command, expected="# ", verify=True)
+ if type(ret) is int:
+ log_handler.error("[%s] return failure" % command)
+ if dts_command["verify"] is True:
+ raise VerifyFailure("Command execution failed")
+
+
+def get_project_obj(project_name, super_class, crbInst, serializer, dut_id):
+ """
+ Load project module and return crb instance.
+ """
+ project_obj = None
+ PROJECT_MODULE_PREFIX = "project_"
+ try:
+ _project_name = PROJECT_MODULE_PREFIX + project_name
+ project_module = __import__(
+ "framework." + _project_name, fromlist=[_project_name]
+ )
+
+ for project_subclassname, project_subclass in get_subclasses(
+ project_module, super_class
+ ):
+ project_obj = project_subclass(crbInst, serializer, dut_id)
+ if project_obj is None:
+ project_obj = super_class(crbInst, serializer, dut_id)
+ except Exception as e:
+ log_handler.info("LOAD PROJECT MODULE INFO: " + str(e))
+ project_obj = super_class(crbInst, serializer, dut_id)
+
+ return project_obj
+
+
+def dts_log_testsuite(duts, tester, suite_obj, log_handler, test_classname):
+ """
+ Change to SUITE self logger handler.
+ """
+ log_handler.config_suite(test_classname, "dts")
+ tester.logger.config_suite(test_classname, "tester")
+ if hasattr(tester, "logger_alt"):
+ tester.logger_alt.config_suite(test_classname, "tester")
+ if hasattr(tester, "logger_scapy"):
+ tester.logger_scapy.config_suite(test_classname, "tester")
+
+ for dutobj in duts:
+ dutobj.logger.config_suite(test_classname, "dut")
+ dutobj.test_classname = test_classname
+
+ try:
+ if tester.it_uses_external_generator():
+ if (
+ tester.is_pktgen
+ and hasattr(tester, "pktgen")
+ and getattr(tester, "pktgen")
+ ):
+ tester.pktgen.logger.config_suite(test_classname, "pktgen")
+ except Exception as ex:
+ pass
+
+
+def dts_log_execution(duts, tester, log_handler):
+ """
+ Change to DTS default logger handler.
+ """
+ log_handler.config_execution("dts")
+ tester.logger.config_execution("tester")
+
+ for dutobj in duts:
+ dutobj.logger.config_execution(
+ "dut" + settings.LOG_NAME_SEP + "%s" % dutobj.crb["My IP"]
+ )
+
+ try:
+ if tester.it_uses_external_generator():
+ if (
+ tester.is_pktgen
+ and hasattr(tester, "pktgen")
+ and getattr(tester, "pktgen")
+ ):
+ tester.pktgen.logger.config_execution("pktgen")
+ except Exception as ex:
+ pass
+
+
+def dts_crbs_init(
+ crbInsts, skip_setup, read_cache, project, base_dir, serializer, virttype
+):
+ """
+ Create dts dut/tester instance and initialize them.
+ """
+ duts = []
+
+ serializer.set_serialized_filename(
+ settings.FOLDERS["Output"] + "/.%s.cache" % crbInsts[0]["IP"]
+ )
+ serializer.load_from_file()
+
+ testInst = copy.copy(crbInsts[0])
+ testInst["My IP"] = crbInsts[0]["tester IP"]
+ tester = get_project_obj(project, Tester, testInst, serializer, dut_id=0)
+
+ dut_id = 0
+ for crbInst in crbInsts:
+ dutInst = copy.copy(crbInst)
+ dutInst["My IP"] = crbInst["IP"]
+ dutobj = get_project_obj(project, Dut, dutInst, serializer, dut_id=dut_id)
+ duts.append(dutobj)
+ dut_id += 1
+
+ dts_log_execution(duts, tester, log_handler)
+
+ tester.duts = duts
+ show_speedup_options_messages(read_cache, skip_setup)
+ tester.set_speedup_options(read_cache, skip_setup)
+ try:
+ tester.init_ext_gen()
+ except Exception as e:
+ log_handler.error(str(e))
+ tester.close()
+ for dutobj in duts:
+ dutobj.close()
+ raise e
+
+ nic = settings.load_global_setting(settings.HOST_NIC_SETTING)
+ for dutobj in duts:
+ dutobj.tester = tester
+ dutobj.setup_virtenv(virttype)
+ dutobj.set_speedup_options(read_cache, skip_setup)
+ dutobj.set_directory(base_dir)
+ # save execution nic setting
+ dutobj.set_nic_type(nic)
+
+ return duts, tester
+
+
+def dts_crbs_exit(duts, tester):
+ """
+ Call dut and tester exit function after execution finished
+ """
+ for dutobj in duts:
+ dutobj.crb_exit()
+
+ tester.crb_exit()
+
+
+def dts_run_prerequisties(duts, tester, pkgName, patch, dts_commands, serializer):
+ """
+ Run dts prerequisties function.
+ """
+ try:
+ dts_run_commands(tester, dts_commands)
+ tester.prerequisites()
+ dts_run_commands(tester, dts_commands)
+ except Exception as ex:
+ log_handler.error(" PREREQ EXCEPTION " + traceback.format_exc())
+ log_handler.info("CACHE: Discarding cache.")
+ serializer.discard_cache()
+ settings.report_error("TESTER_SETUP_ERR")
+ return False
+
+ try:
+ for dutobj in duts:
+ dts_run_commands(dutobj, dts_commands)
+ dutobj.set_package(pkgName, patch)
+ dutobj.prerequisites()
+ dts_run_commands(dutobj, dts_commands)
+
+ serializer.save_to_file()
+ except Exception as ex:
+ log_handler.error(" PREREQ EXCEPTION " + traceback.format_exc())
+ result.add_failed_dut(duts[0], str(ex))
+ log_handler.info("CACHE: Discarding cache.")
+ serializer.discard_cache()
+ settings.report_error("DUT_SETUP_ERR")
+ return False
+
+
+def dts_run_target(duts, tester, targets, test_suites, subtitle):
+ """
+ Run each target in execution targets.
+ """
+ for target in targets:
+ log_handler.info("\nTARGET " + target)
+ result.target = target
+
+ try:
+ drivername = settings.load_global_setting(settings.HOST_DRIVER_SETTING)
+ if drivername == "":
+ for dutobj in duts:
+ dutobj.set_target(target, bind_dev=False)
+ else:
+ for dutobj in duts:
+ dutobj.set_target(target)
+ except AssertionError as ex:
+ log_handler.error(" TARGET ERROR: " + str(ex))
+ settings.report_error("DPDK_BUILD_ERR")
+ result.add_failed_target(result.dut, target, str(ex))
+ continue
+ except Exception as ex:
+ settings.report_error("GENERIC_ERR")
+ log_handler.error(" !!! DEBUG IT: " + traceback.format_exc())
+ result.add_failed_target(result.dut, target, str(ex))
+ continue
+
+ dts_run_suite(duts, tester, test_suites, target, subtitle)
+
+ tester.restore_interfaces()
+
+ for dutobj in duts:
+ dutobj.stop_ports()
+ dutobj.restore_interfaces()
+ dutobj.restore_modules()
+
+
+def dts_run_suite(duts, tester, test_suites, target, subtitle):
+ """
+ Run each suite in test suite list.
+ """
+ for suite_name in test_suites:
+ try:
+ # check whether config the test cases
+ append_requested_case_list = None
+ if ":" in suite_name:
+ case_list = suite_name[suite_name.find(":") + 1 :]
+ append_requested_case_list = case_list.split("\\")
+ suite_name = suite_name[: suite_name.find(":")]
+ result.test_suite = suite_name
+ _suite_full_name = "TestSuite_" + suite_name
+ suite_module = __import__(
+ "tests." + _suite_full_name, fromlist=[_suite_full_name]
+ )
+ for test_classname, test_class in get_subclasses(suite_module, TestCase):
+
+ suite_obj = test_class(duts, tester, target, suite_name)
+ suite_obj.init_log()
+ suite_obj.set_requested_cases(requested_tests)
+ suite_obj.set_requested_cases(append_requested_case_list)
+ suite_obj.set_check_inst(check=check_case_inst)
+ suite_obj.set_subtitle(subtitle)
+ result.nic = suite_obj.nic
+
+ dts_log_testsuite(duts, tester, suite_obj, log_handler, test_classname)
+
+ log_handler.info("\nTEST SUITE : " + test_classname)
+ log_handler.info("NIC : " + result.nic)
+
+ if suite_obj.execute_setup_all():
+ suite_obj.execute_test_cases()
+
+ # save suite cases result
+ result.copy_suite(suite_obj.get_result())
+
+ log_handler.info("\nTEST SUITE ENDED: " + test_classname)
+ dts_log_execution(duts, tester, log_handler)
+ except VerifyFailure:
+ settings.report_error("SUITE_EXECUTE_ERR")
+ log_handler.error(" !!! DEBUG IT: " + traceback.format_exc())
+ except KeyboardInterrupt:
+ # stop/save result/skip execution
+ log_handler.error(" !!! STOPPING DTS")
+ break
+ except Exception as e:
+ settings.report_error("GENERIC_ERR")
+ log_handler.error(str(e))
+ finally:
+ try:
+ suite_obj.execute_tear_downall()
+ except Exception as e:
+ settings.report_error("GENERIC_ERR")
+ log_handler.error(str(e))
+ try:
+ save_all_results()
+ except Exception as e:
+ settings.report_error("GENERIC_ERR")
+ log_handler.error(str(e))
+
+
+def run_all(
+ config_file,
+ pkgName,
+ git,
+ patch,
+ skip_setup,
+ read_cache,
+ project,
+ suite_dir,
+ test_cases,
+ base_dir,
+ output_dir,
+ verbose,
+ virttype,
+ debug,
+ debugcase,
+ re_run,
+ commands,
+ subtitle,
+ update_expected,
+ asan,
+):
+ """
+ Main process of DTS, it will run all test suites in the config file.
+ """
+
+ global requested_tests
+ global result
+ global excel_report
+ global json_report
+ global stats_report
+ global log_handler
+ global check_case_inst
+
+ # check the python version of the server that run dts
+ check_dts_python_version()
+
+ # save global variable
+ serializer = Serializer()
+
+ # load check/support case lists
+ check_case_inst = CheckCase()
+
+ # prepare the output folder
+ if output_dir == "":
+ output_dir = settings.FOLDERS["Output"]
+
+ # prepare ASan test
+ ASanTestProcess.test_prepare(asan, output_dir)
+
+ if not os.path.exists(output_dir):
+ os.mkdir(output_dir)
+
+ # enable debug mode
+ if debug is True:
+ settings.save_global_setting(settings.DEBUG_SETTING, "yes")
+ if debugcase is True:
+ settings.save_global_setting(settings.DEBUG_CASE_SETTING, "yes")
+
+ # enable update-expected
+ if update_expected is True:
+ settings.save_global_setting(settings.UPDATE_EXPECTED, "yes")
+
+ # init log_handler handler
+ if verbose is True:
+ logger.set_verbose()
+
+ re_run = int(re_run)
+ if re_run < 0:
+ re_run = 0
+
+ logger.log_dir = output_dir
+ log_handler = getLogger("dts")
+ log_handler.config_execution("dts")
+
+ # run designated test case
+ requested_tests = test_cases
+
+ # Read config file
+ dts_cfg_folder = settings.load_global_setting(settings.DTS_CFG_FOLDER)
+ if dts_cfg_folder != "":
+ config_file = dts_cfg_folder + os.sep + config_file
+
+ config = configparser.SafeConfigParser()
+ load_cfg = config.read(config_file)
+ if len(load_cfg) == 0:
+ raise ConfigParseException(config_file)
+
+ # parse commands
+ dts_commands = dts_parse_commands(commands)
+
+ os.environ["TERM"] = "dumb"
+
+ # change rst output folder
+ rst.path2Result = output_dir
+
+ # report objects
+ excel_report = ExcelReporter(output_dir + "/test_results.xls")
+ json_report = JSONReporter(output_dir + "/test_results.json")
+ stats_report = StatsReporter(output_dir + "/statistics.txt")
+ result = Result()
+
+ crbs_conf = CrbsConf()
+ crbs = crbs_conf.load_crbs_config()
+
+ # for all Execution sections
+ for section in config.sections():
+ crbInsts = list()
+ dts_parse_param(config, section, log_handler)
+
+ # verify if the delimiter is good if the lists are vertical
+ duts, targets, test_suites = dts_parse_config(config, section)
+ for dut in duts:
+ log_handler.info("\nDUT " + dut)
+
+ # look up in crbs - to find the matching IP
+ for dut in duts:
+ for crb in crbs:
+ if crb["section"] == dut:
+ crbInsts.append(crb)
+ break
+
+ # only run on the dut in known crbs
+ if len(crbInsts) == 0:
+ log_handler.error(" SKIP UNKNOWN CRB")
+ continue
+
+ result.dut = duts[0]
+
+ # init global lock
+ create_parallel_locks(len(duts))
+
+ # init dut, tester crb
+ duts, tester = dts_crbs_init(
+ crbInsts, skip_setup, read_cache, project, base_dir, serializer, virttype
+ )
+ tester.set_re_run(re_run)
+ # register exit action
+ atexit.register(quit_execution, duts, tester)
+
+ check_case_inst.check_dut(duts[0])
+
+ # Run DUT prerequisites
+ if (
+ dts_run_prerequisties(
+ duts, tester, pkgName, patch, dts_commands, serializer
+ )
+ is False
+ ):
+ dts_crbs_exit(duts, tester)
+ continue
+ result.kdriver = duts[0].nic.default_driver + "-" + duts[0].nic.driver_version
+ result.firmware = duts[0].nic.firmware
+ result.package = (
+ duts[0].nic.pkg["type"] + " " + duts[0].nic.pkg["version"]
+ if duts[0].nic.pkg
+ else None
+ )
+ result.driver = settings.load_global_setting(settings.HOST_DRIVER_SETTING)
+ result.dpdk_version = duts[0].dpdk_version
+ dts_run_target(duts, tester, targets, test_suites, subtitle)
+
+ dts_crbs_exit(duts, tester)
+
+ save_all_results()
+
+ # process ASan test report
+ ASanTestProcess.test_process()
+
+
+def show_speedup_options_messages(read_cache, skip_setup):
+ if read_cache:
+ log_handler.info("CACHE: All configuration will be read from cache.")
+ else:
+ log_handler.info("CACHE: Cache will not be read.")
+
+ if skip_setup:
+ log_handler.info("SKIP: Skipping DPDK setup.")
+ else:
+ log_handler.info("SKIP: The DPDK setup steps will be executed.")
+
+
+def save_all_results():
+ """
+ Save all result to files.
+ """
+ excel_report.save(result)
+ json_report.save(result)
+ stats_report.save(result)
+
+
+def quit_execution(duts, tester):
+ """
+ Close session to DUT and tester before quit.
+ Return exit status when failure occurred.
+ """
+ # close all nics
+ for dutobj in duts:
+ if getattr(dutobj, "ports_info", None) and dutobj.ports_info:
+ for port_info in dutobj.ports_info:
+ netdev = port_info["port"]
+ netdev.close()
+ # close all session
+ dutobj.close()
+ if tester is not None:
+ tester.close()
+ log_handler.info("DTS ended")
+
+ # return value
+ settings.exit_error()
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 08/15] dts: merge DTS framework/exception.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (6 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 07/15] dts: merge DTS framework/dts.py " Juraj Linkeš
@ 2022-04-06 14:55 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 09/15] dts: merge DTS framework/logger.py " Juraj Linkeš
` (7 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:55 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/exception.py | 148 +++++++++++++++++++++++++++++++++++++
1 file changed, 148 insertions(+)
create mode 100644 dts/framework/exception.py
diff --git a/dts/framework/exception.py b/dts/framework/exception.py
new file mode 100644
index 0000000000..fb0fa72e42
--- /dev/null
+++ b/dts/framework/exception.py
@@ -0,0 +1,148 @@
+"""
+User-defined exceptions used across the framework.
+"""
+from typing import Any
+
+
+class TimeoutException(Exception):
+
+ """
+ Command execution timeout.
+ """
+
+ def __init__(self, command, output):
+ self.command = command
+ self.output = output
+
+ def __str__(self):
+ msg = "TIMEOUT on %s" % (self.command)
+ return msg
+
+ def get_output(self):
+ return self.output
+
+
+class VerifyFailure(Exception):
+
+ """
+ To be used within the test cases to verify if a command output
+ is as it was expected.
+ """
+
+ def __init__(self, value):
+ self.value = value
+
+ def __str__(self):
+ return repr(self.value)
+
+
+class VerifySkip(Exception):
+
+ """
+ To be used within the test cases to verify if case should be skipped.
+ """
+
+ def __init__(self, value):
+ self.value = value
+
+ def __str__(self):
+ return repr(self.value)
+
+
+class SSHConnectionException(Exception):
+
+ """
+ SSH connection error.
+ """
+
+ def __init__(self, host):
+ self.host = host
+
+ def __str__(self):
+ return "Error trying to connect with %s" % self.host
+
+
+class SSHSessionDeadException(Exception):
+
+ """
+ SSH session is not alive.
+ It can no longer be used.
+ """
+
+ def __init__(self, host):
+ self.host = host
+
+ def __str__(self):
+ return "SSH session with %s has been dead" % self.host
+
+
+class ParameterInvalidException(Exception):
+ pass
+
+
+class StartVMFailedException(Exception):
+
+ """
+ Start VM failed.
+ """
+
+ def __init__(self, error):
+ self.error = error
+
+ def __str__(self):
+ return repr(self.error)
+
+
+class ConfigParseException(Exception):
+
+ """
+ Configuration file parse failure exception.
+ """
+
+ def __init__(self, conf_file):
+ self.config = conf_file
+
+ def __str__(self):
+ return "Faile to parse config file [%s]" % (self.config)
+
+
+class VirtConfigParseException(Exception):
+ pass
+
+
+class PortConfigParseException(Exception):
+ pass
+
+
+class VirtConfigParamException(Exception):
+
+ """
+ Virtualization param execution exception.
+ """
+
+ def __init__(self, param):
+ self.param = param
+
+ def __str__(self):
+ return "Faile to execute param [%s]" % (self.param)
+
+
+class VirtDutConnectException(Exception):
+ pass
+
+
+class VirtDutInitException(Exception):
+ def __init__(self, vm_dut):
+ self.vm_dut = vm_dut
+
+
+class VirtDeviceCreateException(Exception):
+ pass
+
+
+class VirtVmOperationException(Exception):
+ pass
+
+
+class VirtHostPrepareException(Exception):
+ pass
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 09/15] dts: merge DTS framework/logger.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (7 preceding siblings ...)
2022-04-06 14:55 ` [RFC PATCH v1 08/15] dts: merge DTS framework/exception.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 10/15] dts: merge DTS framework/packet.py " Juraj Linkeš
` (6 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/logger.py | 474 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 474 insertions(+)
create mode 100644 dts/framework/logger.py
diff --git a/dts/framework/logger.py b/dts/framework/logger.py
new file mode 100644
index 0000000000..576a51dcf3
--- /dev/null
+++ b/dts/framework/logger.py
@@ -0,0 +1,474 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import inspect
+import logging
+import os
+import re
+import sys
+
+from .settings import DTS_PARALLEL_SETTING, FOLDERS, LOG_NAME_SEP, load_global_setting
+from .utils import RED
+
+"""
+DTS logger module with several log level. DTS framework and TestSuite log
+will saved into different log files.
+"""
+verbose = False
+
+logging.DTS_DUT_CMD = logging.INFO + 1
+logging.DTS_DUT_OUTPUT = logging.DEBUG + 1
+logging.DTS_DUT_RESULT = logging.WARNING + 1
+
+logging.DTS_TESTER_CMD = logging.INFO + 2
+logging.DTS_TESTER_OUTPUT = logging.DEBUG + 2
+logging.DTS_TESTER_RESULT = logging.WARNING + 2
+
+logging.SUITE_DUT_CMD = logging.INFO + 3
+logging.SUITE_DUT_OUTPUT = logging.DEBUG + 3
+
+logging.SUITE_TESTER_CMD = logging.INFO + 4
+logging.SUITE_TESTER_OUTPUT = logging.DEBUG + 4
+
+logging.DTS_VIRTDUT_CMD = logging.INFO + 6
+logging.DTS_VIRTDUT_OUTPUT = logging.DEBUG + 6
+
+logging.DTS_PKTGEN_CMD = logging.INFO + 7
+logging.DTS_PKTGEN_OUTPUT = logging.DEBUG + 7
+
+logging.addLevelName(logging.DTS_DUT_CMD, "DTS_DUT_CMD")
+logging.addLevelName(logging.DTS_DUT_OUTPUT, "DTS_DUT_OUTPUT")
+logging.addLevelName(logging.DTS_DUT_RESULT, "DTS_DUT_RESULT")
+
+logging.addLevelName(logging.DTS_TESTER_CMD, "DTS_TESTER_CMD")
+logging.addLevelName(logging.DTS_TESTER_OUTPUT, "DTS_TESTER_OUTPUT")
+logging.addLevelName(logging.DTS_TESTER_RESULT, "DTS_TESTER_RESULT")
+
+logging.addLevelName(logging.DTS_VIRTDUT_CMD, "VIRTDUT_CMD")
+logging.addLevelName(logging.DTS_VIRTDUT_OUTPUT, "VIRTDUT_OUTPUT")
+
+logging.addLevelName(logging.SUITE_DUT_CMD, "SUITE_DUT_CMD")
+logging.addLevelName(logging.SUITE_DUT_OUTPUT, "SUITE_DUT_OUTPUT")
+
+logging.addLevelName(logging.SUITE_TESTER_CMD, "SUITE_TESTER_CMD")
+logging.addLevelName(logging.SUITE_TESTER_OUTPUT, "SUITE_TESTER_OUTPUT")
+
+logging.addLevelName(logging.DTS_PKTGEN_CMD, "DTS_PKTGEN_CMD")
+logging.addLevelName(logging.DTS_PKTGEN_OUTPUT, "DTS_PKTGEN_OUTPUT")
+
+date_fmt = "%d/%m/%Y %H:%M:%S"
+RESET_COLOR = "\033[0m"
+stream_fmt = "%(color)s%(name)30s: %(message)s" + RESET_COLOR
+log_dir = None
+
+# List for saving all using loggers
+global Loggers
+Loggers = []
+
+
+def set_verbose():
+ global verbose
+ verbose = True
+
+
+class BaseLoggerAdapter(logging.LoggerAdapter):
+ """
+ Upper layer of original logging module.
+ """
+
+ def dts_dut_cmd(self, msg, *args, **kwargs):
+ self.log(logging.DTS_DUT_CMD, msg, *args, **kwargs)
+
+ def dts_dut_output(self, msg, *args, **kwargs):
+ self.log(logging.DTS_DUT_OUTPUT, msg, *args, **kwargs)
+
+ def dts_dut_result(self, msg, *args, **kwargs):
+ self.log(logging.DTS_DUT_RESULT, msg, *args, **kwargs)
+
+ def dts_tester_cmd(self, msg, *args, **kwargs):
+ self.log(logging.DTS_TESTER_CMD, msg, *args, **kwargs)
+
+ def dts_tester_output(self, msg, *args, **kwargs):
+ self.log(logging.DTS_TESTER_CMD, msg, *args, **kwargs)
+
+ def dts_tester_result(self, msg, *args, **kwargs):
+ self.log(logging.DTS_TESTER_RESULT, msg, *args, **kwargs)
+
+ def suite_dut_cmd(self, msg, *args, **kwargs):
+ self.log(logging.SUITE_DUT_CMD, msg, *args, **kwargs)
+
+ def suite_dut_output(self, msg, *args, **kwargs):
+ self.log(logging.SUITE_DUT_OUTPUT, msg, *args, **kwargs)
+
+ def suite_tester_cmd(self, msg, *args, **kwargs):
+ self.log(logging.SUITE_TESTER_CMD, msg, *args, **kwargs)
+
+ def suite_tester_output(self, msg, *args, **kwargs):
+ self.log(logging.SUITE_TESTER_OUTPUT, msg, *args, **kwargs)
+
+ def dts_virtdut_cmd(self, msg, *args, **kwargs):
+ self.log(logging.DTS_VIRTDUT_CMD, msg, *args, **kwargs)
+
+ def dts_virtdut_output(self, msg, *args, **kwargs):
+ self.log(logging.DTS_VIRTDUT_OUTPUT, msg, *args, **kwargs)
+
+ def dts_pktgen_cmd(self, msg, *args, **kwargs):
+ self.log(logging.DTS_PKTGEN_CMD, msg, *args, **kwargs)
+
+ def dts_pktgen_output(self, msg, *args, **kwargs):
+ self.log(logging.DTS_PKTGEN_OUTPUT, msg, *args, **kwargs)
+
+
+class ColorHandler(logging.StreamHandler):
+ """
+ Color of DTS log format.
+ """
+
+ LEVEL_COLORS = {
+ logging.DEBUG: "", # SYSTEM
+ logging.DTS_DUT_OUTPUT: "\033[00;37m", # WHITE
+ logging.DTS_TESTER_OUTPUT: "\033[00;37m", # WHITE
+ logging.SUITE_DUT_OUTPUT: "\033[00;37m", # WHITE
+ logging.SUITE_TESTER_OUTPUT: "\033[00;37m", # WHITE
+ logging.INFO: "\033[00;36m", # CYAN
+ logging.DTS_DUT_CMD: "", # SYSTEM
+ logging.DTS_TESTER_CMD: "", # SYSTEM
+ logging.SUITE_DUT_CMD: "", # SYSTEM
+ logging.SUITE_TESTER_CMD: "", # SYSTEM
+ logging.DTS_PKTGEN_CMD: "", # SYSTEM
+ logging.DTS_PKTGEN_OUTPUT: "", # SYSTEM
+ logging.DTS_VIRTDUT_CMD: "", # SYSTEM
+ logging.DTS_VIRTDUT_OUTPUT: "", # SYSTEM
+ logging.WARN: "\033[01;33m", # BOLD YELLOW
+ logging.DTS_DUT_RESULT: "\033[01;34m", # BOLD BLUE
+ logging.DTS_TESTER_RESULT: "\033[01;34m", # BOLD BLUE
+ logging.ERROR: "\033[01;31m", # BOLD RED
+ logging.CRITICAL: "\033[01;31m", # BOLD RED
+ }
+
+ def format(self, record):
+ record.__dict__["color"] = self.LEVEL_COLORS[record.levelno]
+ return logging.StreamHandler.format(self, record)
+
+
+class DTSLOG(BaseLoggerAdapter):
+ """
+ DTS log class for framework and testsuite.
+ """
+
+ def __init__(self, logger, crb="suite"):
+ global log_dir
+ filename = inspect.stack()[1][1][:-3]
+
+ self.error_lvl = logging.ERROR
+ self.warn_lvl = logging.WARNING
+ self.info_lvl = logging.INFO
+ self.debug_lvl = logging.DEBUG
+
+ if log_dir is None:
+ self.log_path = os.getcwd() + "/../" + FOLDERS["Output"]
+ else:
+ self.log_path = (
+ log_dir # log dir should contain tag/crb global value and mod in dts
+ )
+ self.dts_log = "dts.log"
+
+ self.logger = logger
+ self.logger.setLevel(logging.DEBUG)
+
+ self.crb = crb
+ super(DTSLOG, self).__init__(self.logger, dict(crb=self.crb))
+
+ self.fh = None
+ self.ch = None
+
+ # add default log file
+ fh = logging.FileHandler(self.log_path + "/" + self.dts_log)
+ ch = ColorHandler()
+ self.__log_handler(fh, ch)
+
+ def __log_handler(self, fh, ch):
+ """
+ Config stream handler and file handler.
+ """
+ if load_global_setting(DTS_PARALLEL_SETTING) == "yes":
+ message_fmt = "%(asctime)s %(name)30s %(threadName)s: %(message)s"
+ else:
+ message_fmt = "%(asctime)s %(name)30s: %(message)s"
+
+ fh.setFormatter(logging.Formatter(message_fmt, date_fmt))
+ ch.setFormatter(logging.Formatter(stream_fmt, date_fmt))
+
+ fh.setLevel(logging.DEBUG) # file handler default level
+ global verbose
+ if verbose is True:
+ ch.setLevel(logging.DEBUG)
+ else:
+ ch.setLevel(logging.INFO) # console handler default level
+
+ self.logger.addHandler(fh)
+ self.logger.addHandler(ch)
+
+ if self.fh is not None:
+ self.logger.removeHandler(self.fh)
+ if self.ch is not None:
+ self.logger.removeHandler(self.ch)
+
+ self.fh = fh
+ self.ch = ch
+
+ def warning(self, message):
+ """
+ DTS warnning level log function.
+ """
+ self.logger.log(self.warn_lvl, message)
+
+ def info(self, message):
+ """
+ DTS information level log function.
+ """
+ self.logger.log(self.info_lvl, message)
+
+ def error(self, message):
+ """
+ DTS error level log function.
+ """
+ self.logger.log(self.error_lvl, message)
+
+ def debug(self, message):
+ """
+ DTS debug level log function.
+ """
+ self.logger.log(self.debug_lvl, message)
+
+ def set_logfile_path(self, path):
+ """
+ Configure the log file path.
+ """
+ self.log_path = path
+
+ def set_stream_level(self, lvl):
+ """
+ Configure the stream level, logger level >= stream level will be
+ output on the screen.
+ """
+ self.ch.setLevel(lvl)
+
+ def set_logfile_level(self, lvl):
+ """
+ Configure the file handler level, logger level >= logfile level will
+ be saved into log file.
+ """
+ self.fh.setLevel(lvl)
+
+ def config_execution(self, crb):
+ """
+ Reconfigure stream&logfile level and reset info,debug,warn level.
+ """
+ log_file = self.log_path + "/" + self.dts_log
+ fh = logging.FileHandler(log_file)
+ ch = ColorHandler()
+ self.__log_handler(fh, ch)
+
+ if crb.startswith("dut"):
+ self.info_lvl = logging.DTS_DUT_CMD
+ self.debug_lvl = logging.DTS_DUT_OUTPUT
+ self.warn_lvl = logging.DTS_DUT_RESULT
+ elif crb.startswith("tester"):
+ self.info_lvl = logging.DTS_TESTER_CMD
+ self.debug_lvl = logging.DTS_TESTER_OUTPUT
+ self.warn_lvl = logging.DTS_TESTER_RESULT
+ elif crb.startswith("pktgen"):
+ self.info_lvl = logging.DTS_PKTGEN_CMD
+ self.debug_lvl = logging.DTS_PKTGEN_OUTPUT
+ elif crb.startswith("virtdut"):
+ self.info_lvl = logging.DTS_VIRTDUT_CMD
+ self.debug_lvl = logging.DTS_VIRTDUT_OUTPUT
+ else:
+ self.error_lvl = logging.ERROR
+ self.warn_lvl = logging.WARNING
+ self.info_lvl = logging.INFO
+ self.debug_lvl = logging.DEBUG
+
+ def config_suite(self, suitename, crb=None):
+ """
+ Reconfigure stream&logfile level and reset info,debug level.
+ """
+ log_file = self.log_path + "/" + suitename + ".log"
+ fh = logging.FileHandler(log_file)
+ ch = ColorHandler()
+
+ # exit first
+ self.logger_exit()
+
+ # then add handler
+ self.__log_handler(fh, ch)
+
+ if crb == "dut":
+ self.info_lvl = logging.SUITE_DUT_CMD
+ self.debug_lvl = logging.SUITE_DUT_OUTPUT
+ elif crb == "tester":
+ self.info_lvl = logging.SUITE_TESTER_CMD
+ self.debug_lvl = logging.SUITE_TESTER_OUTPUT
+ elif crb == "pktgen":
+ self.info_lvl = logging.DTS_PKTGEN_CMD
+ self.debug_lvl = logging.DTS_PKTGEN_OUTPUT
+ elif crb == "virtdut":
+ self.info_lvl = logging.DTS_VIRTDUT_CMD
+ self.debug_lvl = logging.DTS_VIRTDUT_OUTPUT
+
+ def logger_exit(self):
+ """
+ Remove stream handler and logfile handler.
+ """
+ if self.fh is not None:
+ self.logger.removeHandler(self.fh)
+ if self.ch is not None:
+ self.logger.removeHandler(self.ch)
+
+
+def getLogger(name, crb="suite"):
+ """
+ Get logger handler and if there's no handler for specified CRB will create one.
+ """
+ global Loggers
+ # return saved logger
+ for logger in Loggers:
+ if logger["name"] == name and logger["crb"] == crb:
+ return logger["logger"]
+
+ # return new logger
+ logger = DTSLOG(logging.getLogger(name), crb)
+ Loggers.append({"logger": logger, "name": name, "crb": crb})
+ return logger
+
+
+_TESTSUITE_NAME_FORMAT_PATTERN = r"TEST SUITE : (.*)"
+_TESTSUITE_ENDED_FORMAT_PATTERN = r"TEST SUITE ENDED: (.*)"
+_TESTCASE_NAME_FORMAT_PATTERN = r"Test Case (.*) Begin"
+_TESTCASE_RESULT_FORMAT_PATTERN = r"Test Case (.*) Result (.*):"
+
+
+class LogParser(object):
+ """
+ Module for parsing saved log file, will implement later.
+ """
+
+ def __init__(self, log_path):
+ self.log_path = log_path
+
+ try:
+ self.log_handler = open(self.log_path, "r")
+ except:
+ print(RED("Failed to logfile %s" % log_path))
+ return None
+
+ self.suite_pattern = re.compile(_TESTSUITE_NAME_FORMAT_PATTERN)
+ self.end_pattern = re.compile(_TESTSUITE_ENDED_FORMAT_PATTERN)
+ self.case_pattern = re.compile(_TESTCASE_NAME_FORMAT_PATTERN)
+ self.result_pattern = re.compile(_TESTCASE_RESULT_FORMAT_PATTERN)
+
+ self.loglist = self.parse_logfile()
+ self.log_handler.close()
+
+ def locate_suite(self, suite_name=None):
+ begin = 0
+ end = len(self.loglist)
+ for line in self.loglist:
+ m = self.suite_pattern.match(list(line.values())[0])
+ if m:
+ if suite_name is None:
+ begin = self.loglist.index(line)
+ elif suite_name == m.group(1):
+ begin = self.loglist.index(line)
+
+ for line in self.loglist[begin:]:
+ m = self.end_pattern.match(list(line.values())[0])
+ if m:
+ if suite_name is None:
+ end = self.loglist.index(line)
+ elif suite_name == m.group(1):
+ end = self.loglist.index(line)
+
+ return self.loglist[begin : end + 1]
+
+ def locate_case(self, case_name=None):
+ begin = 0
+ end = len(self.loglist)
+ for line in self.loglist:
+ # only handle case log
+ m = self.case_pattern.match(list(line.values())[0])
+ if m:
+ # not determine case will start from beginning
+ if case_name is None:
+ begin = self.loglist.index(line)
+ # start from the determined case
+ elif case_name == m.group(1):
+ begin = self.loglist.index(line)
+
+ for line in self.loglist[begin:]:
+ m = self.result_pattern.match(list(line.values())[0])
+ if m:
+ # not determine case will stop to the end
+ if case_name is None:
+ end = self.loglist.index(line)
+ # stop to the determined case
+ elif case_name == m.group(1):
+ end = self.loglist.index(line)
+
+ return self.loglist[begin : end + 1]
+
+ def __dict_log(self, lvl_name, msg):
+ tmp = {}
+ if lvl_name != "":
+ tmp[lvl_name] = msg
+ return tmp
+
+ def parse_logfile(self):
+ loglist = []
+
+ out_type = "DTS_DUT_OUTPUT"
+ for line in self.log_handler:
+ tmp = {}
+ line = line.replace("\n", "")
+ line = line.replace("^M", "")
+ m = re.match("(\d{2}/\d{2}/\d{4}) (\d{2}:\d{2}:\d{2}) (.{20}): (.*)", line)
+ if m:
+ lvl_name = m.group(3).strip()
+ tmp = self.__dict_log(lvl_name, m.group(4))
+ if "OUTPUT" in lvl_name:
+ out_type = lvl_name
+ else:
+ tmp[out_type] = line
+
+ loglist.append(tmp)
+
+ return loglist
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 10/15] dts: merge DTS framework/packet.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (8 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 09/15] dts: merge DTS framework/logger.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 11/15] dts: merge DTS framework/project_dpdk.py " Juraj Linkeš
` (5 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/packet.py | 1292 +++++++++++++++++++++++++++++++++++++++
1 file changed, 1292 insertions(+)
create mode 100644 dts/framework/packet.py
diff --git a/dts/framework/packet.py b/dts/framework/packet.py
new file mode 100644
index 0000000000..251f9875bf
--- /dev/null
+++ b/dts/framework/packet.py
@@ -0,0 +1,1292 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+Generic packet create, transmit and analyze module
+Base on scapy(python program for packet manipulation)
+"""
+import os
+import random
+import re
+import shutil
+import socket
+import struct
+import sys
+import time
+from importlib import import_module
+from socket import AF_INET6
+
+from scapy.contrib.lldp import LLDPDU, LLDPDUManagementAddress
+from scapy.contrib.mpls import MPLS
+from scapy.contrib.nsh import NSH
+from scapy.layers.inet import ICMP, IP, TCP, UDP
+from scapy.layers.inet6 import IPv6, IPv6ExtHdrFragment, IPv6ExtHdrRouting
+from scapy.layers.l2 import ARP, GRE, Dot1Q, Ether
+from scapy.layers.sctp import SCTP
+from scapy.layers.vxlan import VXLAN
+from scapy.packet import Raw
+from scapy.sendrecv import sendp
+from scapy.utils import hexstr, rdpcap, wrpcap
+
+from .utils import convert_int2ip, convert_ip2int, get_module_path
+
+# load extension layers
+exec_file = os.path.realpath(__file__)
+DTS_PATH = exec_file.replace("/framework/packet.py", "")
+
+# exec_file might be .pyc file, if so, remove 'c'.
+TMP_PATH = (
+ DTS_PATH[:-1] + "/output/tmp/pcap/"
+ if exec_file.endswith(".pyc")
+ else DTS_PATH + "/output/tmp/pcap/"
+)
+if not os.path.exists(TMP_PATH):
+ os.system("mkdir -p %s" % TMP_PATH)
+
+scapy_modules_required = {
+ "scapy.contrib.gtp": ["GTP_U_Header", "GTPPDUSessionContainer"],
+ "scapy.contrib.lldp": ["LLDPDU", "LLDPDUManagementAddress"],
+ "scapy.contrib.pfcp": ["PFCP"],
+ "scapy.contrib.nsh": ["NSH"],
+ "scapy.contrib.igmp": ["IGMP"],
+ "scapy.contrib.mpls": ["MPLS"],
+}
+
+for m in scapy_modules_required:
+ try:
+ module = import_module(m)
+ for clazz in scapy_modules_required[m]:
+ locals().update({clazz: getattr(module, clazz)})
+ except Exception as e:
+ print(e)
+
+
+def get_scapy_module_impcmd():
+ cmd_li = list()
+ for m in scapy_modules_required:
+ cmd_li.append(f'from {m} import {",".join(scapy_modules_required[m])}')
+ return ";".join(cmd_li)
+
+
+# packet generator type should be configured later
+PACKETGEN = "scapy"
+
+LayersTypes = {
+ "L2": ["ether", "vlan", "1588", "arp", "lldp", "mpls", "nsh"],
+ # ipv4_ext_unknown, ipv6_ext_unknown
+ "L3": ["ipv4", "ipv4ihl", "ipv6", "ipv4_ext", "ipv6_ext", "ipv6_ext2", "ipv6_frag"],
+ "L4": ["tcp", "udp", "frag", "sctp", "icmp", "nofrag"],
+ # The NVGRE pkt format is
+ # <'ether type'=0x0800 'version'=4, 'protocol'=47 'protocol type'=0x6558>
+ # or
+ # <'ether type'=0x86DD 'version'=6, 'next header'=47 'protocol type'=0x6558'>
+ # The GRE pkt format is
+ # <'ether type'=0x0800 'version'=4, 'protocol'=17 'destination port'=4789>
+ # or
+ # <'ether type'=0x86DD 'version'=6, 'next header'=17 'destination port'=4789>
+ "TUNNEL": ["ip", "gre", "vxlan", "nvgre", "geneve", "grenat"],
+ "INNER L2": ["inner_mac", "inner_vlan"],
+ # inner_ipv4_unknown, inner_ipv6_unknown
+ "INNER L3": ["inner_ipv4", "inner_ipv4_ext", "inner_ipv6", "inner_ipv6_ext"],
+ "INNER L4": [
+ "inner_tcp",
+ "inner_udp",
+ "inner_frag",
+ "inner_sctp",
+ "inner_icmp",
+ "inner_nofrag",
+ ],
+ "PAYLOAD": ["raw"],
+}
+
+# Saved background sniff process id
+SNIFF_PIDS = {}
+
+# Saved packet generator process id
+# used in pktgen or tgen
+PKTGEN_PIDS = {}
+
+# default filter for LLDP packet
+LLDP_FILTER = {"layer": "ether", "config": {"type": "not lldp"}}
+
+
+def write_raw_pkt(pkt_str, file_name):
+ tmp = eval(pkt_str)
+ tmp = bytearray(bytes(tmp))
+ with open(file_name, "wb") as w:
+ w.write(tmp)
+ w.close()
+
+
+class scapy(object):
+ SCAPY_LAYERS = {
+ "ether": Ether(dst="ff:ff:ff:ff:ff:ff"),
+ "vlan": Dot1Q(),
+ "1588": Ether(type=0x88F7),
+ "arp": ARP(),
+ "ipv4": IP(),
+ "ipv4ihl": IP(ihl=10),
+ "ipv4_ext": IP(frag=5),
+ "ipv6": IPv6(src="::1"),
+ "ipv6_ext": IPv6(src="::1", nh=43) / IPv6ExtHdrRouting(),
+ "ipv6_ext2": IPv6() / IPv6ExtHdrRouting(),
+ "udp": UDP(),
+ "tcp": TCP(),
+ "sctp": SCTP(),
+ "icmp": ICMP(),
+ "gre": GRE(),
+ "raw": Raw(),
+ "vxlan": VXLAN(),
+ "nsh": NSH(),
+ "mpls": MPLS(),
+ "inner_mac": Ether(),
+ "inner_vlan": Dot1Q(),
+ "inner_ipv4": IP(),
+ "inner_ipv4_ext": IP(),
+ "inner_ipv6": IPv6(src="::1"),
+ "inner_ipv6_ext": IPv6(src="::1"),
+ "inner_tcp": TCP(),
+ "inner_udp": UDP(),
+ "inner_sctp": SCTP(),
+ "inner_icmp": ICMP(),
+ "lldp": LLDPDU()
+ / LLDPDUManagementAddress(
+ _length=6, _management_address_string_length=6, management_address=":12"
+ )
+ / IP(),
+ "ip_frag": IP(frag=5),
+ "ipv6_frag": IPv6(src="::1") / IPv6ExtHdrFragment(),
+ "ip_in_ip": IP() / IP(),
+ "ip_in_ip_frag": IP() / IP(frag=5),
+ "ipv6_in_ip": IP() / IPv6(src="::1"),
+ "ipv6_frag_in_ip": IP() / IPv6(src="::1", nh=44) / IPv6ExtHdrFragment(),
+ "nvgre": GRE(key_present=1, proto=0x6558, key=0x00000100),
+ "geneve": "Not Implement",
+ }
+
+ def __init__(self):
+ self.pkt = None
+ self.pkts = list()
+
+ def append_pkts(self):
+ self.pkts.append(self.pkt)
+
+ def update_pkts(self):
+ if not self.pkts: # update pkt to a null pkt list.
+ self.pkts.append(self.pkt)
+ else:
+ self.pkts[-1] = self.pkt
+
+ def assign_pkt(self, pkt):
+ self.pkt = pkt
+
+ def add_layers(self, layers):
+ self.pkt = None
+ for layer in layers:
+ if self.pkt is not None:
+ self.pkt = self.pkt / self.SCAPY_LAYERS[layer]
+ else:
+ self.pkt = self.SCAPY_LAYERS[layer]
+
+ def ether(
+ self, pkt_layer, dst="ff:ff:ff:ff:ff:ff", src="00:00:20:00:00:00", type=None
+ ):
+ if pkt_layer.name != "Ethernet":
+ return
+ pkt_layer.dst = dst
+ pkt_layer.src = src
+ if type is not None:
+ pkt_layer.type = type
+
+ def vlan(self, pkt_layer, vlan, prio=0, type=None):
+ if pkt_layer.name != "802.1Q":
+ return
+ pkt_layer.vlan = int(vlan)
+ pkt_layer.prio = prio
+ if type is not None:
+ pkt_layer.type = type
+
+ def strip_vlan(self, element, p_index=0):
+ value = None
+
+ if self.pkts[p_index].haslayer("Dot1Q") == 0:
+ return None
+
+ if element == "vlan":
+ value = int(str(self.pkts[p_index][Dot1Q].vlan))
+ return value
+
+ def strip_layer2(self, element, p_index=0):
+ value = None
+ layer = self.pkts[p_index].getlayer(0)
+ if layer is None:
+ return None
+
+ if element == "src":
+ value = layer.src
+ elif element == "dst":
+ value = layer.dst
+ elif element == "type":
+ value = layer.type
+
+ return value
+
+ def strip_layer3(self, element, p_index=0):
+ value = None
+ layer = self.pkts[p_index].getlayer(1)
+ if layer is None:
+ return None
+
+ if element == "src":
+ value = layer.src
+ elif element == "dst":
+ value = layer.dst
+ else:
+ value = layer.getfieldval(element)
+
+ return value
+
+ def strip_layer4(self, element, p_index=0):
+ value = None
+ layer = self.pkts[p_index].getlayer(2)
+ if layer is None:
+ return None
+
+ if element == "src":
+ value = layer.sport
+ elif element == "dst":
+ value = layer.dport
+ else:
+ value = layer.getfieldval(element)
+
+ return value
+
+ def ipv4(
+ self,
+ pkt_layer,
+ frag=0,
+ src="127.0.0.1",
+ proto=None,
+ tos=0,
+ dst="127.0.0.1",
+ chksum=None,
+ len=None,
+ version=4,
+ flags=None,
+ ihl=None,
+ ttl=64,
+ id=1,
+ options=None,
+ ):
+ pkt_layer.frag = frag
+ pkt_layer.src = src
+ if proto is not None:
+ pkt_layer.proto = proto
+ pkt_layer.tos = tos
+ pkt_layer.dst = dst
+ if chksum is not None:
+ pkt_layer.chksum = chksum
+ if len is not None:
+ pkt_layer.len = len
+ pkt_layer.version = version
+ if flags is not None:
+ pkt_layer.flags = flags
+ if ihl is not None:
+ pkt_layer.ihl = ihl
+ pkt_layer.ttl = ttl
+ pkt_layer.id = id
+ if options is not None:
+ pkt_layer.options = options
+
+ def ipv6(
+ self,
+ pkt_layer,
+ version=6,
+ tc=0,
+ fl=0,
+ plen=0,
+ nh=0,
+ hlim=64,
+ src="::1",
+ dst="::1",
+ ):
+ """
+ Configure IPv6 protocol.
+ """
+ pkt_layer.version = version
+ pkt_layer.tc = tc
+ pkt_layer.fl = fl
+ if plen:
+ pkt_layer.plen = plen
+ if nh:
+ pkt_layer.nh = nh
+ pkt_layer.src = src
+ pkt_layer.dst = dst
+ pkt_layer.hlim = hlim
+
+ def tcp(self, pkt_layer, src=53, dst=53, flags=0, len=None, chksum=None):
+ pkt_layer.sport = src
+ pkt_layer.dport = dst
+ if flags is not None:
+ pkt_layer.flags = flags
+ if len is not None:
+ pkt_layer.len = len
+ if chksum is not None:
+ pkt_layer.chksum = chksum
+
+ def udp(self, pkt_layer, src=53, dst=53, len=None, chksum=None):
+ pkt_layer.sport = src
+ pkt_layer.dport = dst
+ if len is not None:
+ pkt_layer.len = len
+ if chksum is not None:
+ pkt_layer.chksum = chksum
+
+ def sctp(self, pkt_layer, src=53, dst=53, tag=None, len=None, chksum=None):
+ pkt_layer.sport = src
+ pkt_layer.dport = dst
+ if tag is not None:
+ pkt_layer.tag = tag
+ if len is not None:
+ pkt_layer.len = len
+ if chksum is not None:
+ pkt_layer.chksum = chksum
+
+ def raw(self, pkt_layer, payload=None):
+ if payload is not None:
+ pkt_layer.load = ""
+ for hex1, hex2 in payload:
+ pkt_layer.load += struct.pack("=B", int("%s%s" % (hex1, hex2), 16))
+
+ def gre(self, pkt_layer, proto=None):
+ if proto is not None:
+ pkt_layer.proto = proto
+
+ def vxlan(self, pkt_layer, vni=0):
+ pkt_layer.vni = vni
+
+ def nsh(
+ self,
+ pkt_layer,
+ ver=0,
+ oam=0,
+ critical=0,
+ reserved=0,
+ len=0,
+ mdtype=1,
+ nextproto=3,
+ nsp=0x0,
+ nsi=1,
+ npc=0x0,
+ nsc=0x0,
+ spc=0x0,
+ ssc=0x0,
+ ):
+ pkt_layer.Ver = ver
+ pkt_layer.OAM = oam
+ pkt_layer.Critical = critical
+ pkt_layer.Reserved = reserved
+ if len != 0:
+ pkt_layer.Len = len
+ pkt_layer.MDType = mdtype
+ pkt_layer.NextProto = nextproto
+ pkt_layer.NSP = nsp
+ pkt_layer.NSI = nsi
+ if mdtype == 1:
+ pkt_layer.NPC = npc
+ pkt_layer.NSC = nsc
+ pkt_layer.SPC = spc
+ pkt_layer.SSC = ssc
+
+ def mpls(self, pkt_layer, label=0, cos=0, s=0, ttl=64):
+ pkt_layer.label = label
+ pkt_layer.cos = cos
+ pkt_layer.s = s
+ pkt_layer.ttl = ttl
+
+
+class Packet(object):
+ """
+ Module for config/create packet
+ Based on scapy module
+ Usage: assign_layers([layers list])
+ config_layer('layername', {layer config})
+ ...
+ """
+
+ def_packet = {
+ "TIMESYNC": {"layers": ["ether", "raw"], "cfgload": False},
+ "ARP": {"layers": ["ether", "arp"], "cfgload": False},
+ "LLDP": {"layers": ["ether", "lldp"], "cfgload": False},
+ "IP_RAW": {"layers": ["ether", "ipv4", "raw"], "cfgload": True},
+ "TCP": {"layers": ["ether", "ipv4", "tcp", "raw"], "cfgload": True},
+ "UDP": {"layers": ["ether", "ipv4", "udp", "raw"], "cfgload": True},
+ "VLAN_UDP": {
+ "layers": ["ether", "vlan", "ipv4", "udp", "raw"],
+ "cfgload": True,
+ },
+ "SCTP": {"layers": ["ether", "ipv4", "sctp", "raw"], "cfgload": True},
+ "IPv6_TCP": {"layers": ["ether", "ipv6", "tcp", "raw"], "cfgload": True},
+ "IPv6_UDP": {"layers": ["ether", "ipv6", "udp", "raw"], "cfgload": True},
+ "IPv6_SCTP": {"layers": ["ether", "ipv6", "sctp", "raw"], "cfgload": True},
+ }
+
+ def __init__(self, pkt_str=None, **options):
+ """
+ pkt_type: description of packet type
+ defined in def_packet
+ args: specify a packet with a string explicitly, will ignore options
+ options: special option for Packet module
+ pkt_len: length of network packet
+ ran_payload: whether payload of packet is random
+ pkt_file:
+ pkt_gen: packet generator type
+ now only support scapy
+ """
+ self.pkt_opts = options
+ self.pkt_layers = []
+
+ if "pkt_gen" in list(self.pkt_opts.keys()):
+ if self.pkt_opts["pkt_gen"] == "scapy":
+ self.pktgen = scapy()
+ else:
+ print("Not support other pktgen yet!!!")
+ else:
+ self.pktgen = scapy()
+
+ if pkt_str is not None and type(pkt_str) == str:
+ self._scapy_str_to_pkt(pkt_str)
+ elif len(options) != 0:
+ self._add_pkt(self.pkt_opts)
+ if self.pktgen.pkt is not None:
+ self.pktgen.append_pkts()
+
+ def __len__(self):
+ return len(self.pktgen.pkts)
+
+ def __getitem__(self, item):
+ return self.pktgen.pkts[item]
+
+ def _add_pkt(self, options):
+ """
+ :param options: packt configuration, dictionary type
+ :return:
+ """
+ self.pkt_len = 64
+ self.pkt_type = "UDP"
+ if "pkt_type" in list(options.keys()):
+ self.pkt_type = options["pkt_type"]
+
+ if self.pkt_type in list(self.def_packet.keys()):
+ self.pkt_layers = self.def_packet[self.pkt_type]["layers"]
+ self.pkt_cfgload = self.def_packet[self.pkt_type]["cfgload"]
+ if "IPv6" in self.pkt_type:
+ self.pkt_len = 128
+ else:
+ self._load_pkt_layers()
+
+ if "pkt_len" in list(options.keys()):
+ self.pkt_len = options["pkt_len"]
+
+ self._load_assign_layers()
+
+ def _load_assign_layers(self):
+ # assign layer
+ self.assign_layers()
+
+ # config special layer
+ self.config_def_layers()
+
+ # handle packet options
+ payload_len = self.pkt_len - len(self.pktgen.pkt) - 4
+
+ # if raw data has not been configured and payload should configured
+ if hasattr(self, "configured_layer_raw") is False and self.pkt_cfgload is True:
+ payload = []
+ raw_confs = {}
+ if "ran_payload" in list(self.pkt_opts.keys()):
+ for loop in range(payload_len):
+ payload.append("%02x" % random.randrange(0, 255))
+ else:
+ for loop in range(payload_len):
+ payload.append("58") # 'X'
+
+ raw_confs["payload"] = payload
+ self.config_layer("raw", raw_confs)
+
+ def _scapy_str_to_pkt(self, scapy_str):
+ """
+
+ :param scapy_str: packet str, eg. 'Ether()/IP()/UDP()'
+ :return: None
+ """
+ layer_li = [re.sub("\(.*?\)", "", i) for i in scapy_str.split("/")]
+ self.pkt_type = "_".join(layer_li)
+ self._load_pkt_layers()
+ self.pktgen.assign_pkt(scapy_str)
+
+ def append_pkt(self, args=None, **kwargs):
+ """
+ :param args: take str type as pkt to append
+ :param kwargs: take dictory type as pkt to append
+ :return: None
+ """
+ if isinstance(args, str):
+ self._scapy_str_to_pkt(args)
+ elif isinstance(kwargs, dict):
+ self.pkt_opts = kwargs
+ if hasattr(self, "configured_layer_raw"):
+ delattr(self, "configured_layer_raw")
+ self._add_pkt(kwargs)
+ self.pktgen.append_pkts()
+
+ def update_pkt_str(self, pkt):
+ self._scapy_str_to_pkt(pkt)
+ self.pktgen.append_pkts()
+
+ def update_pkt_dict(self, pkt):
+ self.pkt_opts = pkt
+ if hasattr(self, "configured_layer_raw"):
+ delattr(self, "configured_layer_raw")
+ self._add_pkt(pkt)
+ self.pktgen.append_pkts()
+
+ def update_pkt(self, pkts):
+ """
+ update pkts to packet object
+ :param pkts: pkts to update
+ :type str|dict|list
+ :return: None
+ """
+ self.pktgen = scapy()
+ self.pkt_layers = []
+ if isinstance(pkts, str):
+ self.update_pkt_str(pkts)
+ elif isinstance(pkts, dict):
+ self.update_pkt_dict(pkts)
+ elif isinstance(pkts, list):
+ for i in pkts:
+ if isinstance(i, str):
+ try:
+ self.update_pkt_str(i)
+ except:
+ print(("warning: packet %s update failed" % i))
+ elif isinstance(i, dict):
+ try:
+ self.update_pkt_dict(i)
+ except:
+ print(("warning: packet %s update failed" % i))
+ else:
+ print(("packet {} is not acceptable".format(i)))
+
+ def generate_random_pkts(
+ self,
+ dstmac=None,
+ pktnum=100,
+ random_type=None,
+ ip_increase=True,
+ random_payload=False,
+ options=None,
+ ):
+ """
+ # generate random packets
+ :param dstmac: specify the dst mac
+ :param pktnum: packet number to generate
+ :param random_type: specify random packet type
+ :param ip_increase: auto increase ip value
+ :param random_payload: if True, generate random packets with random payload
+ :param options: packet layer configuration
+ :return: None
+ """
+
+ random_type = (
+ ["TCP", "UDP", "IPv6_TCP", "IPv6_UDP"]
+ if random_type is None
+ else random_type
+ )
+ options = (
+ {"ip": {"src": "192.168.0.1", "dst": "192.168.1.1"}, "layers_config": []}
+ if options is None
+ else options
+ )
+ # give a default value to ip
+ try:
+ src_ip_num = convert_ip2int(options["ip"]["src"])
+ except:
+ src_ip_num = 0
+ try:
+ dst_ip_num = convert_ip2int(options["ip"]["dst"])
+ except:
+ dst_ip_num = 0
+
+ for i in range(pktnum):
+ # random the packet type
+ self.pkt_type = random.choice(random_type)
+ self.pkt_layers = self.def_packet[self.pkt_type]["layers"]
+ self.check_layer_config()
+ self.pktgen.add_layers(self.pkt_layers)
+ # hardcode src/dst port for some protocol may cause issue
+ if "TCP" in self.pkt_type:
+ self.config_layer("tcp", {"src": 65535, "dst": 65535})
+ if "UDP" in self.pkt_type:
+ self.config_layer("udp", {"src": 65535, "dst": 65535})
+ if "layers_config" in options:
+ self.config_layers(options["layers_config"])
+ if dstmac:
+ self.config_layer("ether", {"dst": "%s" % dstmac})
+ # generate auto increase dst ip packet
+ if ip_increase:
+ if "v6" in self.pkt_type:
+ dstip = convert_int2ip(dst_ip_num, ip_type=6)
+ srcip = convert_int2ip(src_ip_num, ip_type=6)
+ self.config_layer(
+ "ipv6", config={"dst": "%s" % (dstip), "src": "%s" % srcip}
+ )
+ else:
+ dstip = convert_int2ip(dst_ip_num, ip_type=4)
+ srcip = convert_int2ip(src_ip_num, ip_type=4)
+ self.config_layer(
+ "ipv4", config={"dst": "%s" % (dstip), "src": "%s" % srcip}
+ )
+ dst_ip_num += 1
+ # generate random payload of packet
+ if random_payload and self.def_packet[self.pkt_type]["cfgload"]:
+ # TCP packet has a default flags S, packet should not load data, so set it to A if has payload
+ if "TCP" in self.pkt_type:
+ self.config_layer("tcp", {"src": 65535, "dst": 65535, "flags": "A"})
+
+ payload_len = random.randint(64, 100)
+ payload = []
+ for _ in range(payload_len):
+ payload.append("%02x" % random.randrange(0, 255))
+ self.config_layer("raw", config={"payload": payload})
+ self.pktgen.append_pkts()
+
+ def save_pcapfile(self, crb=None, filename="saved_pkts.pcap"):
+ """
+
+ :param crb: session or crb object
+ :param filename: location and name for packets to be saved
+ :return: None
+ """
+ # save pkts to pcap file to local path, then copy to remote tester tmp directory,
+ if crb:
+ trans_path = crb.tmp_file
+ file_name = filename
+ if os.path.isabs(filename): # check if the given filename with a abs path
+ file_dir = os.path.dirname(filename)
+ out = crb.send_expect("ls -d %s" % file_dir, "# ", verify=True)
+ if not isinstance(out, str):
+ raise Exception("%s may not existed on %s" % (file_dir, crb.name))
+ wrpcap(filename, self.pktgen.pkts)
+ trans_path = os.path.abspath(filename)
+ file_name = filename.split(os.path.sep)[-1]
+ # write packets to local tmp path $dts/ouput/tmp/pcap/
+ wrpcap(TMP_PATH + file_name, self.pktgen.pkts)
+ # copy to remote tester tmp path /tmp/tester
+ crb.session.copy_file_to(TMP_PATH + file_name, trans_path)
+ else:
+ wrpcap(filename, self.pktgen.pkts)
+
+ def read_pcapfile(self, filename, crb=None):
+ """
+
+ :param filename: packet to be read from
+ :param crb: session or crb object
+ :return: scapy type packet
+ """
+ # read pcap file from local or remote, then append to pkts list
+ # if crb, read pakcet from remote server, else read from local location
+ if crb:
+ out = crb.send_expect("ls -d %s" % filename, "# ", verify=True)
+ if not isinstance(out, str):
+ raise Exception("%s may not existed on %s" % (filename, crb.name))
+ crb.session.copy_file_from(filename, TMP_PATH)
+ p = rdpcap(TMP_PATH + filename.split(os.path.sep)[-1])
+ else:
+ p = rdpcap(filename)
+ if len(p) == 0:
+ return None
+ self.pktgen.assign_pkt(p[-1])
+ for i in p:
+ self.pktgen.pkts.append(i)
+ return p
+
+ def send_pkt_bg_with_pcapfile(self, crb, tx_port="", count=1, loop=0, inter=0):
+ """
+ send packet background with a pcap file, got an advantage in sending a large number of packets
+ :param crb: session or crb object
+ :param tx_port: ether to send packet
+ :param count: send times
+ :param loop: send packet in a loop
+ :param inter: interval time per packet
+ :return: send session
+ """
+ if crb.name != "tester":
+ raise Exception("crb should be tester")
+ wrpcap("_", self.pktgen.pkts)
+ file_path = "/tmp/%s.pcap" % tx_port
+ scapy_session_bg = crb.prepare_scapy_env()
+ scapy_session_bg.copy_file_to("_", file_path)
+ scapy_session_bg.send_expect('pkts = rdpcap("%s")' % file_path, ">>> ")
+ scapy_session_bg.send_command(
+ 'sendp(pkts, iface="%s",count=%s,loop=%s,inter=%s)'
+ % (tx_port, count, loop, inter)
+ )
+ return scapy_session_bg
+
+ def _recompose_pkts_str(self, pkts_str):
+ method_pattern = re.compile("<.+?>")
+ method_li = method_pattern.findall(pkts_str)
+ for i in method_li:
+ pkts_str = method_pattern.sub(i.strip("<>") + "()", pkts_str, count=1)
+ return pkts_str
+
+ # use the GRE to configure the nvgre package
+ # the field key last Byte configure the reserved1 of NVGRE, first 3 Bytes configure the TNI value of NVGRE
+ def transform_nvgre_layer(self, pkt_str):
+ tni = re.search("TNI\s*=\s*(0x)*(\d*)", pkt_str)
+ if tni is None:
+ nvgre = "GRE(key_present=1,proto=0x6558,key=0x00000100)"
+ else:
+ tni = int(tni.group(2))
+ tni = tni << 8
+ nvgre = "GRE(key_present=1,proto=0x6558,key=%d)" % tni
+ pkt_str = re.sub(r"NVGRE\(\)|NVGRE\(TNI=\s*(0x)*\d*\)", nvgre, pkt_str)
+ return pkt_str
+
+ def gernerator_pkt_str(self):
+ pkt_str_list = []
+ for p in self.pktgen.pkts:
+ if not isinstance(p, str):
+ p_str = p.command()
+ else:
+ p_str = p
+ # process the NVGRE
+ if "NVGRE" in p_str:
+ p_str = self.transform_nvgre_layer(p_str)
+ pkt_str_list.append(p_str)
+ return "[" + ",".join(pkt_str_list) + "]"
+
+ def send_pkt(self, crb, tx_port="", count=1, interval=0, timeout=120):
+ p_str = self.gernerator_pkt_str()
+ pkts_str = self._recompose_pkts_str(pkts_str=p_str)
+ cmd = (
+ "sendp("
+ + pkts_str
+ + f',iface="{tx_port}",count={count},inter={interval},verbose=False)'
+ )
+ if crb.name == "tester":
+ crb.scapy_session.send_expect(cmd, ">>> ", timeout=timeout)
+ elif crb.name.startswith("tester_scapy"):
+ crb.send_expect(cmd, ">>> ", timeout=timeout)
+ else:
+ raise Exception("crb should be tester's session and initialized")
+
+ def send_pkt_bg(self, crb, tx_port="", count=-1, interval=0, loop=1):
+ if crb.name != "tester":
+ raise Exception("crb should be tester")
+ scapy_session_bg = crb.prepare_scapy_env()
+ p_str = self.gernerator_pkt_str()
+ pkts_str = self._recompose_pkts_str(pkts_str=p_str)
+ cmd = (
+ "sendp("
+ + pkts_str
+ + f',iface="{tx_port}",count={count},inter={interval},loop={loop},verbose=False)'
+ )
+ scapy_session_bg.send_command(cmd)
+ return scapy_session_bg
+
+ @staticmethod
+ def stop_send_pkt_bg(session):
+ # stop sending action
+ session.send_expect("^C", ">>> ")
+
+ def check_layer_config(self):
+ """
+ check the format of layer configuration
+ every layer should has different check function
+ """
+ for layer in self.pkt_layers:
+ found = False
+ l_type = layer.lower()
+
+ for types in list(LayersTypes.values()):
+ if l_type in types:
+ found = True
+ break
+
+ if found is False:
+ self.pkt_layers.remove(l_type)
+ print("INVAILD LAYER TYPE [%s]" % l_type.upper())
+
+ def assign_layers(self, layers=None):
+ """
+ assign layer for this packet
+ maybe need add check layer function
+ """
+ if layers is not None:
+ self.pkt_layers = layers
+
+ for layer in self.pkt_layers:
+ found = False
+ l_type = layer.lower()
+
+ for types in list(LayersTypes.values()):
+ if l_type in types:
+ found = True
+ break
+
+ if found is False:
+ self.pkt_layers.remove(l_type)
+ print("INVAILD LAYER TYPE [%s]" % l_type.upper())
+
+ self.pktgen.add_layers(self.pkt_layers)
+ if layers:
+ self.pktgen.update_pkts()
+
+ def _load_pkt_layers(self):
+ name2type = {
+ "MAC": "ether",
+ "VLAN": "vlan",
+ "IP": "ipv4",
+ "IPv4-TUNNEL": "inner_ipv4",
+ "IPihl": "ipv4ihl",
+ "IPFRAG": "ipv4_ext",
+ "IPv6": "ipv6",
+ "IPv6-TUNNEL": "inner_ipv6",
+ "IPv6FRAG": "ipv6_frag",
+ "IPv6EXT": "ipv6_ext",
+ "IPv6EXT2": "ipv6_ext2",
+ "TCP": "tcp",
+ "UDP": "udp",
+ "SCTP": "sctp",
+ "ICMP": "icmp",
+ "NVGRE": "nvgre",
+ "GRE": "gre",
+ "VXLAN": "vxlan",
+ "PKT": "raw",
+ "MPLS": "mpls",
+ "NSH": "nsh",
+ }
+
+ layers = self.pkt_type.split("_")
+ self.pkt_layers = []
+ self.pkt_cfgload = True
+ for layer in layers:
+ if layer in list(name2type.keys()):
+ self.pkt_layers.append(name2type[layer])
+
+ def config_def_layers(self):
+ """
+ Handel config packet layers by default
+ """
+ if self.pkt_type == "TIMESYNC":
+ self.config_layer("ether", {"dst": "FF:FF:FF:FF:FF:FF", "type": 0x88F7})
+ self.config_layer("raw", {"payload": ["00", "02"]})
+
+ if self.pkt_type == "ARP":
+ self.config_layer("ether", {"dst": "FF:FF:FF:FF:FF:FF"})
+
+ if self.pkt_type == "IPv6_SCTP":
+ self.config_layer("ipv6", {"nh": 132})
+
+ if "IPv6_NVGRE" in self.pkt_type:
+ self.config_layer("ipv6", {"nh": 47})
+ if "IPv6_SCTP" in self.pkt_type:
+ self.config_layer("inner_ipv6", {"nh": 132})
+ if "IPv6_ICMP" in self.pkt_type:
+ self.config_layer("inner_ipv6", {"nh": 58})
+ if "IPFRAG" in self.pkt_type:
+ self.config_layer("raw", {"payload": ["00"] * 40})
+ else:
+ self.config_layer("raw", {"payload": ["00"] * 18})
+
+ if (
+ "MAC_IP_IPv6" in self.pkt_type
+ or "MAC_IP_NVGRE" in self.pkt_type
+ or "MAC_IP_UDP_VXLAN" in self.pkt_type
+ ):
+ if "IPv6_SCTP" in self.pkt_type:
+ self.config_layer("ipv6", {"nh": 132})
+ if "IPv6_ICMP" in self.pkt_type:
+ self.config_layer("ipv6", {"nh": 58})
+ if "IPFRAG" in self.pkt_type:
+ self.config_layer("raw", {"payload": ["00"] * 40})
+ else:
+ self.config_layer("raw", {"payload": ["00"] * 18})
+ if "TCP" in self.pkt_type:
+ self.config_layer("tcp", {"flags": 0})
+
+ def config_layer(self, layer, config={}):
+ """
+ Configure packet assigned layer
+ return the status of configure result
+ """
+ try:
+ idx = self.pkt_layers.index(layer)
+ except Exception as e:
+ print("INVALID LAYER ID %s" % layer)
+ return False
+
+ if self.check_layer_config() is False:
+ return False
+
+ if "inner" in layer:
+ layer = layer[6:]
+ if isinstance(self.pktgen.pkt, str):
+ raise Exception("string type packet not support config layer")
+ pkt_layer = self.pktgen.pkt.getlayer(idx)
+ layer_conf = getattr(self.pktgen, layer)
+ setattr(self, "configured_layer_%s" % layer, True)
+
+ layer_conf(pkt_layer, **config)
+
+ def config_layers(self, layers=None):
+ """
+ Configure packet with multi configurations
+ """
+ layers = [] if layers is None else layers # None object is not Iterable
+ for layer in layers:
+ name, config = layer
+ if name not in self.pkt_layers:
+ print("[%s] is missing in packet!!!" % name)
+ raise Exception(f"{name} is missing in packet!!!")
+ if self.config_layer(name, config) is False:
+ print("[%s] failed to configure!!!" % name)
+ raise Exception(f"{name} failed to configure!!!")
+
+ def strip_layer_element(self, layer, element, p_index=0):
+ """
+ Strip packet layer elements
+ return the status of configure result
+ """
+ strip_element = getattr(self, "strip_element_%s" % layer)
+ return strip_element(element, p_index)
+
+ def strip_element_layer2(self, element, p_index=0):
+ return self.pktgen.strip_layer2(element, p_index)
+
+ def strip_element_layer3(self, element, p_index=0):
+ return self.pktgen.strip_layer3(element, p_index)
+
+ def strip_element_vlan(self, element, p_index=0):
+ return self.pktgen.strip_vlan(element, p_index)
+
+ def strip_element_layer4(self, element, p_index=0):
+ return self.pktgen.strip_layer4(element, p_index)
+
+
+def IncreaseIP(addr):
+ """
+ Returns the IP address from a given one, like
+ 192.168.1.1 ->192.168.1.2
+ If disable ip hw chksum, csum routine will increase ip
+ """
+ ip2int = lambda ipstr: struct.unpack("!I", socket.inet_aton(ipstr))[0]
+ x = ip2int(addr)
+ int2ip = lambda n: socket.inet_ntoa(struct.pack("!I", n))
+ return int2ip(x + 1)
+
+
+def IncreaseIPv6(addr):
+ """
+ Returns the IP address from a given one, like
+ FE80:0:0:0:0:0:0:0 -> FE80::1
+ csum routine will increase ip
+ """
+ ipv6addr = struct.unpack("!8H", socket.inet_pton(AF_INET6, addr))
+ addr = list(ipv6addr)
+ addr[7] += 1
+ ipv6 = socket.inet_ntop(
+ AF_INET6,
+ struct.pack(
+ "!8H",
+ addr[0],
+ addr[1],
+ addr[2],
+ addr[3],
+ addr[4],
+ addr[5],
+ addr[6],
+ addr[7],
+ ),
+ )
+ return ipv6
+
+
+def get_ether_type(eth_type=""):
+ # need add more types later
+ if eth_type.lower() == "lldp":
+ return "0x88cc"
+ elif eth_type.lower() == "ip":
+ return "0x0800"
+ elif eth_type.lower() == "ipv6":
+ return "0x86dd"
+
+ return "not support"
+
+
+def get_filter_cmd(filters=[]):
+ """
+ Return bpf formated filter string, only support ether layer now
+ """
+ filter_sep = " and "
+ filter_cmds = ""
+ for pktfilter in filters:
+ filter_cmd = ""
+ if pktfilter["layer"] == "ether":
+ if list(pktfilter["config"].keys())[0] == "dst":
+ dmac = pktfilter["config"]["dst"]
+ filter_cmd = "ether dst %s" % dmac
+ elif list(pktfilter["config"].keys())[0] == "src":
+ smac = pktfilter["config"]["src"]
+ filter_cmd = "ether src %s" % smac
+ elif list(pktfilter["config"].keys())[0] == "type":
+ eth_type = pktfilter["config"]["type"]
+ eth_format = r"(\w+) (\w+)"
+ m = re.match(eth_format, eth_type)
+ if m:
+ type_hex = get_ether_type(m.group(2))
+ if type_hex == "not support":
+ continue
+ if m.group(1) == "is":
+ filter_cmd = "ether[12:2] = %s" % type_hex
+ elif m.group(1) == "not":
+ filter_cmd = "ether[12:2] != %s" % type_hex
+ elif pktfilter["layer"] == "network":
+ if list(pktfilter["config"].keys())[0] == "srcport":
+ sport = pktfilter["config"]["srcport"]
+ filter_cmd = "src port %s" % sport
+ elif list(pktfilter["config"].keys())[0] == "dstport":
+ dport = pktfilter["config"]["dstport"]
+ filter_cmd = "dst port %s" % dport
+ elif pktfilter["layer"] == "userdefined":
+ if list(pktfilter["config"].keys())[0] == "pcap-filter":
+ filter_cmd = pktfilter["config"]["pcap-filter"]
+
+ if len(filter_cmds):
+ if len(filter_cmd):
+ filter_cmds += filter_sep
+ filter_cmds += filter_cmd
+ else:
+ filter_cmds = filter_cmd
+
+ if len(filter_cmds):
+ return " '" + filter_cmds + "' "
+ else:
+ return ""
+
+
+def start_tcpdump(crb, intf, count=0, filters=None, lldp_forbid=True):
+ """
+ sniff all packets from certain port
+ """
+ filters = [] if filters is None else filters
+ out = crb.send_expect("ls -d %s" % crb.tmp_file, "# ", verify=True)
+ if out == 2:
+ crb.send_expect("mkdir -p %s" % crb.tmp_file, "# ")
+ filename = "{}sniff_{}.pcap".format(crb.tmp_file, intf)
+ # delete old pcap file
+ crb.send_expect("rm -rf %s" % filename, "# ")
+
+ param = ""
+ direct_param = r"(\s+)\[ (\S+) in\|out\|inout \]"
+ tcpdump_session = crb.create_session("tcpdump_session" + str(time.time()))
+ setattr(tcpdump_session, "tmp_file", crb.tmp_file)
+ tcpdump_help = tcpdump_session.send_command("tcpdump -h")
+
+ for line in tcpdump_help.split("\n"):
+ m = re.match(direct_param, line)
+ if m:
+ opt = re.search("-Q", m.group(2))
+ if opt:
+ param = "-Q" + " in"
+ else:
+ opt = re.search("-P", m.group(2))
+ if opt:
+ param = "-P" + " in"
+
+ if len(param) == 0:
+ print("tcpdump not support direction choice!!!")
+
+ if lldp_forbid and (LLDP_FILTER not in filters):
+ filters.append(LLDP_FILTER)
+
+ filter_cmd = get_filter_cmd(filters)
+
+ sniff_cmd = "tcpdump -i %(INTF)s %(FILTER)s %(IN_PARAM)s -w %(FILE)s"
+ options = {
+ "INTF": intf,
+ "COUNT": count,
+ "IN_PARAM": param,
+ "FILE": filename,
+ "FILTER": filter_cmd,
+ }
+ if count:
+ sniff_cmd += " -c %(COUNT)d"
+ cmd = sniff_cmd % options
+ else:
+ cmd = sniff_cmd % options
+
+ tcpdump_session.send_command(cmd)
+
+ index = str(time.time())
+ SNIFF_PIDS[index] = (tcpdump_session, intf, filename)
+ time.sleep(1)
+ return index
+
+
+def stop_and_load_tcpdump_packets(index="", timeout=1):
+ """
+ Stop sniffer and return packet object
+ """
+ if index in list(SNIFF_PIDS.keys()):
+ pipe, intf, filename = SNIFF_PIDS.pop(index)
+ pipe.get_session_before(timeout)
+ pipe.send_command("^C")
+ pipe.copy_file_from(filename, TMP_PATH)
+ p = Packet()
+ p.read_pcapfile(TMP_PATH + filename.split(os.sep)[-1])
+ pipe.close()
+ return p
+
+
+def compare_pktload(pkt1=None, pkt2=None, layer="L2"):
+ l_idx = 0
+ if layer == "L2":
+ l_idx = 0
+ elif layer == "L3":
+ l_idx = 1
+ elif layer == "L4":
+ l_idx = 2
+ try:
+ load1 = hexstr(str(pkt1.getlayer(l_idx)))
+ load2 = hexstr(str(pkt2.getlayer(l_idx)))
+ except:
+ # return pass when scapy failed to extract packet
+ return True
+
+ if load1 == load2:
+ return True
+ else:
+ return False
+
+
+def strip_pktload(pkt=None, layer="L2", p_index=0):
+ if layer == "L2":
+ l_idx = 0
+ elif layer == "L3":
+ l_idx = 1
+ elif layer == "L4":
+ l_idx = 2
+ else:
+ l_idx = 0
+ try:
+ load = hexstr(str(pkt.pktgen.pkts[p_index].getlayer(l_idx)), onlyhex=1)
+ except:
+ # return pass when scapy failed to extract packet
+ load = ""
+
+ return load
+
+
+###############################################################################
+###############################################################################
+if __name__ == "__main__":
+ pkt = Packet("Ether(type=0x894f)/NSH(Len=0x6,NextProto=0x0,NSP=0x000002,NSI=0xff)")
+ sendp(pkt, iface="lo")
+ pkt.append_pkt(pkt_type="IPv6_TCP", pkt_len=100)
+ pkt.append_pkt(pkt_type="TCP", pkt_len=100)
+ pkt.config_layer("tcp", config={"flags": "A"})
+ pkt.append_pkt(
+ "Ether(dst='11:22:33:44:55:11')/IP(dst='192.168.5.2')/TCP(flags=0)/Raw(load='bbbb')"
+ )
+ pkt.generate_random_pkts(
+ "11:22:33:44:55:55",
+ random_type=["TCP", "IPv6_TCP"],
+ random_payload=True,
+ pktnum=10,
+ )
+ sendp(pkt, iface="lo")
+
+ pkt = Packet(pkt_type="UDP", pkt_len=1500, ran_payload=True)
+ sendp(pkt, iface="lo")
+ pkt = Packet(pkt_type="IPv6_SCTP")
+ sendp(pkt, iface="lo")
+ pkt = Packet(pkt_type="VLAN_UDP")
+ pkt.config_layer("vlan", {"vlan": 2})
+ sendp(pkt, iface="lo")
+
+ pkt.assign_layers(
+ [
+ "ether",
+ "vlan",
+ "ipv4",
+ "udp",
+ "vxlan",
+ "inner_mac",
+ "inner_ipv4",
+ "inner_udp",
+ "raw",
+ ]
+ )
+ pkt.config_layer("ether", {"dst": "00:11:22:33:44:55"})
+ pkt.config_layer("vlan", {"vlan": 2})
+ pkt.config_layer("ipv4", {"dst": "1.1.1.1"})
+ pkt.config_layer("udp", {"src": 4789, "dst": 4789, "chksum": 0x1111})
+ pkt.config_layer("vxlan", {"vni": 2})
+ pkt.config_layer("raw", {"payload": ["58"] * 18})
+ sendp(pkt, iface="lo")
+
+ pkt.assign_layers(
+ [
+ "ether",
+ "vlan",
+ "ipv4",
+ "udp",
+ "vxlan",
+ "inner_mac",
+ "inner_ipv4",
+ "inner_udp",
+ "raw",
+ ]
+ )
+ # config packet
+ pkt.config_layers(
+ [
+ ("ether", {"dst": "00:11:22:33:44:55"}),
+ ("ipv4", {"dst": "1.1.1.1"}),
+ ("vxlan", {"vni": 2}),
+ ("raw", {"payload": ["01"] * 18}),
+ ]
+ )
+
+ sendp(pkt, iface="lo")
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 11/15] dts: merge DTS framework/project_dpdk.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (9 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 10/15] dts: merge DTS framework/packet.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 12/15] dts: merge DTS framework/serializer.py " Juraj Linkeš
` (4 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/project_dpdk.py | 627 ++++++++++++++++++++++++++++++++++
1 file changed, 627 insertions(+)
create mode 100644 dts/framework/project_dpdk.py
diff --git a/dts/framework/project_dpdk.py b/dts/framework/project_dpdk.py
new file mode 100644
index 0000000000..4104e016a3
--- /dev/null
+++ b/dts/framework/project_dpdk.py
@@ -0,0 +1,627 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import re
+
+from .crb import Crb
+from .dut import Dut
+from .logger import getLogger
+from .settings import (
+ CONFIG_ROOT_PATH,
+ DPDK_RXMODE_SETTING,
+ DRIVERS,
+ HOST_DRIVER_MODE_SETTING,
+ HOST_DRIVER_SETTING,
+ HOST_SHARED_LIB_PATH,
+ HOST_SHARED_LIB_SETTING,
+ NICS,
+ accepted_nic,
+ load_global_setting,
+ save_global_setting,
+)
+from .ssh_connection import SSHConnection
+from .tester import Tester
+from .utils import RED
+
+
+class DPDKdut(Dut):
+
+ """
+ DPDK project class for DUT. DTS will call set_target function to setup
+ build, memory and kernel module.
+ """
+
+ def __init__(self, crb, serializer, dut_id=0, name=None, alt_session=True):
+ super(DPDKdut, self).__init__(crb, serializer, dut_id, name, alt_session)
+ self.testpmd = None
+
+ def set_target(self, target, bind_dev=True):
+ """
+ Set env variable, these have to be setup all the time. Some tests
+ need to compile example apps by themselves and will fail otherwise.
+ Set hugepage on DUT and install modules required by DPDK.
+ Configure default ixgbe PMD function.
+ """
+ self.target = target
+
+ self.set_toolchain(target)
+
+ # set env variable
+ self.set_env_variable()
+
+ self.set_rxtx_mode()
+
+ self.apps_name = self.apps_name_conf["meson"]
+ # use the dut target directory instead of 'target' string in app name
+ for app in self.apps_name:
+ cur_app_path = self.apps_name[app].replace("target", self.target)
+ self.apps_name[app] = cur_app_path + " "
+
+ if not self.skip_setup:
+ self.build_install_dpdk(target)
+
+ self.setup_memory()
+
+ drivername = load_global_setting(HOST_DRIVER_SETTING)
+ drivermode = load_global_setting(HOST_DRIVER_MODE_SETTING)
+ self.setup_modules(target, drivername, drivermode)
+
+ if bind_dev and self.get_os_type() == "linux":
+ self.bind_interfaces_linux(drivername)
+ self.extra_nic_setup()
+
+ def set_env_variable(self):
+ # These have to be setup all the time. Some tests need to compile
+ # example apps by themselves and will fail otherwise.
+ self.send_expect("export RTE_TARGET=" + self.target, "#")
+ self.send_expect("export RTE_SDK=`pwd`", "#")
+
+ def setup_modules(self, target, drivername, drivermode):
+ """
+ Install DPDK required kernel module on DUT.
+ """
+ setup_modules = getattr(self, "setup_modules_%s" % self.get_os_type())
+ setup_modules(target, drivername, drivermode)
+
+ def setup_modules_linux(self, target, drivername, drivermode):
+ if drivername == "vfio-pci":
+ self.send_expect("rmmod vfio_pci", "#")
+ self.send_expect("rmmod vfio_iommu_type1", "#")
+ self.send_expect("rmmod vfio", "#")
+ self.send_expect("modprobe vfio", "#")
+ self.send_expect("modprobe vfio-pci", "#")
+ if drivermode == "noiommu":
+ self.send_expect(
+ "echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode",
+ "#",
+ )
+ out = self.send_expect("ls /sys/module|grep vfio_pci", "#")
+ assert "vfio_pci" in out, "load vfio_pci failed"
+
+ elif drivername == "uio_pci_generic":
+ self.send_expect("modprobe uio", "#", 70)
+ self.send_expect("modprobe uio_pci_generic", "#", 70)
+ out = self.send_expect("lsmod | grep uio_pci_generic", "#")
+ assert "uio_pci_generic" in out, "Failed to setup uio_pci_generic"
+
+ elif drivername == "mlx5_core":
+ pass
+
+ elif drivername == "igb_uio":
+ self.send_expect("modprobe uio", "#", 70)
+ out = self.send_expect("lsmod | grep igb_uio", "#")
+ if "igb_uio" in out:
+ self.send_expect("rmmod -f igb_uio", "#", 70)
+ self.send_expect("insmod ./" + target + "/kmod/igb_uio.ko", "#", 60)
+
+ out = self.send_expect("lsmod | grep igb_uio", "#")
+ assert "igb_uio" in out, "Failed to insmod igb_uio"
+
+ else:
+ pass
+
+ def setup_modules_freebsd(self, target, drivername, drivermode):
+ """
+ Install DPDK required Freebsd kernel module on DUT.
+ """
+ binding_list = ""
+
+ for (pci_bus, pci_id) in self.pci_devices_info:
+ if accepted_nic(pci_id):
+ binding_list += "%s," % (pci_bus)
+
+ self.send_expect("kldunload if_ixgbe.ko", "#")
+ self.send_expect('kenv hw.nic_uio.bdfs="%s"' % binding_list[:-1], "# ")
+ self.send_expect("kldload ./%s/kmod/nic_uio.ko" % target, "#", 20)
+ out = self.send_expect("kldstat", "#")
+ assert "nic_uio" in out, "Failed to insmod nic_uio"
+
+ def restore_modules(self):
+ """
+ Restore DPDK kernel module on DUT.
+ """
+ restore_modules = getattr(self, "restore_modules_%s" % self.get_os_type())
+ restore_modules()
+
+ def restore_modules_linux(self):
+ """
+ Restore DPDK Linux kernel module on DUT.
+ """
+ drivername = load_global_setting(HOST_DRIVER_SETTING)
+ if drivername == "vfio-pci":
+ drivermode = load_global_setting(HOST_DRIVER_MODE_SETTING)
+ if drivermode == "noiommu":
+ self.send_expect(
+ "echo 0 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode",
+ "#",
+ 70,
+ )
+
+ def restore_modules_freebsd(self):
+ """
+ Restore DPDK Freebsd kernel module on DUT.
+ """
+ pass
+
+ def set_rxtx_mode(self):
+ """
+ Set default RX/TX PMD function,
+ the rx mode scalar/full/novector are supported dynamically since DPDK 20.11,
+ Rx mode avx512 is only supported in DPDK 20.11 and later version.
+ """
+
+ mode = load_global_setting(DPDK_RXMODE_SETTING)
+ if mode == "avx512":
+ out = self.send_expect("lscpu | grep avx512", "#")
+ if "avx512f" not in out or "no-avx512f" in out:
+ self.logger.warning(
+ RED("*********The DUT CPU do not support AVX512 test!!!********")
+ )
+ self.logger.warning(
+ RED("*********Now set the rx_mode to default!!!**********")
+ )
+ save_global_setting(DPDK_RXMODE_SETTING, "default")
+
+ def set_package(self, pkg_name="", patch_list=[]):
+ self.package = pkg_name
+ self.patches = patch_list
+
+ def set_build_options(self, config_parms, config_file=""):
+ self.set_build_options_meson(config_parms, config_file)
+
+ def set_build_options_meson(self, config_parms, config_file=""):
+ """
+ Set dpdk build options of meson
+ """
+ if len(config_parms) == 0:
+ return
+ if config_file == "":
+ config_file = "config/rte_config.h"
+
+ for key in config_parms.keys():
+ value = config_parms[key]
+ if value == "n":
+ def_str = "#undef" + " " + key
+ else:
+ if isinstance(value, int):
+ def_str = "#define %s %d" % (key, value)
+ elif value == "" or value == "y":
+ def_str = "#define %s %d" % (key, 1)
+ else:
+ value = '\\"%s\\"' % value
+ def_str = "#define %s %s" % (key, value)
+
+ # delete the marco define in the config file
+ self.send_expect("sed -i '/%s/d' %s" % (key, config_file), "# ")
+ self.send_expect("sed -i '$a\%s' %s" % (def_str, config_file), "# ")
+
+ def build_install_dpdk(self, target, extra_options=""):
+ """
+ Build DPDK source code with specified target.
+ """
+ use_shared_lib = load_global_setting(HOST_SHARED_LIB_SETTING)
+ if use_shared_lib == "true" and "Virt" not in str(self):
+ extra_options += " -Dc_args=-DRTE_BUILD_SHARED_LIB"
+ if self.get_os_type() == "linux":
+ self.build_install_dpdk_linux_meson(target, extra_options)
+ elif self.get_os_type() == "freebsd":
+ self.build_install_dpdk_freebsd_meson(target, extra_options)
+
+ def build_install_dpdk_linux_meson(self, target, extra_options):
+ """
+ Build DPDK source code on linux use meson
+ """
+ build_time = 1800
+ target_info = target.split("-")
+ arch = target_info[0]
+ machine = target_info[1]
+ execenv = target_info[2]
+ toolchain = target_info[3]
+
+ default_library = "static"
+ use_shared_lib = load_global_setting(HOST_SHARED_LIB_SETTING)
+ if use_shared_lib == "true" and "Virt" not in str(self):
+ default_library = "shared"
+ if arch == "i686":
+ # find the pkg-config path and set the PKG_CONFIG_LIBDIR environmental variable to point it
+ out = self.send_expect("find /usr -type d -name pkgconfig", "# ")
+ pkg_path = ""
+ default_cflags = self.send_expect("echo $CFLAGS", "# ")
+ default_pkg_config = self.send_expect("echo $PKG_CONFIG_LIBDIR", "# ")
+ res_path = out.split("\r\n")
+ for cur_path in res_path:
+ if "i386" in cur_path:
+ pkg_path = cur_path
+ break
+ assert (
+ pkg_path != ""
+ ), "please make sure you env have the i386 pkg-config path"
+
+ self.send_expect("export CFLAGS=-m32", "# ")
+ self.send_expect("export PKG_CONFIG_LIBDIR=%s" % pkg_path, "# ")
+
+ self.send_expect("rm -rf " + target, "#")
+ out = self.send_expect(
+ "CC=%s meson -Denable_kmods=True -Dlibdir=lib %s --default-library=%s %s"
+ % (toolchain, extra_options, default_library, target),
+ "[~|~\]]# ",
+ build_time,
+ )
+ assert "FAILED" not in out, "meson setup failed ..."
+
+ out = self.send_expect("ninja -C %s" % target, "[~|~\]]# ", build_time)
+ assert "FAILED" not in out, "ninja complie failed ..."
+
+ # copy kmod file to the folder same as make
+ out = self.send_expect(
+ "find ./%s/kernel/ -name *.ko" % target, "# ", verify=True
+ )
+ self.send_expect("mkdir -p %s/kmod" % target, "# ")
+ if not isinstance(out, int) and len(out) > 0:
+ kmod = out.split("\r\n")
+ for mod in kmod:
+ self.send_expect("cp %s %s/kmod/" % (mod, target), "# ")
+
+ def build_install_dpdk_freebsd_meson(self, target, extra_options):
+ # meson build same as linux
+ self.build_install_dpdk_linux_meson(target, extra_options)
+
+ # the uio name different with linux, find the nic_uio
+ out = self.send_expect(
+ "find ./%s/kernel/ -name nic_uio" % target, "# ", verify=True
+ )
+ self.send_expect("mkdir -p %s/kmod" % target, "# ")
+ if not isinstance(out, int) and len(out) > 0:
+ self.send_expect("cp %s %s/kmod/" % (out, target), "# ")
+
+ def prepare_package(self):
+ if not self.skip_setup:
+ session_info = None
+ # if snapshot_load_side=dut, will copy the dpdk tar from dut side
+ # and will judge whether the path of tar is existed on dut
+ if self.crb["snapshot_load_side"] == "dut":
+ if not os.path.isabs(self.package):
+ raise ValueError(
+ "As snapshot_load_side=dut, will copy dpdk.tar "
+ "from dut, please specify a abs path use params "
+ "--snapshot when run dts"
+ )
+ # if ':' in session, this is vm dut, use the dut session
+ if ":" in self.session.name:
+ session_info = self.host_session
+ else:
+ session_info = self.alt_session
+ out = session_info.send_expect("ls -F %s" % self.package, "# ")
+ assert out == self.package, "Invalid package"
+ else:
+ assert os.path.isfile(self.package) is True, "Invalid package"
+
+ p_dir, _ = os.path.split(self.base_dir)
+ # ToDo: make this configurable
+ dst_dir = "/tmp/"
+
+ out = self.send_expect("ls -d %s" % p_dir, "# ", verify=True)
+ if out == 2:
+ self.send_expect("mkdir -p %s" % p_dir, "# ")
+
+ out = self.send_expect(
+ "ls %s && cd %s" % (dst_dir, p_dir), "#", verify=True
+ )
+ if out == -1:
+ raise ValueError(
+ "Directory %s or %s does not exist,"
+ "please check params -d" % (p_dir, dst_dir)
+ )
+ self.session.copy_file_to(self.package, dst_dir, crb_session=session_info)
+
+ # put patches to p_dir/patches/
+ if self.patches is not None:
+ for p in self.patches:
+ self.session.copy_file_to("dep/" + p, dst_dir)
+
+ # copy QMP file to dut
+ if ":" not in self.session.name:
+ out = self.send_expect("ls -d ~/QMP", "# ", verify=True)
+ if isinstance(out, int):
+ self.send_expect("mkdir -p ~/QMP", "# ")
+ self.session.copy_file_to("dep/QMP/qemu-ga-client", "~/QMP/")
+ self.session.copy_file_to("dep/QMP/qmp.py", "~/QMP/")
+ self.kill_all()
+
+ # enable core dump
+ self.send_expect("ulimit -c unlimited", "#")
+
+ # unpack the code and change to the working folder
+ self.send_expect("rm -rf %s" % self.base_dir, "#")
+
+ # unpack dpdk
+ out = self.send_expect(
+ "tar zxfm %s%s -C %s" % (dst_dir, self.package.split("/")[-1], p_dir),
+ "# ",
+ 60,
+ verify=True,
+ )
+ if out == -1:
+ raise ValueError(
+ "Extract dpdk package to %s failure,"
+ "please check params -d" % (p_dir)
+ )
+
+ # check dpdk dir name is expect
+ out = self.send_expect("ls %s" % self.base_dir, "# ", 20, verify=True)
+ if out == -1:
+ raise ValueError(
+ "dpdk dir %s mismatch, please check params -d" % self.base_dir
+ )
+
+ if self.patches is not None:
+ for p in self.patches:
+ out = self.send_expect(
+ "patch -d %s -p1 < %s" % (self.base_dir, dst_dir + p), "# "
+ )
+ assert "****" not in out
+
+ def prerequisites(self):
+ """
+ Copy DPDK package to DUT and apply patch files.
+ """
+ self.prepare_package()
+ self.dut_prerequisites()
+ self.stage = "post-init"
+
+ def extra_nic_setup(self):
+ """
+ Some nic like RRC required additional setup after module installed
+ """
+ for port_info in self.ports_info:
+ netdev = port_info["port"]
+ netdev.setup()
+
+ def bind_interfaces_linux(self, driver="igb_uio", nics_to_bind=None):
+ """
+ Bind the interfaces to the selected driver. nics_to_bind can be None
+ to bind all interfaces or an array with the port indexes
+ """
+ binding_list = "--bind=%s " % driver
+
+ current_nic = 0
+ for port_info in self.ports_info:
+ if nics_to_bind is None or current_nic in nics_to_bind:
+ binding_list += "%s " % (port_info["pci"])
+ current_nic += 1
+
+ bind_script_path = self.get_dpdk_bind_script()
+ return self.send_expect(
+ "%s --force %s" % (bind_script_path, binding_list), "# "
+ )
+
+ def unbind_interfaces_linux(self, nics_to_bind=None):
+ """
+ Unbind the interfaces
+ """
+
+ binding_list = "-u "
+
+ current_nic = 0
+ for port_info in self.ports_info:
+ if nics_to_bind is None or current_nic in nics_to_bind:
+ binding_list += "%s " % (port_info["pci"])
+ current_nic += 1
+
+ bind_script_path = self.get_dpdk_bind_script()
+ self.send_expect("%s --force %s" % (bind_script_path, binding_list), "# ")
+
+ def build_dpdk_apps(self, folder, extra_options=""):
+ """
+ Build dpdk sample applications.
+ """
+ if self.get_os_type() == "linux":
+ return self.build_dpdk_apps_linux_meson(folder, extra_options)
+ elif self.get_os_type() == "freebsd":
+ return self.build_dpdk_apps_freebsd_meson(folder, extra_options)
+
+ def build_dpdk_apps_linux_meson(self, folder, extra_options):
+ """
+ Build dpdk sample applications on linux use meson
+ """
+ # icc compile need more time
+ if "icc" in self.target:
+ timeout = 300
+ else:
+ timeout = 90
+
+ target_info = self.target.split("-")
+ arch = target_info[0]
+ if arch == "i686":
+ # find the pkg-config path and set the PKG_CONFIG_LIBDIR environmental variable to point it
+ out = self.send_expect("find /usr -type d -name pkgconfig", "# ")
+ pkg_path = ""
+ default_cflags = self.send_expect("echo $CFLAGS", "# ")
+ default_pkg_config = self.send_expect("echo $PKG_CONFIG_LIBDIR", "# ")
+ res_path = out.split("\r\n")
+ for cur_path in res_path:
+ if "i386" in cur_path:
+ pkg_path = cur_path
+ break
+ assert (
+ pkg_path != ""
+ ), "please make sure you env have the i386 pkg-config path"
+
+ self.send_expect("export CFLAGS=-m32", "# ", alt_session=True)
+ self.send_expect(
+ "export PKG_CONFIG_LIBDIR=%s" % pkg_path, "# ", alt_session=True
+ )
+
+ folder_info = folder.split("/")
+ name = folder_info[-1]
+ if name != "examples" and name not in self.apps_name:
+ raise Exception(
+ f'Please config {name} file path on {os.path.join(CONFIG_ROOT_PATH, "app_name.cfg")}'
+ )
+
+ if name == "examples":
+ example = "all"
+ else:
+ example = "/".join(folder_info[folder_info.index("examples") + 1 :])
+ out = self.send_expect(
+ "meson configure -Dexamples=%s %s" % (example, self.target), "# "
+ )
+ assert "FAILED" not in out, "Compilation error..."
+ out = self.send_expect("ninja -C %s" % self.target, "[~|~\]]# ", timeout)
+ assert "FAILED" not in out, "Compilation error..."
+
+ # verify the app build in the config path
+ if example != "all":
+ out = self.send_expect("ls %s" % self.apps_name[name], "# ", verify=True)
+ assert isinstance(out, str), (
+ "please confirm %s app path and name in app_name.cfg" % name
+ )
+
+ return out
+
+ def build_dpdk_apps_freebsd_meson(self, folder, extra_options):
+ # meson build same as linux
+ return self.build_dpdk_apps_linux_meson(folder, extra_options)
+
+ def get_blocklist_string(self, target, nic):
+ """
+ Get block list command string.
+ """
+ get_blocklist_string = getattr(
+ self, "get_blocklist_string_%s" % self.get_os_type()
+ )
+ return get_blocklist_string(target, nic)
+
+ def get_blocklist_string_linux(self, target, nic):
+ """
+ Get block list command string on Linux.
+ """
+ blocklist = ""
+ dutPorts = self.get_ports(nic)
+ self.restore_interfaces()
+ self.send_expect("insmod ./%s/kmod/igb_uio.ko" % target, "# ")
+ self.bind_interfaces_linux()
+ for port in range(0, len(self.ports_info)):
+ if port not in dutPorts:
+ blocklist += "-b %s " % self.ports_info[port]["pci"]
+ return blocklist
+
+ def get_blocklist_string_freebsd(self, target, nic):
+ """
+ Get block list command string on Freebsd.
+ """
+ blocklist = ""
+ # No blocklist option in FreeBSD
+ return blocklist
+
+
+class DPDKtester(Tester):
+
+ """
+ DPDK project class for tester. DTS will call prerequisites function to setup
+ interface and generate port map.
+ """
+
+ def __init__(self, crb, serializer, dut_id):
+ self.NAME = "tester"
+ super(DPDKtester, self).__init__(crb, serializer)
+
+ def prerequisites(self, perf_test=False):
+ """
+ Setup hugepage on tester and copy validation required files to tester.
+ """
+ self.kill_all()
+
+ if not self.skip_setup:
+ total_huge_pages = self.get_total_huge_pages()
+ hugepages_size = self.send_expect(
+ "awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# "
+ )
+ if total_huge_pages == 0:
+ self.mount_huge_pages()
+ if hugepages_size == "524288":
+ self.set_huge_pages(8)
+ else:
+ self.set_huge_pages(1024)
+
+ self.session.copy_file_to("dep/tgen.tgz")
+ self.session.copy_file_to("dep/tclclient.tgz")
+ # unpack tgen
+ out = self.send_expect("tar zxfm tgen.tgz", "# ")
+ assert "Error" not in out
+ # unpack tclclient
+ out = self.send_expect("tar zxfm tclclient.tgz", "# ")
+ assert "Error" not in out
+
+ self.send_expect("modprobe uio", "# ")
+
+ self.tester_prerequisites()
+
+ self.set_promisc()
+
+ self.stage = "post-init"
+
+ def setup_memory(self, hugepages=-1):
+ """
+ Setup hugepage on tester.
+ """
+ hugepages_size = self.send_expect(
+ "awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# "
+ )
+
+ if int(hugepages_size) < (2048 * 2048):
+ arch_huge_pages = hugepages if hugepages > 0 else 2048
+ total_huge_pages = self.get_total_huge_pages()
+
+ self.mount_huge_pages()
+ if total_huge_pages != arch_huge_pages:
+ self.set_huge_pages(arch_huge_pages)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 12/15] dts: merge DTS framework/serializer.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (10 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 11/15] dts: merge DTS framework/project_dpdk.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 13/15] dts: merge DTS framework/utils.py " Juraj Linkeš
` (3 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/serializer.py | 115 ++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 dts/framework/serializer.py
diff --git a/dts/framework/serializer.py b/dts/framework/serializer.py
new file mode 100644
index 0000000000..0ffa16a592
--- /dev/null
+++ b/dts/framework/serializer.py
@@ -0,0 +1,115 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""
+Wrapper class for serializer module
+"""
+import os
+import pickle
+
+
+class Singleton(type):
+ _instances = {}
+
+ def __call__(self, *args, **kwargs):
+ if self not in self._instances:
+ self._instances[self] = super(Singleton, self).__call__(*args, **kwargs)
+ return self._instances[self]
+
+
+class Serializer(object):
+
+ """
+ Two-levels cache implementation for storing/retrieving any kind of object
+ using using a key-value model. It uses the pickle module to store objects
+ into a file.
+ This class implements the Singleton pattern. Everytime its constructor
+ is called it will return a reference to the same instance.
+ """
+
+ def __init__(self):
+ self.volatile_cache = {}
+ self.filename = "serializer.cache"
+
+ def save(self, object_name, object_to_save):
+ """
+ Saves an object into the volatile dictionary cache - which
+ resides in memory.
+ """
+ self.volatile_cache[object_name] = object_to_save
+
+ def load(self, object_name):
+ """
+ Loads and returns an object from the volatile cache.
+ """
+ return self.volatile_cache.get(object_name, None)
+
+ def set_serialized_filename(self, filename):
+ """
+ Sets the name of the non-volatile cache file to be used in the future
+ """
+ self.filename = filename
+
+ def save_to_file(self):
+ """
+ Saves the volatile cache to a file (non-volatile) using the pickle
+ module. Returns True in case everything went OK, False otherwise.
+ """
+ try:
+ serialized_file = open(self.filename, "w")
+ pickle.dump(self.volatile_cache, serialized_file)
+ serialized_file.close()
+ return True
+ except:
+ return False
+
+ def load_from_file(self):
+ """
+ Reads from a pickle-like file using pickle module and populates the
+ volatile cache. Returns True in case everything went OK, False
+ otherwise.
+ """
+ try:
+ serialized_file = open(self.filename, "r")
+ self.volatile_cache = pickle.load(serialized_file)
+ serialized_file.close()
+ return True
+ except:
+ self.volatile_cache.clear()
+ return False
+
+ def discard_cache(self):
+ """
+ Discards both volatile and non-volatile cache.
+ """
+ self.volatile_cache.clear()
+ if os.path.exists(self.filename):
+ os.remove(self.filename)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 13/15] dts: merge DTS framework/utils.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (11 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 12/15] dts: merge DTS framework/serializer.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 14/15] dts: merge DTS main.py " Juraj Linkeš
` (2 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/framework/utils.py | 353 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 353 insertions(+)
create mode 100644 dts/framework/utils.py
diff --git a/dts/framework/utils.py b/dts/framework/utils.py
new file mode 100644
index 0000000000..8b22d24b0c
--- /dev/null
+++ b/dts/framework/utils.py
@@ -0,0 +1,353 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import inspect
+import json # json format
+import os
+import re
+import socket
+import struct
+import sys
+import threading
+import types
+from functools import wraps
+
+DTS_ENV_PAT = r"DTS_*"
+
+
+def create_parallel_locks(num_duts):
+ """
+ Create thread lock dictionary based on DUTs number
+ """
+ global locks_info
+ locks_info = []
+ for _ in range(num_duts):
+ lock_info = dict()
+ lock_info["update_lock"] = threading.RLock()
+ locks_info.append(lock_info)
+
+
+def parallel_lock(num=1):
+ """
+ Wrapper function for protect parallel threads, allow multiple threads
+ share one lock. Locks are created based on function name. Thread locks are
+ separated between duts according to argument 'dut_id'.
+ Parameter:
+ num: Number of parallel threads for the lock
+ """
+ global locks_info
+
+ def decorate(func):
+ @wraps(func)
+ def wrapper(*args, **kwargs):
+ if "dut_id" in kwargs:
+ dut_id = kwargs["dut_id"]
+ else:
+ dut_id = 0
+
+ # in case function arguments is not correct
+ if dut_id >= len(locks_info):
+ dut_id = 0
+
+ lock_info = locks_info[dut_id]
+ uplock = lock_info["update_lock"]
+
+ name = func.__name__
+ uplock.acquire()
+
+ if name not in lock_info:
+ lock_info[name] = dict()
+ lock_info[name]["lock"] = threading.RLock()
+ lock_info[name]["current_thread"] = 1
+ else:
+ lock_info[name]["current_thread"] += 1
+
+ lock = lock_info[name]["lock"]
+
+ # make sure when owned global lock, should also own update lock
+ if lock_info[name]["current_thread"] >= num:
+ if lock._is_owned():
+ print(
+ RED(
+ "DUT%d %s waiting for func lock %s"
+ % (dut_id, threading.current_thread().name, func.__name__)
+ )
+ )
+ lock.acquire()
+ else:
+ uplock.release()
+
+ try:
+ ret = func(*args, **kwargs)
+ except Exception as e:
+ if not uplock._is_owned():
+ uplock.acquire()
+
+ if lock._is_owned():
+ lock.release()
+ lock_info[name]["current_thread"] = 0
+ uplock.release()
+ raise e
+
+ if not uplock._is_owned():
+ uplock.acquire()
+
+ if lock._is_owned():
+ lock.release()
+ lock_info[name]["current_thread"] = 0
+
+ uplock.release()
+
+ return ret
+
+ return wrapper
+
+ return decorate
+
+
+def RED(text):
+ return "\x1B[" + "31;1m" + str(text) + "\x1B[" + "0m"
+
+
+def BLUE(text):
+ return "\x1B[" + "36;1m" + str(text) + "\x1B[" + "0m"
+
+
+def GREEN(text):
+ return "\x1B[" + "32;1m" + str(text) + "\x1B[" + "0m"
+
+
+def pprint(some_dict, serialzer=None):
+ """
+ Print JSON format dictionary object.
+ """
+ return json.dumps(some_dict, sort_keys=True, indent=4, default=serialzer)
+
+
+def regexp(s, to_match, allString=False):
+ """
+ Ensure that the re `to_match' only has one group in it.
+ """
+
+ scanner = re.compile(to_match, re.DOTALL)
+ if allString:
+ return scanner.findall(s)
+ m = scanner.search(s)
+ if m is None:
+ print(RED("Failed to match " + to_match + " in the string " + s))
+ return None
+ return m.group(1)
+
+
+def get_obj_funcs(obj, func_name_regex):
+ """
+ Return function list which name matched regex.
+ """
+ for func_name in dir(obj):
+ func = getattr(obj, func_name)
+ if callable(func) and re.match(func_name_regex, func.__name__):
+ yield func
+
+
+@parallel_lock()
+def remove_old_rsa_key(crb, ip):
+ """
+ Remove the old RSA key of specified IP on crb.
+ """
+ rsa_key_path = "~/.ssh/known_hosts"
+ remove_rsa_key_cmd = "sed -i '/%s/d' %s" % (ip, rsa_key_path)
+ crb.send_expect(remove_rsa_key_cmd, "# ")
+
+
+def human_read_number(num):
+ if num > 1000000:
+ num /= 1000000
+ return str(num) + "M"
+ elif num > 1000:
+ num /= 1000
+ return str(num) + "K"
+ else:
+ return str(num)
+
+
+def get_subclasses(module, clazz):
+ """
+ Get module attribute name and attribute.
+ """
+ for subclazz_name, subclazz in inspect.getmembers(module):
+ if (
+ hasattr(subclazz, "__bases__")
+ and subclazz.__bases__
+ and clazz in subclazz.__bases__
+ ):
+ yield (subclazz_name, subclazz)
+
+
+def copy_instance_attr(from_inst, to_inst):
+ for key in list(from_inst.__dict__.keys()):
+ to_inst.__dict__[key] = from_inst.__dict__[key]
+
+
+def create_mask(indexes):
+ """
+ Convert index to hex mask.
+ """
+ val = 0
+ for index in indexes:
+ val |= 1 << int(index)
+
+ return hex(val).rstrip("L")
+
+
+def convert_int2ip(value, ip_type=4):
+ """
+ @change:
+ 2019.0403 set default value
+ """
+ if ip_type == 4:
+ ip_str = socket.inet_ntop(socket.AF_INET, struct.pack("!I", value))
+ else:
+ h = value >> 64
+ l = value & ((1 << 64) - 1)
+ ip_str = socket.inet_ntop(socket.AF_INET6, struct.pack("!QQ", h, l))
+
+ return ip_str
+
+
+def convert_ip2int(ip_str, ip_type=4):
+ """
+ @change:
+ 2019.0403 set default value
+ """
+ if ip_type == 4:
+ ip_val = struct.unpack("!I", socket.inet_aton(ip_str))[0]
+ else:
+ _hex = socket.inet_pton(socket.AF_INET6, ip_str)
+ h, l = struct.unpack("!QQ", _hex)
+ ip_val = (h << 64) | l
+
+ return ip_val
+
+
+def convert_mac2long(mac_str):
+ """
+ convert the MAC type from the string into the int.
+ """
+ mac_hex = "0x"
+ for mac_part in mac_str.lower().split(":"):
+ mac_hex += mac_part
+ ret = int(mac_hex, 16)
+ return ret
+
+
+def convert_mac2str(mac_long):
+ """
+ convert the MAC type from the int into the string.
+ """
+ mac = hex(mac_long)[2:].zfill(12)
+ b = []
+ [b.append(mac[n : n + 2]) for n in range(len(mac)) if n % 2 == 0]
+ new_mac = ":".join(b)
+ return new_mac
+
+
+def get_backtrace_object(file_name, obj_name):
+ import inspect
+
+ frame = inspect.currentframe()
+ obj = None
+ found = False
+ while frame:
+ file_path = inspect.getsourcefile(frame)
+ call_file = file_path.split(os.sep)[-1]
+ if file_name == call_file:
+ found = True
+ break
+
+ frame = frame.f_back
+
+ if found:
+ obj = getattr(frame.f_locals["self"], obj_name, None)
+
+ return obj
+
+
+def check_crb_python_version(crb):
+ cmd = "python3 -V"
+ out = crb.send_expect(cmd, "#", 5)
+ pat = "Python (\d+).(\d+).(\d+)"
+ result = re.findall(pat, out)
+ if (
+ not result
+ or int(result[0][0]) < 3
+ or (int(result[0][0]) == 3 and int(result[0][1]) < 6)
+ or (int(result[0][0]) == 3 and int(result[0][1]) == 6 and int(result[0][2]) < 9)
+ ):
+ crb.logger.warning(
+ (
+ "WARNING: Tester node python version is lower than python 3.6, "
+ "it is deprecated for use in DTS, "
+ "and will not work in future releases."
+ )
+ )
+ crb.logger.warning("Please use Python >= 3.6.9 instead")
+
+
+def check_dts_python_version():
+ if (
+ sys.version_info.major < 3
+ or (sys.version_info.major == 3 and sys.version_info.minor < 6)
+ or (
+ sys.version_info.major == 3
+ and sys.version_info.minor == 6
+ and sys.version_info.micro < 9
+ )
+ ):
+ print(
+ RED(
+ (
+ "WARNING: Dts running node python version is lower than python 3.6, "
+ "it is deprecated for use in DTS, "
+ "and will not work in future releases."
+ )
+ ),
+ file=sys.stderr,
+ )
+ print(RED("Please use Python >= 3.6.9 instead"), file=sys.stderr)
+
+
+def get_module_path(module_name):
+ from importlib import import_module
+
+ _module = import_module(module_name)
+ _module_file_path = _module.__file__
+ del _module
+ return os.path.dirname(_module_file_path)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 14/15] dts: merge DTS main.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (12 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 13/15] dts: merge DTS framework/utils.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-06 14:56 ` [RFC PATCH v1 15/15] dts: merge DTS version.py " Juraj Linkeš
2022-04-07 5:04 ` [RFC PATCH v1 00/15] merge DTS core files " Jerin Jacob
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/main.py | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 236 insertions(+)
create mode 100755 dts/main.py
diff --git a/dts/main.py b/dts/main.py
new file mode 100755
index 0000000000..f4f5e03a88
--- /dev/null
+++ b/dts/main.py
@@ -0,0 +1,236 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""
+A test framework for testing DPDK.
+"""
+
+import argparse
+import os
+import subprocess
+import sys
+
+from framework import dts
+
+# change operation directory
+cwd = os.getcwd()
+
+
+def git_build_package(gitLabel, pkgName):
+ """
+ generate package from git, if dpdk existed will pull latest code
+ """
+ gitURL = r"http://dpdk.org/git/dpdk"
+ gitPrefix = r"dpdk/"
+ depot = r"dep"
+ if os.path.exists("%s/%s" % (depot, gitPrefix)) is True:
+ os.chdir("%s/%s" % (depot, gitPrefix))
+ ret = os.system("git pull --force")
+ os.chdir(cwd)
+ else:
+ print("git clone %s %s/%s" % (gitURL, depot, gitPrefix))
+ ret = os.system("git clone %s %s/%s" % (gitURL, depot, gitPrefix))
+ if ret != 0:
+ raise EnvironmentError
+
+ print(
+ "git archive --format=tar.gz --prefix=%s %s -o %s"
+ % (gitPrefix, gitLabel, pkgName)
+ )
+ os.chdir("%s/%s/%s" % (cwd, depot, gitPrefix))
+ try:
+ ret = subprocess.run(
+ [
+ "git",
+ "archive",
+ "--format=tar.gz",
+ "--prefix=%s/" % gitPrefix,
+ "%s" % gitLabel,
+ "-o",
+ "../%s" % pkgName,
+ ],
+ shell=False,
+ )
+ except Exception as e:
+ print("git archive failed of : %s" % str(e))
+ sys.exit()
+
+ os.chdir(cwd)
+ if ret.returncode != 0:
+ print(ret)
+ raise EnvironmentError
+
+
+# Read cmd-line args
+parser = argparse.ArgumentParser(description="DPDK test framework.")
+
+parser.add_argument(
+ "--config-file",
+ default="execution.cfg",
+ help="configuration file that describes the test " + "cases, DUTs and targets",
+)
+
+parser.add_argument("--git", help="git label to use as input")
+
+parser.add_argument(
+ "--patch", action="append", help="apply a patch to the package under test"
+)
+
+parser.add_argument(
+ "--snapshot", default="dep/dpdk.tar.gz", help="snapshot .tgz file to use as input"
+)
+
+parser.add_argument(
+ "--output", default="", help="Output directory where dts log and result saved"
+)
+
+parser.add_argument(
+ "-s",
+ "--skip-setup",
+ action="store_true",
+ help="skips all possible setup steps done on both DUT" + " and tester boards.",
+)
+
+parser.add_argument(
+ "-r",
+ "--read-cache",
+ action="store_true",
+ help="reads the DUT configuration from a cache. If not "
+ + "specified, the DUT configuration will be calculated "
+ + "as usual and cached.",
+)
+
+parser.add_argument(
+ "-p", "--project", default="dpdk", help="specify that which project will be tested"
+)
+
+parser.add_argument(
+ "--suite-dir",
+ default="tests",
+ help="Test suite directory where test suites will be imported",
+)
+
+parser.add_argument(
+ "-t",
+ "--test-cases",
+ action="append",
+ help="executes only the followings test cases",
+)
+
+parser.add_argument(
+ "-d",
+ "--dir",
+ default="~/dpdk",
+ help="Output directory where dpdk package is extracted",
+)
+
+parser.add_argument(
+ "-v",
+ "--verbose",
+ action="store_true",
+ help="enable verbose output, all message output on screen",
+)
+
+parser.add_argument(
+ "--virttype", default="kvm", help="set virt type,support kvm, libvirtd"
+)
+
+parser.add_argument(
+ "--debug",
+ action="store_true",
+ help="enable debug mode, user can enter debug mode in process",
+)
+
+parser.add_argument(
+ "--debugcase",
+ action="store_true",
+ help="enable debug mode in the first case, user can further debug",
+)
+parser.add_argument(
+ "--re_run",
+ default=0,
+ help="when case failed will re-run times, and this value must >= 0",
+)
+
+parser.add_argument(
+ "--commands",
+ action="append",
+ help="run command on tester or dut. The command format is "
+ + "[commands]:dut|tester:pre-init|post-init:check|ignore",
+)
+
+parser.add_argument("--subtitle", help="add a subtitle to the rst report")
+
+parser.add_argument(
+ "--update-expected",
+ action="store_true",
+ help="update expected values based on test results",
+)
+
+parser.add_argument(
+ "--asan", action="store_true", help="add function to support ASan test"
+)
+
+args = parser.parse_args()
+
+
+# prepare DPDK source test package, DTS will exited when failed.
+if args.git is not None:
+ try:
+ git_build_package(args.git, os.path.split(args.snapshot)[1])
+ except Exception:
+ print("FAILED TO PREPARE DPDK PACKAGE!!!")
+ sys.exit()
+
+# Main program begins here
+dts.run_all(
+ args.config_file,
+ args.snapshot,
+ args.git,
+ args.patch,
+ args.skip_setup,
+ args.read_cache,
+ args.project,
+ args.suite_dir,
+ args.test_cases,
+ args.dir,
+ args.output,
+ args.verbose,
+ args.virttype,
+ args.debug,
+ args.debugcase,
+ args.re_run,
+ args.commands,
+ args.subtitle,
+ args.update_expected,
+ args.asan,
+)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [RFC PATCH v1 15/15] dts: merge DTS version.py to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (13 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 14/15] dts: merge DTS main.py " Juraj Linkeš
@ 2022-04-06 14:56 ` Juraj Linkeš
2022-04-07 5:04 ` [RFC PATCH v1 00/15] merge DTS core files " Jerin Jacob
15 siblings, 0 replies; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-06 14:56 UTC (permalink / raw)
To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
Cc: dev, Juraj Linkeš
---
dts/version.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100755 dts/version.py
diff --git a/dts/version.py b/dts/version.py
new file mode 100755
index 0000000000..9f23357435
--- /dev/null
+++ b/dts/version.py
@@ -0,0 +1,21 @@
+# <COPYRIGHT_TAG>
+
+VERSION_MAJOR = "21"
+VERSION_MINOR = "11"
+VERSION_PATCH = "0"
+VERSION_EXTRA = ""
+
+__version__ = "%s.%s.%s" % (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH)
+
+if VERSION_EXTRA:
+ __version__ = "%s-%s" % (__version__, VERSION_EXTRA)
+
+
+def dts_version():
+ """
+ Return the version of dts package
+ """
+ return __version__
+
+
+__all__ = ["dts_version", "__version__"]
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-06 14:55 [RFC PATCH v1 00/15] merge DTS core files to DPDK Juraj Linkeš
` (14 preceding siblings ...)
2022-04-06 14:56 ` [RFC PATCH v1 15/15] dts: merge DTS version.py " Juraj Linkeš
@ 2022-04-07 5:04 ` Jerin Jacob
2022-04-07 7:33 ` Thomas Monjalon
2022-04-11 19:06 ` Honnappa Nagarahalli
15 siblings, 2 replies; 22+ messages in thread
From: Jerin Jacob @ 2022-04-07 5:04 UTC (permalink / raw)
To: Juraj Linkeš
Cc: Thomas Monjalon, David Marchand, Honnappa Nagarahalli, ohilyard,
Tu, Lijuan, dpdk-dev
On Wed, Apr 6, 2022 at 8:26 PM Juraj Linkeš <juraj.linkes@pantheon.tech> wrote:
>
> These are the basic libraries that other libraries depend on. There's
> also the basic framework functionality related to test execution.
>
> Juraj Linkeš (15):
> dts: merge DTS dep/tclclient.tgz to DPDK
> dts: merge DTS dep/tgen.tgz to DPDK
> dts: merge DTS dts to DPDK
> dts: merge DTS framework/__init__.py to DPDK
> dts: merge DTS framework/asan_test.py to DPDK
> dts: merge DTS framework/checkCase.py to DPDK
> dts: merge DTS framework/dts.py to DPDK
> dts: merge DTS framework/exception.py to DPDK
> dts: merge DTS framework/logger.py to DPDK
> dts: merge DTS framework/packet.py to DPDK
> dts: merge DTS framework/project_dpdk.py to DPDK
> dts: merge DTS framework/serializer.py to DPDK
> dts: merge DTS framework/utils.py to DPDK
> dts: merge DTS main.py to DPDK
> dts: merge DTS version.py to DPDK
merge->import
>
> dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
> dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
Some top level comments:
- I think, we should not check in binary files.
- git commit comment should much more than "dts: merge DTS xxxx to DPDK" where
the commit log should have details on check in.
-Add the documentation from the first patch and update the
documentation per patch
based on the content.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-07 5:04 ` [RFC PATCH v1 00/15] merge DTS core files " Jerin Jacob
@ 2022-04-07 7:33 ` Thomas Monjalon
2022-04-11 7:41 ` Juraj Linkeš
2022-04-11 19:06 ` Honnappa Nagarahalli
1 sibling, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2022-04-07 7:33 UTC (permalink / raw)
To: Juraj Linkeš
Cc: Jerin Jacob, David Marchand, Honnappa Nagarahalli, ohilyard, Tu,
Lijuan, dpdk-dev
07/04/2022 07:04, Jerin Jacob:
> On Wed, Apr 6, 2022 at 8:26 PM Juraj Linkeš <juraj.linkes@pantheon.tech> wrote:
> >
> > These are the basic libraries that other libraries depend on. There's
> > also the basic framework functionality related to test execution.
> >
> > Juraj Linkeš (15):
> > dts: merge DTS dep/tclclient.tgz to DPDK
> > dts: merge DTS dep/tgen.tgz to DPDK
> > dts: merge DTS dts to DPDK
> > dts: merge DTS framework/__init__.py to DPDK
> > dts: merge DTS framework/asan_test.py to DPDK
> > dts: merge DTS framework/checkCase.py to DPDK
> > dts: merge DTS framework/dts.py to DPDK
> > dts: merge DTS framework/exception.py to DPDK
> > dts: merge DTS framework/logger.py to DPDK
> > dts: merge DTS framework/packet.py to DPDK
> > dts: merge DTS framework/project_dpdk.py to DPDK
> > dts: merge DTS framework/serializer.py to DPDK
> > dts: merge DTS framework/utils.py to DPDK
> > dts: merge DTS main.py to DPDK
> > dts: merge DTS version.py to DPDK
>
> merge->import
>
> >
> > dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
> > dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
>
> Some top level comments:
> - I think, we should not check in binary files.
+1
> - git commit comment should much more than "dts: merge DTS xxxx to DPDK" where
> the commit log should have details on check in.
+1
> -Add the documentation from the first patch and update the
> documentation per patch
> based on the content.
+1
More comments:
- Please don't send so many patches, it looks like spam.
- Please let's start small with the very minimal code
to run a dummy test.
- Split by file does not make sense
The process is going to be very long.
The techboard said in the past that we must have a very careful review
of an import piece by piece. So please be patient.
Thank you
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-07 7:33 ` Thomas Monjalon
@ 2022-04-11 7:41 ` Juraj Linkeš
2022-04-11 17:55 ` Honnappa Nagarahalli
0 siblings, 1 reply; 22+ messages in thread
From: Juraj Linkeš @ 2022-04-11 7:41 UTC (permalink / raw)
To: Thomas Monjalon
Cc: Jerin Jacob, David Marchand, Honnappa Nagarahalli, ohilyard, Tu,
Lijuan, dpdk-dev
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Thursday, April 7, 2022 9:34 AM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>
> Cc: Jerin Jacob <jerinjacobk@gmail.com>; David Marchand
> <david.marchand@redhat.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; ohilyard@iol.unh.edu; Tu, Lijuan
> <lijuan.tu@intel.com>; dpdk-dev <dev@dpdk.org>
> Subject: Re: [RFC PATCH v1 00/15] merge DTS core files to DPDK
>
> 07/04/2022 07:04, Jerin Jacob:
> > On Wed, Apr 6, 2022 at 8:26 PM Juraj Linkeš <juraj.linkes@pantheon.tech>
> wrote:
> > >
First of all, thanks for the feedback. We've already done a bit of a pre-review and this is where we decided we want the feedback from the rest of the community. We understand it's going to take time which is why we wanted to get feedback sooner than later.
> > > These are the basic libraries that other libraries depend on.
> > > There's also the basic framework functionality related to test execution.
> > >
> > > Juraj Linkeš (15):
> > > dts: merge DTS dep/tclclient.tgz to DPDK
> > > dts: merge DTS dep/tgen.tgz to DPDK
> > > dts: merge DTS dts to DPDK
> > > dts: merge DTS framework/__init__.py to DPDK
> > > dts: merge DTS framework/asan_test.py to DPDK
> > > dts: merge DTS framework/checkCase.py to DPDK
> > > dts: merge DTS framework/dts.py to DPDK
> > > dts: merge DTS framework/exception.py to DPDK
> > > dts: merge DTS framework/logger.py to DPDK
> > > dts: merge DTS framework/packet.py to DPDK
> > > dts: merge DTS framework/project_dpdk.py to DPDK
> > > dts: merge DTS framework/serializer.py to DPDK
> > > dts: merge DTS framework/utils.py to DPDK
> > > dts: merge DTS main.py to DPDK
> > > dts: merge DTS version.py to DPDK
> >
> > merge->import
> >
Ack. I'll keep this in mind when composing commit messages in the future.
> > >
> > > dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
> > > dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
> >
> > Some top level comments:
> > - I think, we should not check in binary files.
>
> +1
>
Thanks, we'll make sure to make this a requirement - it makes sense to us as well.
> > - git commit comment should much more than "dts: merge DTS xxxx to
> > DPDK" where the commit log should have details on check in.
>
> +1
Right, this is part of the broader question of how exactly are we going to move the whole thing. More below.
>
> > -Add the documentation from the first patch and update the
> > documentation per patch based on the content.
>
> +1
>
> More comments:
>
> - Please don't send so many patches, it looks like spam.
> - Please let's start small with the very minimal code to run a dummy test.
> - Split by file does not make sense
This is very useful. We started with splitting up DTS into logical chunks, but it's not quite what you have in mind. We'll move things around and send just the first part (containing just a dummy test (is a smoke test ok?) with the necessary code). Now that we have a better understanding of the first step we'll produce a more complete patch set, with proper commit messages and files in each commit.
>
> The process is going to be very long.
> The techboard said in the past that we must have a very careful review of an
> import piece by piece. So please be patient.
> Thank you
>
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-11 7:41 ` Juraj Linkeš
@ 2022-04-11 17:55 ` Honnappa Nagarahalli
2022-04-11 18:20 ` Owen Hilyard
0 siblings, 1 reply; 22+ messages in thread
From: Honnappa Nagarahalli @ 2022-04-11 17:55 UTC (permalink / raw)
To: Juraj Linkeš, thomas
Cc: Jerin Jacob, David Marchand, ohilyard, Tu, Lijuan, dpdk-dev, nd, nd
<snip>
> >
> > 07/04/2022 07:04, Jerin Jacob:
> > > On Wed, Apr 6, 2022 at 8:26 PM Juraj Linkeš
> > > <juraj.linkes@pantheon.tech>
> > wrote:
> > > >
>
> First of all, thanks for the feedback. We've already done a bit of a pre-review
> and this is where we decided we want the feedback from the rest of the
> community. We understand it's going to take time which is why we wanted to
> get feedback sooner than later.
>
> > > > These are the basic libraries that other libraries depend on.
> > > > There's also the basic framework functionality related to test execution.
> > > >
> > > > Juraj Linkeš (15):
> > > > dts: merge DTS dep/tclclient.tgz to DPDK
> > > > dts: merge DTS dep/tgen.tgz to DPDK
> > > > dts: merge DTS dts to DPDK
> > > > dts: merge DTS framework/__init__.py to DPDK
> > > > dts: merge DTS framework/asan_test.py to DPDK
> > > > dts: merge DTS framework/checkCase.py to DPDK
> > > > dts: merge DTS framework/dts.py to DPDK
> > > > dts: merge DTS framework/exception.py to DPDK
> > > > dts: merge DTS framework/logger.py to DPDK
> > > > dts: merge DTS framework/packet.py to DPDK
> > > > dts: merge DTS framework/project_dpdk.py to DPDK
> > > > dts: merge DTS framework/serializer.py to DPDK
> > > > dts: merge DTS framework/utils.py to DPDK
> > > > dts: merge DTS main.py to DPDK
> > > > dts: merge DTS version.py to DPDK
> > >
> > > merge->import
> > >
>
> Ack. I'll keep this in mind when composing commit messages in the future.
>
> > > >
> > > > dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
> > > > dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
> > >
> > > Some top level comments:
> > > - I think, we should not check in binary files.
> >
> > +1
> >
>
> Thanks, we'll make sure to make this a requirement - it makes sense to us as
> well.
Should we move these to the external repo where the GPL file would be stored? I do not expect these files to change frequently. But the external repo also needs to be tagged (along with tagging the DPDK/DTS).
>
> > > - git commit comment should much more than "dts: merge DTS xxxx to
> > > DPDK" where the commit log should have details on check in.
> >
> > +1
>
> Right, this is part of the broader question of how exactly are we going to
> move the whole thing. More below.
>
> >
> > > -Add the documentation from the first patch and update the
> > > documentation per patch based on the content.
> >
> > +1
> >
> > More comments:
> >
> > - Please don't send so many patches, it looks like spam.
> > - Please let's start small with the very minimal code to run a dummy test.
> > - Split by file does not make sense
>
> This is very useful. We started with splitting up DTS into logical chunks, but it's
> not quite what you have in mind. We'll move things around and send just the
> first part (containing just a dummy test (is a smoke test ok?) with the
> necessary code). Now that we have a better understanding of the first step
> we'll produce a more complete patch set, with proper commit messages and
> files in each commit.
I think bringing in this big chunk of code is a challenge. We need to discuss more on how to get this into DPDK. From that perspective:
1) the current set of patches are just the framework and documentation, no test suites yet. I am not sure if there are further parts that can be stripped out.
2) agree, the split by files is too much. We have tried to group the files into some logical components. So, would it be fine if we remove the commit by file, but still keep the logical component split? i.e. we will squash the files in a series into a single commit and then combine the logical splits as commits in a single series.
3) In my private discussions with David Marchand, he expressed interest in getting the git log history. The current review process will not help in this regard. Is this a must? If yes, are there any known methods to do this?
>
> >
> > The process is going to be very long.
> > The techboard said in the past that we must have a very careful review
> > of an import piece by piece. So please be patient.
Agree, we need to give time for review.
I would prefer to set some timeline so that we are working accordingly. Currently, we are working with the goal of merging this in 22.07 (assuming the reviews are coming through quick enough). But, we can align on a different timeline.
> > Thank you
> >
> >
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-11 17:55 ` Honnappa Nagarahalli
@ 2022-04-11 18:20 ` Owen Hilyard
0 siblings, 0 replies; 22+ messages in thread
From: Owen Hilyard @ 2022-04-11 18:20 UTC (permalink / raw)
To: Honnappa Nagarahalli
Cc: Juraj Linkeš,
thomas, Jerin Jacob, David Marchand, Tu, Lijuan, dpdk-dev, nd
[-- Attachment #1: Type: text/plain, Size: 1181 bytes --]
>
> 3) In my private discussions with David Marchand, he expressed interest
> in getting the git log history. The current review process will not help in
> this regard. Is this a must? If yes, are there any known methods to do this?
The git docs point to https://github.com/newren/git-filter-repo/, since
apparently git filter-branch is full of footguns. From there, I would
follow an example from Ruby,
https://gist.github.com/x-yuri/9890ab1079cf4357d6f269d073fd9731, which was
merging two reasonably-sized tooling repos. Instead of using git merge, we
would be using git rebase. I did it locally to try it out, and it does have
to replay the ENTIRE git history of dts. This means whoever does it may
want to grab a server and do the rebase in /run. This would also mean that
we would have to bypass the mailing list, since sending out more than 32000
emails doesn't seem reasonable. Possibly just a patch with the script to
run to do the rebase instead of putting all the patches on the mailing list?
Doing this would also probably mean all of our work would be in the DTS
repo until we are ready to merge. That might make it harder to review
changes to DTS in small parts.
[-- Attachment #2: Type: text/html, Size: 1519 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [RFC PATCH v1 00/15] merge DTS core files to DPDK
2022-04-07 5:04 ` [RFC PATCH v1 00/15] merge DTS core files " Jerin Jacob
2022-04-07 7:33 ` Thomas Monjalon
@ 2022-04-11 19:06 ` Honnappa Nagarahalli
1 sibling, 0 replies; 22+ messages in thread
From: Honnappa Nagarahalli @ 2022-04-11 19:06 UTC (permalink / raw)
To: Jerin Jacob, Juraj Linkeš
Cc: thomas, David Marchand, ohilyard, Tu, Lijuan, dpdk-dev, nd, nd
<snip>
>
> On Wed, Apr 6, 2022 at 8:26 PM Juraj Linkeš <juraj.linkes@pantheon.tech>
> wrote:
> >
> > These are the basic libraries that other libraries depend on. There's
> > also the basic framework functionality related to test execution.
> >
> > Juraj Linkeš (15):
> > dts: merge DTS dep/tclclient.tgz to DPDK
> > dts: merge DTS dep/tgen.tgz to DPDK
> > dts: merge DTS dts to DPDK
> > dts: merge DTS framework/__init__.py to DPDK
> > dts: merge DTS framework/asan_test.py to DPDK
> > dts: merge DTS framework/checkCase.py to DPDK
> > dts: merge DTS framework/dts.py to DPDK
> > dts: merge DTS framework/exception.py to DPDK
> > dts: merge DTS framework/logger.py to DPDK
> > dts: merge DTS framework/packet.py to DPDK
> > dts: merge DTS framework/project_dpdk.py to DPDK
> > dts: merge DTS framework/serializer.py to DPDK
> > dts: merge DTS framework/utils.py to DPDK
> > dts: merge DTS main.py to DPDK
> > dts: merge DTS version.py to DPDK
>
> merge->import
>
> >
> > dts/dep/tclclient.tgz | Bin 0 -> 199327 bytes
> > dts/dep/tgen.tgz | Bin 0 -> 134392 bytes
>
> Some top level comments:
> - I think, we should not check in binary files.
> - git commit comment should much more than "dts: merge DTS xxxx to DPDK"
> where the commit log should have details on check in.
> -Add the documentation from the first patch and update the documentation
> per patch based on the content.
The documentation is existing documentation. It has evolved based on how the code has evolved. I do not think it is possible to split that documentation now and bring it in on a per patch basis. The best way would be to maintain the history from git.
Some documentation is also getting updated, but this is one time overall update.
^ permalink raw reply [flat|nested] 22+ messages in thread