ppf/new: Add test module for top.py. Add test methods for EnhanceSwarmDescription.
[cs-p2p-next.git] / ppf / new / tests / test_top.py
1 """
2 Test suite for top methods. Uses unittest module.
3
4 2011, Mariana Marasoiu, mariana.marasoiu@gmail.com
5 """
6
7 import unittest
8 import os
9 import os.path
10 import datetime
11 import sys
12 import MySQLdb
13 import subprocess
14
15 import config
16 import storage
17 import top
18
19 class EnhanceSwarmDescriptionTest(unittest.TestCase):
20
21     """Test suite for enhance_swarm_description method in top.py."""
22
23     # Class specific variables. Initialized in setUp, used throughout tests.
24     config_file = "config.sample.ini"
25     access_file = "access.sample.ini"
26     sd = None
27     sw = None
28     expected_swarm_id = 0
29     expected_session_ids = []
30
31     def get_swarm_id(self):
32         sections = self.sd.data.sections()
33         session = sections[0]
34         session_items = dict(self.sd.data.items(session))
35         return int(session_items['swarm_id'])
36
37     def get_session_ids(self):
38         session_names = self.sd.data.sections()
39         session_names.remove('swarm')
40         session_ids = []
41         for session in session_names:
42             session_items = dict(self.sd.data.items(session))
43             session_ids.append(int(session_items['client_session_id']))
44         return session_ids
45
46     def setUp(self):
47         # Initialize SwarmDescription and AccessConfig instances
48         config_file_path = os.path.join(os.path.dirname(__file__),
49                                         self.config_file)
50         access_file_path = os.path.join(os.path.dirname(__file__),
51                                         self.access_file)
52         self.sd = config.SwarmDescription()
53         self.sd.load(config_file_path)
54         self.ac = config.AccessConfig()
55         self.ac.load(access_file_path)
56         self.sw = self.ac.get_swarm_writer()
57         self.expected_session_ids = [3, 4, 5, 6]
58         self.expected_swarm_id = 3
59
60     def test_correct_swarm_id(self):
61         top.enhance_swarm_description(self.sd, self.sw)
62         swarm_id = self.get_swarm_id()
63         self.assertEqual(swarm_id, self.expected_swarm_id)
64
65     def test_correct_session_id(self):
66         top.enhance_swarm_description(self.sd, self.sw)
67         session_ids = self.get_session_ids()
68         self.assertEqual(session_ids, self.expected_session_ids)
69
70
71 if __name__ == "__main__":
72     unittest.main()