Пример #1
0
Файл: common.py Проект: acfr/mcl
    def test_message_publish(self):
        """Test %s MessageBroadcaster() publish."""

        # Test publish fails if the input is not a Message().
        with self.assertRaises(TypeError):
            MessageBroadcaster(dict)
        with self.assertRaises(TypeError):
            MessageBroadcaster(0)

        # Create an instance of MessageBroadcaster().
        message = self.Message()
        broadcaster = MessageBroadcaster(self.Message)

        # Test publish succeeds with default topic.
        broadcaster.publish(message)

        # Ensure attempts to publish a non-message type raises an exception.
        with self.assertRaises(TypeError):
            broadcaster.publish(False)

        # Test setting topic at publish.
        self.assertEqual(broadcaster.topic, None)
        broadcaster.publish(message, topic='topic')
        with self.assertRaises(TypeError):
            broadcaster(message, topic=5)

        # Ensure attempts to publish on a closed connection raises an
        # exception.
        broadcaster.close()
        with self.assertRaises(IOError):
            broadcaster.publish(message)
Пример #2
0
    def test_message_publish(self):
        """Test %s MessageBroadcaster() publish."""

        # Test publish fails if the input is not a Message().
        with self.assertRaises(TypeError):
            MessageBroadcaster(dict)
        with self.assertRaises(TypeError):
            MessageBroadcaster(0)

        # Create an instance of MessageBroadcaster().
        message = self.Message()
        broadcaster = MessageBroadcaster(self.Message)

        # Test publish succeeds with default topic.
        broadcaster.publish(message)

        # Ensure attempts to publish a non-message type raises an exception.
        with self.assertRaises(TypeError):
            broadcaster.publish(False)

        # Test setting topic at publish.
        self.assertEqual(broadcaster.topic, None)
        broadcaster.publish(message, topic='topic')
        with self.assertRaises(TypeError):
            broadcaster(message, topic=5)

        # Ensure attempts to publish on a closed connection raises an
        # exception.
        broadcaster.close()
        with self.assertRaises(IOError):
            broadcaster.publish(message)
Пример #3
0
    def test_open_close(self):
        """Test LogNetwork() open/close."""

        # Create broadcasters.
        broadcaster_A = MessageBroadcaster(UnitTestMessageA)
        broadcaster_B = MessageBroadcaster(UnitTestMessageB)

        # Initialise network dump.
        messages = [UnitTestMessageA, UnitTestMessageB]
        dump = LogNetwork(TMP_PATH, messages, open_init=False)
        self.assertEqual(dump.directory, None)
        self.assertFalse(dump.is_alive)

        # Ensure a log directory has NOT been created (Note a README file is
        # created in the /tmp directory).
        self.assertEqual(len(os.listdir(TMP_PATH)), 1)

        # Start network dump.
        self.assertTrue(dump.open())
        self.assertTrue(dump.is_alive)
        self.assertFalse(dump.open())
        self.assertNotEqual(dump.directory, None)

        # Ensure a log directory as been created and it is empty.
        directory = dump.directory
        self.assertEqual(len(os.listdir(TMP_PATH)), 2)
        self.assertEqual(len(os.listdir(directory)), 0)

        # Broadcast messages for logging.
        broadcaster_A.publish(UnitTestMessageA(data='A'))
        broadcaster_B.publish(UnitTestMessageB(data='B'))

        # Wait for log files to be created.
        begin_time = time.time()
        while len(os.listdir(dump.directory)) < 2:
            time.sleep(0.1)
            if time.time() - begin_time > TIME_OUT:
                break

        # Ensure the log files have been created and are in a logging state.
        directory = dump.directory
        files = os.listdir(directory)
        self.assertEqual(len(files), 2)
        for message in messages:
            self.assertTrue((message.name + '.tmp') in files)

        # Stop network dump.
        self.assertTrue(dump.close())
        self.assertFalse(dump.is_alive)
        self.assertFalse(dump.close())
        self.assertEqual(dump.directory, None)

        # Ensure the log files have been closed.
        files = os.listdir(directory)
        self.assertEqual(len(files), 2)
        for message in messages:
            self.assertTrue((message.name + '.log') in files)

        # Ensure LogNetwork auto-opens by default.
        dump = LogNetwork(TMP_PATH, messages)
        self.assertNotEqual(dump.directory, None)
        self.assertFalse(dump.open())
        self.assertTrue(dump.is_alive)
        self.assertTrue(dump.close())
Пример #4
0
    def test_open_close(self):
        """Test LogNetwork() open/close."""

        # Create broadcasters.
        broadcaster_A = MessageBroadcaster(UnitTestMessageA)
        broadcaster_B = MessageBroadcaster(UnitTestMessageB)

        # Initialise network dump.
        messages = [UnitTestMessageA, UnitTestMessageB]
        dump = LogNetwork(TMP_PATH, messages, open_init=False)
        self.assertEqual(dump.directory, None)
        self.assertFalse(dump.is_alive)

        # Ensure a log directory has NOT been created (Note a README file is
        # created in the /tmp directory).
        self.assertEqual(len(os.listdir(TMP_PATH)), 1)

        # Start network dump.
        self.assertTrue(dump.open())
        self.assertTrue(dump.is_alive)
        self.assertFalse(dump.open())
        self.assertNotEqual(dump.directory, None)

        # Ensure a log directory as been created and it is empty.
        directory = dump.directory
        self.assertEqual(len(os.listdir(TMP_PATH)), 2)
        self.assertEqual(len(os.listdir(directory)), 0)

        # Broadcast messages for logging.
        broadcaster_A.publish(UnitTestMessageA(data='A'))
        broadcaster_B.publish(UnitTestMessageB(data='B'))

        # Wait for log files to be created.
        begin_time = time.time()
        while len(os.listdir(dump.directory)) < 2:
            time.sleep(0.1)
            if time.time() - begin_time > TIME_OUT:
                break

        # Ensure the log files have been created and are in a logging state.
        directory = dump.directory
        files = os.listdir(directory)
        self.assertEqual(len(files), 2)
        for message in messages:
            self.assertTrue((message.name + '.tmp') in files)

        # Stop network dump.
        self.assertTrue(dump.close())
        self.assertFalse(dump.is_alive)
        self.assertFalse(dump.close())
        self.assertEqual(dump.directory, None)

        # Ensure the log files have been closed.
        files = os.listdir(directory)
        self.assertEqual(len(files), 2)
        for message in messages:
            self.assertTrue((message.name + '.log') in files)

        # Ensure LogNetwork auto-opens by default.
        dump = LogNetwork(TMP_PATH, messages)
        self.assertNotEqual(dump.directory, None)
        self.assertFalse(dump.open())
        self.assertTrue(dump.is_alive)
        self.assertTrue(dump.close())