1 引言
RFID是自動識別技術中的一種, 它利用射頻方式進行非接觸雙向通信以達到識別的目的。RFID 技術由于其獨有的優點,吸引力與日俱增。出于對市場前景的預期和簡化RFID 系統建設、維護工作的需求, 一些大的軟件公司( 如IBM, BEA, Microsoft等) 相繼推出了各自的RFID 中間件產品。
RFID 中間件扮演的是RFID 讀寫器和應用程序之間的中介角色, 從應用程序端使用中間件提供的一組共通的ApplicationInterface (應用接口程序, API), 即能連到RFID 解讀器, 讀取RFID 標簽資料。如此一來, 即使儲存RFID 標簽情報的資料庫軟件或后端應用程序增加或改由其他軟件取代, 或者RFID解讀器種類增加等情況發生, 應用端不需要修改也能處理, 省去多對多連結復雜維護的麻煩。
出于對RFID 中間件的重視, 為企業在實施RFID 系統時選擇RFID 中間件產品提供參考, 有必要對RFID 中間件的性能進行測試。性能測試包括中間件處理下層讀寫器數據和支持上層應用程序調用的能力?,F有的性能測試工具( 如LoadRunner, JMeter, Benchmark Factory 等) 存在著測試對象單一、測試結果不易比較等問題, 并不能滿足測試的需要, 這就需要一套針對RFID 中間件基準性能的測試方法和測試平臺。
2 參數選取及其測試方法
對于RFID 中間件的使用者而言, 關心的無外乎以下幾個方面: 支持的讀寫器; 提供的應用程序接口; 并發處理的讀寫器數量、應用程序客戶端數量; 吞吐量; 響應時間。對于一定的應用環境, 前兩個是能不能使用的問題, 而后四個是使用效果的問題, 也就是本文所論述的基準性能問題。下文分別就這四個基準性能參數作了解釋, 并給出了測試方法。
并發處理的讀寫器數量( NoR, Number of Readers) : 在一定的系統開銷和應用程序客戶端響應時間限制下, RFID 中間件能夠同時處理的讀寫器數量。這里的讀寫器是指與RFID 中間件相連接, 且同時向RFID 中間件以一定的頻率發送標簽數據的讀寫器。在測試過程中, 監控系統資源占用( cpu 和內存使用率) 和應用程序客戶端響應時間, 逐步增加發送數據的讀寫器數量, 當系統資源占用和響應時間達到限制值時, 就得到了NoR。
并發處理的應用程序客戶端數量(NoC, Number of Clients) : 在一定的系統開銷和應用程序客戶端平均響應時間限制下, RFID 中間件能夠同時處理發送操作請求的客戶端數量。測試方法與NoR 類似, 通過監控系統資源占用和應用程序客戶端平均響應時間, 逐步增加發送操作請求客戶端數量, 當系統資源占用和平均響應時間達到限制值時, 就得到了NoC。吞吐量( Throughput) : 在一定的系統開銷和客戶端響應時間要求下, RFID 中間件能夠處理的讀寫器端發送標簽數據的頻率。類似的, 通過監控系統資源占用和應用程序客戶端響應時間, 逐步增加讀寫器發送數據的頻率, 當系統資源占用和平均響應時間達到限制值時, 就得到了Throughput。
響應時間(RT, Response Time) : 應用程序客戶端發送事件請求到RFID 中間件完成操作的時間間隔。測試方法相對簡單,只需要通過應用程序客戶端發送需要測試的操作請求, 記錄其響應時間即可。
3 RFID 中間件基準性能測試平臺
對RFID 中間件的測試涉及到兩方面的測試數據來源: 讀寫器端的標簽數據和應用程序客戶端的操作請求。使用實際的讀寫器和應用程序進行測試面臨兩方面的問題: 1) 測試工作需要大量的讀寫器設備, 這需要大量的資金; 2) 搭建這么多設備所組成的測試環境, 工作量將極其巨大、復雜。一個切實有效的解決辦法就是通過軟件對讀寫器和應用程序進行仿真, 由虛擬讀寫器(Virtual Reader) 和虛擬客戶端(Virtual Client) 向RFID中間件發送測試數據。
3.1 總體框架
基于虛擬讀寫器和虛擬客戶端的RFID 中間件基準性能測試平臺分為以下四個模塊:
1) 虛擬讀寫器: 對讀寫器進行仿真, 生成標簽數據, 與RFID 中間件進行通信。
2) 虛擬客戶端: 生成對RFID 中間件的操作請求, 并記錄響應時間。
3) 測試控制臺: 根據測試模式控制虛擬讀寫器和虛擬客戶端的運行, 監視系統資源占用情況, 記錄測試數據。
4) 報告生成器: 由測試數據生成圖形化測試報告。
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 中間件返回數據并記錄響應時間??梢苑殖梢韵? 個功能模塊:
參數設置模塊: 提供給測試控制臺進行虛擬客戶端的參數設置, 包括連接的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虛擬讀寫器的設計和實現。