def test_perf_checksum_throughtput(self): """ Test checksum offload performance. """ self.dut_ports = self.dut.get_ports_performance() # Verify that enough ports are available self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") # sizes = [64, 128, 256, 512, 1024] sizes = [64, 128] pkts = { 'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP()/UDP()/("X"*(%d-46))', 'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP()/TCP()/("X"*(%d-58))', 'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP()/SCTP()/("X"*(%d-50+2))', 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/UDP()/("X"* (lambda x: x - 66 if x > 66 else 0)(%d))', 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/TCP()/("X"* (lambda x: x - 78 if x > 78 else 0)(%d))' } lcore = "1S/2C/1T" portMask = dts.create_mask([self.dut_ports[0], self.dut_ports[1]]) for mode in ["sw", "hw"]: self.logger.info("%s performance" % mode) rst.write_text(mode + " Performance" + '\r\n') tblheader = ["Ports", "S/C/T", "Packet Type", "Mode"] for size in sizes: tblheader.append("%sB mpps" % str(size)) tblheader.append("%sB %% " % str(size)) dts.results_table_add_header(tblheader) self.pmdout.start_testpmd(lcore, "--portmask=%s" % self.portMask, socket=self.ports_socket) self.dut.send_expect("set verbose 1", "testpmd> ") self.dut.send_expect("set fwd csum", "testpmd> ") if mode == "hw": self.checksum_enablehw(self.dut_ports[0]) self.checksum_enablehw(self.dut_ports[1]) else: self.checksum_enablesw(self.dut_ports[0]) self.checksum_enablesw(self.dut_ports[1]) self.dut.send_expect("start", "testpmd> ", 3) for ptype in pkts.keys(): self.benchmark(lcore, ptype, mode, pkts[ptype], sizes, self.nic) self.dut.send_expect("stop", "testpmd> ") self.dut.send_expect("quit", "#", 10) dts.results_table_print()
def report(text, frame=False, annex=False): """ Save report text into rst file. """ if frame: rst.write_frame(text, annex) else: rst.write_text(text, annex)
def results_table_print(): """ Show off result table. """ table.add_rows(results_table_rows) table.header(results_table_header) alignments = [] # all header align to left for _ in results_table_header: alignments.append("l") table.set_cols_align(alignments) out = table.draw() rst.write_text('\n' + out + '\n\n') log_handler.info('\n' + out)