From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id B6C43282 for ; Thu, 11 May 2017 11:34:43 +0200 (CEST) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga105.jf.intel.com with ESMTP; 11 May 2017 02:34:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,323,1491289200"; d="scan'208";a="100698881" Received: from ypei-25.sh.intel.com ([10.239.129.173]) by fmsmga006.fm.intel.com with ESMTP; 11 May 2017 02:34:42 -0700 From: Yulong Pei To: dts@dpdk.org Cc: qian.q.xu@intel.com, yong.liu@intel.com Date: Wed, 10 May 2017 18:27:21 +0800 Message-Id: <1494412041-126901-2-git-send-email-yulong.pei@intel.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1494412041-126901-1-git-send-email-yulong.pei@intel.com> References: <86228AFD5BCD8E4EBFD2B90117B5E81E62DCEDD4@SHSMSX103.ccr.corp.intel.com> <1494412041-126901-1-git-send-email-yulong.pei@intel.com> Subject: [dts] [PATCH v2 2/2] tests: support html report for single core performance test X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 May 2017 09:34:44 -0000 support html report for single core performance test. Signed-off-by: Yulong Pei --- tests/TestSuite_pmd.py | 70 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py index 2d5b485..8f4b22c 100644 --- a/tests/TestSuite_pmd.py +++ b/tests/TestSuite_pmd.py @@ -37,12 +37,20 @@ Test userland 10Gb PMD import utils import re import time +import os + from test_case import TestCase from time import sleep from settings import HEADER_SIZE from pmd_output import PmdOutput from etgen import IxiaPacketGenerator +from settings import FOLDERS +from system_info import SystemInfo +import perf_report +from datetime import datetime + + class TestPmd(TestCase,IxiaPacketGenerator): def set_up_all(self): @@ -53,7 +61,7 @@ class TestPmd(TestCase,IxiaPacketGenerator): """ self.tester.extend_external_packet_generator(TestPmd, self) - self.frame_sizes = [64, 65, 128, 256, 512, 1024, 1280, 1518] + self.frame_sizes = [64, 72, 128, 256, 512, 1024, 1280, 1518] self.rxfreet_values = [0, 8, 16, 32, 64, 128] @@ -62,10 +70,11 @@ class TestPmd(TestCase,IxiaPacketGenerator): self.table_header = ['Frame Size'] for test_cycle in self.test_cycles: - self.table_header.append("app") self.table_header.append("%s Mpps" % test_cycle['cores']) self.table_header.append("% linerate") + self.perf_results = {'header': [], 'data': []} + self.blacklist = "" # Update config file and rebuild to get best perf on FVL @@ -75,6 +84,19 @@ class TestPmd(TestCase,IxiaPacketGenerator): # Based on h/w type, choose how many ports to use self.dut_ports = self.dut.get_ports() + # Get dut system information + port_num = self.dut_ports[0] + pci_device_id = self.dut.ports_info[port_num]['pci'] + ori_driver = self.dut.ports_info[port_num]['port'].get_nic_driver() + self.dut.ports_info[port_num]['port'].bind_driver() + + sut = SystemInfo(self.dut, pci_device_id) + self.system_info = sut.get_system_info() + self.nic_info = sut.get_nic_info() + + self.dut.ports_info[port_num]['port'].bind_driver(ori_driver) + ###### + self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE[ 'ip'] + HEADER_SIZE['tcp'] @@ -92,12 +114,38 @@ class TestPmd(TestCase,IxiaPacketGenerator): """ Run single core performance """ + self.perf_results['header'] = [] + self.perf_results['data'] = [] + if len(self.dut_ports) >= 4: self.pmd_performance_4ports() else: self.verify(len(self.dut_ports) >= 2, "Insufficient ports for 2 ports performance test") self.pmd_performance_2ports() + #To replace False to True for if condition to send the result by email. + if False: + #it need place dpdk source git repo under dep directory. + repo_dir = FOLDERS["Depends"] + r'/dpdk' + git_info = perf_report.get_dpdk_git_info(repo_dir) + self.verify(git_info is not None, "get dpdk git repo error") + + tpl_path = FOLDERS["NicDriver"] + r'/perf_report.jinja' + file_tpl = os.path.abspath(tpl_path) + html_msg = perf_report.generate_html_report(file_tpl, \ + perf_data = self.perf_results['data'], \ + git_info = git_info, \ + nic_info = self.nic_info, \ + system_info = self.system_info) + self.verify(html_msg is not None, "generate html report error") + + subject = "Single core performance test with %d ports %s -- %s" % \ + (len(self.dut_ports), self.nic, datetime.now().strftime('%Y-%m-%d %H:%M')) + sender = 'xxxxxx@intel.com' + mailto = ['xxxxxx@intel.com'] + smtp_server = 'smtp.intel.com' + perf_report.send_html_report(sender, mailto, subject, html_msg, smtp_server) + def pmd_performance_4ports(self): """ PMD Performance Benchmarking with 4 ports. @@ -159,8 +207,9 @@ class TestPmd(TestCase,IxiaPacketGenerator): _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60) pps /= 1000000.0 - test_cycle['Mpps'][frame_size] = pps - test_cycle['pct'][frame_size] = pps * 100 / wirespeed + pct = pps * 100 / wirespeed + test_cycle['Mpps'][frame_size] = float('%.3f' % pps) + test_cycle['pct'][frame_size] = float('%.3f' % pct) self.dut.send_expect("stop", "testpmd> ") self.dut.send_expect("quit", "# ", 30) @@ -173,16 +222,16 @@ class TestPmd(TestCase,IxiaPacketGenerator): # Print results self.result_table_create(self.table_header) + self.perf_results['header'] = self.table_header for frame_size in self.frame_sizes: table_row = [frame_size] - for test_cycle in self.test_cycles: - table_row.append("testpmd") table_row.append(test_cycle['Mpps'][frame_size]) table_row.append(test_cycle['pct'][frame_size]) self.result_table_add(table_row) + self.perf_results['data'].append(table_row) self.result_table_print() @@ -241,10 +290,10 @@ class TestPmd(TestCase,IxiaPacketGenerator): # run traffic generator _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60) - pps /= 1000000.0 - test_cycle['Mpps'][frame_size] = pps - test_cycle['pct'][frame_size] = pps * 100 / wirespeed + pct = pps * 100 / wirespeed + test_cycle['Mpps'][frame_size] = float('%.3f' % pps) + test_cycle['pct'][frame_size] = float('%.3f' % pct) self.dut.send_expect("stop", "testpmd> ") self.dut.send_expect("quit", "# ", 30) @@ -257,14 +306,15 @@ class TestPmd(TestCase,IxiaPacketGenerator): # Print results self.result_table_create(self.table_header) + self.perf_results['header'] = self.table_header for frame_size in self.frame_sizes: table_row = [frame_size] for test_cycle in self.test_cycles: - table_row.append("testpmd") table_row.append(test_cycle['Mpps'][frame_size]) table_row.append(test_cycle['pct'][frame_size]) self.result_table_add(table_row) + self.perf_results['data'].append(table_row) self.result_table_print() -- 2.5.0