dts--tests(二)
rxtx_callbacks.py
"""
DPDK Test suite.
Test Rxtx_Callbacks.
"""
import utils
import string
import time
from test_case import TestCase
from plotting import Plotting
from settings import HEADER_SIZE
from etgen import IxiaPacketGenerator
from packet import Packet, sniff_packets, load_sniff_packets class TestRxtxCallbacks(TestCase): def set_up_all(self):
"""
Run at the start of each test suite.
timer prerequistites
"""
self.dut_ports = self.dut.get_ports(self.nic)
'''
self.nic = 'niantic' ;
self.dut_ports = [0, 1, 2, 3]
self.mac = '90:e2:ba:4a:53:28'
'''
self.verify(len(self.dut_ports) >= 2, "Insufficient ports") cores = self.dut.get_core_list("1S/2C/1T")
self.coremask = utils.create_mask(cores) self.mac = self.dut.get_mac_address(self.dut_ports[0])
self.path = "./examples/rxtx_callbacks/build/rxtx_callbacks" out = self.dut.build_dpdk_apps("./examples/rxtx_callbacks")
self.verify("Error" not in out, "compilation error 1")
self.verify("No such file" not in out, "compilation error 2") def set_up(self):
"""
Run before each test case.
"""
pass def test_rxtx_callbacks(self):
cmd = self.path + " -c %s -n %d " % (self.coremask,self.dut.get_memory_channels())
self.dut.send_expect(cmd,"forwarding packets",60) self.iface_port0 = self.tester.get_interface(self.tester.get_local_port(self.dut_ports[0]))
self.iface_port1 = self.tester.get_interface(self.tester.get_local_port(self.dut_ports[1])) '''
self.dut_ports[0] : 0
self.tester.get_local_port(self.dut_ports[0]) : 2
self.tester.get_interface(self.tester.get_local_port(self.dut_ports[0])) : 'ens261f0' self.dut_ports[1] : 1
self.tester.get_local_port(self.dut_ports[1]) : 3
self.tester.get_interface(self.tester.get_local_port(self.dut_ports[1])) : 'ens261f1'
''' self.inst_port1 = sniff_packets(self.iface_port1) #self.inst_port1 : '1539677920.09' self.scapy_send_packet(self.iface_port0)
'''
tester: scapy
tester: sendp([Ether(dst="90:e2:ba:4a:53:28")/IP()/UDP()/Raw('X'*18)], iface="ens261f0")
tester: exit()
'''
out_port1 = self.get_tcpdump_package(self.inst_port1)
'''
1 packet captured
1 packet received by filter
0 packets dropped by kernel
'''
self.verify(self.mac in out_port1, "Wrong: can't get package at %s " % self.inst_port1) def scapy_send_packet(self,iface):
"""
Send a packet to port
"""
self.tester.scapy_append('sendp([Ether(dst="%s")/IP()/UDP()/Raw(\'X\'*18)], iface="%s")' % (self.mac, iface))
self.tester.scapy_execute() def get_tcpdump_package(self,inst):
pkts = load_sniff_packets(inst)
dsts = []
for packet in pkts:
dst = packet.strip_element_layer2("dst")
dsts.append(dst)
#[''90:e2:ba:4a:53:28'']
return dsts def tear_down(self):
"""
Run after each test case.
"""
self.dut.kill_all()
time.sleep(2) def tear_down_all(self):
"""
Run after each test suite.
"""
pass
#测试的目的:
Send one packet on Port0,check the port1 receive packet.
It receive one packet that the port0 send. TESTS_RESULT:PASS
1 packet captured
1 packet received by filter
0 packets dropped by kernel Result FAILED: "Wrong: can't get package at 1530862720.26 "
0 packets captured
0 packets received by filter
0 packets dropped by kernel pdb调试信息:
> /home/autoregression/changqing/tests/TestSuite_rxtx_callbacks.py(86)test_rxtx_callbacks()
-> self.verify(self.mac in out_port1, "Wrong: can't get package at %s " % self.inst_port1)
(Pdb) l
81
82 self.inst_port1 = sniff_packets(self.iface_port1)
83 self.scapy_send_packet(self.iface_port0)
84
85 out_port1 = self.get_tcpdump_package(self.inst_port1)
86 -> self.verify(self.mac in out_port1, "Wrong: can't get package at %s " % self.inst_port1)
87
88
89 def scapy_send_packet(self,iface):
90 """
91 Send a packet to port
(Pdb) p out_port1
['90:e2:ba:4a:53:28']
(Pdb) p self.iface_port0
'p5p1'
(Pdb) p self.iface_port1
'p5p2'
(Pdb) p self.mac
'90:e2:ba:4a:53:28'
(Pdb) p self.inst_port1
'1530861577.19'
dut-tests
dut:
#测试前编译:
[root@localhost dpdk-changqing]# rm -rf ./app/test/test_resource_c.res.o
[root@localhost dpdk-changqing]# rm -rf ./app/test/test_resource_tar.res.o
[root@localhost dpdk-changqing]# rm -rf ./app/test/test_pci_sysfs.res.o
[root@localhost dpdk-changqing]# make -j 70 -C ./examples/rxtx_callbacks
make: Entering directory '/root/dpdk-changqing/examples/rxtx_callbacks'
CC main.o
LD rxtx_callbacks
INSTALL-APP rxtx_callbacks
INSTALL-MAP rxtx_callbacks.map
make: Leaving directory '/root/dpdk-changqing/examples/rxtx_callbacks' EAL 启动成功
[root@localhost dpdk-changqing]# ./examples/rxtx_callbacks/build/rxtx_callbacks -c 0x6 -n 4
EAL: Detected 72 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Probing VFIO support...
EAL: PCI device 0000:03:00.0 on NUMA socket 0
EAL: probe driver: 8086:1572 net_i40e
EAL: PCI device 0000:03:00.1 on NUMA socket 0
EAL: probe driver: 8086:1572 net_i40e
EAL: PCI device 0000:03:00.2 on NUMA socket 0
EAL: probe driver: 8086:1572 net_i40e
EAL: PCI device 0000:03:00.3 on NUMA socket 0
EAL: probe driver: 8086:1572 net_i40e
EAL: PCI device 0000:04:00.0 on NUMA socket 0
EAL: probe driver: 8086:10fb net_ixgbe
EAL: PCI device 0000:04:00.1 on NUMA socket 0
EAL: probe driver: 8086:10fb net_ixgbe
EAL: PCI device 0000:05:00.0 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:05:00.1 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:82:00.0 on NUMA socket 1
EAL: probe driver: 8086:10fb net_ixgbe
EAL: PCI device 0000:82:00.1 on NUMA socket 1
EAL: probe driver: 8086:10fb net_ixgbe
Port 0 MAC: 90 e2 ba 4a 53 28
Port 1 MAC: 90 e2 ba 4a 53 29
Port 2 MAC: 90 e2 ba 50 8d 68
Port 3 MAC: 90 e2 ba 50 8d 69 WARNING: Too much enabled lcores - App uses only 1 lcore
WARNING, port 2 is on remote NUMA node to polling thread.
Performance will not be optimal.
WARNING, port 3 is on remote NUMA node to polling thread.
Performance will not be optimal. Core 1 forwarding packets. [Ctrl+C to quit] #dut启动EAL,接口p5p2能够监听到p5p1发的包
tester:
[root@dpdk-test37 ~]# scapy
WARNING: No route found for IPv6 destination :: (no default route?)
INFO: Can't import python-cryptography v1.7+. Disabled WEP decryption/encryption.
INFO: Could not import python-cryptography.Computations for the "authenticator" field (RADIUS packets) and"Message-Authenticator" attribute value field are disabled.
Welcome to Scapy (2.3.3.dev623)
>>> sendp([Ether(dst="90:e2:ba:4a:53:28")/IP()/UDP()/Raw('X'*18)], iface="p5p1")
.
Sent 1 packets. [root@dpdk-test37 ~]# tcpdump -i p5p2
tcpdump: WARNING: p5p1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p5p1, link-type EN10MB (Ethernet), capture size 65535 bytes
15:58:56.181060 IP localhost.domain > localhost.domain: 22616 updateDA% [b2&3=0x5858] [22616a] [22616q] [22616n] [22616au][|domain] #dut启动EAL,接口p5p1能够监听到p5p2发的包
[root@dpdk-test37 ~]#
>>> sendp([Ether(dst="90:e2:ba:4a:53:28")/IP()/UDP()/Raw('X'*18)], iface="p5p2")
[root@dpdk-test37 ~]# tcpdump -i p5p1
tcpdump: WARNING: p5p1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p5p1, link-type EN10MB (Ethernet), capture size 65535 bytes
15:58:56.181060 IP localhost.domain > localhost.domain: 22616 updateDA% [b2&3=0x5858] [22616a] [22616q] [22616n] [22616au][|domain] #dut退出启动EAL,接口p5p1无法监听到p5p2发的包
dut:
Ctrl+c to quit
tester:
>>> sendp([Ether(dst="90:e2:ba:4a:53:28")/IP()/UDP()/Raw('X'*18)], iface="p5p2")
[root@dpdk-test37 ~]# tcpdump -i p5p1
tcpdump: WARNING: p5p1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p5p1, link-type EN10MB (Ethernet), capture size 65535 bytes
总结:
#开启EAL:./examples/rxtx_callbacks/build/rxtx_callbacks -c 0x6 -n 4
接口p5p1能够监听到p5p2发的包,监听到p5p1发的包
接口p5p2能够监听到p5p1发的包,监听到p5p2发的包
#关闭EAL:Ctrl+c to quit
接口p5p1能够监听到p5p1发的包,无法监听到p5p2发的包
接口p5p2能够监听到p5p2发的包,无法监听到p5p1发的包
dts--tests(二)的更多相关文章
- Junit 命令行测试 报错:Could not find class 理解及解决方法
一.报错 : 『Could not find class』 下面给出三个示例比较,其中只有第一个是正确的. 1. MyComputer:bin marikobayashi$ java -cp .:./ ...
- [RK3288]PMU配置(RK808)【转】
本文转载自:http://www.javashuo.com/content/p-6398007.html 硬件原理 pmic 电路原理 平台概述 RK808 PWM 介绍 驱动分析 dts 驱动流程 ...
- 【Linux-设备树】.dtb文件的反汇编
在使用设备树时我们将**.dts文件利用dtc编译器编译为**.dtb文件. 在已知**.dtb文件的情况下我们有两种方法可以得到dts源码: 方法一:使用fdtdump工具进行反汇编 使用命令:ro ...
- JCO RFC destination
一:登陆PI的GUI,进入事物SM59,创建T类型RFC destinations如下: AI_RUNTIME_JCOSERVER :used for the mapping runtime, va ...
- Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】
转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...
- Linux dts 设备树详解(二) 动手编写设备树dts
Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 前言 硬件结构 设备树dts文件 前言 在简单了解概念之后,我们可以开始尝试写一个 ...
- Python的单元测试(二)
title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...
- java web学习总结(二十七) -------------------JSP标签介绍
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- 二.Android手机自动化测试真机运行
手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的.在搞定了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例.期间也遇到了不少问题,不过最终还是搞定了,现 ...
随机推荐
- css随堂笔记(二)
css sub注释 注释不能嵌套 sub生成结构代码快捷 复合选择器 1.后代选择器 语法:选择器1 选择器2 选择器3 { 属性名:属性值 } 2.子代选择器 子代选择器语法: 选择器1> ...
- tween.js 插件
1.是什么? jQueryTween是一款轻量级的jQuery补间动画工具库插件.使用jQueryTween可以制作出各种平滑的动画过渡效果.该插件基于tween.js,旨在简化各种补间动画操作,提供 ...
- 【干货】Html与CSS入门学习笔记9-11
九.盒模型 与元素亲密接触 1.盒模型 css将每个元素都看做一个盒子,包括以下属性: 内容区content area:包含内容,内容可以决定大小,也可以自行设定宽度和高度.元素的width属性指定的 ...
- input type="file"获取文件名方法
文件上传比较丑,样式调整时会有一个获取文件名,或者包含文件路径的文件名的方法 html代码 <div class="file-box"> <form id=&qu ...
- 什么是TOPO学
拓扑,一个跟门萨同样古怪的“科技Word”.其定义,对绝大多数读者而言,不一定需要理解,但无妨知道———拓扑学,数学的一门分科,研究几何图形在一对一的双方连续变换下不变的性质.不少门萨题,来自拓扑学, ...
- Android studio 安装与配置【Android学习入门】
终于下定决心认真学习Android开发了. 之前在很多平台看到很多大牛们学习Android的经验和心得,纸上得来终觉浅. 这里推荐stormzhang老师总结的Android学习之路. 为了防止电脑卡 ...
- 2013应届毕业生各大IT公司待遇整理汇总篇(转)
不管是应届毕业生还是职场中人,在找工作时都必然会对待遇十分关注,而通常都是面试到最后几轮才知道公司给出的待遇.如果我们事先就了解大概行情,那么就会在面试之前进行比较,筛选出几个心仪的公司,这样才能集中 ...
- python3基础13(format的使用)
#!/usr/bin/env python# -*- coding:utf-8 -*- from string import Templatedict={'name':'python','age':2 ...
- 笨办法学Python(十九)
习题 19: 函数和变量 函数这个概念也许承载了太多的信息量,不过别担心.只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的. 有一个你可能没有注意到的细节,我们现在 ...
- leetcode:回溯——permutation-sequence,
1. permutation-sequence 顺序排列第k个序列 The set[1,2,3,…,n]contains a total of n! unique permutations. By l ...