def template_UpdateAck(self, ack, ackbits, update, expected_ack, 
         expected_ackbits):
     s= UDPSocket()
     s.ack = ack
     s.ackbits = ackbits
     s.UpdateAck(update)
     self.assertTrue(s.ack == expected_ack)
     self.assertTrue(s.ackbits == expected_ackbits)
 def template_SendAndRecv(self, seq, ack, ackbits, payload,
         expected_ack, expected_ackbits):
     s = UDPSocket()
     t = UDPSocket()
     s.Open()
     t.Open()
     s_addr = ('127.0.0.1', 5555)
     t_addr = ('127.0.0.1', 2056)
     s.Bind(s_addr)
     t.Bind(t_addr)
     s.sock.connect(t_addr)
     t.sock.connect(s_addr)
     s.seq = seq
     t.ack = ack
     t.ackbits = ackbits
     status = 0
     try:
         s.Send(payload)
         for i in range(0, 1000):
             d = t.Recv()
             if d != None:
                 break
     except Exception as ex:
         logger.exception(ex)
         status = 1
     s.Close()
     t.Close()
     self.assertTrue(status == 0)
     self.assertTrue(s.seq == seq + 1)
     self.assertTrue(d != None)
     self.assertTrue(d.seq == seq)
     self.assertTrue(d.ackbits == ackbits)
     self.assertTrue(d.payload == payload)
     self.assertTrue(t.ack == expected_ack)
     self.assertTrue(t.ackbits == expected_ackbits,
             'got {0} expected {1}'.format(t.ackbits, expected_ackbits))