




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、SIPp腳本編寫方法基礎作者王偉版本號V1.1目錄SIPp腳本編寫方法入門錯誤!未指定書簽。1.腳本格式錯誤!未指定書簽。1.1. 基于XML進行擴展 錯誤!未指定書簽。1.2. DTD擴展語法規(guī)則錯誤!未指定書簽。1.3. 腳本結(jié)構(gòu)錯誤!未指定書簽。1.4. 注釋2. 腳本類型錯誤!未指定書簽。2.1. UAC錯誤!未指定書簽2.2. UAS2.3. 3PCC(三方通話)錯誤!未指定書簽 ,錯誤!未指定書簽2.4. OCC (Out-of-call)錯誤!未指定書簽3.1.常用命令3.2.常用屬性列表.3.3.正則表達式.變量與關鍵字4.1.關鍵字的使用.4.2.變量定義與使用4.命令與屬性
2、4.3.鑒權錯誤!未指定書簽5.3.跳轉(zhuǎn)和循環(huán).5.4.概率分支.6.文件引用6.1.外部文件格式6.2.引用方法.6.3.文件索引.7.腳本中的命令操作.7.1.內(nèi)部命令.7.2.外部命令7.3.媒體命令.5.分支和跳轉(zhuǎn)5.1.標簽.5.2.條件判斷3.錯誤!未指定書簽。 錯誤!未指定書簽。 .錯誤!未指定書簽。 .錯誤!未指定書簽。 錯誤!未定義書簽。 .錯誤!未指定書簽。 ,錯誤!未指定書簽。錯誤!未指定書簽錯誤!未指定書簽。 錯誤!未指定書簽。.錯誤!未指定書簽。 錯誤!未指定書簽。 錯誤!未指定書簽。 .錯誤!未指定書簽。 錯誤!未指定書簽。 錯誤!未指定書簽。 ,錯誤!未指定書簽。
3、 錯誤!未指定書簽。 錯誤!未指定書簽。 錯誤!未指定書簽。8.附錄錯誤!未指定書簽。修訂記錄 錯誤!未指定書簽。1. 腳本格式1.1. 基于XML進行擴展SIPp的測試腳本遵循標準的XML V1.0版本的語法規(guī)范,XML即“可擴展 標記語言” eXtensible Markup Language的縮寫,W3C組織與1998年發(fā)布XML 1.0規(guī)范。1.2. DTD擴展語法規(guī)則SIPp的執(zhí)行目錄中,存在一個sipp.dtd文件。該文件為標準的xml擴展語法 規(guī)則,在該文件中,對send recv、pause等元素增加了定義,包括其屬性列表 等內(nèi)容,可作為腳本文件格式的校驗。1.3. 腳本結(jié)構(gòu)一
4、個標準的SIPp腳本,文件起始應為通用的xml前導區(qū)和DTD文件定義區(qū) 如圖所示:接下來使用scenario和/scenario包括的部分,即為腳本的正文部分。sipp 腳本正文部分,包含如下幾個區(qū)域:1. 初始化區(qū)在初始化區(qū)域中,通常用來進行全局變量的定義和賦值等操作,在腳 本未進行邏輯流程前,預先完成初始化動作。初始化區(qū)是在腳本正文的最開始,通過使用命令init和/init,并在其之間插入一些nop和label命令即可實現(xiàn),在初始場景中的變量, 僅用于全局變量,并不會應用于呼叫。例如下圖中,在初始化區(qū)對 THINKTIME 進行賦值:2. 邏輯執(zhí)行區(qū)邏輯執(zhí)行區(qū)中包括了業(yè)務流程的相關內(nèi)容,比
5、如接收消息、發(fā)送消 息、暫停時長、分支判斷、媒體播放、內(nèi)外部命令執(zhí)行等操作。邏輯執(zhí)行區(qū)是腳本的最關鍵部分,編寫 sipp 腳本,主要也就是針對 該部分進行編寫和調(diào)試。3. 變量抑制區(qū) 該部分是為了避免在腳本邏輯區(qū)定義了大量的變量,但實際并未使用 導致運行時報錯無法執(zhí)行的問題,不論定義了多少變量,這些變量有無 被使用,只需要添加進變量抑制區(qū)的列表中,腳本均可正常執(zhí)行。該部 分僅有一個命令 <Reference /> , variables 屬性為所需抑制的變量列 表。如下圖所示:4. 定時器自定義區(qū)該區(qū)域主要作用為:針對消息響應時長(ResponseTime以及呼叫持續(xù)時長( Cal
6、lLength )的 Timer 進行自定義間隔的配置,以獲取所需的 顯示范圍,例如自定義 timer 配置為:則在 sipp 運行時,查看運行統(tǒng)計界面呈現(xiàn)如下:1.4. 注釋sipp腳本注釋的語法格式為<!->xxx<->,支持多行注釋,如:2. 腳本類型SIPp腳本根據(jù)使用場景不同,主要分為 UAC、UAS、3PCC和OCC4種類 型,每種類型均有其特定的使用方式,內(nèi)部邏輯也有所不同。2.1. UAC顧名思義,UAC類型的腳本主要是模擬sip會話中的UAC側(cè),即負責發(fā)起 會話的 client 端。如注冊客戶端、主叫用戶、訂閱者等。通常的 UAC 腳本邏輯 區(qū)會以se
7、nd作為業(yè)務流程的起始。UAC腳本一旦啟動,如果不設置起始暫停時 長的參數(shù),通常會立即開始執(zhí)行。2.2. UASUAS與UAC相對,主要模擬sip會話的UAS側(cè),啟動后即進入被動接收狀 態(tài),通常作為server端使用,如注冊服務器、被叫用戶、通知者、業(yè)務網(wǎng)關等。 通常的UAS腳本邏輯區(qū)會以recv作為業(yè)務流程的起始。UAS腳本啟動后,即綁 定相關本地socket,進入接收消息的狀態(tài)。2.3.3PCC(三方通話)SIPp工具允許多個腳本實例間進行交互,完成較為復雜的業(yè)務流程。如三 方通話等業(yè)務,因此該種腳本在普通腳本的基礎上,更多地使用內(nèi)部 cmd 交互 命令,如recvcmd、sendcmd等
8、在不同腳本間傳遞會話參數(shù),配合完成復雜流程 的測試實現(xiàn)。sipp還提供了擴展的3pcc模式,支持master和 slave的腳本角色。 該類型的腳本編寫和調(diào)試較為復雜,本文檔中不再贅述,如有興趣可以翻閱 sipp 的使用手冊等文檔,其中有詳細說明。2.4. OCC(Out-of-call)OCC (Out-of-call)腳本作為特殊類型的腳本,通常不會單獨使用,而是與 UAC 腳本配合使用(也只能與 UAC 腳本配合, UAS 等類型腳本無法支持 -occsn 等執(zhí)行命令)。主要作用為擴展 UAC 腳本的適用范圍,使 UAC 腳本能夠在接收 到不同會話內(nèi)的非預期消息時,不至于直接丟棄。如注冊
9、客戶端可能會遇到接收 到通知NOTIFY的消息,此時就需要在運行register腳本的時候適用-oocsn或- oocsf參數(shù),配合00C腳本,實現(xiàn)對NOTIFY消息返回200的操作。3. 命令與屬性3.1. 常用命令SIPp工具提供的命令相當豐富,包括消息操作命令、變量操作、正則表達 式、賦值和判斷、內(nèi)部命令、外部命令、日志操作、媒體命令等多種,在一般的 使用場景下,通常根據(jù)不同的動作,來進行命令的使用。下面針對比較常用的場 景,如發(fā)送消息、接收消息、媒體播放等進行描述:(更詳細的命令功能及示 例,可以翻閱sipp的使用手冊等文檔)一個最基本的sipp腳本,通常包含了 send recv、n
10、op、pause這幾個命令。 其中send為發(fā)送sip消息,recv為接收sip消息,nop為處理非業(yè)務的邏輯, pause為提供暫停時長。例如一個基本語音呼叫的主叫側(cè)腳本:首先使用send命令發(fā)送INVITE消息,注意在發(fā)送消息時,sip消息所有內(nèi) 容均包含在標準的 xml 數(shù)據(jù)格式 CDATA 內(nèi), CDATA 的語法格式請格外注意,避免因為語法錯誤導致無法正確發(fā)送。(注:在構(gòu)造發(fā)送的 INVITE 消息時,為實現(xiàn)批量發(fā)送,使用到了大量的變 量和關鍵字,在后續(xù)內(nèi)容中會詳細加以說明。)發(fā)送出消息后,還需要進行后續(xù)響應消息的接收,請注意由于sip協(xié)議存在臨時響應和最終響應兩種,而 1xx 的響
11、應在業(yè)務中可能存在,也可能不存在,因 此需要采用可選屬性加以區(qū)別。(注:optional= “true”即表示該條消息為可選接收,如果沒有收到,也不 會影響后續(xù)消息的接收及處理,如 100/183/180。而 200為必選接收消息,只有 當接收到該消息后,腳本才會繼續(xù)后續(xù)流程,因此沒有 optional 參數(shù)。)在接收到200 ok消息,并發(fā)送出ACK后,語音通話接續(xù)流程即完成,此時 根據(jù)實際業(yè)務流程,需要進行語音媒體的傳輸,因此腳本在這里需要增加一個 nop 命令,用于媒體的播放(注:nop命令可以用于任何非消息處理的位置,在nop命令中增加action命令,然后即可執(zhí)行類似媒體處理、變量操
12、作、條件判斷等動作。)在執(zhí)行媒體播放命令后,由于sipp在執(zhí)行nop相關命令后,不會等待命令 執(zhí)行完畢而是立即執(zhí)行后續(xù)腳本內(nèi)容,因此為保證媒體播放正常,我們還需要根 據(jù)實際要求,將腳本暫停一段時間,以確保流程模擬正確。(注:millise neo nds屬性可以自定義暫停的時長,單位為 ms,如果該屬性 為空,則可以通過在執(zhí)行命令中增加“ -d 10000'來指定暫停時長) 3.2.常用屬性列表命令屬性描述示例<send>用于消息的發(fā)送,常用參數(shù)包括<send retrans= “ 500 ” lost="10"retrans : udp報文重傳時
13、長;start_txn= “ invite " ack_txn=lost :丟包率;“ invite" >start_tx n:啟動響應時間記錄ack_txn :記錄接收響應時間,與start_tx n匹配</se nd><recv>:用于消息的接收,常用參數(shù)包括<recv response= " 100" optional=response :期望收到的響應消息“ true ” >request :期望收到的請求消息</recv>optio nal :可選接收消息,值為<recv reques
14、t= “ ACK"true 或 globaltimeout="18000"timeout :超時時長,默認超時后直on timeout= “ 5">接END</recv>on timeout :超時后的跳轉(zhuǎn)處理<recv request="MESSAGE|PUBLISH"action :收到消息后米取的處理動regexp_match="true">作regexp match :檢查收到消息是否匹配預期</recv><pause>用于設置暫停時間,常用參數(shù)包括&l
15、t;pause milliseco nds="5000"/>milliseco nds:設置暫停時長,單<pause variable="1" />位ms<pause distributi on="u niform"variable:設置當變量出現(xiàn)時暫停min="2000"distribution:使用GSL定義或分max="5000"/>布模型定義呼叫時長<pausedistributio n="exp onen tial"mea n=&
16、quot;900000"/<nop>用于非協(xié)議消息處理的命令執(zhí)行,<n op>常用參數(shù)包括<acti on>action :執(zhí)行命令動作<execPlay pcap audio="pcap/g711a.pcap"/></act ion></n op><se ndCmd><se ndCmd> <!CDATA Call-ID: call_id$1></se ndCmd><se ndCmd dest="s1">用于兩個
17、SIPp頭例間的父互發(fā)送, 常用于3PCC場景,常用參數(shù)包括<!CDATA> :用于3PCC場景的參數(shù)傳遞dest :僅用于擴展模式 3PCC<recvCmd>用于兩個SIPp實例間的交互接收, 常用于3PCC場景,常用參數(shù)包括 action :接收到命令時的執(zhí)行命令 動作src :僅用于擴展模式 3PCC<recvCmd><acti on<ereg regexp="C onten t-Type:.*" searchn=" msg"assig n_to="2"/></act
18、ion></recvCmd><se ndCmd src="s2">通用屬性:屬性名描述示例start_rtd啟動響應定時器<se nd start_rtd="i nvite“ >rtd停止響應定時器<recv response=“200” rtd= “ invite“ />repeat_rtd重復啟用響應定時器<recv response=“407” rtd="invite"repeat_rtd="true“ />crlf運行界面增加回車換行<se nd crlf
19、="true">n ext跳轉(zhuǎn)任意label<recv resp on se="403" optio nal="true" n ext= “ reg_fail"></recv>test與next 一起使用,設置跳 轉(zhuǎn)條件<se nd next="6" test=“ flag1">chanee與test、next 一起使用, 當test結(jié)果有值時,則概 率跳轉(zhuǎn)<recv resp on se="403" optio nal=&qu
20、ot;true" next= “ reg_fail ” test= “ flag“ cha nce="0.90"></recv>coun ter計數(shù)器累加1<recv response=“200” counter=“ SuccessCALL">3.3.正則表達式正則表達式作為sipp中極為重要的功能,在各個場景下應用廣泛,最常見 的是通過正則表達式,獲取接收消息中某個參數(shù),并將該參數(shù)賦給變量,用于后 續(xù)流程的使用。正則表達式的使用語法如下圖所示:正則表達式的命令為vereg />regexp屬性為需要匹配的表達式內(nèi)容,
21、其中使用”()”包括起來的部分,為匹 配項,可以賦給變量;search_in屬性為設置本次查詢的方式,sipp支持3種正則匹配的方式,分別 為:1. 頭域查詢匹配當searchn=”hdr”時,表示正則按照頭域匹配,必須包含 header參數(shù), 給出需要查詢的頭域名稱,如 header=”From”。sipp會在指定的頭域中進行匹 配。注:start-line的匹配也是用頭域匹配方式。2消息查詢匹配當searchn=”msg”時,表示正則根據(jù)整個消息內(nèi)容進行匹配,通常在需 要匹配SDP內(nèi)容時會用到。3.變量查詢匹配當search_in”var”時,表示正則按照變量進行匹配,必須配置variab
22、le參數(shù),給出需要匹配的變量名稱,女口variable=”header_to_tag。4.變量與關鍵字4.1.關鍵字的使用sipp中定義了大量的關鍵字,涉及到網(wǎng)絡參數(shù)、sip會話參數(shù)和媒體參數(shù)等等,需要在編寫腳本時加以注意。關鍵字的引用格式為keyword,例如locao_ip、call_id等。下表列出了常用的關鍵字:關鍵字描述備注service由參數(shù)-s傳遞,般用來指疋單丨主被叫remote_ip遠端設備地址remote_port遠端設備端口??梢栽谀_本中使用偏移量,女口remote port+3tra nsport指定傳輸層協(xié)議,UDP/TCP由參數(shù)-t決定local_ip主機本地地址,
23、可以由參數(shù)-i指定local_port由系統(tǒng)隨機分配可由-p指定,可以在腳本中使用偏移量,local_port+3le nsdp長度,用于Content-Length頭域,由sipp自動生成或者手動指疋,可以添加偏移量,如len+3call_ nu mber呼叫索引,從1開始,每增加一個呼叫遞增1cseq初始值為1 ,可以使用參數(shù)-base cseq手動 指定初始值。media_ip本地媒體流ip,可以由-mi參數(shù)指定media_port本地媒體流端口,可由-mp指定,可以設置偏 移量media_port+3auto_media_port自動指疋媒體流端口,僅用于pcap。該參數(shù)使多個呼叫的音
24、頻和視頻端口從-mp指疋的端口開始,并給每個新的呼叫分配端口。SIPp默認支持10000個rtp 流并發(fā)last_*此關鍵字用于從接收的上一個sip消息中提取指定頭域(如果存在)的值。比如last_to 則表示從接收的上一個 sip消息中 提取To域的消息保存到last_to中并應用。fieldO-n file=<file name line=<nu mber>從外部文件csv加載值,file表示選擇從命令行中指定的csv文件的一個文件作為外部 文件;line定義選擇的外部文件的起始行, field 選擇字段filename=<filename把指定的文件中內(nèi)容全部插入
25、到sip消息中。由于空格符,回車符及換行符不被某些關鍵字識 另所以插入的文件需要被精確地編輯成你想 要的格式才行,否則會有亂碼。timestamp當前時間戳,與錯誤日志的時間戳格式一樣last_message上一個收到的消息authe nticati on用于認證頭(authentication head) ,這個關鍵字可以使用參數(shù),書寫格式為:authe nticatio n user name=myuser name password=mypassword,如果沒有指定用戶名(username),則需使用命令行參數(shù) -au或者 -s 指定;如果沒有指定密碼( password ), 則需使
26、用命令行參數(shù)-ap指疋pid指疋sipp 的pid,即進程號routes如果在recv 命令中已設置"rrs ”屬性為true,貝URecord-Route頭被存儲在關鍵字route中,可使用routes 調(diào)用。n ext_url如果在recv 命令中已設置"rrs ”屬性為 true,則n ext_url 中包含 Con tact頭中的內(nèi)容bra nch生成一個由(z9hG4bK) + call number + message索引組成的 branch id到腳本中。如果你想要使用與之前的消息一樣的branchid,你可以使用偏移量指定,如branch-Nmsg_ in
27、dex在腳本中提供消息號clock_tick在消息中包含sipp的內(nèi)部時鐘sipp_vers ion在消息中包含sipp的版本fill使用字符填充消息users如果在命令行中指定了 -users參數(shù),則這個 關鍵字表示當前已經(jīng)運行的用戶的數(shù)量userid如果在命令行中指定了 -users參數(shù),則這個 關鍵字表示當前正在運行的用戶的id (范圍為 0 到 users-1 )42變量定義與使用sipp的腳本中,支持雙精度浮點型變量和字符串變量兩種變量類型.1.浮點型變量針對浮點型變量的操作命令主要有 assgin (賦值)、sample (統(tǒng)計分 布)和todouble (強制類型轉(zhuǎn)換),以及加減
28、乘除等簡單算術運算,舉例 如下:<n op><acti on><!將變量sum賦值為0-><assig n assig n_to="sum" value="0" /><!-將sum加2,然后再賦值給sum-><add assig n_to="sum" value="2" /><!-將sum減3,然后再賦值給sum ->vsubtract assig n_to="sum" value="3" /
29、><!-將sum乘以4,然后再賦值給sum -><multiply assign_to="sum" value="4" /><!-將sum除以5,然后再賦值給sum此時sum=-0.8 -><divide assign_to="sum" value="5" /></action></nop>浮點型變量還支持變量比較測試功能,該部分在分支一節(jié)中會重點描 述。2. 字符串變量可以使用命令vassignstr>&J建字符串變量,該
30、命令有兩個參數(shù)“ assign_tO'和“ value”,例如:vnop>vaction>v ! 將外部文件的 field0 的值,賦給字符串變量 str ->vassignstr assign_to="str" value="field0" />v/action>v/nop>字符串變量支持比較操作,命令為<strcmp>,其對字符串比較的值是 一個小于,等于,或大于 0 的雙精度整型值。通常該功能用在對正則表 達式提取結(jié)果的操作,以及從外部文件獲取值的操作中,例如:vnop>vaction&
31、gt;<!將變量strvar與字符串”Hello”進行比較,結(jié)果賦值給浮點型變量result ->vstrcmp assign_to="result" variable="strvar" value="Hello" /> v/action>v/nop>4.3. 鑒權在sipp的關鍵字和變量使用中,有一類特殊的變量需要重點說明,那就是 鑒權。sipp支持標準的Digest和AKA兩種鑒權方法。具體的使用方法如下:1. 在接收到 401或 407響應時,如果該流程需要鑒權,則需要在 recv 命令中增加屬性
32、auth=”true”, sipp 會記錄該消息中鑒權頭域的相關 值。2. 隨后在發(fā)送的第二條請求消息中,使用authe nticatio n關鍵字,指定 用戶名及密碼(Digest方式)或 aka_K、aka_OP、aka_AMF(AKA),sipp將自動計算出response并構(gòu)造相關頭域內(nèi)容。例 如:3. 還可以通過在外部文件中某一列,配置 authentication username=1001 password=1001, 然后在消息中使用 fieldN 引用, 來實現(xiàn)不同用戶的鑒權過程。4. sipp腳本中還支持對鑒權的respo nse結(jié)果進行校驗,該操作使用 verifyaut
33、h 命令來完成,并將檢查結(jié)果賦值給一個布爾變量中。例 如:<lookup assign_to="line" file="users.conf" key="$username" /> <verifyauth assign_to="authvalid" username="field0 line="$line"" password="field3 line="$line"" />5. 分支和跳轉(zhuǎn)5.1. 標簽sipp
34、 腳本支持自定義標簽操作,因此可以通過 next 、 jump 等命令,實 現(xiàn)對流程邏輯的分支和跳轉(zhuǎn)功能,類似 C語言中的goto。標簽的定義語法格 式如下:<label id= ”err_ack ” />其中 id 屬性值為該標簽的標識,可以通過 next 屬性進行標簽之間的跳 轉(zhuǎn),例如:在例子中, recv 命令使用了 next ,即如果收到了 486響應,則直接跳轉(zhuǎn)至id 為 err_ack 的 label 處。5.2. 條件判斷sipp 支持通過變量測試,來進行某些條件的判斷,繼而執(zhí)行相關的操作,類似于開發(fā)語言中的ifelse語法,變量測試的動作命令為“ test,含有四個
35、參數(shù): variable , value , assign_to , compare 。variable 和 value 的比較的結(jié)果,通過 assgin_to 賦給某一變量,值為 1 或0。compare為比較的操作方法,一共有 6種,分別為:equalnot_equalgreater_thanless_thangreater_than_equalless_than_equal舉例如下:<nop><action><test assign_to="result" variable="st" compare="les
36、s_than"value="10" /></action></nop>上述語句中,變量 st 與10進行比較,如果小于 10,則 result = 1, 否則 result = 0。5.3. 跳轉(zhuǎn)和循環(huán)sipp 腳本的正常執(zhí)行流程為順序依次執(zhí)行相關語句,但是在某些場景下需 要非線性地執(zhí)行,例如收到錯誤消息,則跳轉(zhuǎn)至錯誤處理等,就需要用到分支功 能。結(jié)合上文內(nèi)容可知, sipp 的分支功能時通過標簽和跳轉(zhuǎn)命令來實現(xiàn)的。在任意一個動作命令之后添加一個 next= ” label_id ”的參數(shù),當腳本執(zhí)行完這個動作后就會跳到指定標號處繼續(xù)
37、往下執(zhí)行,另外,如果在 next 參數(shù)后再 添加一個test= ” m”參數(shù),腳本僅在變量$m為真時才會跳到指定標號,這個 特性結(jié)合條件判斷,可以用來實現(xiàn)某些特殊要求。例如:上述例子為注冊服務器部分腳本,實現(xiàn)的效果是:當接收到 REGISTE消息 后,通過正則表達式獲取 Expires 頭域的值,并將其與 0 比較,如果相等,則表 示該消息為注銷請求,result2=1。nop命令行中,判斷如果result2=1,這跳轉(zhuǎn) 至 deregister 標簽,進行注銷流程的處理。(注:通過正則表達式匹配而獲取到的值,均為字符串變量,因此無法直接 與數(shù)值 0 進行比較,而是通過 strcmp 命令進行
38、字符串比較,將此結(jié)果賦給 result ,再對 result 和 0 進行二次比較判斷,最終獲得結(jié)果。)5.4. 概率分支為了更加符合真實測試環(huán)境的業(yè)務流程, sipp 還提供了概率分支功能,即 通過在 next 屬性后,增加 chance 屬性,并配置 0-1 之間的數(shù)值,模擬幾率跳轉(zhuǎn) 分支動作。例如:當 sipp 腳本執(zhí)行到該段時,有 50%的幾率會跳轉(zhuǎn)至 401 標簽處,緊接著會 有30%勺幾率跳轉(zhuǎn)至ENDS簽。(注:1. 由于 chance 屬性必須與 test 配對使用,因此如果不需判斷直接跳 轉(zhuǎn),可以配置 test= ” 1”,類似于 if True ,即始終執(zhí)行。2. 配置 ch
39、ance 時必須注意,該值僅為當前所有會話的幾率,即如例子 中配置的數(shù)值,則會有 50%的會話跳轉(zhuǎn)至 401 標簽, 15%的會話跳轉(zhuǎn) 至END標簽,65%勺會話順序線性執(zhí)行。)6. 文件引用6.1. 外部文件格式sipp 腳本支持通過引用外部文件的方式,導入變量內(nèi)容以供使用。外部文件的后綴名為.csv或.conf,可以在命令行使用“ -inf文件名”參數(shù)來引入變量到腳本中。文件的第一行須申明變量的讀取方式是順序讀?。⊿EQUENTIAL還是隨機讀?。≧ANDOM還是基于用戶的方式讀?。║SER 。每一行對應一個呼 叫,使用“ ; ”分隔符分隔每一項數(shù)據(jù),分開的項在腳本中作為變量名 filed
40、0,field1,?fieldn 來引用。例如:SEQUENTIALSarah;sipphone32Bob;sipphone12Fred;sipphone94 該文件中的行會被按順序讀取,第一個呼叫第一行,第二個呼叫第二行。在 腳本中的任何地方只要出現(xiàn)了關鍵詞 field0 ,根據(jù)第幾個呼叫決定,這個關鍵 詞就會被替換為 Sarah 或者 Bob 或者 Fred ,field1 也是類似。如果達到了 文件末尾則再重新開始,一直循環(huán),文件的大小沒有限制。在實際使用中,也可以使用參數(shù)使得不從第一行開始,例如從第二行開始: field0 line=1另外,還可以使用不止一個外部文件來引入變量,這在測
41、試一些場景是很有 用的,比如要做一個測試主叫號碼是按順序的但是被叫是隨機的時候,就可以用 一個第一行為順序的 caller.csv 文件和一個第一行為隨機的 callee.csv 文件 來實現(xiàn)了。例如:INVITE sip:field0 file="callee.csv" SIP/2.0From: sipp user <field0 file="caller.csv">tag=pidSIPpTag00call_numberTo: sut user <field0 file="callee.csv"> 由于在數(shù)據(jù)
42、較多時,編輯和使用均不方便, sipp 還支持對外部文件的格式 化定義,然后在程序中自動根據(jù)規(guī)則生成相應的數(shù)據(jù)。(該部分內(nèi)容較多,詳見 sipp 使用手冊)6.2. 引用方法sipp 腳本中使用外部文件,常見的場景有兩種:1. 利用外部文件引入 field 變量,構(gòu)造相應的發(fā)送消息體 例如在主叫用戶的腳本中,可以通過引用 user.csv 文件中的field0 、field1 ,分別對應主叫號碼和被叫號碼,構(gòu)造 From 頭域和 To 頭域。2. 通過查找外部文件,獲取對應的行號,隨后進行相關處理 例如,在針對不同的被叫號碼,進行用戶忙、無響應、前轉(zhuǎn)等業(yè)務時, 可以通過事先配置 forward
43、_users.conf 文件,在其中針對不同被叫號碼, 分別設置若干列,對應不同的值,并在被叫用戶的腳本中,使用正則表達式 獲取到被叫號碼,再使用 lookup 命令查詢 forward_users.conf 文件,匹配 當前用戶號碼處于第幾行,并讀取改行的 field1 的值,然后通過變量測 試,跳轉(zhuǎn)不同的處理分支。6.3. 文件索引 在針對外部文件進行查找命令時,必須先對該文件生成索引,具體方法 為再執(zhí)行 sipp 腳本的命令中,使用 -infindex 參數(shù)對引入的文件生成索 引,參數(shù)值為該文件的文件名,如: -infindex forward_user.conf 0 。注:在通常情況下,文件的索引值均設置為從 0 開始。7. 腳本中的命令操作7.1. 內(nèi)部命令sipp 腳本支持的內(nèi)部命令,主要是針對運行狀態(tài)的控制。命令語法為 int_cmd ,共有三個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安交通工程學院《口腔病理學》2023-2024學年第二學期期末試卷
- 西安職業(yè)技術學院《工管運籌學》2023-2024學年第二學期期末試卷
- 2025河北省安全員C證考試題庫
- 云南中醫(yī)藥大學《農(nóng)業(yè)推廣學》2023-2024學年第二學期期末試卷
- 遼寧特殊教育師范高等??茖W?!妒覂?nèi)專題項目生態(tài)性居住空間設計》2023-2024學年第二學期期末試卷
- 2025年江西省建筑安全員-A證考試題庫附答案
- 銅仁幼兒師范高等??茖W?!犊谇唤M織病理學實驗》2023-2024學年第二學期期末試卷
- 遼陽職業(yè)技術學院《外貿(mào)函電與單證》2023-2024學年第二學期期末試卷
- 北京協(xié)和醫(yī)學院《需求分析與系統(tǒng)設計(雙語)》2023-2024學年第二學期期末試卷
- 四川電力職業(yè)技術學院《WTO-TBT基礎知識》2023-2024學年第二學期期末試卷
- 2022年云上貴州大數(shù)據(jù)(集團)有限公司招聘筆試試題及答案解析
- 高考報名資格審查表
- (虎符銅砭刮痧)基本理論及臨床應用課件
- 文件袋、檔案袋密封條模板
- 依圖科技業(yè)務概述
- 支氣管鏡室工作制度
- 船模制作教程(課堂PPT)課件(PPT 85頁)
- 防腐檢查培訓教材ppt課件
- 天藍色商務發(fā)展歷程時間軸PPT模板課件
- 肺炎鏈球菌肺炎醫(yī)學PPT課件
- 小學英語微課ppt
評論
0/150
提交評論