如何实现can-金年会金字招牌信誉至上

如何实现can-some/ip通信路由测试
技术干货 2023.09.22

区别于基于udp的车内通信路由,基于some/ip协议的路由增加了服务发现(service discovery)和服务发布(service publish),那对于测试工程师来说,怎么实现can-some/ip路由的测试呢?


01认识路由实现方式


首先要了解基于some/ip协议的路由设计原则,如果功能实现在ethernet节点,则ethernet节点为server,网关为client,如果功能实现在can节点,则网关为server,ethernet节点为client,由网关实现ethernet节点与can节点之间的路由。包括两种路由方式:报文路由和信号路由。

 

如何实现can-some/ip通信路由测试(图1)


那么,can报文和some/ip报文怎么实现对应呢,举个例子:

在以下示例中,通过some/ip header中的serviceid和methodid可以关联到指定的can报文。

如何实现can-some/ip通信路由测试(图2)

其中:

a代表serviceid

b代表busid

c代表can messageid

e用来区分method,或event/notifier 消息

 

报文路由:can报文的payload映射为服务接口的payload。网关实现can和some/ip协议之间的报文路由,不改变数据内容和数据长度。

如何实现can-some/ip通信路由测试(图3)

 

信号路由:服务接口中的参数映射为can报文中的信号。网关实现不同数据类型之间的转换。

 

如何实现can-some/ip通信路由测试(图4)


02了解测试内容


报文路由不涉及信号内容解析,测试输入时可以不加载数据库文件也能完成测试,但是信号路由涉及some/ip接口参数的序列化和反序列化,需要加载数据库进行测试。


常见测试点

通信路由主要测试点包括:检查目标网段、报文类型、messageid、payload length、payload是否正确,路由延迟时间等是否满足要求。

逆向测试的测试点主要有:payload length大于或小于预期,无效id等

稳定性相关的测试点主要有:高负载,反复上下电,反复休眠等

 

以can-->some/ip 报文路由为例,已知某路由信息,测试payload一致性。


路由信息

源网段(can)

目标网段(some/ip)

messageid:0x100

dlc:8

serviceid:0x0001

messagetype:notification

eventgroupid:0x0001

notificationid:0x8100


测试步骤


step1:检查网关是否offer serviceid 0x0001

step2:tester模拟客户端,订阅serviceid为0x0001,eventgroupid为0x0001的事件组,检查网关是否回复对应的subscribeack

step3:在源网段模拟发送can报文,id为0x100,data为01 02 03 04 05 06 07 08,检查是否接收到对应的some/ip报文

step4:检查接收的payload与发送的payload是否一致


03自动化测试解决方案


测试环境

搭建的测试环境要能与dut建立通信,能控制dut上下电和唤醒。可以参考以下的测试拓扑来监控dut的通信,同时仿真tester节点,模拟can和ethernet节点与dut进行通信。该套测试系统由canoe测试软件、vt板卡、vn 5650,vn 16xx,程控电源和dut组成。

 

如何实现can-some/ip通信路由测试(图5)


测试脚本

在上述测试步骤中,tester需要模拟can节点和some/ip服务客户端,测试脚本的开发可基于capl语言和vector提供的someip_il.dll文件,分为以下几个步骤来实现 。


❶ 在tcp/ip stack中,给tester设置ip/mac地址

❷ 模拟发送can报文

❸调用someipopenlocalapplicationendpoint函数,创建一个endpoint

❹ 调用someipcreateconsumedserviceinstance函数,指定serviceid和instanceid

❺ 调用someipaddconsumedeventgroup函数,指定eventgroupid

❻ 调用someipcreatefieldconsumer函数,指定notificationid,以及当接收到此notification报文时的回调

❼ 创建回调函数,当接收到notification报文时,比对payload是否一致


回调函数触发后,数据解析方法示例:

如何实现can-some/ip通信路由测试(图6)


 

测试结果

canoe监控报文以及数据处理结果展示:

如何实现can-some/ip通信路由测试(图7)

 

通过调用someip_il.dll文件,可以实现tester与网关之间的服务发现过程,以及服务接口的接收和调用,进一步达到测试的目的。


some/ip-->can路由的测试原理与上面相似,调用dll文件中的函数,实现模拟服务端的行为,信号路由的测试通过导入some/ip和can数据库文件,可以实现自动化测试。

 

以上就是我们给大家分享的can-some/ip路由测试的相关内容了,任何疑问或是自动化测试需求,都可以随时联系我们噢,感谢大家的阅读~


网站地图