ppf/new: Complete test methods for TriblerLogParser.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Thu, 1 Sep 2011 14:22:58 +0000 (17:22 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Thu, 1 Sep 2011 18:00:51 +0000 (21:00 +0300)
ppf/new/tests/test_parsing.py

index c7398ec..fbbc975 100644 (file)
@@ -549,29 +549,201 @@ class LibtorrentLogParserTest(unittest.TestCase):
 class TriblerLogParserTest(unittest.TestCase):
     """Test suite for TriblerLogParser class in parsing.py."""
 
+    log_file = 'tribler.log'
+    no_log_file = 'no.log'
+
     def setUp(self):
-        pass
+        """Create log file and initiate local counter variables."""
+        f = open(self.log_file, "w")
+        f.close()
+
+        # Initialize message type counters.
+        self.statmsg_count = 0
+        self.pstatmsg_count = 0
+        self.verbmsg_count = 0
+
+        # Initialize internal call counts.
+        self.bogus_line_num_calls = 0
+        self.status_line_num_calls = 0
+        self.peer_status_line_num_calls = 0
+        self.verbose_line_num_calls = 0
+
+        # Remove no log file in case it exists.
+        try:
+            os.remove(self.no_log_file)
+        except OSError, e:
+            pass
 
     def tearDown(self):
-        pass
+        """Remove log file."""
+        os.remove(self.log_file)
+
+    def append_line(self, filename, line):
+        """Add (append) a line to to a file."""
+        f = open(filename, "at")
+        f.write(line + "\n")
+        f.close()
+
+    def add_bogus_line(self, filename):
+        """Add bogus (non-relevant) line to file."""
+        if self.bogus_line_num_calls == 0:
+            self.append_line(filename, "Nebuchadnezzar")
+        else:
+            self.append_line(filename, "Assurbanipal")
+        self.bogus_line_num_calls = self.bogus_line_num_calls + 1
+
+    def add_status_line(self, filename):
+        """Add status line to file."""
+        if self.status_line_num_calls == 0:
+            pass
+        else:
+            pass
+        self.status_line_num_calls = self.status_line_num_calls + 1
+
+    def add_peer_status_line(self, filename):
+        """Add peer status line to file."""
+        if self.peer_status_line_num_calls == 0:
+            pass
+        else:
+            pass
+        self.peer_status_line_num_calls = self.peer_status_line_num_calls + 1
+
+    def add_verbose_line(self, filename):
+        """Add verbose line to file."""
+        if self.verbose_line_num_calls == 0:
+            pass
+        else:
+            pass
+        self.verbose_line_num_calls = self.verbose_line_num_calls + 1
+
+    def add_message_to_count(self, msg):
+        """Update message type counters according to msg."""
+        if msg.__class__ == storage.StatusMessage:
+            self.statmsg_count = self.statmsg_count + 1
+        elif msg.__class__ == storage.PeerStatusMessage:
+            self.pstatmsg_count = self.pstatmsg_count + 1
+        elif msg.__class__ == storage.VerboseMessage:
+            self.verbmsg_count = self.verbmsg_count + 1
 
     def test_no_log_file(self):
-        self.assertEqual(True, False)
+        """Log file doesn't exist."""
+        exception_raised = False
+        try:
+            p = parsing.TriblerLogParser(self.no_log_file,
+                    "2009-01-01 12:13:14")
+        except (IOError, OSError, IndexError), e:
+            exception_raised = True
+
+        self.assertEqual(exception_raised, True)
 
     def test_empty_log_file(self):
-        self.assertEqual(True, False)
+        """Log file is empty."""
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg = p.get_next_message()
+
+        self.assertEqual(msg, None)
 
     def test_bogus_log_file(self):
-        self.assertEqual(True, False)
+        """Log file contains bogus information (no real data)."""
+        self.add_bogus_line(self.log_file)
+        self.add_bogus_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg = p.get_next_message()
+
+        self.assertEqual(msg, None)
 
     def test_get_status_message(self):
-        self.assertEqual(True, False)
+        """Add status message."""
+        self.add_status_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg = p.get_next_message()
+        self.add_message_to_count(msg)
+
+        self.assertEqual(self.statmsg_count, 1)
 
     def test_get_status_messages(self):
-        self.assertEqual(True, False)
+        """Add multiple status messages."""
+        self.add_status_line(self.log_file)
+        self.add_status_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg1 = p.get_next_message()
+        msg2 = p.get_next_message()
+        self.add_message_to_count(msg1)
+        self.add_message_to_count(msg2)
+
+        self.assertEqual(self.statmsg_count, 2)
+
+    def test_get_peer_status_message(self):
+        """Add peer status message."""
+        self.add_peer_status_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg = p.get_next_message()
+        self.add_message_to_count(msg)
+
+        self.assertEqual(self.pstatmsg_count, 1)
+
+    def test_get_peer_status_messages(self):
+        """Add multiple peer status messsages."""
+        self.add_peer_status_line(self.log_file)
+        self.add_peer_status_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg1 = p.get_next_message()
+        msg2 = p.get_next_message()
+        self.add_message_to_count(msg1)
+        self.add_message_to_count(msg2)
+
+        self.assertEqual(self.pstatmsg_count, 2)
+
+    def test_get_verbose_message(self):
+        """Add verbose message."""
+        self.add_verbose_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg = p.get_next_message()
+        self.add_message_to_count(msg)
+
+        self.assertEqual(self.verbmsg_count, 1)
+
+    def test_get_verbose_messages(self):
+        """Add multiple verbose messages."""
+        self.add_verbose_line(self.log_file)
+        self.add_verbose_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg1 = p.get_next_message()
+        msg2 = p.get_next_message()
+        self.add_message_to_count(msg1)
+        self.add_message_to_count(msg2)
+
+        self.assertEqual(self.verbmsg_count, 2)
 
     def test_get_mixed_messages_same_file(self):
-        self.assertEqual(True, False)
+        """Add mixed messages in the same file.
+        Parser should detect a message of each type (status, peer status
+        and verbose).
+        """
+        self.add_bogus_line(self.log_file)
+        self.add_status_line(self.log_file)
+        self.add_peer_status_line(self.log_file)
+        self.add_verbose_line(self.log_file)
+        p = parsing.TriblerLogParser(self.log_file, "2009-01-01 12:13:14")
+
+        msg1 = p.get_next_message()
+        msg2 = p.get_next_message()
+        msg3 = p.get_next_message()
+        self.add_message_to_count(msg1)
+        self.add_message_to_count(msg2)
+        self.add_message_to_count(msg3)
+
+        self.assertEqual(self.statmsg_count, 1)
+        self.assertEqual(self.pstatmsg_count, 1)
+        self.assertEqual(self.verbmsg_count, 1)
 
 
 if __name__ == "__main__":