当前位置: 首页 > news >正文

基于DDS的SOA测试方案实现

随着以太网技术在车载网络中的应用,各种基于以太网的中间件也相继被应用在车内,如果对车载网络有过相关了解的小伙伴,对于作为中间件之一的DDS(数据分发服务Data Distribution Service)可能并不陌生;若没有接触过可以参考先前的文章《分布式实时通信——DDS技术》、《一文轻松了解DDS实时传输协议及其消息格式》,可从整体上对DDS有初步了解。

伴随DDS技术研究的深入以及在SOA中的应用,对基于DDS的SOA测试也被提上日程,本文主要结合一些项目的实际需求,探讨一种基于DDS的SOA测试实现方案

测试介绍

测试范围

基于DDS的SOA测试有标准协议层面的测试,也有自定义层面的测试,标准协议的测试能够验证协议本身在具体实现上是否符合标准中定义,自定义的测试能够进一步验证基于DDS的SOA功能实现是否符合企业要求。

在当前测试方案中,为满足实际的SOA功能需求,主要关注的测试点在两个方面:

1)协议一致性测试

RTPS协议的一致性

图 1 模型架构

(图片来源于Fast DDS官网:https://www.eprosima.com)

2)功能测试

· 服务的发布订阅测试

· 接口和参数测试

· 压力测试

· 系统测试

· 性能测试

……

测试方案

本方案中,主要涉及的软硬件如下:

仿真节点:基于eProsima公司的Fast DDS来实现,与被测节点间进行通信交互。

硬件:Vector公司的VN系列设备和VT系统,VN设备实现通信数据监测,VT系统实现DUT的供电控制及I/O信号仿真等。

软件:Vector公司的CANoe,使用CANoe的Test Module模块进行测试脚本的搭建与执行。

图 2 总体框架

CANoe通过socket将测试数据发送到DDS仿真节点,仿真节点接收到数据后,通过RTPS协议将数据发送到DDS被测节点;被测节点在接收到数据并处理后,会将处理的结果通过RTPS协议传输给仿真节点,仿真节点再将接收到的结果通过socket发送至CANoe,通过此过程可以对通信交互的行为和返回的结果等进行测试验证,以实现对被测节点的测试。

图 3 策略实现

模块剖析

1.Fast DDS仿真节点实现

Fast DDS是一种开源的DDS标准实现,基于C++语言开发,由eProsima公司发布并维护,在本方案中利用Fast DDS来实现仿真节点的设置,以便能够与被测节点进行直接的DDS通信交互。在Fast DDS实现中,需要对使用的实体等进行创建并设置。

图 4 Fast DDS实现

2.CANoe接口实现

CANoe在本方案中的主要作用是实现对Fast DDS仿真节点的控制,包括数据发送和返回结果接收等,并结合实际的测试用例需求完成对应测试逻辑的实现。在实际开发中,利用CANoe的Test Module模块编写测试脚本,通过socket调用的方式来完成本部分的功能。

图 5 CANoe接口实现

结果展示

基于如上方案开展测试仿真,在终端内可以看到运行的结果。

图 6 结果展示

本文主要结合实际的项目需求探讨了一种基于DDS的SOA测试实现方案,对涉及的测试范围以及在方案实施上的策略和模块等进行了介绍。

实际基于DDS的SOA应用中,根据不同的功能需求对测试的覆盖度要求也会有所不同,为更好展示本方案在基于DDS的SOA测试方面的功能实现,后续将在本文基础上对测试用例开发、脚本实现等做进一步介绍,敬请期待!

相关文章:

基于DDS的SOA测试方案实现

随着以太网技术在车载网络中的应用,各种基于以太网的中间件也相继被应用在车内,如果对车载网络有过相关了解的小伙伴,对于作为中间件之一的DDS(数据分发服务Data Distribution Service)可能并不陌生;若没有…...

LibTorch中Windows系统环境配置及CUDA不可用问题解决

前言:本文对在Windows系统上进行LibTorch开发环境配置及相关问题解决做一个较为详细的记录,以便后续查询使用。 使用环境版本: Windows 11 Visual Studio 2022 CUDA 12.0 LibTorch 1.13.1_cu11.7 目录一、LibTorch简介二、LibTorch下载安装三…...

Java并发编程实战二

线程间的通讯方式 1.volitate(缓存一致性协议),synchronize,lock(都保证可见性) 2.wait.notify,await(),signal(前两个是Object,后两个属于lock) 3.管道输入、输出流 (示例代码:PipeInOut.java)(目前几乎没人使用) 管道输入/输…...

Linux中最基本的命令ls的用法有哪些?

Linux是一种流行的操作系统,被广泛应用于服务器和个人电脑。Linux命令行界面是使用Linux操作系统的关键。其中一个最基本的命令是"ls"命令,该命令用于列出指定目录中的所有文件和子目录。在这篇文章中,我们将探讨ls命令及其各种用途…...

第 100002(十万零二)个素数是多少?

题目描述 素数就是不能再进行等分的整数。比如7,11。而 9 不是素数,因为它可以平分为 3 等份。一般认为最小的素数是2,接着是 3,5,... 请问,第 100002(十万零二)个素数是多少? 请注意&#xff1…...

Lua迭代器

Lua迭代器 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。 在 Lua 中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。 泛型 f…...

同步与互斥之信号量

目录 1、信号量用于线程的互斥 验证 2、信号量用于线程的同步 验证 3、无名信号量用于进程间互斥 代码一 代码二 验证 4、有名信号量 用于进程间同步和互斥 验证 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它…...

如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

本文系 NebulaGraph Community Academic 技术文档工程师 Abby 的参会观感,讲述了她在中国技术传播大会分享的收获以及感悟。 据说,技术内容领域、传播领域的专家和决策者们会在中国技术传播大会「tcworld China 2022」大会上分享心得。作为一名技术文档工…...

如何学习k8s

学习Kubernetes可以遵循以下步骤: 了解Kubernetes的基本概念和架构。学习Kubernetes前,需要了解它的基本概念和组成部分,包括Pod、Service、ReplicaSet、Deployment、Namespace等等,同时也需要了解Kubernetes的整体架构和工作原理…...

【SSM】MyBatis(十.动态sql)

文章目录1.if2.where3.trim4.set5. choose when otherwise6.foreach6.1 批量删除6.2 批量增加7.sql1.if <select id"selectByMultiCondition" resultType"Car">select * from t_car where 1 1<if test"brand ! null and brand ! ">…...

最近很多人都在说 “前端已死”,讲讲我的看法

转自 : 掘金 作者 : Ethan_Zhou 现状 我记得去年脉脉的论调还都是 客户端已死&#xff0c;前后端还都是一片祥和&#xff0c;有秀工资的&#xff0c;有咨询客户端转前端的&#xff0c;怎么最近打开脉脉一看&#xff0c;风向变了&#xff1f; 随便刷几下&#xff0c;出来的信息…...

大家好,我是火旺技术

大家好&#xff0c;我是火旺技术 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用。这其中&#xff0c;家乡特色推荐的网络应用已经成为外国家乡推荐系统的一种很普遍的方式。不过&#xff0c;在国内&#xff0c;管理网站可能还处于起步阶段。 …...

【Java并发编程系列】全方位理解多线程几乎包含线程的所有操作哦

文章目录一、概述及目录二、实现多线程的方式2.1 继承Tread类&#xff0c;重写run方法。start方法2.2 实现Runnable方法&#xff0c;并实现run接口方法2.3 实现Callable接口重写call方法&#xff0c;Feature.get()获取返回值三、线程的执行流程3.1 执行流程3.2 start方法和 run…...

天宝S6测量机器人/天宝S6全站仪参数/教程/Trimble 天宝全站仪

TRIMBLE DR PLUS技术 Trimble DR Plus™距离测量技术实现更大范围的直接反射测量&#xff0c;不使用棱镜也能进行长距离测量。难以抵达或不安全的测 量目标&#xff0c;对Trimble S6来说不再是问题。Trimble DR Plus结合 了MagDrive™磁驱伺服技术&#xff0c;使测量的快捷和…...

c++基础知识汇总

目录 1、基础 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型&#xff08;浮点型&#xff09; 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 1、基础 1.2 注释 作用&a…...

重磅!基于GPT-4的全新智能编程助手 GitHub Copilot X 来了!

GitHub Copilot相信大家一定不陌生了&#xff0c;强大的智能代码补全功能一度让媒体直呼程序员要被替代。随着OpenAI推出全新的GPT-4&#xff0c;GitHub Copilot也在3月22日&#xff0c;推出了全新一代产品&#xff1a;GitHub Copilot X 。最新的GitHub Copilot X 不仅可以自动…...

第04章_运算符

第04章_运算符 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公…...

Excel 文件比较工具:xlCompare 11.0 Crack

&#xff08;Excel 文件比较工具&#xff09;xlCompare 11.0 下载并安装最新版本的 xlCompare。下载是一个功能齐全的版本。 筛选匹配的行 筛选不同的行 仅显示两个 Excel 文件中存在的行&#xff0c;并排除新&#xff08;已删除&#xff09;行 隐藏在另一张工作表上具有相应行…...

802.1x认证原理

802.1x认证原理802.1X认证简介802.1X认证协议802.1X认证流程802.1X认证简介 定义&#xff1a;802.1x协议是一种基于端口的网络接入控制协议。基于端口的网络接入控制&#xff0c;是指在局域网接入设备的端口这一级验证用户身份&#xff0c;并且控制其访问权限。优点&#xff1…...

GPIO的八种模式分析

GPIO是general purpose input output,即通用输入输出端口&#xff0c;作用是负责外部器件的信息和控制外部器件工作。 GPIO有如下几个特点&#xff1a;1.不同型号的IO口数量不同&#xff1b;2&#xff0c;反转快速&#xff0c;每次翻转最快只需要两个时钟周期&#xff0c;以ST…...

携职教育:财会人常用必备,203个EXCEL快捷键汇总

会用快捷键的人早下班&#xff01; 作为财务人员如果你想要提高工作效率&#xff0c;不掌握一些Excel快捷键怎么行&#xff1f; 老板看见了&#xff0c;也会赞一声&#xff0c;“看&#xff0c;这就是专业。” 立马给你加薪&#xff08;划掉&#xff09;&#xff0c;工作效率这…...

【美赛】2023年ICM问题Z:奥运会的未来(思路、代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

CSS基础入门

CSS基础之语法 介绍 ​CSS&#xff08;层叠样式表&#xff09;是一门用来设计网页样式的语言&#xff0c;如网页的布局、字体、颜色搭配、视觉特效。作为WEB开发的基础技术之一&#xff0c;掌握CSS的语法和API对于我们构建丰富的网页是必须的。 基础语法 <style>div …...

可重入锁、读写锁、邮戳锁 详解

文章目录1、可重入锁&#xff08;递归锁&#xff09;2、读写锁2.1、读写分离2.2、从写锁到读锁&#xff0c;ReentrantReadWriteLock可以降级2.3、写锁和读锁是互斥的3、邮戳锁StampedLock3.1、是什么3.2、锁饥饿3.3、如何缓解锁饥饿问题呢3.3.1、使用“公平”策略3.3.2、Stampe…...

HBase客户端、服务器端、列簇设计、HDFS相关优化,HBase写性能优化切入点,写异常问题检查点

HBase客户端、服务器端、列簇设计、HDFS相关优化&#xff0c;HBase写性能优化切入点&#xff0c;写异常问题检查点HBase读优化1.1 HBase客户端优化1) scan缓存是否设置合理&#xff1f;2) get请求是否可以使用批量请求&#xff1f;3) 请求是否可以显示指定列簇或者列&#xff1…...

DINO-DETR在COCO缩减数据集上实验结果分析

博主在进行DINO-DETR模型实验时&#xff0c;使用缩减后的COCO数据集进行训练&#xff0c;发现其mAP值只能达到0.27作用&#xff0c;故而修改了下pycocotool的代码&#xff0c;令其输出每个类别的AP值&#xff0c;来看看是由于什么原因导致这个问题。 之所以这样是因为博主认为各…...

语聊房app源码及架构设计

语音社交产品技术架构设计 语音社交产品的技术架构设计是产品开发中非常重要的一环。在设计时需要考虑产品的功能、性能、可靠性等多个方面&#xff0c;同时也需要与产品策划与设计相协调。以下是语音社交产品技术架构设计的主要内容。 架构设计原则 在设计语音社交产品的技…...

什么是软件测试?5分钟带你快速了解!

经常有人问我&#xff0c;你的公司是做什么的&#xff1f;我回答“软件测试”&#xff0c;看着对方一脸的迷茫。何为软件测试&#xff1f;软件测试究竟测试什么&#xff1f;一、软件测试的定义和意义软件测试是伴随着软件工程的重要组成部分&#xff0c;是软件质量保证的重要前…...

[3D游戏开发实践] Cocos Cyberpunk 源码解读-手把手教你新增一个后效Shader

Cocos Cyberpunk 是 Cocos 引擎官方团队以展示引擎重度 3D 游戏制作能力&#xff0c;提升社区学习动力而推出的完整开源 TPS 3D游戏&#xff0c;支持 Web, IOS, Android 多端发布。 本系列文章将从各个方面对源码进行解读&#xff0c;提升大家的学习效率。希望能够帮助大家在 …...

构建产品帮助中心,促进SaaS企业的进步

长期来看&#xff0c;保留现有客户比获取新客户更为关键&#xff0c;因此建立良好的客户服务质量需要着重关注客户心理状态。 什么是 SaaS SaaS是软件即服务&#xff08;Software as a Service&#xff09;的缩写。它是一种软件交付模式&#xff0c;其中软件应用程序托管在云计…...