99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Netty單元測試總覽

2018-08-08 10:45 更新

我們已經了解過了,為了能夠構建 ChannelPipeline 的處理邏輯,可以將 ChannelHandler 實現(xiàn)串聯(lián)在一起。之前我們也解釋過了,支持有可能存在的復雜的分解處理成小的和可以重用的組件,其中的每一個定義良好的處理任務或步驟。本章將展示它簡化了測試。

Netty 的促進 ChannelHandler 的測試使用的是的所謂“嵌入式”傳輸。這是由一個特殊 Channel 實現(xiàn),EmbeddedChannel提供了一個簡單的方法通過管道傳遞事件。

這種想法很簡單:你把入站或者出站的數(shù)據(jù)寫入一個EmbeddedChannel 然后檢查是否能夠達到 ChannelPipeline 的結束。以此來確定消息編碼或解碼和 ChannelHandler 是否操作被觸發(fā)。

在表10.1中列出了相關方法。

名稱職責
writeInbound寫一個入站消息到 EmbeddedChannel。 如果數(shù)據(jù)能從 EmbeddedChannel 通過 readInbound() 讀到,則返回 true
readInbound從 EmbeddedChannel 讀到入站消息。任何返回遍歷整個ChannelPipeline。如果讀取還沒有準備,則此方法返回 null
writeOutbound寫一個出站消息到 EmbeddedChannel。 如果數(shù)據(jù)能從 EmbeddedChannel 通過 readOutbound() 讀到,則返回 true
readOutbound從 EmbeddedChannel 讀到出站消息。任何返回遍歷整個ChannelPipeline。如果讀取還沒有準備,則此方法返回 null
Finish如果從入站或者出站中能讀到數(shù)據(jù),標記 EmbeddedChannel 完成并且返回。這同時會調用 EmbeddedChannel 的關閉方法

測試入站和出站數(shù)據(jù)

處理入站數(shù)據(jù)由 ChannelInboundHandler 處理并且表示數(shù)據(jù)從遠端讀取。出站數(shù)據(jù)由 ChannelOutboundHandler 處理并且表示數(shù)據(jù)寫入遠端。 根據(jù) ChannelHandler 測試你會選擇 writeInbound(),writeOutbound(), 或者兩者都有。

圖10.1顯示了數(shù)據(jù)流如何通過 ChannelPipeline 使用 EmbeddedChannel 的方法。

Figure%2010

Figure 10.1 EmbeddedChannel data flow

如上圖所示,使用 writeOutbound() 寫消息到 Channel,消息在出站方法通過 ChannelPipeline,之后就可以使用 readOutbound() 讀取消息。著同樣使用與入站,使用 writeInbound() 和 readInbound()。處在

每種情況下,消息是通過 ChannelPipeline 并被有關ChannelInboundHandler 或 ChannelOutboundHandler 進行處理。如果消息是不消耗您可以使用 readInbound() 或 readOutbound() 適當?shù)淖x到 Channel 處理后的消息。

讓我們仔細看一下這兩個場景,看看他們如何適用于測試您的應用程序邏輯。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號