def test_server_client(self): self.start_server_thread() Pipe.wait_for('test_named_pipes', 1000) pipe = Pipe('test_named_pipes', server=False) pipe.write('clientToServer') self.assertEqual(pipe.read(), 'serverToClient') self.server_thread.join(5) self.assertFalse(self.server_thread.is_alive())
def pipe_server(): ''' Part of attach/set_attach for Windows ''' while 1: pipe = Pipe('vdb_%d' % os.getpid(), server=True) knock = pipe.read(3) if knock == 'vsi': os.kill(0, signal.CTRL_C_EVENT) #ctypes.windll.kernel32.GenerateConsoleCtrlEvent(0, os.getpid()) pipe.disconnect() pipe.close()
def attach(pid): ''' Trigger a python pid that's been already run set_attach This is the second part of attaching to a python process. Once set_attach is run, on another prompt running attach will trigger the interrupt thing attaching or triggering whatever db_cmd was''' if os.name == 'nt': pipe = Pipe('vdb_%d' % pid) pipe.write('vsi') pipe.close() else: os.kill(pid, ATTACH_SIGNAL)
def test_server_client_byte_read(self): self.start_server_thread() Pipe.wait_for('test_named_pipes', 1000) pipe = Pipe('test_named_pipes', server=False) pipe.write('clientToServer') str = '' while 1: byte = pipe.read(1) if byte is None: break self.assertEqual(len(byte), 1) str += byte self.assertEqual(str, 'serverToClient') self.server_thread.join(5) self.assertFalse(self.server_thread.is_alive())
def server(self): pipe = Pipe('test_named_pipes', server=True) self.assertEqual(pipe.read(), 'clientToServer') pipe.write('serverToClient') pipe.close()