Example #1
0
    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))
Example #2
0
    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))
Example #3
0
    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)