温 和,唐 涛,马少伟,李宇强
(国家无线电监测中心检测中心,北京 100041)
RMTP协议一致性测试系统设计与实现
温 和,唐 涛,马少伟,李宇强
(国家无线电监测中心检测中心,北京 100041)
无线电监测网传输协议(RMTP)是解决全国联网系统与不同无线电监测设施之间数据传输的规范协议。为本文结合实际工作内容,设计研发了一套RMTP协议一致性测试系统,并对部分监测设施进行了调试分析。
无线电监测;RMTP;协议一致性;测试系统
RMTP协议的发布实施极大的推进了监测系统联网进程,但由于厂家研发能力不同、协议理解不同,在联网过程中还存在一些问题。本文结合实际工作内容,设计研发了一套RMTP协议一致性测试系统(以下简称测试系统),能够验证监测设施RMTP协议的实现情况,进一步规范协议的使用。
测试系统将验证不同的无线电监测设备提供的RMTP标准接口是否符合RMTP协议的规范,测试系统通过模拟协议信令与设备接口的交互,验证消息结构的规范性、消息内容的正确性以及消息流程的完整性,确保RMTP协议所规定的所有功能在该设备接口上得到正确的实现。
测试系统基于正在执行的RMTP1.01版本为依据,涵盖监测指令8项,非监测指令8项。RMTP协议分是客户端(全国联网系统)和服务端(接口程序)模型,对两端都要进行验证,基础测试例需设计实现32个。
图1 系统架构图
3.1 RMTP测试集
RMTP测试集定义了RMTP测试场景(测试用例)、数据类型、消息模板、RMTP组件仿真、组件接口定义。
3.2 编解码器
模块在发送消息时,将TTCN-3定义的消息编码为RMTP协议中定义的网络数据包格式,通过TCP连接进行发送。在接收消息的时,将网络数据包进行解码,还原为TTCN-3数据结构,使之能够在测试用例中对消息结构及数据正确性进行操作,并使日志具有良好的可读性。
3.3 系统适配器与平台适配器
系统及平台适配器为测试用例提供网络通信支持以及操作系统平台的支持,在本系统中支持TCP协议的通信,测试系统采用TCP协议和待测系统进行通信。
3.4 测试过程
测试例子执行启动后,首先由TE(TTCN-3 Executable)控制,重置SA(SUT Adapter)与PA (Platform Adapter)。然后执行测试例,测试例执行时,通过建立端口映射建立RMTP的TCP/IP连接。如图2所示,在建立连接后,TE模拟协议信令进行编码,发送给SUT(待测系统),并启动计时器,用于监控超时。当SUT返回响应指令后,为缓解解码及判定的处理压力,首先将返回的内容加入消息队列,再开始解码,解码后与预先定义的模板进行比对,判定是否通过。测试结束后终止计时器,并解除端口映射。
测试系统的最基本测试单位是测试例testcase,现以固定频率测量(FIXFQ)为例介绍RMTP测试系统的实现过程。
4.1 固定频率测量测试例实现
固定频率测量的测试例TC_Server_FIXFQ中测试系统模拟整个固定频率监测业务的信令过程,以及对接收数据的判定,测试例中每个步骤由一个函数function实现。测试例启动后首先通过已经配置好的收发端口映射map建立与待测系统的TCP连接,之后按照协议要求执行登陆f_client_ login函数,预执行f_client_Pre_Execution函数,接收测试结果f_client_Receive_Result函数,接收设备参数信息f_client_Receive_Device_Info函数,接收数据描述头信息f_client_Receive_Data_ Des函数,然后接收经纬度信息f_client_Receive_ Longitude_Latitude函数,完成经纬度信息的接收后,接收业务数据f_client_Reveive_Business_ Data函数,业务数据接收完毕验证后,停止监测f_ client_Stop,该测试例测试完成后断开TCP连接unmap。如图3所示。
图3
4.2 登陆函数实现
登陆函数f_client_login是每个测试例开始时都要执行的函数,因此定义为公共函数,每个测试例都可以引用调用。登陆函数启动后根据用户配置参数,Rmtp_mtcPort调用send方法发送登陆请求消息,参数是m_RMTP_LoginRequestWithAuth模板,在执行send时再最终发给待测设备之前要根据模板的内容进行编码。登陆请求发送后,启动计时器RmtpClientTimer.start,等待待测系统返回结果,按照协议要求首先返回版本号,将返回的消息解码后,与预先定义的版本号进行比较,如果一致返回成功继续执行,如果不一致返回失败停止测试,如果超时返回警告继续执行。待测设备继续返回第二个消息,待测系统返回OK,测试系统返回成功;待测系统返回REFUSE,测试系统返回失败,超时返回警告。如图4所示。
图2 系统时序图
图4
登陆参数模板定义,参数是m_RMTP_ LoginRequestWithAuth模板,模板中定义了协议为RMTP,类型为验证VERIF,以及消息体,消息体中包含了验证类型,用户名和密码。如图5所示。
图5
4.3 登陆编解码实现
(1)编码。在登陆参数配置完成向待测系统发送前,需要调用EncodeLogin函数对发送的内容按照协议要求”RMTP:VERIF:METHOD=m ethod,USER=userid,PASSWD=password ”的码流进行编码,HEADER_DELIMITER + this. getTextMsgType() + HEADER_DELIMITER执行完sendMsg=“RMTP:VERIF”,"METHOD" + PARAM_IS+method +PARAM_DELIMITER执行完sendMsg=“RMTP:VERIF:METHOD=01,”,"USER" + PARAM_IS + this.getTextMsgBody(). getUser()和"PASSWD" + PARAM_IS + this. getTextMsgBody().getPassword()执行完sendMsg的内容为“RMTP:VERIF:METHOD=01,USER=x xx,PASSWD=xxx ”,该字符串就可以发送至待测系统。如图6所示。
图6
(2)解码。在接到登陆返回的消息后首先进行解码,调用TextMessage的类初始化构造函数将接收到的码流按照协议要求进行拆分,并将内容放到aTxtMsg对象中,最后将aTxtMsg对象中的成员变量的Version值赋给模板里的version,测试系统下一步将对模板中的值与预先定义的校验规则进行比较,验证是否通过。如图7所示。
图7
系统开发完成后针对少量监测接收机进行了抽样调试分析,发现不同厂家对协议的理解还存在一些差异,例如数据包的合并和拆分问题,协议中并没有规定数据包是否可以合并发送,但有的厂家为了减少发送的I/O次数,提高效率,将数据量较小的包合并在一起发送,也有将较大的数据包拆分成多个包进行发送。这就造成在控制中心得到的数据包有的是分开的,有的是合并的,得到的数据并不是一致的,影响系统的互联互通。
[1] 国家无线电监测中心.无线电监测网传输协议(RMTP)V1.01,2008.7
[2] 董宏成.TTCN-3在RRC协议一致性测试中的应用.电子技术应用,2013.7
[3] 曹丽君.浅谈我国无线电监测工作的现状与发展前景.数字化用户,2014.8
[4] 张有鹏.基于RMTP协议的无线电监测台站互连技术研究.现代电子技术,2014.3
RMTP Protocol Conformance Testing System Design and Implementation
Wen He, Tang Tao, Ma Shaowei, Li Yuqiang
(The State Radio_monitoring_center Testing Center, Beijing, 100041)
The Radio Monitoring Transfer Protocol(RMTP) is to solve the network system and the standard Protocol of data transmission between different Radio Monitoring facilities.We design and develop a set of RMTP protocol conformance testing system, and analyze a part of the monitoring facilities.
Radio monitoring; RMTP; Protocol conformance; Testing system
10.3969/J.ISSN.1672-7274.2016.07.006
TN98 文献标示码:A
1672-7274(2016)07-0015-03