
3.2 虚拟读写器
虚拟读写器是为了降低测试成本, 简化测试工作而开发的, 是整个测试平台的基础。虚拟读写器接受RFID 中间件的轮询, 解析RFID 中间件事件, 并生成标签数据, 发送给RFID 中间件, 实现对读写器的仿真。主要包括以下几个功能模块:参数设置模块: 提供给测试控制台进行虚拟读写器的参数设置的接口, 包括读写器数量、端口、发送数据频率、持续时间、标签数据格式以及启动、关闭虚拟读写器等。该模块接口设计如下:
public interface iReaderEmulatorControl
{
......
public void on();
//打开虚拟读写器
public void off();
//关闭虚拟读写器
public boolean setReaderNumber(int readerNumber); //设置
模拟的读写器数量
public boolean setReaderType(ReaderType tagType);
//设置模拟的读写器类型
public boolean setTagType(TagType tagType);
//设置模拟的标签类型
public boolean setPortRange(int minPort, int maxPort);
//设置虚拟读写器端口号区间
public boolean setTransTime(int mSec);
//设置模拟时间
.......
}
数据发生模块: 根据测试控制台设定的相关参数, 产生符合标准( EPCglobal, ISO15693 等) 的标签数据。
驱动模块: 解析与RFID 中间件的通信协议, 将数据发生模块的数据封装后传递给数据传输模块。该模块是实现虚拟读写器与RFID 中间件通讯的关键, 以ThingMagic Mercury4 为例,使用正则表达式对RFID 中间件的事件进行解析, 设计正则表达式部分如下:
......
Pattern firstCheck = Pattern.compile ("([A- Z]+)([a- zA- Z_]+)(.
*)"); //初始匹配
Pattern selectPatten = Pattern.compile ("SELECT .*? \\(?antenna_
id *= *([0- 9]+)( +OR +antenna_id *=
*([0- 9]+))?( +OR +antenna_id *= *([0- 9]+))?( +OR +antenna_
id *= *([0- 9]+))?\\)?.* time_?out *= *([0- 9]+).*"); //匹配
SELECT 方法
Pattern updatePatten = Pattern.compile ("UPDATE .* SET (.
*?) *= *(0x)?([0- 9A- Fa- f]+).*?
(time_?out *= *([0- 9]+))? WHERE .*antenna_id *= *([0- 9]
+).*"); //匹配update 方法
Pattern antenna_idPatten = Pattern.compile(".* antenna_id *=
*([0- 9]+).*"); //匹配天线id
Pattern idPatten = Pattern.compile (".* WHERE.* id *= *0x
([0- 9A- Fa- f]+).*"); //匹配id
Pattern blockNOPatten = Pattern.compile (".* block_number
*= *([0- 9]+).*"); //匹配标签块号
Pattern blockCountPatten = Pattern.compile (".* block_count
*= *([0- 9]+).*"); //匹配标签块数
......
数据传输模块: 完成与RFID 中间件的通讯。
3.3 虚拟客户端
虚拟客户端与虚拟读写器类似, 除了完成接收测试控制台参数并向RFID 中间件发送操作请求的功能外, 还需要接收RFID 中间件返回数据并记录响应时间。可以分成以下4 个功能模块:
参数设置模块: 提供给测试控制台进行虚拟客户端的参数设置, 包括连接的RFID 中间件IP 地址、端口、测试的Web 服务及并发请求数量等。
事件发生模块: 该模块根据EPCglobal 的ALE(Application Level Event) 标准提供对RFID 中间件的Web Service 调用接口, 由测试控制台根据测试计划进行选择。
监控模块: 监控测试过程中调用RFID 中间件Web Service的响应时间, 并将结果记录到相应的XML 文档。
数据传输模块: 调用RFID 中间件的Web 服务, 接受RFID中间件返回的数据。
3.4 测试控制台
测试控制台是整个RFID 中间件基准性能测试平台的指挥中心。测试控制台根据用户设定的测试需求, 设定自动测试步骤, 控制虚拟读写器和虚拟客户端的运行, 记录系统资源占用情况, 并将所有测试数据汇总, 保存为XML 文档。测试控制台从功能上分为以下几个模块:
用户界面: 提供用户操作界面。
监控模块: 监控每一个测试步骤中系统资源占用情况, 包括CPU、内存。
测试模式设置: 为了最大限度的实现测试自动化, 该模块提供预先定义的测试模式。在测试中, 用户只需要指定所要测试的RFID 中间件( IP 地址、端口等) 以及所要测试的参数(NoR,NoC, Throughput, RT) 。
数据传输模块: 将测试每一步的参数发送给虚拟读写器和虚拟客户端。
3.5 报告生成器
测试的最终目的是将测试结果供人参考, 所以一个直观、易读的测试报告是必要的。报告生成器模块根据测试控制台生成的记录测试数据的XML 文件数据, 生成图形化的测试报告。
4 测试流程
使用RFID 中间件基准性能测试平台对某一种RFID 中间进行基准性能测试的流程大体上可以分为5 个层次, 如图2 所示。

2) 监控运行被测RFID 中间件: 配置完测试参数后运行RFID 中间件, 并对运行过程中的信息进行监控。
3) 测试主体模块: 记录测试过程中每一步的数据。以测试NoR 为例, 每一步需要记录的数据有测试读写器数量、发送数据频率、数据格式、CPU 占用率、内存使用率、应用程序客户端调用的Web 服务、响应时间。
4) 生成记录测试数据的XML 文件: 将测试数据整理后以XML 形式存到指定路径下。
5) 生成图形化测试报告: 这是一个相对比较独立的步骤,用户可以根据需要选择选择需要生成报告的测试数据文件。
5 结束语
RFID 中间件是RFID 系统中非常重要的一部分。RFID 中间件接收并处理读写器发送的数据, 并为上层应用程序客户端提供服务, 大大简化了RFID 系统实施的复杂性。本文针对RFID 中间件的特点, 提出了表征RFID 中间件基准性能的参数及其自动化测试方法, 并给出了测试平台的设计。该测试平台对于企业选择合适的RFID 中间件、推广RFID 技术的应用具有一定的实际价值。
本文作者创新点: 针对RFID 中间件的特性, 提出了衡量其基准性能的参数及其测试方法, 并针对测试需求, 给出了RFID虚拟读写器的设计和实现。
