




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、SIPp腳本編寫方法基礎(chǔ)(總20頁)-CAL-FENGHAI.-(YICAI)-Company Onel-CAL -本頁僅作為文檔封面,使用請(qǐng)直接刪除itSIPp 腳本編寫方法基礎(chǔ)作者王偉版本號(hào)V1.1.錯(cuò)誤!未指定書簽。 .錯(cuò)誤!未指定書簽。 .錯(cuò)誤!未指定書簽。 .錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。6錯(cuò)誤!未指定書簽錯(cuò)誤!未指定書簽 錯(cuò)誤!未指定書簽 錯(cuò)誤!未指定書簽 錯(cuò)誤!未指定書簽錯(cuò)誤!未指定書簽。錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。錯(cuò)誤!未指定書簽。錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。 錯(cuò)誤!未指定書簽。目錄SIPp
2、腳本編寫方法入門1. 腳本格式基于XML進(jìn)行擴(kuò)展DTD擴(kuò)展語法規(guī)則腳本結(jié)構(gòu)注釋腳本類型錯(cuò)誤!未指定書簽。2.1.UAC 錯(cuò)誤!未指定書簽。UAS 錯(cuò)誤!未指定書簽。3PCC (三方通話)錯(cuò)誤!未指定書簽。OCC(Out-of-call) 錯(cuò)誤!未指定書簽。命令與屬性錯(cuò)誤!未指定書簽常用命令 錯(cuò)誤!未指定書簽。常用屬性列表 錯(cuò)誤!未指定書簽。正則表達(dá)式 錯(cuò)誤!未指定書簽。變量與關(guān)鍵字錯(cuò)誤!未定義書簽。關(guān)鍵字的使用 錯(cuò)誤!未指定書簽。變量定義與使用 錯(cuò)誤!未指定書簽。鑒權(quán) 錯(cuò)誤!未指定書簽。5. 分支和跳轉(zhuǎn)標(biāo)簽條件判斷跳轉(zhuǎn)和循環(huán)概率分支.6. 文件引用6.1. 外部文件格式引用方法文件索引 7.
3、腳本中的命令操作7.1. 內(nèi)部命令外部命令媒體命令&附錄錯(cuò)誤!未指定書簽。修訂記錄錯(cuò)誤!未指定書簽。腳本格式基于XML進(jìn)行擴(kuò)展SIPp的測(cè)試腳本遵循標(biāo)準(zhǔn)的XML V1.0版本的語法規(guī)范,XML即“可擴(kuò)展標(biāo) 記語言extensible Markup Language 的縮寫,W3C 組織與 1998 年發(fā)布 XML 1.0 規(guī)范。DTD 擴(kuò)展語法規(guī)則SIPp的執(zhí)行目錄中,存在一個(gè)sipp.dtd文件。該文件為標(biāo)準(zhǔn)的xml擴(kuò)展語法 規(guī)則,在該文件中,對(duì)send、recv、pause等元素增加了定義,包括其屬性列表 等內(nèi)容,可作為腳本文件格式的校驗(yàn)。腳本結(jié)構(gòu)個(gè)標(biāo)準(zhǔn)的SIPp腳本,文件起始應(yīng)為通用的x
4、ml前導(dǎo)區(qū)和DTD文件定義區(qū) 如圖所示:接下來使用scenario和/scenario 包括的部分,即為腳本的正文部分。 sipp 腳本正文部分,包含如下幾個(gè)區(qū)域:初始化區(qū)在初始化區(qū)域中,通常用來進(jìn)行全局變量的定義和賦值等操作,在腳 本未進(jìn)行邏輯流程前,預(yù)先完成初始化動(dòng)作。初始化區(qū)是在腳本正文的最開始,通過使用命令vi nit 和/init,并 在其之間插入一些 nop 和vlabel 命令即可實(shí)現(xiàn),在初始場(chǎng)景中的變量, 僅用于全局變量,并不會(huì)應(yīng)用于呼叫。例如下圖中,在初始化區(qū)對(duì) THINKTIME 進(jìn)行賦值:邏輯執(zhí)行區(qū)邏輯執(zhí)行區(qū)中包括了業(yè)務(wù)流程的相關(guān)內(nèi)容,比如接收消息、發(fā)送消 息、暫停時(shí)長、
5、分支判斷、媒體播放、內(nèi)外部命令執(zhí)行等操作。邏輯執(zhí)行區(qū)是腳本的最關(guān)鍵部分,編寫 sipp 腳本,主要也就是針對(duì) 該部分進(jìn)行編寫和調(diào)試。變量抑制區(qū) 該部分是為了避免在腳本邏輯區(qū)定義了大量的變量,但實(shí)際并未使用 導(dǎo)致運(yùn)行時(shí)報(bào)錯(cuò)無法執(zhí)行的問題,不論定義了多少變量,這些變量有無 被使用,只需要添加進(jìn)變量抑制區(qū)的列表中,腳本均可正常執(zhí)行。該部 分僅有一個(gè)命令Reference /, variables屬性為所需抑制的變量列 表。如下圖所示:定時(shí)器自定義區(qū)該區(qū)域主要作用為:針對(duì)消息響應(yīng)時(shí)長(ResponseTime)以及呼叫持續(xù)時(shí)長(CallLength)的Timer進(jìn)行自定義間隔的配置,以獲取 所需的顯示
6、范圍,例如自定義timer配置為:則在sipp運(yùn)行時(shí),查看運(yùn)行統(tǒng)計(jì)界面呈現(xiàn)如下:1.4. 注釋sipp腳本注釋的語法格式為v!-xxxv-,支持多行注釋,如:2. 腳本類型SIPp腳本根據(jù)使用場(chǎng)景不同,主要分為UAC、UAS、3PCC和OCC4種類 型,每種類型均有其特定的使用方式,內(nèi)部邏輯也有所不同。UAC顧名思義,UAC類型的腳本主要是模擬sip會(huì)話中的UAC側(cè),即負(fù)責(zé)發(fā)起 會(huì)話的client端。如注冊(cè)客戶端、主叫用戶、訂閱者等。通常的UAC腳本邏輯 區(qū)會(huì)以send作為業(yè)務(wù)流程的起始。UAC腳本一旦啟動(dòng),如果不設(shè)置起始暫停時(shí) 長的參數(shù),通常會(huì)立即開始執(zhí)行。UASUAS與UAC相對(duì),主要模擬
7、sip會(huì)話的UAS側(cè),啟動(dòng)后即進(jìn)入被動(dòng)接收狀態(tài),通常作為server端使用,如注冊(cè)服務(wù)器、被叫用戶、通知者、業(yè)務(wù)網(wǎng)關(guān)等。 通常的UAS腳本邏輯區(qū)會(huì)以recv作為業(yè)務(wù)流程的起始。UAS腳本啟動(dòng)后,即綁 定相關(guān)本地socket,進(jìn)入接收消息的狀態(tài)。2.3. 3PCC (三方通話)SIPp工具允許多個(gè)腳本實(shí)例間進(jìn)行交互,完成較為復(fù)雜的業(yè)務(wù)流程。如三 方通話等業(yè)務(wù),因此該種腳本在普通腳本的基礎(chǔ)上,更多地使用內(nèi)部cmd交互 命令,如recvcmd、sendcmd等在不同腳本間傳遞會(huì)話參數(shù),配合完成復(fù)雜流程 的測(cè)試實(shí)現(xiàn)。sipp還提供了擴(kuò)展的3pcc模式,支持master和slave的腳本角色。 該類型的
8、腳本編寫和調(diào)試較為復(fù)雜,本文檔中不再贅述,如有興趣可以翻閱 sipp 的使用手冊(cè)等文檔,其中有詳細(xì)說明。OCC( Out-of-call)OCC (Out-of-cal 1)腳本作為特殊類型的腳本,通常不會(huì)單獨(dú)使用,而是與 UAC腳本配合使用(也只能與UAC腳本配合,UAS等類型腳本無法支持-occsn 等執(zhí)行命令)。主要作用為擴(kuò)展UAC腳本的適用范圍,使UAC腳本能夠在接收 到不同會(huì)話內(nèi)的非預(yù)期消息時(shí),不至于直接丟棄。如注冊(cè)客戶端可能會(huì)遇到接收 到通知NOTIFY的消息,此時(shí)就需要在運(yùn)行register腳本的時(shí)候適用-oocsn或- oocsf參數(shù),配合ooc腳本,實(shí)現(xiàn)對(duì)NOTIFY消息返回
9、200的操作。3. 命令與屬性3.1. 常用命令SIPp工具提供的命令相當(dāng)豐富,包括消息操作命令、變量操作、正則表達(dá)式、賦 值和判斷、內(nèi)部命令、外部命令、日志操作、媒體命令等多種,在一般的使用場(chǎng) 景下,通常根據(jù)不同的動(dòng)作,來進(jìn)行命令的使用。下面針對(duì)比較常用的場(chǎng)景,如 發(fā)送消息、接收消息、媒體播放等進(jìn)行描述:(更詳細(xì)的命令功能及示例,可以 翻閱Sipp的使用手冊(cè)等文檔)一個(gè)最基本的 sipp 腳本,通常包含了 send、recv、nop、pause 這幾個(gè)命令。其中send為發(fā)送sip消息,recv為接收sip消息,nop為處理非業(yè)務(wù)的邏輯,pause為提供暫停時(shí)長。例如一個(gè)基本語音呼叫的主叫側(cè)
10、腳本:首先使用send命令發(fā)送INVITE消息,注意在發(fā)送消息時(shí),sip消息所有內(nèi) 容均包含在標(biāo)準(zhǔn)的xml數(shù)據(jù)格式CDATA內(nèi),CDATA的語法格式請(qǐng)格外注意, 避免因?yàn)檎Z法錯(cuò)誤導(dǎo)致無法正確發(fā)送。JCDATAINCITE sip; fieldlreinote_ip SIP/2.0Via: SIP/2.0/transport Local_ip:local_portjbranch branchFrom: _fielda ;tag call_numberzhgSTa: fieldlCall-ID: call_idCSeq: 1 IIWITEContact: User-Agent: SIPp clie
11、nt mode version &ipp_versionJAl loud: IhJVIT E, PRACK f ACK T UPDAT E, WN C E L, BYE , OP T ION S , IN FO, SUBSCRIB E, R E F ER, NOTIFY lia)t- Forma rds: 70Con tent- ype: application/sdpCon ten t-Length: lenIV 0ci SIPp pid call_numbe 8pid call_numberEI IN IPlocal_ip_type local_ip s SIPp Normal Call
12、Testt 5 0m audio media_port RTP/AVP S 96c IN IPmedin J.p Type media ip8 rtprnap:8 PCM/80003 rtpniap:96 telephone-event/80008 frntp:% 0-15a sendr己cv(注:在構(gòu)造發(fā)送的INVITE消息時(shí),為實(shí)現(xiàn)批量發(fā)送,使用到了大量的變量和關(guān)鍵字,在后續(xù)內(nèi)容中會(huì)詳細(xì)加以說明。)發(fā)送出消息后,還需要進(jìn)行后續(xù)響應(yīng)消息的接收,請(qǐng)注意由于Sip協(xié)議存在 臨時(shí)響應(yīng)和最終響應(yīng)兩種,而1XX的響應(yīng)在業(yè)務(wù)中可能存在,也可能不存在,因 此需要采用可選屬性加以區(qū)別。(注:optional
13、=“true”即表示該條消息為可選接收,如果沒有收到,也不會(huì) 影響后續(xù)消息的接收及處理,如100/183/180。而200為必選接收消息,只有當(dāng) 接收到該消息后,腳本才會(huì)繼續(xù)后續(xù)流程,因此沒有optional參數(shù)。)在接收到200 ok消息,并發(fā)送出ACK后,語音通話接續(xù)流程即完成,此時(shí) 根據(jù)實(shí)際業(yè)務(wù)流程,需要進(jìn)行語音媒體的傳輸,因此腳本在這里需要增加一個(gè) nop 命令,用于媒體的播放(注:nop命令可以用于任何非消息處理的位置,在nop命令中增加action 命令,然后即可執(zhí)行類似媒體處理、變量操作、條件判斷等動(dòng)作。)在執(zhí)行媒體播放命令后,由于sipp在執(zhí)行nop相關(guān)命令后,不會(huì)等待命令 執(zhí)
14、行完畢而是立即執(zhí)行后續(xù)腳本內(nèi)容,因此為保證媒體播放正常,我們還需要根 據(jù)實(shí)際要求,將腳本暫停一段時(shí)間,以確保流程模擬正確。(注:millisenconds屬性可以自定義暫停的時(shí)長,單位為ms,如果該屬性 為空,貝冋以通過在執(zhí)行命令中增加“-d 10000”來指定暫停時(shí)長)3.2. 常用屬性列表命令屬性描述示例send用于消息的發(fā)送,常用參數(shù)包括 retrans: udp報(bào)文重傳時(shí)長; los t:丟包率;st ar t_t xn:啟動(dòng)響應(yīng)時(shí)間記錄 ack_txn:記錄接收響應(yīng)時(shí)間,與 start txn匹配己/sendrecv用于消息的接收,常用參數(shù)包括 response:期望收到的響應(yīng)消息
15、reques t:期望收到的請(qǐng)求消息 optional:可選接收消息,值為 true 或 globalt imeou t:超時(shí)時(shí)長,默認(rèn)超時(shí)后直 接ENDon timeou t:超時(shí)后的跳轉(zhuǎn)處理 act ion:收到消息后采取的處理動(dòng) 作regexp mat ch :檢查收到消息是否 匹配預(yù)期recv request= “ACKtimeout=18000ontimeout二 “5recv request=MESSAGE|PUBLISH regexp_match二truepause用于設(shè)置暫停時(shí)間,常用參數(shù)包括 milliseconds:設(shè)置暫停時(shí)長,單 位mspause millisecond
16、s二50007pause distribution二uniformvariable :設(shè)置當(dāng)變量出現(xiàn)時(shí)暫停 distribution:使用GSL定義或分 布模型定義呼叫時(shí)長min=2000max二50007pausedistribution二exponentialmean二9000007nop用于非協(xié)議消息處理的命令執(zhí)行, 常用參數(shù)包括action:執(zhí)行命令動(dòng)作nopactionexecplay_pcap_audio=pcap/g711a.pcap/actionsendCmd用于兩個(gè)SIPp實(shí)例間的父互發(fā)送, 常用于3PCC場(chǎng)景,常用參數(shù)包括 !CDATA:用于3PCC場(chǎng)景的參 數(shù)傳遞dest
17、:僅用于擴(kuò)展模式3PCCsendCmd!CDATACall-ID: call_id$1/sendCmdsendCmd dest=sirecvCmd用于兩個(gè)SIPp實(shí)例間的交互接收, 常用于3PCC場(chǎng)景,常用參數(shù)包括 act ion:接收到命令時(shí)的執(zhí)行命令 動(dòng)作src :僅用于擴(kuò)展模式3PCCrecvCmdactionereg regexp二Content-Type:.* search_in= msgassign _to 二27/action/recvCmdsendCmd src二s2通用屬性:屬性名描述示例start rtd啟動(dòng)響應(yīng)定時(shí)器send start rtd=invite “ rtd停
18、止響應(yīng)定時(shí)器repeat_rtd重復(fù)啟用響應(yīng)定時(shí)器crlf運(yùn)行界面增加回車換行send crlf二truenex t跳轉(zhuǎn)任意labelrecv response=403 optional二true next二 “reg_failtest與next起使用,設(shè)置跳 轉(zhuǎn)條件send next=6 test二 “flagichance與test、next起使用, 當(dāng)test結(jié)果有值時(shí),則概 率跳轉(zhuǎn)recv response二403 optional二true next= “reg_fail test二 “flag “chance二0.90/recvcounter計(jì)數(shù)器累加1recv response二
19、 “200 counter= “SuccessCALL3.3. 正則表達(dá)式正則表達(dá)式作為Sipp中極為重要的功能,在各個(gè)場(chǎng)景下應(yīng)用廣泛,最常見 的是通過正則表達(dá)式,獲取接收消息中某個(gè)參數(shù),并將該參數(shù)賦給變量,用于后 續(xù)流程的使用。正則表達(dá)式的使用語法如下圖所示:正則表達(dá)式的命令為regexp屬性為需要匹配的表達(dá)式內(nèi)容,其中使用”()電括起來的部分,為匹 配項(xiàng),可以賦給變量;search_in屬性為設(shè)置本次查詢的方式,sipp支持3種正則匹配的方式,分別 為:頭域查詢匹配當(dāng)search_in=”hdr”時(shí),表示正則按照頭域匹配,必須包含header參數(shù), 給出需要查詢的頭域名稱,如header=
20、”From”。sipp會(huì)在指定的頭域中進(jìn)行匹 配。注:start-line的匹配也是用頭域匹配方式。消息查詢匹配當(dāng)search_in=”msg”時(shí),表示正則根據(jù)整個(gè)消息內(nèi)容進(jìn)行匹配,通常在需 要匹配SDP內(nèi)容時(shí)會(huì)用到。變量查詢匹配當(dāng)search_in”var”時(shí),表示正則按照變量進(jìn)行匹配,必須配置variable參 數(shù),給出需要匹配的變量名稱,如 variable=”header_to_tag”。4. 變量與關(guān)鍵字4.1. 關(guān)鍵字的使用sipp中定義了大量的關(guān)鍵字,涉及到網(wǎng)絡(luò)參數(shù)、sip會(huì)話參數(shù)和媒體參數(shù)等 等,需要在編寫腳本時(shí)加以注意。關(guān)鍵字的引用格式為keyword,例如 locao_ip
21、、call_id等。下表列出了常用的關(guān)鍵字:關(guān)鍵字描述備注service由參數(shù)-s傳遞,一般用來指定單個(gè)主被叫remote ip遠(yuǎn)端設(shè)備地址remote_port遠(yuǎn)端設(shè)備端口。可以在腳本中使用偏移量,如remote port+3transport指定傳輸層協(xié)議,UDP/TCP,由參數(shù)-t決定local ip主機(jī)本地地址,可以由參數(shù)-i指定local_port由系統(tǒng)隨機(jī)分配可由-p指定,可以在腳本中使用偏移量,local por t+3lensdp長度,用于“ Con ten t-Leng th”頭域,由 sipp自動(dòng)生成或者手動(dòng)指定,可以添加偏移 量,如len+3call number呼叫索引
22、,從1開始,每增加一個(gè)呼叫遞增1cseq初始值為1,可以使用參數(shù)-base_cseq手動(dòng) 指定初始值。media ip本地媒體流ip,可以由-mi參數(shù)指定media_port本地媒體流端口,可由-mp指定,可以設(shè)置偏 移量media por t+3auto_media_port自動(dòng)指定媒體流端口,僅用于pcap。該參數(shù) 使多個(gè)呼叫的音頻和視頻端口從-mp指定的端 口開始,并給每個(gè)新的呼叫分配端口。SIPp 默認(rèn)支持10000個(gè)rtp流并發(fā)last_*此關(guān)鍵字用于從接收的上一個(gè)sip消息中提 取指定頭域(如果存在)的值。比如last_to則表示從接收的上一個(gè)sip消息中 提取To域的消息保存到l
23、ast to中并應(yīng)用。fieldO-nfile二filenameline二number從外部文件csv加載值,file表示選擇從命 令行中指定的csv文件的一個(gè)文件作為外部 文件;line定義選擇的外部文件的起始行, field 選擇字段filename二filename把指 定的文件中內(nèi)容全部插入到sip消息中。由 于空格符,回車符及換行符不被某些關(guān)鍵字識(shí)別,所以插入的文件需要被精確地編輯成你 想要的格式才行,否則會(huì)有亂碼。timestamp當(dāng)前時(shí)間戳,與錯(cuò)誤日志的時(shí)間戳格式一樣last message上一個(gè)收到的消息authentication用于認(rèn)證頭(aut hen tication
24、head),這個(gè) 關(guān)鍵字可以使用參數(shù),書寫格式為:authentication username二myusername password二mypassword,如果沒有扌旨定用戶名 (username),則需使用命令行參數(shù)-au或者 -s指定;如果沒有指定密碼(password), 則需使用命令行參數(shù)-ap指定pid指定sipp的pid,即進(jìn)程號(hào)routes如果在recv命令中已設(shè)置rrs屬性為 true,則Record Route頭被存儲(chǔ)在關(guān)鍵字 route中,可使用routes調(diào)用。next_url如果在recv命令中已設(shè)置rrs屬性為 true,貝next_url中包含 Contact
25、頭中的 內(nèi)容branch生成一個(gè)由(z9hG4bK) + call number + message索引組成的branch id到腳本中。 如果你想要使用與之前的消息一樣的branch id,你可以使用偏移量指定,如branch-Nmsg index在腳本中提供消息號(hào)clock tick在消息中包含sipp的內(nèi)部時(shí)鐘sipp_version在消息中包含sipp的版本fill使用字符填充消息users如果在命令行中指定了-users參數(shù),則這個(gè) 關(guān)鍵字表示當(dāng)前已經(jīng)運(yùn)行的用戶的數(shù)量userid如果在命令行中指定了-users參數(shù),則這個(gè) 關(guān)鍵字表示當(dāng)前正在運(yùn)行的用戶的id (范圍 為 0 到 us
26、ersT)4.2. 變量定義與使用sipp的腳本中,支持雙精度浮點(diǎn)型變量和字符串變量兩種變量類型.浮點(diǎn)型變量針對(duì)浮點(diǎn)型變量的操作命令主要有assgin (賦值)、sample (統(tǒng)計(jì)分 布)和todouble (強(qiáng)制類型轉(zhuǎn)換),以及加減乘除等簡單算術(shù)運(yùn)算,舉例 如下:v!-將sum減3,然后再賦值給sum - vmultiply assign_to=sum value=4 / vdivide assign_to=sum value=5 /v/actionv/nop浮點(diǎn)型變量還支持變量比較測(cè)試功能,該部分在 分支一節(jié)中會(huì)重點(diǎn)描述。字符串變量可以使用命令vassignstr 創(chuàng)建字符串變量,該命令
27、有兩個(gè)參數(shù) assigno”和value,例如:vnopvaction vassignstr assign_to=str value=field0 /v/actionv/nop字符串變量支持比較操作,命令為vstrcmp,其對(duì)字符串比較的值是一個(gè)小于,等于,或大于 0 的雙精度整型值。通常該功能用在對(duì)正則表達(dá)式提取結(jié)果的操作,以及從外部文件獲取值的操作中,例如: 鑒權(quán)在 sipp 的關(guān)鍵字和變量使用中,有一類特殊的變量需要重點(diǎn)說明,那就是 鑒權(quán)。sipp支持標(biāo)準(zhǔn)的Digest和AKA兩種鑒權(quán)方法。具體的使用方法如下:在接收到 401或407響應(yīng)時(shí),如果該流程需要鑒權(quán),則需要在 recv 命令中
28、增加屬性auth=”true”,sipp會(huì)記錄該消息中鑒權(quán)頭域的相關(guān) 值。隨后在發(fā)送的第二條請(qǐng)求消息中,使用authentication關(guān)鍵字,指定 用戶名及密碼(Digest 方式)或 aka_K、aka_OP、aka_AMF(AKA),sipp將自動(dòng)計(jì)算出response,并構(gòu)造相關(guān)頭域內(nèi)容。例 如:還可以通過在外部文件中某一列,配置authentication username=1001 password=1001,然后在消息中使用fieldN引用, 來實(shí)現(xiàn)不同用戶的鑒權(quán)過程。sipp腳本中還支持對(duì)鑒權(quán)的response結(jié)果進(jìn)行校驗(yàn),該操作使用 verifyauth命令來完成,并將檢查結(jié)
29、果賦值給一個(gè)布爾變量中。例 如:5. 分支和跳轉(zhuǎn)5.1. 標(biāo)簽sipp 腳本支持自定義標(biāo)簽操作,因此可以通過 next、jump 等命令,實(shí)現(xiàn)對(duì)流程邏輯的分支和跳轉(zhuǎn)功能,類似C語言中的goto。標(biāo)簽的定義語法格式如下:其中id屬性值為該標(biāo)簽的標(biāo)識(shí),可以通過next屬性進(jìn)行標(biāo)簽之間的跳轉(zhuǎn),例如:在例子中 , recv 命令使用了 next, 即如果收到了486 響應(yīng),則直接跳轉(zhuǎn)至id 為 err_ack 的 label 處。5.2. 條件判斷sipp 支持通過變量測(cè)試,來進(jìn)行某些條件的判斷,繼而執(zhí)行相關(guān)的操作,類似于開發(fā)語言中的ifelse語法,變量測(cè)試的動(dòng)作命令為“test”,含有四個(gè)參數(shù):
30、variable, value, assign_to, compare。variable 和 value 的比較的結(jié)果,通過 assgin_to 賦給某一變量,值為 1 或0。 compare 為比較的操作方法,一共有 6 種,分別為:equalnot_equalgreater_thanless_thangreater_than_equalless_than_equal舉例如下:上述語句中,變量St與10進(jìn)行比較,如果小于10,則result = 1,否則 result = 0。1.1. 跳轉(zhuǎn)和循環(huán)sipp 腳本的正常執(zhí)行流程為順序依次執(zhí)行相關(guān)語句,但是在某些場(chǎng)景下需 要非線性地執(zhí)行,例如收到
31、錯(cuò)誤消息,則跳轉(zhuǎn)至錯(cuò)誤處理等,就需要用到分支功 能。結(jié)合上文內(nèi)容可知, sipp 的分支功能時(shí)通過標(biāo)簽和跳轉(zhuǎn)命令來實(shí)現(xiàn)的。在任意一個(gè)動(dòng)作命令之后添加一個(gè) next二label_id的參數(shù),當(dāng)腳本執(zhí)行 完這個(gè)動(dòng)作后就會(huì)跳到指定標(biāo)號(hào)處繼續(xù)往下執(zhí)行,另外,如果在 next 參數(shù)后再 添加一個(gè)test=”m”參數(shù),腳本僅在變量$m為真時(shí)才會(huì)跳到指定標(biāo)號(hào),這個(gè)特 性結(jié)合條件判斷,可以用來實(shí)現(xiàn)某些特殊要求。例如:上述例子為注冊(cè)服務(wù)器部分腳本,實(shí)現(xiàn)的效果是:當(dāng)接收到REGISTER消息 后,通過正則表達(dá)式獲取Expires頭域的值,并將其與0比較,如果相等,則表 示該消息為注銷請(qǐng)求,result2=1。no
32、p命令行中,判斷如果result2=1,這跳轉(zhuǎn) 至deregister標(biāo)簽,進(jìn)行注銷流程的處理。(注:通過正則表達(dá)式匹配而獲取到的值,均為字符串變量,因此無法直接 與數(shù)值0進(jìn)行比較,而是通過strcmp命令進(jìn)行字符串比較,將此結(jié)果賦給 result,再對(duì)result和0進(jìn)行二次比較判斷,最終獲得結(jié)果。)1.2. 概率分支為了更加符合真實(shí)測(cè)試環(huán)境的業(yè)務(wù)流程,Sipp還提供了概率分支功能,即 通過在next屬性后,增加chance屬性,并配置0-1之間的數(shù)值,模擬幾率跳轉(zhuǎn) 分支動(dòng)作。例如:當(dāng)sipp腳本執(zhí)行到該段時(shí),有50%的幾率會(huì)跳轉(zhuǎn)至401標(biāo)簽處,緊接著會(huì) 有30%的幾率跳轉(zhuǎn)至END標(biāo)簽。(注
33、:由于 chance 屬性必須與 test 配對(duì)使用,因此如果不需判斷直接跳 轉(zhuǎn),可以配置 test= ” 1”,類似于if True,即始終執(zhí)行。配置chance時(shí)必須注意,該值僅為當(dāng)前所有會(huì)話的幾率,即如例子 中配置的數(shù)值,則會(huì)有50%的會(huì)話跳轉(zhuǎn)至401標(biāo)簽, 15%的會(huì)話跳轉(zhuǎn) 至 END 標(biāo)簽, 65%的會(huì)話順序線性執(zhí)行。)2. 文件引用2.1. 外部文件格式sipp腳本支持通過引用外部文件的方式,導(dǎo)入變量內(nèi)容以供使用。外部文 件的后綴名為 . csv 或.conf, 可以在命令行使用“-inf文件名”參數(shù)來引入變量到 腳本中。文件的第一行須申明變量的讀取方式是順序讀取(SEQUENTI
34、AL)還是隨 機(jī)讀取(RANDOM)還是基于用戶的方式讀取(USER)。每一行對(duì)應(yīng)一個(gè)呼叫, 使用“;”分隔符分隔每一項(xiàng)數(shù)據(jù),分開的項(xiàng)在腳本中作為變量名filed0,field1,”fieldn來引用。例如:SEQUENTIALSarah;sipphone32Bob;sipphone12Fred;sipphone94該文件中的行會(huì)被按順序讀取,第一個(gè)呼叫第一行,第二個(gè)呼叫第二行。在 腳本中的任何地方只要出現(xiàn)了關(guān)鍵詞fieldO,根據(jù)第幾個(gè)呼叫決定,這個(gè)關(guān)鍵 詞就會(huì)被替換為Sarah或者Bob或者Fred, fieldl也是類似。如果達(dá)到了 文件末尾則再重新開始,一直循環(huán),文件的大小沒有限制。在
35、實(shí)際使用中,也可以使用參數(shù)使得不從第一行開始,例如從第二行開始: fieldO line=1另外,還可以使用不止一個(gè)外部文件來引入變量,這在測(cè)試一些場(chǎng)景是很有 用的,比如要做一個(gè)測(cè)試主叫號(hào)碼是按順序的但是被叫是隨機(jī)的時(shí)候,就可以用 一個(gè)第一行為順序的 caller.csv 文件和一個(gè)第一行為隨機(jī)的 callee.csv 文件 來實(shí)現(xiàn)了。例如:INVITE sip:fieldO file=callee.csv SIP/2.OFrom: sipp user ;tag=pidSIPpTagOOcall_numberTo: sut user 由于在數(shù)據(jù)較多時(shí),編輯和使用均不方便, sipp 還支持對(duì)外
36、部文件的格式 化定義,然后在程序中自動(dòng)根據(jù)規(guī)則生成相應(yīng)的數(shù)據(jù)。(該部分內(nèi)容較多,詳見 sipp 使用手冊(cè))5.3. 引用方法sipp 腳本中使用外部文件,常見的場(chǎng)景有兩種:利用外部文件引入field變量,構(gòu)造相應(yīng)的發(fā)送消息體例如在主叫用戶的腳本中,可以通過引用 user.csv 文件中的fieldO、fieldl,分別對(duì)應(yīng)主叫號(hào)碼和被叫號(hào)碼,構(gòu)造From頭域和To 頭域。通過查找外部文件,獲取對(duì)應(yīng)的行號(hào),隨后進(jìn)行相關(guān)處理例如,在針對(duì)不同的被叫號(hào)碼,進(jìn)行用戶忙、無響應(yīng)、前轉(zhuǎn)等業(yè)務(wù)時(shí), 可以通過事先配置 forward_users.conf 文件,在其中針對(duì)不同被叫號(hào)碼, 分別設(shè)置若干列,對(duì)應(yīng)不同的值,并在被叫用戶的腳本中,使用正則表達(dá)式 獲取到被叫號(hào)碼,再使用 lookup 命令查詢 forward_users.conf 文件,匹配 當(dāng)前用戶號(hào)碼處于第幾行,并讀取改行的fieldl的值,然后通過變量測(cè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江交通職業(yè)技術(shù)學(xué)院《產(chǎn)品設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 默契問答變態(tài)題目及答案
- 湖南水利水電職業(yè)技術(shù)學(xué)院《中國古代文學(xué)與作品選讀二》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古經(jīng)貿(mào)外語職業(yè)學(xué)院《生鮮農(nóng)產(chǎn)品保藏與運(yùn)銷》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川工商學(xué)院《中國哲學(xué)原著選讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱醫(yī)科大學(xué)《兒童文學(xué)名著導(dǎo)讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海歐華職業(yè)技術(shù)學(xué)院《中醫(yī)藥健康與養(yǎng)生》2023-2024學(xué)年第二學(xué)期期末試卷
- 企業(yè)減污降碳協(xié)同增效的理論基礎(chǔ)與發(fā)展趨勢(shì)
- 綿陽飛行職業(yè)學(xué)院《英語文學(xué)導(dǎo)論(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 曲靖醫(yī)學(xué)高等專科學(xué)校《生物醫(yī)學(xué)光學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 工模外發(fā)管理流程模板
- 部編版高一上冊(cè)語文第三課《百合花》課文原文教案及知識(shí)點(diǎn)
- 北京理工附中小升初分班考試真題
- 膀胱鏡檢查記錄
- 英語社團(tuán)活動(dòng)課件
- 學(xué)前兒童發(fā)展心理學(xué)-情感
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 《生活中的大數(shù)》練習(xí)課 北師大版
- GB∕T 16762-2020 一般用途鋼絲繩吊索特性和技術(shù)條件
- 電網(wǎng)施工作業(yè)票模板
- T∕CAEPI 31-2021 旋轉(zhuǎn)式沸石吸附濃縮裝置技術(shù)要求
- 國家級(jí)高技能人才培訓(xùn)基地建設(shè)項(xiàng)目實(shí)施管理辦法
評(píng)論
0/150
提交評(píng)論