1 引言
RFID是自動識別技術中的一種, 它利用射頻方式進行非接觸雙向通信以達到識別的目的。RFID 技術由于其獨有的優(yōu)點,吸引力與日俱增。出于對市場前景的預期和簡化RFID 系統(tǒng)建設、維護工作的需求, 一些大的軟件公司( 如IBM, BEA, Microsoft等) 相繼推出了各自的RFID 中間件產(chǎn)品。
RFID 中間件扮演的是RFID 讀寫器和應用程序之間的中介角色, 從應用程序端使用中間件提供的一組共通的ApplicationInterface (應用接口程序, API), 即能連到RFID 解讀器, 讀取RFID 標簽資料。如此一來, 即使儲存RFID 標簽情報的資料庫軟件或后端應用程序增加或改由其他軟件取代, 或者RFID解讀器種類增加等情況發(fā)生, 應用端不需要修改也能處理, 省去多對多連結復雜維護的麻煩。
出于對RFID 中間件的重視, 為企業(yè)在實施RFID 系統(tǒng)時選擇RFID 中間件產(chǎn)品提供參考, 有必要對RFID 中間件的性能進行測試。性能測試包括中間件處理下層讀寫器數(shù)據(jù)和支持上層應用程序調用的能力?,F(xiàn)有的性能測試工具( 如LoadRunner, JMeter, Benchmark Factory 等) 存在著測試對象單一、測試結果不易比較等問題, 并不能滿足測試的需要, 這就需要一套針對RFID 中間件基準性能的測試方法和測試平臺。
2 參數(shù)選取及其測試方法
對于RFID 中間件的使用者而言, 關心的無外乎以下幾個方面: 支持的讀寫器; 提供的應用程序接口; 并發(fā)處理的讀寫器數(shù)量、應用程序客戶端數(shù)量; 吞吐量; 響應時間。對于一定的應用環(huán)境, 前兩個是能不能使用的問題, 而后四個是使用效果的問題, 也就是本文所論述的基準性能問題。下文分別就這四個基準性能參數(shù)作了解釋, 并給出了測試方法。
并發(fā)處理的讀寫器數(shù)量( NoR, Number of Readers) : 在一定的系統(tǒng)開銷和應用程序客戶端響應時間限制下, RFID 中間件能夠同時處理的讀寫器數(shù)量。這里的讀寫器是指與RFID 中間件相連接, 且同時向RFID 中間件以一定的頻率發(fā)送標簽數(shù)據(jù)的讀寫器。在測試過程中, 監(jiān)控系統(tǒng)資源占用( cpu 和內(nèi)存使用率) 和應用程序客戶端響應時間, 逐步增加發(fā)送數(shù)據(jù)的讀寫器數(shù)量, 當系統(tǒng)資源占用和響應時間達到限制值時, 就得到了NoR。
并發(fā)處理的應用程序客戶端數(shù)量(NoC, Number of Clients) : 在一定的系統(tǒng)開銷和應用程序客戶端平均響應時間限制下, RFID 中間件能夠同時處理發(fā)送操作請求的客戶端數(shù)量。測試方法與NoR 類似, 通過監(jiān)控系統(tǒng)資源占用和應用程序客戶端平均響應時間, 逐步增加發(fā)送操作請求客戶端數(shù)量, 當系統(tǒng)資源占用和平均響應時間達到限制值時, 就得到了NoC。吞吐量( Throughput) : 在一定的系統(tǒng)開銷和客戶端響應時間要求下, RFID 中間件能夠處理的讀寫器端發(fā)送標簽數(shù)據(jù)的頻率。類似的, 通過監(jiān)控系統(tǒng)資源占用和應用程序客戶端響應時間, 逐步增加讀寫器發(fā)送數(shù)據(jù)的頻率, 當系統(tǒng)資源占用和平均響應時間達到限制值時, 就得到了Throughput。
響應時間(RT, Response Time) : 應用程序客戶端發(fā)送事件請求到RFID 中間件完成操作的時間間隔。測試方法相對簡單,只需要通過應用程序客戶端發(fā)送需要測試的操作請求, 記錄其響應時間即可。
3 RFID 中間件基準性能測試平臺
對RFID 中間件的測試涉及到兩方面的測試數(shù)據(jù)來源: 讀寫器端的標簽數(shù)據(jù)和應用程序客戶端的操作請求。使用實際的讀寫器和應用程序進行測試面臨兩方面的問題: 1) 測試工作需要大量的讀寫器設備, 這需要大量的資金; 2) 搭建這么多設備所組成的測試環(huán)境, 工作量將極其巨大、復雜。一個切實有效的解決辦法就是通過軟件對讀寫器和應用程序進行仿真, 由虛擬讀寫器(Virtual Reader) 和虛擬客戶端(Virtual Client) 向RFID中間件發(fā)送測試數(shù)據(jù)。
3.1 總體框架
基于虛擬讀寫器和虛擬客戶端的RFID 中間件基準性能測試平臺分為以下四個模塊:
1) 虛擬讀寫器: 對讀寫器進行仿真, 生成標簽數(shù)據(jù), 與RFID 中間件進行通信。
2) 虛擬客戶端: 生成對RFID 中間件的操作請求, 并記錄響應時間。
3) 測試控制臺: 根據(jù)測試模式控制虛擬讀寫器和虛擬客戶端的運行, 監(jiān)視系統(tǒng)資源占用情況, 記錄測試數(shù)據(jù)。
4) 報告生成器: 由測試數(shù)據(jù)生成圖形化測試報告。
3.2 虛擬讀寫器
虛擬讀寫器是為了降低測試成本, 簡化測試工作而開發(fā)的, 是整個測試平臺的基礎。虛擬讀寫器接受RFID 中間件的輪詢, 解析RFID 中間件事件, 并生成標簽數(shù)據(jù), 發(fā)送給RFID 中間件, 實現(xiàn)對讀寫器的仿真。主要包括以下幾個功能模塊:參數(shù)設置模塊: 提供給測試控制臺進行虛擬讀寫器的參數(shù)設置的接口, 包括讀寫器數(shù)量、端口、發(fā)送數(shù)據(jù)頻率、持續(xù)時間、標簽數(shù)據(jù)格式以及啟動、關閉虛擬讀寫器等。該模塊接口設計如下:
public interface iReaderEmulatorControl
{
......
public void on();
//打開虛擬讀寫器
public void off();
//關閉虛擬讀寫器
public boolean setReaderNumber(int readerNumber); //設置
模擬的讀寫器數(shù)量
public boolean setReaderType(ReaderType tagType);
//設置模擬的讀寫器類型
public boolean setTagType(TagType tagType);
//設置模擬的標簽類型
public boolean setPortRange(int minPort, int maxPort);
//設置虛擬讀寫器端口號區(qū)間
public boolean setTransTime(int mSec);
//設置模擬時間
.......
}
數(shù)據(jù)發(fā)生模塊: 根據(jù)測試控制臺設定的相關參數(shù), 產(chǎn)生符合標準( EPCglobal, ISO15693 等) 的標簽數(shù)據(jù)。
驅動模塊: 解析與RFID 中間件的通信協(xié)議, 將數(shù)據(jù)發(fā)生模塊的數(shù)據(jù)封裝后傳遞給數(shù)據(jù)傳輸模塊。該模塊是實現(xiàn)虛擬讀寫器與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]+).*"); //匹配標簽塊數(shù)
......
數(shù)據(jù)傳輸模塊: 完成與RFID 中間件的通訊。
3.3 虛擬客戶端
虛擬客戶端與虛擬讀寫器類似, 除了完成接收測試控制臺參數(shù)并向RFID 中間件發(fā)送操作請求的功能外, 還需要接收RFID 中間件返回數(shù)據(jù)并記錄響應時間??梢苑殖梢韵? 個功能模塊:
參數(shù)設置模塊: 提供給測試控制臺進行虛擬客戶端的參數(shù)設置, 包括連接的RFID 中間件IP 地址、端口、測試的Web 服務及并發(fā)請求數(shù)量等。
事件發(fā)生模塊: 該模塊根據(jù)EPCglobal 的ALE(Application Level Event) 標準提供對RFID 中間件的Web Service 調用接口, 由測試控制臺根據(jù)測試計劃進行選擇。
監(jiān)控模塊: 監(jiān)控測試過程中調用RFID 中間件Web Service的響應時間, 并將結果記錄到相應的XML 文檔。
數(shù)據(jù)傳輸模塊: 調用RFID 中間件的Web 服務, 接受RFID中間件返回的數(shù)據(jù)。
3.4 測試控制臺
測試控制臺是整個RFID 中間件基準性能測試平臺的指揮中心。測試控制臺根據(jù)用戶設定的測試需求, 設定自動測試步驟, 控制虛擬讀寫器和虛擬客戶端的運行, 記錄系統(tǒng)資源占用情況, 并將所有測試數(shù)據(jù)匯總, 保存為XML 文檔。測試控制臺從功能上分為以下幾個模塊:
用戶界面: 提供用戶操作界面。
監(jiān)控模塊: 監(jiān)控每一個測試步驟中系統(tǒng)資源占用情況, 包括CPU、內(nèi)存。
測試模式設置: 為了最大限度的實現(xiàn)測試自動化, 該模塊提供預先定義的測試模式。在測試中, 用戶只需要指定所要測試的RFID 中間件( IP 地址、端口等) 以及所要測試的參數(shù)(NoR,NoC, Throughput, RT) 。
數(shù)據(jù)傳輸模塊: 將測試每一步的參數(shù)發(fā)送給虛擬讀寫器和虛擬客戶端。
3.5 報告生成器
測試的最終目的是將測試結果供人參考, 所以一個直觀、易讀的測試報告是必要的。報告生成器模塊根據(jù)測試控制臺生成的記錄測試數(shù)據(jù)的XML 文件數(shù)據(jù), 生成圖形化的測試報告。
4 測試流程
使用RFID 中間件基準性能測試平臺對某一種RFID 中間進行基準性能測試的流程大體上可以分為5 個層次, 如圖2 所示。
2) 監(jiān)控運行被測RFID 中間件: 配置完測試參數(shù)后運行RFID 中間件, 并對運行過程中的信息進行監(jiān)控。
3) 測試主體模塊: 記錄測試過程中每一步的數(shù)據(jù)。以測試NoR 為例, 每一步需要記錄的數(shù)據(jù)有測試讀寫器數(shù)量、發(fā)送數(shù)據(jù)頻率、數(shù)據(jù)格式、CPU 占用率、內(nèi)存使用率、應用程序客戶端調用的Web 服務、響應時間。
4) 生成記錄測試數(shù)據(jù)的XML 文件: 將測試數(shù)據(jù)整理后以XML 形式存到指定路徑下。
5) 生成圖形化測試報告: 這是一個相對比較獨立的步驟,用戶可以根據(jù)需要選擇選擇需要生成報告的測試數(shù)據(jù)文件。
5 結束語
RFID 中間件是RFID 系統(tǒng)中非常重要的一部分。RFID 中間件接收并處理讀寫器發(fā)送的數(shù)據(jù), 并為上層應用程序客戶端提供服務, 大大簡化了RFID 系統(tǒng)實施的復雜性。本文針對RFID 中間件的特點, 提出了表征RFID 中間件基準性能的參數(shù)及其自動化測試方法, 并給出了測試平臺的設計。該測試平臺對于企業(yè)選擇合適的RFID 中間件、推廣RFID 技術的應用具有一定的實際價值。
本文作者創(chuàng)新點: 針對RFID 中間件的特性, 提出了衡量其基準性能的參數(shù)及其測試方法, 并針對測試需求, 給出了RFID虛擬讀寫器的設計和實現(xiàn)。