我的客戶端(基於雙絞線)應該在連接丟失時自動重新連接到服務器,我需要對此功能進行測試,這裏是我的測試方法,其中@todo評論非常清楚預期的行爲:如何在Python中關閉和啓動服務器扭曲?
@defer.inlineCallbacks
def test_reconnect_on_connection_loss(self):
client = SMPPClientFactory(self.config)
client.reConnect = mock.Mock(wraps=client.reConnect)
# Connect
smpp = yield client.connect()
# Bind
yield smpp.bindAsTransmitter()
# @todo: A connection loss is expected here
# the client is supposed to try reconnections
# for a while, the server then shall start
# again and the client will get connected.
# Unbind & Disconnect
yield smpp.unbindAndDisconnect()
##############
# Assertions :
# Protocol verification
self.assertNotEqual(0, client.reConnect.call_count)
在服務器端,我試圖中止連接只是接收bindAsTransmitter請求後:
class LooseConnectionOnBindSMSC(SMSC):
def handleBindAsTransmitter(self, reqPDU):
self.sendSuccessResponse(reqPDU)
# Connection is aborted here:
self.transport.abortConnection()
連接成功中止,我的客戶開始嘗試重新連接如預期,但它從來沒有得到的方式讓我的服務器再次UP。
讓保羅,是的服務器仍然聽我什麼時候我abortConnection服務器端...我需要一種方法來停止聽幾秒鐘,然後再次開始。 –