예제 #1
0
    def testClose(self):
        conn, addr = self.serv.accept()
        conn.close()

        sd = self.cli
        read, write, err = select.select([sd], [], [], 1.0)
        self.assertEqual(read, [sd])
        self.assertEqual(sd.recv(1), '')
예제 #2
0
 def _process_files(self):
     while True:
         try:
             ready = select.select([f for f in self._files if not f.active and not f.closed], [], [])[0]
         except RestartSelect:
             continue
         else:
             for file in ready:
                 file.active = True
             self._command_channel.send(Command('process_results', files=[f for f in ready if not f.closed]))
예제 #3
0
 def _process_files(self):
     while True:
         try:
             ready = select.select([f for f in self._files if not f.active and not f.closed], [], [])[0]
         except RestartSelect:
             continue
         else:
             for file in ready:
                 file.active = True
             self._command_channel.send(Command('process_results', files=[f for f in ready if not f.closed]))
예제 #4
0
 def testAccept(self):
     # Testing non-blocking accept
     self.serv.setblocking(0)
     try:
         conn, addr = self.serv.accept()
     except socket.error:
         pass
     else:
         self.fail("Error trying to do non-blocking accept.")
     read, write, err = select.select([self.serv], [], [])
     if self.serv in read:
         conn, addr = self.serv.accept()
     else:
         self.fail("Error trying to do accept after select.")
예제 #5
0
 def testRecv(self):
     # Testing non-blocking recv
     conn, addr = self.serv.accept()
     conn.setblocking(0)
     try:
         msg = conn.recv(len(MSG))
     except socket.error:
         pass
     else:
         self.fail("Error trying to do non-blocking recv.")
     read, write, err = select.select([conn], [], [])
     if conn in read:
         msg = conn.recv(len(MSG))
         self.assertEqual(msg, MSG)
     else:
         self.fail("Error during select call to non-blocking socket.")
예제 #6
0
def receive(sock, n, timeout=5):
    r, w, x = select.select([sock], [], [], timeout)
    if sock in r:
        return sock.recv(n)
    else:
        raise RuntimeError, "timed out on %r" % (sock, )