3.1資訊處理
該測試能操作SIP request和SIP response資訊,通過UDP和TCP收發資訊。
3.1.1編碼
編碼器可以編碼兩種資訊,可以發送整行資訊或者碎片資訊。過程是:
1. 編碼request/response line
2. 編碼header(可以是short或long格式,混合header可以被編碼成逗号分隔的list或幾個header行)
3. 添加消息body
測試port的行為受測試端口參數控制。
3.1.2解碼
所有header都收到後解析,解析器使用Bison和Flex實作,能夠接收所有格式。
測試port可以忽略所有解碼錯誤、靜默丢棄這個資訊或者以RAW資訊/描述錯誤方式通過該錯誤資訊。
解析完成後,資訊body從緩存中取出。
3.2網絡解析
測試port有兩種模式
- Basic模式
- Advanced模式
3.2.1發送資訊的源端口号
本地host和端口号可以在兩種模式中設定。
使用UDP時,端口号可以是監聽端口或任意端口,由random_udp_sending_port參數控制;使用TCP時,端口号必須是作業系統選擇的。
3.2.2Basic模式
測試port隻能處理一個TCP或UDP socket,不支援同時使用兩種協定收發,但是測試port可以選擇協定和遠端host。
start-up操作
映射時,測試port檢測初始協定和目标host名。如果初始目标host名預設,port打開一個監聽socket(sip協定決定是UDP或TCP)。
接收TCP連接配接
監聽可用時,測試port隻能接收一個TCP接入。port接入該request後,監聽socket不關閉但直到該TCP關閉前不再接入。
接收資訊
從TCP或UDP接收。
收到混合TCP包時使用buffer收集所有資訊。
發送資訊
當被請求發送資訊時,端口對比現有連接配接和要求的參數(目标host名,端口号和協定)。參數有不同,則測試port關閉現有連接配接,打開新連接配接。
如果資訊大小超過MTU(最大傳輸單元)的大小且協定是UDP,資訊将不被發送并發送一個TTCN錯誤,該檢測可以被忽略。MTU初始長為1300位元組。
3.2.3Advanced模式
該模式允許多個TCP連接配接,同時監聽UDP和TCP端口。每個連接配接以協定id、遠端host名和遠端端口号區分。
每個可以監聽socket的連接配接在運作時可以通過ASP_SIP_open打開,ASP_SIP_close關閉。
start-up操作
在映射操作時,測試port按照設定打開監聽socket,可以打開UDP或TCP或兩種同時。
如果目标host名指定且初始協定是TCP,測試port打開指定代理的TCP連接配接。
接收TCP連接配接
端口可以在監聽端口接收任意數量的連接配接請求。接收連接配接後端口可以在收發資訊或建立新的連接配接。
接收資訊
端口可以在任意時間在打開的TCP或UDP連接配接上接收資訊。
收到混合TCP包時使用buffer收集所有資訊,每個TCP有專屬記憶體。
發送資訊
當被請求發送資訊時,端口對比現有連接配接和要求的參數(目标host名,端口号和協定)。如果請求host和port沒有打開的連接配接,測試port将打開新連接配接。
如果資訊大小超過MTU(最大傳輸單元)的大小且協定是UDP,資訊将不被發送并發送一個TTCN錯誤,該檢測可以被忽略。MTU初始長為1300位元組。
傳輸錯誤處理
當傳輸層錯誤,測試port可以生成TTCN錯誤或發送ASP_SIP_error到test case(如發送/接收失敗)。測試port的行為由運作配置檔案控制。