def test_message_encode_decode(self): task = IbisTaskMessage(12345, 'foo', 12, 1000) encoded = task.encode() decoded = IbisTaskMessage.decode(encoded) encoded2 = decoded.encode() self.assertEqual(encoded, encoded2) attrs = ['semaphore_id', 'shmem_name', 'shmem_offset', 'shmem_size'] for attr in attrs: self.assertEqual(getattr(task, attr), getattr(decoded, attr))
def run(self): # TODO: task execution class should acquire OS semaphore, execute # task, then release the semaphore. encoded_task = self.sock.recv(1024) if not encoded_task: raise ValueError('Request was empty') try: task_msg = IbisTaskMessage.decode(encoded_task) except: self.sock.send(traceback.format_exc()) else: # Acknowledge successful receipt self.sock.send('ok') finally: self.sock.close() self.execute(task_msg)