淺析 LoadRunner的Socket指令碼關聯小技巧
我們在socket指令碼除錯的時候經常會遇到很多問題,比如:socket包中繁雜的二進位制編碼,socket資料如何進行擷取,如何對socket資料包進行引數化等等,以下幾點內容是近期我在除錯新加坡MTL專案中socket程式碼的一些經驗,希望對各位以後進行socket指令碼除錯時能有所幫助。
此次MTL專案中的SE評測場景,其實與愛吼網的評測場景比較接近,對於此類專案的效能測試,通過HTTP協議時無法完成的,我們只有通過Socket指令碼來實現。
在做效能測試的時候,“關聯”是必不可少的,在WEB系統中,我經常採用LR函式:web_reg_save_param()來完成,但web型別的函式在Socket協議中是無法使用的,那麼我們怎麼來進行Socket協議的關聯呢?
1. 查詢關聯資料
在Socket錄製協議的指令碼“action”中是看不到客戶端所傳送的資料的,所有客戶端與服務端互動的資料,都儲存在data.ws中:
那麼,我們必須要在data.ws中找到我們需要關聯的資料,根據系統設計,SE評測傳送音訊資料時,服務端會先返回給客戶端一個Evalinstance,這是一個表示評測例項的ID,後面在進行音訊資料傳輸的時候,需要帶上這個ID,那麼我們先搜尋一下這個ID:
在buf3中,我們發現了這個Evalinstance。(recv代表的接受的包,send代表的是傳送包)
我們需要儲存這個ID,以便後面傳送音訊資料使用。
2. 儲存關聯資料
在buf3中,我們找到了我們所需要的資料,如何儲存?
回到action中,找到lrs_receive("socket0", "buf3", LrsLastArg);語句,這條語句表示客戶端接受buf3資料包,而資料包的內容就是我們剛才在data.ws中看到的內容。在這條語句時候,我們需要新增函式進行資料儲存:
lrs_save_searched_string("socket0", NULL, "evalid", "LB=SimpleEngineTest/", "RB=\"", 1,0,-1);
這個函式的用法基本與web_reg_save_param()類似,一樣是通過左右邊界來進行資料查詢,函式的8個引數依次代表:“socket執行緒名”、“buf名稱”(這裡傳NULL表示從上面一個buf取值)、“引數名稱”(需要將資料儲存的引數名稱)、“左邊界”、“右邊界”、“第幾次出現”、“位移的數量”、“引數的長度”。執行緒名和buf名一定不可以傳錯,最後三個資料只要傳(1 , 0,-1)就可以了。
在socket協議中,關聯資料儲存也可以用函式lrs_save_param(),這裡不作說明,每個函式都其優點,適當的時候也可以採用。需要注意的是web_reg_save_param()需要放在請求之前,lrs_save_searched_string()是放在接受之後。
3. 引數替換
儲存引數之後,我們需要對data.ws中傳送的資料包,進行下全域性替換,將用到Evalinstance的地方全部替換成 “evalid”引數:
在socket包中,引數需要用“<>”來表示。
最後,再介紹1個socket函式:lrs_set_receive_option()使用這個函式可以防止回放指令碼receive出現一些相關問題。
lrs_set_receive_option(EndMarker, EndMarker_None ) //讀取直到緩衝結束。
lrs_set_receive_option(EndMarker, StringTerminator , "\r\n") //讀取直到"\r\n"符號出現.你可以根據自己的接收資料的結束符修改。
lrs_set_receive_option(EndMarker, BinaryStringTerminator , "\\X00")讀取直到二進位制符號"\\X00"出現。
總之,Socket指令碼除錯問題比較多,也不是一兩句話說的完的,網上一些資料多是“去頭斷尾”,要麼是“藥不對症”。這裡僅是就socket的關聯給大家做個介紹,希望這篇文章對大家有所幫助,同時也希望各位將自己的一些經驗拿出來共享。
相關推薦
淺析 LoadRunner的Socket指令碼關聯小技巧
我們在socket指令碼除錯的時候經常會遇到很多問題,比如:socket包中繁雜的二進位制編碼,socket資料如何進行擷取,如何對socket資料包進行引數化等等,以下幾點內容是近期我在除錯新加坡MTL專案中socket程式碼的一些經驗,希望對各位以後進行socket指
一個Shell指令碼裝逼的小技巧,讓指令碼屏顯酷炫起來
在我們腦海裡,Shell指令碼執行在Putty/Xshell裡也就是黑白的字元,但今天小編整理了一個可以快速讓你讓Sehll指令碼的列印屏顯酷炫起來,下面這條命令: echo -e “\033[44;37;5m So Cool! \033[0m” 執行後,打印出來的效果是這樣的,是不是覺得逼格滿滿?
Java基礎小技巧回顧--淺析String
《Java特種兵 (上冊)》 關於本書的一些資料: 如果對此書有興趣的小夥伴,可以通過以下連結購買: 關於本書,小胖只針對特定的人群寫書,只希望適合此書的人在此書得到合適的內容,小胖接受建設性意見,但不是服務員,在寫作手法上不會去照顧一些人的品味問題,而且小胖僅代表個人寫
shell小技巧--用“$$”和"$0"防止同一個指令碼啟動多次
在編寫shell指令碼通過crontab定時任務啟動時,如果shell指令碼執行時間超過了,crontab拉起指令碼的時間間隔,這個時候可能就會出現同一個指令碼同時啟動多次的現象。這個時候可能會導致採集的資料有重複,計算不準確等等問題,在這種有明顯先和順序要求的時候
SQL小技巧-關聯表重複資料清除處理辦法
一、背景描述 資料庫有訂單表和訂單明細表兩張表,訂單表與訂單明細表的關係為一對多,通過訂單ID作為外來鍵進行關聯,訂單表的訂單號欄位本應設計成唯一約束,但由於資料庫約束未在表裡體現,並且由於業務操作的一些原因,導致訂單表裡出現重複的訂單號,並且這些訂單記錄下面都關聯了貨
總結自己使用shell命令行經常使用到的8個小技巧
技巧 span get ash lan host tab localhost 沒有 原創blog,轉載請註明出處 Shell是命令解釋器 [[email protected]/* */ ~]# cat /etc/shells 查看本系統共支持哪些shel
胡扯一點代碼實現小技巧啦啦啦~ x
cnblogs ++ 利用 喜歡 代碼實現 ron 等價 -s size 一. for(int t=m; t; t--) a[++n] = b[t]; // 循環中間的 t:非零即真,遇到 t=0 才停下 int ans(0); // 效果等價於 ans=0
數組值去重-小技巧
!= 獲取 key 鍵值 () 小技巧 == 利用 tmp 把值存為數組的鍵,利用鍵的特性來進行對值的去重,然後再用array_keys獲取鍵值保存為新的數組即可達到去重的效果 $tmp_arr = array(); foreach ($key as $val) { $t
最強 Android Studio 使用小技巧和快捷鍵
面板 panel 讓其 駝峰 展示 tab鍵 所在 最有 初始 常用技巧 1. 書簽(Bookmarks) 描述:這是一個很有用的功能,讓你可以在某處做個標記(書簽),方便後面再跳轉到此處。 調用:Menu → Navigate → Bookmarks 快捷鍵: 添
不為人知的python request小技巧
python request關於 Python requests ,在使用中,總結了一些小技巧把,記錄下。1:保持請求之間的Cookies,我們可以這樣做。2:請求時,會加上headers,一般我們會寫成這樣唯一不便的是之後的代碼每次都需要這麽寫,代碼顯得臃腫,所以我們可以這樣:3:默認requests請求失
Liferay 7 OSGi的一些小技巧
liferay packages res ges shell portlet 依賴 include log 如果部署一個portlet到Liferay上,編譯沒有出現任何錯誤,卻提示有沒有解決的依賴,可能出現的問題是,我們這個portlet所需要的這個jar包在這個OSGi
python小技巧--通過字典的值(value)求鍵(key)
python key dict 思路:通過遍歷字典將key ==> vlaue 取出來,將值進行比較,從而獲得key。d = {‘a‘:1, ‘b‘:2, ‘c‘:123, ‘d‘:‘hello world‘} for k,v in d.items(): if v == ‘hell
php實用小技巧【持續更新】
匹配 一個 png 實用 合並 如果 更新 1-1 字符串 這是本人開始做項目的時候遇到過的問題還有解決方法 1.eval函數 能把字符串轉換成可執行的php代碼,如果字符串不是可執行的php代碼的話,需要在前面加上@,屏蔽notice 2.array_merge函數
sql 之優化小技巧
小技巧 存儲過程 count aid uic 不返回 .com 網絡通信 計數 SET NOCOUNT ON :不返回計數,如果存儲過程中包含一些並不返回實際數據的語句,網絡通信流量便會大量減少,可以顯著提高應用程序性能;sql 之優化小技巧
小技巧:怎樣以另外的Windows用戶執行SSMS
col run fonts diff jsb 使用 nts avi str 可能會碰到這種問題。你須要在一臺機器上面使用不同的Windows賬戶連接到SQL Server做測試。默認情況下,你須要用不同的Windows賬戶登錄然後測試。實際上不須要每一個windows登
五十個小技巧提高PHP執行效率(一)
雙引號 超時 而不是 也會 per 遠程 設置 作用 我們 在項目開發過程中,經常遇到了一些PHP處理程序性能底下的情況,程序運行在centos+nginx環境,雖然這個有很多的原因如:服務器本身配置,運行環境nginx服務,php-fpm配置等等,更多有一點仍然是PHPe
EasyUi 小技巧
動態 appendto ons ret mbo value opened div ext 擴展datagrid:動態添加刪除editor //擴展datagrid:動態添加刪除editor jQuery.extend(jQuery.fn.data
浮動小技巧
bfc overflow:hidden 浮動給我們帶來了便利,同時它也有一部分的缺點1、浮動後盒子的高度為0解決辦法:BFC我們給他的父級元素一個overflow:hidden;會激活BFC,高度會自動計算到裏面。當然,也有其他的辦法解決,比如:清除浮動,在這裏我只記錄了我最近用的這種方法。2、頁面縮
Linux Shell 腳本的小技巧——不定期更新
小技巧 linux shell 本文旨在積累平時寫 shell 腳本是遇到的小問題的解決方法。在這裏不定期的更新,以便以後查閱、沿用。 一,在shell 腳本中定義默認值 1. 對默認變量直接賦值 read -p "input>>:" nub nub=
Linux下通過find命令進行rm文件刪除的小技巧
ase test sysconfig ger sdn tun 執行過程 fun alt 我們常常會通過find命令進行批量操作。如:批量刪除舊文件、批量改動、基於時間的文件統計、基於文件大小的文件統計等。在這些操作其中,因為rm刪除操作會導致文件夾結構變化,