<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> self.dut.set_build_options({SW[7:]: 'y'})</blockquote><div><br></div>I think that all of the instances of this line or similar lines that are using string indexing on a constant string should be replaced by what that substring (SW[7:]) evaluates to. This isn't very readable. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 18, 2021 at 3:23 AM David Marchand <<a href="mailto:david.marchand@redhat.com">david.marchand@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
On Wed, Nov 17, 2021 at 9:55 AM DongJunX <<a href="mailto:junx.dong@intel.com" target="_blank">junx.dong@intel.com</a>> wrote:<br>
<br>
<br>
A commitlog is needed.<br>
<br>
First, a general comment on this patch: please don't mix in unrelated<br>
whitespace changes.<br>
<br>
><br>
> Signed-off-by: DongJunX <<a href="mailto:junx.dong@intel.com" target="_blank">junx.dong@intel.com</a>><br>
> ---<br>
> tests/TestSuite_compressdev_isal_pmd.py | 9 ----<br>
> tests/TestSuite_compressdev_qat_pmd.py | 7 ---<br>
> tests/TestSuite_compressdev_zlib_pmd.py | 9 ----<br>
> tests/TestSuite_crypto_perf_cryptodev_perf.py | 10 ++---<br>
> tests/TestSuite_external_mempool_handler.py | 1 -<br>
> tests/TestSuite_fips_cryptodev.py | 42 +++++++++---------<br>
> tests/TestSuite_ieee1588.py | 4 --<br>
> tests/TestSuite_ipsec_gw_cryptodev_func.py | 2 +-<br>
> tests/TestSuite_kni.py | 6 ---<br>
> tests/TestSuite_l2fwd_cryptodev_func.py | 2 +-<br>
> tests/TestSuite_packet_capture.py | 9 ----<br>
> tests/TestSuite_pmd.py | 1 -<br>
> tests/TestSuite_power_branch_ratio.py | 25 +++--------<br>
> tests/TestSuite_power_pbf.py | 13 +-----<br>
> tests/TestSuite_power_telemetry.py | 16 +++----<br>
> tests/TestSuite_unit_tests_cryptodev_func.py | 2 +-<br>
> tests/TestSuite_unit_tests_kni.py | 2 -<br>
> tests/TestSuite_vhost_1024_ethports.py | 12 +----<br>
> .../TestSuite_virtio_ipsec_cryptodev_func.py | 6 ---<br>
> tests/TestSuite_virtio_perf_cryptodev_func.py | 5 ---<br>
> tests/TestSuite_virtio_unit_cryptodev_func.py | 2 -<br>
> tests/TestSuite_vmdq_dcb.py | 2 -<br>
> tests/cryptodev_common.py | 44 +------------------<br>
> 23 files changed, 42 insertions(+), 189 deletions(-)<br>
><br>
> diff --git a/tests/TestSuite_compressdev_isal_pmd.py b/tests/TestSuite_compressdev_isal_pmd.py<br>
> index 559c68de..93e41ca9 100644<br>
> --- a/tests/TestSuite_compressdev_isal_pmd.py<br>
> +++ b/tests/TestSuite_compressdev_isal_pmd.py<br>
> @@ -53,10 +53,6 @@ class TestCompressdevIsalPmd(TestCase):<br>
> cc.default_opts = copy.deepcopy(self.opts)<br>
><br>
> def prepare_dpdk(self):<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=n$/CONFIG_RTE_COMPRESSDEV_TEST=y/' config/common_base", "# ")<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ISAL=n$/CONFIG_RTE_LIBRTE_PMD_ISAL=y/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
<br>
This comment and the next one apply to all other hunks in this patch.<br>
<br>
Is it necessary to call dut.build_install_dpdk here?<br>
Since this test uses the default configuration, is dpdk built in<br>
DPDKdut set_target() method not enough?<br>
<br>
<br>
><br>
> def test_isal_pmd_unit_test(self):<br>
> @@ -87,11 +83,6 @@ class TestCompressdevIsalPmd(TestCase):<br>
><br>
> def tear_down_all(self):<br>
> self.dut.kill_all()<br>
> -<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=y$/CONFIG_RTE_COMPRESSDEV_TEST=n/' config/common_base", "# ")<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ISAL=y$/CONFIG_RTE_LIBRTE_PMD_ISAL=n/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
<br>
There was no change in the configuration since the start of this test.<br>
No need to recompile anything.<br>
<br>
><br>
> if not self._perf_result:<br>
> diff --git a/tests/TestSuite_compressdev_qat_pmd.py b/tests/TestSuite_compressdev_qat_pmd.py<br>
> index 38f0bff3..13b7bb57 100644<br>
> --- a/tests/TestSuite_compressdev_qat_pmd.py<br>
> +++ b/tests/TestSuite_compressdev_qat_pmd.py<br>
> @@ -55,8 +55,6 @@ class TestCompressdevQatPmd(TestCase):<br>
> cc.default_opts = copy.deepcopy(self.opts)<br>
><br>
> def prepare_dpdk(self):<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=n$/CONFIG_RTE_COMPRESSDEV_TEST=y/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
><br>
> def get_perf_default_device(self, dev_num=3):<br>
> @@ -153,11 +151,6 @@ class TestCompressdevQatPmd(TestCase):<br>
><br>
> def tear_down_all(self):<br>
> self.dut.kill_all()<br>
> -<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=y$/CONFIG_RTE_COMPRESSDEV_TEST=n/' config/common_base", "# ")<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=y$/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
><br>
> if not self._perf_result:<br>
> diff --git a/tests/TestSuite_compressdev_zlib_pmd.py b/tests/TestSuite_compressdev_zlib_pmd.py<br>
> index f1b3d4c4..574a6061 100644<br>
> --- a/tests/TestSuite_compressdev_zlib_pmd.py<br>
> +++ b/tests/TestSuite_compressdev_zlib_pmd.py<br>
> @@ -54,10 +54,6 @@ class TestCompressdevZlibPmd(TestCase):<br>
> cc.default_opts = copy.deepcopy(self.opts)<br>
><br>
> def prepare_dpdk(self):<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=n$/CONFIG_RTE_COMPRESSDEV_TEST=y/' config/common_base", "# ")<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ZLIB=n$/CONFIG_RTE_LIBRTE_PMD_ZLIB=y/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
><br>
> def test_zlib_pmd_unit_test(self):<br>
> @@ -88,11 +84,6 @@ class TestCompressdevZlibPmd(TestCase):<br>
><br>
> def tear_down_all(self):<br>
> self.dut.kill_all()<br>
> -<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_COMPRESSDEV_TEST=y$/CONFIG_RTE_COMPRESSDEV_TEST=n/' config/common_base", "# ")<br>
> - self.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ZLIB=y$/CONFIG_RTE_LIBRTE_PMD_ZLIB=n/' config/common_base", "# ")<br>
> self.dut.build_install_dpdk(self.dut.target)<br>
><br>
> if not self._perf_result:<br>
> diff --git a/tests/TestSuite_crypto_perf_cryptodev_perf.py b/tests/TestSuite_crypto_perf_cryptodev_perf.py<br>
> index 759c5186..39be86c1 100644<br>
> --- a/tests/TestSuite_crypto_perf_cryptodev_perf.py<br>
> +++ b/tests/TestSuite_crypto_perf_cryptodev_perf.py<br>
> @@ -86,13 +86,9 @@ class PerfTestsCryptodev(TestCase):<br>
> self.dut.session.copy_file_to(file, self.dut_file_dir)<br>
><br>
> def tear_down_all(self):<br>
> - cc.clear_dpdk_config(self)<br>
> -<br>
> - if not self._perf_result:<br>
> - return<br>
> -<br>
> - with open(self.logger.log_path + "/" + "perf_cryptodev_result.json", "a") as fv:<br>
> - json.dump(self._perf_result, fv, indent=4)<br>
> + if self._perf_result:<br>
> + with open(self.logger.log_path + "/" + "perf_cryptodev_result.json", "a") as fv:<br>
> + json.dump(self._perf_result, fv, indent=4)<br>
><br>
> def set_up(self):<br>
> pass<br>
> diff --git a/tests/TestSuite_external_mempool_handler.py b/tests/TestSuite_external_mempool_handler.py<br>
> index cee22d0f..d747a9da 100644<br>
> --- a/tests/TestSuite_external_mempool_handler.py<br>
> +++ b/tests/TestSuite_external_mempool_handler.py<br>
> @@ -60,7 +60,6 @@ class TestExternalMempool(TestCase):<br>
> pass<br>
><br>
> def change_mempool_ops(self, ops=''):<br>
> - self.dut.send_expect("sed -i 's/CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS=.*$/CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS=\"%s\"/' ./config/common_base" % ops, "# ")<br>
> self.dut.set_build_options({'RTE_MBUF_DEFAULT_MEMPOOL_OPS': ops})<br>
<br>
Mbuf mempool ops can be passed at runtime via --mbuf-pool-ops-name.<br>
No need to recompile if DTS calls with the right option.<br>
<br>
<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> diff --git a/tests/TestSuite_fips_cryptodev.py b/tests/TestSuite_fips_cryptodev.py<br>
> index 39b30c6a..8731b109 100644<br>
> --- a/tests/TestSuite_fips_cryptodev.py<br>
> +++ b/tests/TestSuite_fips_cryptodev.py<br>
> @@ -43,8 +43,8 @@ class FipCryptodev(TestCase):<br>
> if not cc.is_build_skip(self):<br>
> cc.build_dpdk_with_cryptodev(self)<br>
> out = self.dut.build_dpdk_apps("./examples/fips_validation")<br>
> - self.verify("Error"not in out,"Compilation error")<br>
> - self.verify("No such"not in out,"Compilation error")<br>
> + self.verify("Error"not in out, "Compilation error")<br>
> + self.verify("No such"not in out, "Compilation error")<br>
> self.vf_driver = self.get_suite_cfg()['vf_driver']<br>
> cc.bind_qat_device(self, "vfio-pci")<br>
> self._app_path = self.dut.apps_name['fips_validation']<br>
> @@ -54,7 +54,7 @@ class FipCryptodev(TestCase):<br>
> "cryptodev": None,<br>
> "path-is-folder": "",<br>
> "cryptodev-id": 0,<br>
> - "self-test":"",<br>
> + "self-test": "",<br>
> }<br>
> self.FIP_path = "/root/FIPS"<br>
><br>
> @@ -65,7 +65,7 @@ class FipCryptodev(TestCase):<br>
> self.dut.kill_all()<br>
><br>
> def tear_down_all(self):<br>
> - cc.clear_dpdk_config(self)<br>
> + pass<br>
><br>
> # Private functions<br>
> def _get_fips_opt_str(self):<br>
> @@ -86,14 +86,14 @@ class FipCryptodev(TestCase):<br>
> def compare_resp_file(self,eal_opt_str,fips_opt_str):<br>
> out = self._run_fips(eal_opt_str, fips_opt_str)<br>
> check_out = out[out.index("Done"):]<br>
> - self.verify("Error" not in check_out," req file error")<br>
> + self.verify("Error" not in check_out, " req file error")<br>
> rep_list = re.findall(r"FIPS/(.*)/req/(.*).req", out)<br>
><br>
> for alog_name, file_name in rep_list:<br>
> out = self.dut.send_expect("diff %s/%s/resp/%s.rsp %s/%s/fax/%s.rsp | grep -v '#' | grep -v '\---'" % (<br>
> self.FIP_path, alog_name, file_name, self.FIP_path, alog_name, file_name), "#")<br>
> lines = re.split('\r\n', out)<br>
> - self.verify(len(lines) <= 2, "%s.req file comparison failed!"%file_name)<br>
> + self.verify(len(lines) <= 2, "%s.req file comparison failed!" % file_name)<br>
><br>
> def test_fips_aesni_mb_aes(self):<br>
> eal_opt_str = cc.get_eal_opt_str(self)<br>
> @@ -121,72 +121,72 @@ class FipCryptodev(TestCase):<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_gcm(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_aes(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_3des(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_hmac(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_ccm(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_qat_cmac(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":None})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_openssl_gcm(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_openssl_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_openssl_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_openssl_aes(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_openssl_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_openssl_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_openssl_3des(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_openssl_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_openssl_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_openssl_hmac(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_openssl_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_openssl_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_openssl_ccm(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_openssl_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_openssl_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_aesni_gcm_gcm(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"vdev":"crypto_aesni_gcm_pmd_1"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"vdev": "crypto_aesni_gcm_pmd_1"})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_self_test(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"l":None,"n":None,})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"l": None, "n": None})<br>
> fips_opt_str = self._get_fips_opt_str()<br>
> self.compare_resp_file(eal_opt_str, fips_opt_str)<br>
><br>
> def test_fips_broken_test(self):<br>
> - eal_opt_str = cc.get_eal_opt_str(self,{"l":None,"n":None,})<br>
> - fips_opt_str = cc.get_opt_str(self, self._default_fips_opts,{"cryptodev-id":None, "broken-test-id":15, "broken-test-dir":"dec"})<br>
> + eal_opt_str = cc.get_eal_opt_str(self, {"l": None, "n": None})<br>
> + fips_opt_str = cc.get_opt_str(self, self._default_fips_opts, {"cryptodev-id": None, "broken-test-id": 15, "broken-test-dir": "dec"})<br>
> out = self._run_fips(eal_opt_str, fips_opt_str)<br>
> self.verify("Failed init" in out, "test Failed!")<br>
> diff --git a/tests/TestSuite_ieee1588.py b/tests/TestSuite_ieee1588.py<br>
> index e17b1699..d61f2a53 100644<br>
> --- a/tests/TestSuite_ieee1588.py<br>
> +++ b/tests/TestSuite_ieee1588.py<br>
> @@ -55,8 +55,6 @@ class TestIeee1588(TestCase):<br>
> self.verify(len(dutPorts) > 0, "No ports found for " + self.nic)<br>
><br>
> # Change the config file to support IEEE1588 and recompile the package.<br>
> - self.dut.send_expect(<br>
> - "sed -i -e 's/IEEE1588=n$/IEEE1588=y/' config/common_base", "# ", 30)<br>
> self.dut.set_build_options({'RTE_LIBRTE_IEEE1588': 'y'})<br>
> self.dut.skip_setup = False<br>
> self.dut.build_install_dpdk(self.target)<br>
> @@ -173,7 +171,5 @@ class TestIeee1588(TestCase):<br>
> self.dut.send_expect("quit", "# ", 30)<br>
><br>
> # Restore the config file and recompile the package.<br>
> - self.dut.send_expect(<br>
> - "sed -i -e 's/IEEE1588=y$/IEEE1588=n/' config/common_base", "# ", 30)<br>
> self.dut.set_build_options({'RTE_LIBRTE_IEEE1588': 'n'})<br>
> self.dut.build_install_dpdk(self.target)<br>
> diff --git a/tests/TestSuite_ipsec_gw_cryptodev_func.py b/tests/TestSuite_ipsec_gw_cryptodev_func.py<br>
> index a5d6e775..bfdc1271 100644<br>
> --- a/tests/TestSuite_ipsec_gw_cryptodev_func.py<br>
> +++ b/tests/TestSuite_ipsec_gw_cryptodev_func.py<br>
> @@ -97,7 +97,7 @@ class TestIPsecGW(TestCase):<br>
> self.dut.kill_all()<br>
><br>
> def tear_down_all(self):<br>
> - cc.clear_dpdk_config(self)<br>
> + pass<br>
><br>
> def test_qat_aes_128_cbc_ipv4_tunnel(self):<br>
> self._execute_ipsec_gw_test()<br>
> diff --git a/tests/TestSuite_kni.py b/tests/TestSuite_kni.py<br>
> index 85289d37..151668c3 100644<br>
> --- a/tests/TestSuite_kni.py<br>
> +++ b/tests/TestSuite_kni.py<br>
> @@ -259,9 +259,6 @@ class TestKni(TestCase):<br>
> out = self.dut.send_expect("which brctl", "# ")<br>
> self.verify('no brctl' not in out,<br>
> "The linux tool brctl is needed to run this test suite")<br>
> -<br>
> - self.dut.send_expect("sed -i -e 's/KNI_KMOD_ETHTOOL=n$/KNI_KMOD_ETHTOOL=y/' config/common_base", "# ", 30)<br>
> - self.dut.send_expect("sed -i -e 's/CONFIG_RTE_KNI_KMOD=n$/CONFIG_RTE_KNI_KMOD=y/' config/common_base", "# ", 30)<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> out = self.dut.build_dpdk_apps("./examples/kni")<br>
> @@ -1225,9 +1222,6 @@ class TestKni(TestCase):<br>
> """<br>
> Run after each test suite.<br>
> """<br>
> -<br>
> - self.dut.send_expect("sed -i -e 's/KNI_KMOD_ETHTOOL=y$/KNI_KMOD_ETHTOOL=n/' config/common_base", "# ", 30)<br>
> self.dut.build_install_dpdk(self.target)<br>
> -<br>
> self.dut.kill_all()<br>
> self.dut.send_expect("rmmod rte_kni", "# ", 10)<br>
> diff --git a/tests/TestSuite_l2fwd_cryptodev_func.py b/tests/TestSuite_l2fwd_cryptodev_func.py<br>
> index 1e8ce549..1b9129af 100644<br>
> --- a/tests/TestSuite_l2fwd_cryptodev_func.py<br>
> +++ b/tests/TestSuite_l2fwd_cryptodev_func.py<br>
> @@ -438,7 +438,7 @@ class TestL2fwdCrypto(TestCase):<br>
> self.dut.kill_all()<br>
><br>
> def tear_down_all(self):<br>
> - cc.clear_dpdk_config(self)<br>
> + pass<br>
><br>
> def __test_vector_to_cmd(self, test_vector, core_mask="", port_mask=""):<br>
> cores = ','.join(self.core_list)<br>
> diff --git a/tests/TestSuite_packet_capture.py b/tests/TestSuite_packet_capture.py<br>
> index 4440c5f3..5ad7ed37 100644<br>
> --- a/tests/TestSuite_packet_capture.py<br>
> +++ b/tests/TestSuite_packet_capture.py<br>
> @@ -815,12 +815,7 @@ class TestPacketCapture(TestCase):<br>
> not self.is_existed_on_crb(self.pdump_log, crb='tester'):<br>
> cmd = "mkdir -p {0}".format(self.pdump_log)<br>
> self.tester.alt_session.send_expect(cmd, "# ")<br>
> - self.pcap_SW = "CONFIG_RTE_LIBRTE_PMD_PCAP"<br>
> - self.SW_file = os.path.join(self.target_dir, 'config/common_base')<br>
> if not (self.dut_skip_compile and self.check_pcap_lib()):<br>
> - cmd = "sed -i -e 's/{0}=n$/{0}=y/' {1}".format(<br>
> - self.pcap_SW, self.SW_file)<br>
> - self.dut.alt_session.send_expect(cmd, "# ", 30)<br>
> self.dut.skip_setup = False<br>
> self.dut.build_install_dpdk(self.target)<br>
> # secondary process (dpdk-pdump)<br>
> @@ -879,10 +874,6 @@ class TestPacketCapture(TestCase):<br>
> self.session_ex = None<br>
> # Restore the config file and recompile the package.<br>
> if self.check_pcap_lib():<br>
> - self.dut.alt_session.send_expect(<br>
> - ("sed -i -e 's/{0}=y$/{0}=n/' "<br>
> - "{1}").format(self.pcap_SW, self.SW_file),<br>
> - "# ", 120)<br>
> # temporary disable skip_setup<br>
> skip_setup = self.dut.skip_setup<br>
> self.dut.skip_setup = True<br>
> diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py<br>
> index 52250023..98421765 100644<br>
> --- a/tests/TestSuite_pmd.py<br>
> +++ b/tests/TestSuite_pmd.py<br>
> @@ -75,7 +75,6 @@ class TestPmd(TestCase):<br>
> self.blocklist = ""<br>
><br>
> # Update config file and rebuild to get best perf on FVL<br>
> - self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/' ./config/common_base", "#", 20)<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> # Based on h/w type, choose how many ports to use<br>
> diff --git a/tests/TestSuite_power_branch_ratio.py b/tests/TestSuite_power_branch_ratio.py<br>
> index dee2cc11..7484d130 100644<br>
> --- a/tests/TestSuite_power_branch_ratio.py<br>
> +++ b/tests/TestSuite_power_branch_ratio.py<br>
> @@ -44,8 +44,7 @@ from pprint import pformat<br>
> from framework.exception import VerifyFailure<br>
> from framework.packet import Packet<br>
> from framework.pktgen import TRANSMIT_CONT<br>
> -from framework.qemu_libvirt import LibvirtKvm<br>
> -from framework.settings import HEADER_SIZE, HOST_BUILD_TYPE_SETTING, load_global_setting<br>
> +from framework.settings import HEADER_SIZE<br>
> from framework.test_case import TestCase<br>
> from framework.utils import create_mask as dts_create_mask<br>
><br>
> @@ -224,15 +223,8 @@ class TestPowerBranchRatio(TestCase):<br>
> return sw_table<br>
><br>
> def preset_compilation(self):<br>
> - if 'meson' == load_global_setting(HOST_BUILD_TYPE_SETTING):<br>
> - compile_SWs = self.compile_switch + ["CONFIG_RTE_LIBRTE_I40E_PMD"]<br>
> - self.dut.set_build_options(dict([(sw[7:], 'y') for sw in compile_SWs]))<br>
> - else:<br>
> - for sw in self.compile_switch:<br>
> - cmd = ("sed -i -e "<br>
> - "'s/{0}=n$/{0}=y/' "<br>
> - "{1}/config/common_base").format(sw, self.target_dir)<br>
> - self.d_a_con(cmd)<br>
> + compile_SWs = self.compile_switch + ["CONFIG_RTE_LIBRTE_I40E_PMD"]<br>
<br>
This option does not exist anymore.<br>
So I don't think this code has any effect.<br>
<br>
<br>
> + self.dut.set_build_options(dict([(sw[7:], 'y') for sw in compile_SWs]))<br>
> # re-compile dpdk source code<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> @@ -247,15 +239,8 @@ class TestPowerBranchRatio(TestCase):<br>
> except Exception as e:<br>
> self.logger.error(traceback.format_exc())<br>
> # restore compilation<br>
> - if 'meson' == load_global_setting(HOST_BUILD_TYPE_SETTING):<br>
> - self.dut.set_build_options(<br>
> - dict([(sw[7:], 'n') for sw in self.compile_switch]))<br>
> - else:<br>
> - for sw in self.compile_switch:<br>
> - cmd = ("sed -i -e "<br>
> - "'s/{0}=y$/{0}=n/' "<br>
> - "{1}/config/common_base").format(sw, self.target_dir)<br>
> - self.d_a_con(cmd)<br>
> + self.dut.set_build_options(<br>
> + dict([(sw[7:], 'n') for sw in self.compile_switch]))<br>
> # re-compile dpdk source code<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> diff --git a/tests/TestSuite_power_pbf.py b/tests/TestSuite_power_pbf.py<br>
> index 42d939cd..832f5c57 100644<br>
> --- a/tests/TestSuite_power_pbf.py<br>
> +++ b/tests/TestSuite_power_pbf.py<br>
> @@ -31,18 +31,14 @@<br>
><br>
> import json<br>
> import os<br>
> -import random<br>
> import re<br>
> import shutil<br>
> import time<br>
> import traceback<br>
> +<br>
> from collections import Counter<br>
> from pprint import pformat<br>
> -<br>
> from framework.exception import VerifyFailure<br>
> -<br>
> -# import framework.dts as dts libs<br>
> -from framework.settings import HOST_BUILD_TYPE_SETTING, load_global_setting<br>
> from framework.test_case import TestCase<br>
> from framework.utils import create_mask<br>
><br>
> @@ -149,12 +145,7 @@ class TestPowerPbf(TestCase):<br>
> self.create_powermonitor_folder()<br>
> # open debug SW<br>
> SW = "CONFIG_RTE_LIBRTE_POWER_DEBUG"<br>
> - if 'meson' == load_global_setting(HOST_BUILD_TYPE_SETTING):<br>
> - self.dut.set_build_options({SW[7:]: 'y'})<br>
> - else:<br>
> - cmd = "sed -i -e 's/{0}=n$/{0}=y/' {1}/config/common_base".format(<br>
> - SW, self.target_dir)<br>
> - self.d_a_con(cmd)<br>
> + self.dut.set_build_options({SW[7:]: 'y'})<br>
> self.dut.build_install_dpdk(self.target)<br>
> # set up vm power management binary process setting<br>
> self.vm_power_mgr = self.prepare_binary('vm_power_manager')<br>
> diff --git a/tests/TestSuite_power_telemetry.py b/tests/TestSuite_power_telemetry.py<br>
> index d8182ce2..dda942a4 100644<br>
> --- a/tests/TestSuite_power_telemetry.py<br>
> +++ b/tests/TestSuite_power_telemetry.py<br>
> @@ -45,7 +45,7 @@ from pprint import pformat<br>
> from framework.exception import VerifyFailure<br>
> from framework.packet import Packet<br>
> from framework.pktgen import TRANSMIT_CONT<br>
> -from framework.settings import HEADER_SIZE, HOST_BUILD_TYPE_SETTING, load_global_setting<br>
> +from framework.settings import HEADER_SIZE<br>
> from framework.test_case import TestCase<br>
> from framework.utils import create_mask as dts_create_mask<br>
><br>
> @@ -122,17 +122,11 @@ class TestPowerTelemetry(TestCase):<br>
> return result<br>
><br>
> def preset_compilation(self):<br>
> - if self.dut.skip_setup:<br>
> - return<br>
> - SW = "CONFIG_RTE_LIBRTE_TELEMETRY"<br>
> - if 'meson' == load_global_setting(HOST_BUILD_TYPE_SETTING):<br>
> + if not self.dut.skip_setup:<br>
> + SW = "CONFIG_RTE_LIBRTE_TELEMETRY"<br>
<br>
Telemetry is built by default, plus this config option with _LIBRTE_<br>
does not exist anymore.<br>
<br>
<br>
> self.dut.set_build_options({SW[7:]: 'y'})<br>
> - else:<br>
> - cmd = "sed -i -e 's/{0}=n$/{0}=y/' {1}/config/common_base".format(<br>
> - SW, self.target_dir)<br>
> - self.d_a_con(cmd)<br>
> - # re-compile dpdk source code<br>
> - self.dut.build_install_dpdk(self.target)<br>
> + # re-compile dpdk source code<br>
> + self.dut.build_install_dpdk(self.target)<br>
><br>
> def prepare_binary(self, name):<br>
> example_dir = "examples/" + name<br>
> diff --git a/tests/TestSuite_unit_tests_cryptodev_func.py b/tests/TestSuite_unit_tests_cryptodev_func.py<br>
> index d2117255..02d1b092 100644<br>
> --- a/tests/TestSuite_unit_tests_cryptodev_func.py<br>
> +++ b/tests/TestSuite_unit_tests_cryptodev_func.py<br>
> @@ -51,7 +51,7 @@ class UnitTestsCryptodev(TestCase):<br>
> self.dut.kill_all()<br>
><br>
> def tear_down_all(self):<br>
> - cc.clear_dpdk_config(self)<br>
> + pass<br>
><br>
> def _get_crypto_device(self, num):<br>
> device = {}<br>
> diff --git a/tests/TestSuite_unit_tests_kni.py b/tests/TestSuite_unit_tests_kni.py<br>
> index 5ad19d15..91283b8a 100644<br>
> --- a/tests/TestSuite_unit_tests_kni.py<br>
> +++ b/tests/TestSuite_unit_tests_kni.py<br>
> @@ -73,8 +73,6 @@ class TestUnitTestsKni(TestCase):<br>
><br>
> KNI Prerequisites<br>
> """<br>
> - self.dut.send_expect("sed -i -e 's/KNI_KMOD_ETHTOOL=n$/KNI_KMOD_ETHTOOL=y/' config/common_base", "# ", 30)<br>
> - self.dut.send_expect("sed -i -e 's/CONFIG_RTE_KNI_KMOD=n$/CONFIG_RTE_KNI_KMOD=y/' config/common_base", "# ", 30)<br>
> self.dut.set_build_options({'KNI_KMOD_ETHTOOL': 'y'})<br>
<br>
ethtool support was dropped ages ago (19.08?).<br>
<br>
> self.dut.set_build_options({'RTE_KNI_KMOD': 'y'})<br>
<br>
Kernel modules are built via meson option enable_kmods.<br>
<br>
<br>
> self.dut.build_install_dpdk(self.target)<br>
> diff --git a/tests/TestSuite_vhost_1024_ethports.py b/tests/TestSuite_vhost_1024_ethports.py<br>
> index 3b20f3e0..d2a643c2 100644<br>
> --- a/tests/TestSuite_vhost_1024_ethports.py<br>
> +++ b/tests/TestSuite_vhost_1024_ethports.py<br>
> @@ -65,18 +65,10 @@ class TestVhost1024Ethports(TestCase):<br>
> self.vhost_user = self.dut.new_session(suite='vhost-user')<br>
><br>
> def build_user_dpdk(self):<br>
> - if self.dut.build_type == "meson":<br>
> - self.dut.build_install_dpdk(self.target, extra_options="-Dmax_ethports=1024")<br>
> - else:<br>
> - self.dut.send_expect("sed -i 's/CONFIG_RTE_MAX_ETHPORTS=32$/CONFIG_RTE_MAX_ETHPORTS=1024/' config/common_base", '#', 30)<br>
> - self.dut.build_install_dpdk(self.target)<br>
> + self.dut.build_install_dpdk(self.target, extra_options="-Dmax_ethports=1024")<br>
><br>
> def restore_dpdk(self):<br>
> - if self.dut.build_type == "meson":<br>
> - self.dut.build_install_dpdk(self.target, extra_options="-Dmax_ethports=32")<br>
> - else:<br>
> - self.dut.send_expect("sed -i 's/CONFIG_RTE_MAX_ETHPORTS=1024$/CONFIG_RTE_MAX_ETHPORTS=32/' config/common_base", '#', 30)<br>
> - self.dut.build_install_dpdk(self.target)<br>
> + self.dut.build_install_dpdk(self.target, extra_options="-Dmax_ethports=32")<br>
><br>
> @property<br>
> def check_2M_env(self):<br>
> diff --git a/tests/TestSuite_virtio_ipsec_cryptodev_func.py b/tests/TestSuite_virtio_ipsec_cryptodev_func.py<br>
> index c4f62b86..d5374209 100644<br>
> --- a/tests/TestSuite_virtio_ipsec_cryptodev_func.py<br>
> +++ b/tests/TestSuite_virtio_ipsec_cryptodev_func.py<br>
> @@ -96,10 +96,6 @@ class VirtioCryptodevIpsecTest(TestCase):<br>
> return self.dut.send_expect(cmdline, ex, timout)<br>
><br>
> def build_user_dpdk(self, user_dut):<br>
> - user_dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n$/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y/' config/common_base", '#', 30)<br>
> - user_dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_EAL_IGB_UIO=n/CONFIG_RTE_EAL_IGB_UIO=y/g' config/common_base", '#', 30)<br>
> user_dut.set_build_options({'RTE_LIBRTE_PMD_AESNI_MB': 'y'})<br>
<br>
Same comment as above, this config option does not exist anymore, it<br>
has no effect.<br>
<br>
<br>
> user_dut.build_install_dpdk(self.target)<br>
> user_dut.build_dpdk_apps("./examples/ipsec-secgw")<br>
> @@ -371,5 +367,3 @@ class VirtioCryptodevIpsecTest(TestCase):<br>
> self.dut.send_expect("killall -s INT %s" % self.app_name, "#")<br>
> self.dut_execut_cmd("killall -s INT qemu-system-x86_64")<br>
> self.dut_execut_cmd("rm -r /tmp/*")<br>
> -<br>
> - cc.clear_dpdk_config(self)<br>
> diff --git a/tests/TestSuite_virtio_perf_cryptodev_func.py b/tests/TestSuite_virtio_perf_cryptodev_func.py<br>
> index 92765675..f8b288c8 100644<br>
> --- a/tests/TestSuite_virtio_perf_cryptodev_func.py<br>
> +++ b/tests/TestSuite_virtio_perf_cryptodev_func.py<br>
> @@ -117,10 +117,6 @@ class VirtioCryptodevPerfTest(TestCase):<br>
> return self.dut.send_expect(cmdline, ex, timout)<br>
><br>
> def build_user_dpdk(self, user_dut):<br>
> - user_dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n$/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y/' config/common_base", '#', 30)<br>
> - user_dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_EAL_IGB_UIO=n/CONFIG_RTE_EAL_IGB_UIO=y/g' config/common_base", '#', 30)<br>
> user_dut.set_build_options({'RTE_LIBRTE_PMD_AESNI_MB': 'y'})<br>
> user_dut.build_install_dpdk(self.target)<br>
><br>
> @@ -257,4 +253,3 @@ class VirtioCryptodevPerfTest(TestCase):<br>
> self.dut.send_expect("killall -s INT %s" % self.app_name, "#")<br>
> self.dut_execut_cmd("killall -s INT qemu-system-x86_64")<br>
> self.dut_execut_cmd("rm -r /tmp/*")<br>
> - cc.clear_dpdk_config(self)<br>
> diff --git a/tests/TestSuite_virtio_unit_cryptodev_func.py b/tests/TestSuite_virtio_unit_cryptodev_func.py<br>
> index 6ccfef7f..fd5b30fe 100644<br>
> --- a/tests/TestSuite_virtio_unit_cryptodev_func.py<br>
> +++ b/tests/TestSuite_virtio_unit_cryptodev_func.py<br>
> @@ -202,5 +202,3 @@ class VirtioCryptodevUnitTest(TestCase):<br>
> self.dut.send_expect("killall -s INT %s" % self.app_name, "#")<br>
> self.dut_execut_cmd("killall -s INT qemu-system-x86_64")<br>
> self.dut_execut_cmd("rm -r /tmp/*")<br>
> -<br>
> - cc.clear_dpdk_config(self)<br>
> diff --git a/tests/TestSuite_vmdq_dcb.py b/tests/TestSuite_vmdq_dcb.py<br>
> index b5714469..c7f60141 100644<br>
> --- a/tests/TestSuite_vmdq_dcb.py<br>
> +++ b/tests/TestSuite_vmdq_dcb.py<br>
> @@ -93,8 +93,6 @@ class TestVmdqDcb(TestCase):<br>
> """<br>
> Rebuild dpdk<br>
> """<br>
> - self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=.*$/CONFIG_RTE_LIBRTE_I40E_"<br>
> - "QUEUE_NUM_PER_VM=%s/' ./config/common_base" % nb_queue_per_vm, "#", 20)<br>
> self.dut.set_build_options({'RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM': nb_queue_per_vm})<br>
> self.dut.build_install_dpdk(self.target)<br>
><br>
> diff --git a/tests/cryptodev_common.py b/tests/cryptodev_common.py<br>
> index e3c58cdc..2856e322 100644<br>
> --- a/tests/cryptodev_common.py<br>
> +++ b/tests/cryptodev_common.py<br>
> @@ -74,43 +74,20 @@ def build_dpdk_with_cryptodev(test_case):<br>
> test_case.dut.send_expect(<br>
> "export LD_LIBRARY_PATH={}".format(fip_library_path), "#")<br>
><br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n$/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_AESNI_MB': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n$/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_QAT_SYM': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=n$/CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_QAT_ASYM': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n$/CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_AESNI_GCM': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_OPENSSL=n$/CONFIG_RTE_LIBRTE_PMD_OPENSSL=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_OPENSSL': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_SNOW3G=n$/CONFIG_RTE_LIBRTE_PMD_SNOW3G=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_SNOW3G': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_KASUMI=n$/CONFIG_RTE_LIBRTE_PMD_KASUMI=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_KASUMI': 'y'})<br>
> -<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ZUC=n$/CONFIG_RTE_LIBRTE_PMD_ZUC=y/' config/common_base", "# ")<br>
> test_case.dut.set_build_options({'RTE_LIBRTE_PMD_ZUC': 'y'})<br>
<br>
Setting all those options above probably has no effect.<br>
<br>
<br>
><br>
> test_case.dut.skip_setup = False<br>
> test_case.dut.build_install_dpdk(test_case.dut.target)<br>
><br>
><br>
> -def bind_qat_device(test_case, driver = "igb_uio"):<br>
> +def bind_qat_device(test_case, driver="igb_uio"):<br>
> if driver == 'vfio-pci':<br>
> test_case.dut.send_expect('modprobe vfio', '#', 10)<br>
> test_case.dut.send_expect('modprobe vfio-pci', '#', 10)<br>
> @@ -168,25 +145,6 @@ def get_qat_devices(test_case, cpm_num=None, num=1):<br>
> return dev_list<br>
><br>
><br>
> -def clear_dpdk_config(test_case):<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y$/CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=y$/CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=y$/CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=y$/CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_OPENSSL=y$/CONFIG_RTE_LIBRTE_PMD_OPENSSL=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_SNOW3G=y$/CONFIG_RTE_LIBRTE_PMD_SNOW3G=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_KASUMI=y$/CONFIG_RTE_LIBRTE_PMD_KASUMI=n/' config/common_base", "# ")<br>
> - test_case.dut.send_expect(<br>
> - "sed -i 's/CONFIG_RTE_LIBRTE_PMD_ZUC=y$/CONFIG_RTE_LIBRTE_PMD_ZUC=n/' config/common_base", "# ")<br>
> -<br>
> -<br>
> default_eal_opts = {<br>
> "c": None,<br>
> "l": None,<br>
> --<br>
> 2.33.1.windows.1<br>
><br>
<br>
<br>
-- <br>
David Marchand<br>
<br>
</blockquote></div>