2 Test suite for storage. Uses unittest module.
4 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro.
14 def create_non_numeric_subfolders(path):
15 os.mkdir(os.path.join(path, "ana"))
16 os.mkdir(os.path.join(path, "are"))
17 os.mkdir(os.path.join(path, "mere"))
18 os.mkdir(os.path.join(path, "si"))
19 os.mkdir(os.path.join(path, "pere"))
21 def create_numeric_subfolders_sequential(path):
22 os.mkdir(os.path.join(path, "1"))
23 os.mkdir(os.path.join(path, "2"))
24 os.mkdir(os.path.join(path, "3"))
25 os.mkdir(os.path.join(path, "4"))
26 os.mkdir(os.path.join(path, "5"))
28 def create_numeric_subfolders_non_sequential(path):
29 os.mkdir(os.path.join(path, "32"))
30 os.mkdir(os.path.join(path, "5"))
31 os.mkdir(os.path.join(path, "423"))
32 os.mkdir(os.path.join(path, "1401"))
33 os.mkdir(os.path.join(path, "92"))
35 def create_numeric_files(path):
36 f = open(os.path.join(path, "33"), 'w')
38 f = open(os.path.join(path, "6"), 'w')
40 f = open(os.path.join(path, "424"), 'w')
42 f = open(os.path.join(path, "1402"), 'w')
44 f = open(os.path.join(path, "93"), 'w')
47 class StorageTest(unittest.TestCase):
49 Test suite for stand alone functions in storage.py.
52 # Class specific variables. Initialized in setUp, used throughout tests.
53 path = "/tmp/ttfa-test"
60 """Remove base folder."""
61 shutil.rmtree(self.path)
63 def test_find_last_numeric_subfolder_no_subfolders(self):
64 """Test return of None when no subfolders are present."""
65 id = storage.find_last_numeric_subfolder(self.path)
66 self.assertEqual(id, None)
68 def test_find_last_numeric_subfolder_no_numeric_subfolders(self):
69 """Test return of None when no numeric subfolders are present."""
70 create_non_numeric_subfolders(self.path)
72 id = storage.find_last_numeric_subfolder(self.path)
73 self.assertEqual(id, None)
75 def test_find_last_numeric_subfolder_only_numeric_subfolders_sequential(self):
77 Test return of correct id when sequential numeric named
78 subfolders only are present (1, 2, 3, ...).
80 create_numeric_subfolders_sequential(self.path)
82 id = storage.find_last_numeric_subfolder(self.path)
83 self.assertEqual(id, 5)
85 def test_find_last_numeric_subfolder_only_numeric_subfolders_nonsequential(self):
87 Test return of correct id when nonsequential numeric named
88 subfolders only are present (32, 5, 423, ...).
90 create_numeric_subfolders_non_sequential(self.path)
92 id = storage.find_last_numeric_subfolder(self.path)
93 self.assertEqual(id, 1401)
95 def test_find_last_numeric_subfolder_mixed_subfolders_sequential(self):
97 Test return of None when mixed named subfolders (numeric and
98 others) are present. Numeric folders are sequential.
100 create_non_numeric_subfolders(self.path)
101 create_numeric_subfolders_sequential(self.path)
103 id = storage.find_last_numeric_subfolder(self.path)
104 self.assertEqual(id, 5)
106 def test_find_last_numeric_subfolder_mixed_subfolders_nonsequential(self):
108 Test return of None when mixed named subfolders (numeric and
109 others) are present. Numeric folders are non-sequential.
111 create_non_numeric_subfolders(self.path)
112 create_numeric_subfolders_non_sequential(self.path)
114 id = storage.find_last_numeric_subfolder(self.path)
115 self.assertEqual(id, 1401)
117 def test_find_last_numeric_subfolder_mixed_subfolders_files(self):
119 Test return of None when mixed named subfolders (numeric and
120 others) together with files are present. Numeric folders are
123 create_non_numeric_subfolders(self.path)
124 create_numeric_subfolders_non_sequential(self.path)
125 create_numeric_files(self.path)
127 id = storage.find_last_numeric_subfolder(self.path)
128 self.assertEqual(id, 1401)
131 class TreeTextFileAccessTest(unittest.TestCase):
133 Test suite for TreeTextFileAccess class in storage.py.
136 # Class specific variables. Initialized in setUp, used throughout tests.
137 path = "/tmp/ttfa-test"
140 """Create folder. Initialize object. """
144 """Remove base folder."""
145 shutil.rmtree(self.path)
147 def test_add_swarm_folder_and_file_are_created(self):
148 # Create instance of class and add swarm.
149 a = storage.TreeTextFileAccess(self.path)
150 s = storage.Swarm(torrent_filename="fedora.torrent",
154 expected_swarm_subfolder = 1
155 expected_swarm_path = os.path.join(self.path,
156 str(expected_swarm_subfolder))
157 expected_swarm_config = os.path.join(expected_swarm_path, "swarm.conf")
159 self.assertEqual(os.path.isdir(expected_swarm_path), True)
160 self.assertEqual(os.path.isfile(expected_swarm_config), True)
162 def test_add_client_session_folder_and_file_are_created(self):
163 a = storage.TreeTextFileAccess(self.path)
166 s = storage.Swarm(torrent_filename="fedora.torrent",
170 # Add client session.
171 cs = storage.ClientSession(swarm_id=1, btclient="Tribler",
172 system_os="Linux", system_os_version="2.6.26",
173 system_ram=2048, system_cpu=3000, public_ip="141.85.224.201",
174 public_port="50500", ds_limit=300, us_limit=200)
175 a.add_client_session(cs)
177 expected_swarm_subfolder = 1
178 expected_session_subfolder = 1
179 expected_swarm_path = os.path.join(self.path,
180 str(expected_swarm_subfolder))
181 expected_session_path = os.path.join(expected_swarm_path,
182 str(expected_session_subfolder))
183 expected_session_config = os.path.join(expected_session_path,
184 "client_session.conf")
186 self.assertEqual(os.path.isdir(expected_session_path), True)
187 self.assertEqual(os.path.isfile(expected_session_config), True)
189 def test_add_peer_status_message_file_is_created(self):
190 a = storage.TreeTextFileAccess(self.path)
193 s = storage.Swarm(torrent_filename="fedora.torrent",
197 # Add client session.
198 cs = storage.ClientSession(swarm_id=1, btclient="Tribler",
199 system_os="Linux", system_os_version="2.6.26",
200 system_ram=2048, system_cpu=3000, public_ip="141.85.224.201",
201 public_port="50500", ds_limit=300, us_limit=200)
202 a.add_client_session(cs)
204 # Add peer status message.
205 msg = storage.PeerStatusMessage(swarm_id=1, client_session_id=1,
206 peer_ip="141.85.224.202", peer_port="12345",
207 download_speed=13, upload_speed=98)
208 a.add_peer_status_message(msg)
210 expected_swarm_subfolder = 1
211 expected_session_subfolder = 1
212 expected_swarm_path = os.path.join(self.path,
213 str(expected_swarm_subfolder))
214 expected_session_path = os.path.join(expected_swarm_path,
215 str(expected_session_subfolder))
216 expected_message_file = os.path.join(expected_session_path,
219 self.assertEqual(os.path.isfile(expected_message_file), True)
221 def test_add_peer_status_message_number_of_lines(self):
222 self.assertEqual(True, True)
224 def test_add_status_message_file_is_created(self):
225 a = storage.TreeTextFileAccess(self.path)
228 s = storage.Swarm(torrent_filename="fedora.torrent",
232 # Add client session.
233 cs = storage.ClientSession(swarm_id=1, btclient="Tribler",
234 system_os="Linux", system_os_version="2.6.26",
235 system_ram=2048, system_cpu=3000, public_ip="141.85.224.201",
236 public_port="50500", ds_limit=300, us_limit=200)
237 a.add_client_session(cs)
239 # Add peer status message.
240 msg = storage.StatusMessage(swarm_id=1, client_session_id=1,
241 num_peers=10, num_dht_peers=3, download_speed=102,
242 upload_speed=99, download_size=10213, upload_size=3301)
243 a.add_status_message(msg)
245 expected_swarm_subfolder = 1
246 expected_session_subfolder = 1
247 expected_swarm_path = os.path.join(self.path,
248 str(expected_swarm_subfolder))
249 expected_session_path = os.path.join(expected_swarm_path,
250 str(expected_session_subfolder))
251 expected_message_file = os.path.join(expected_session_path,
254 self.assertEqual(os.path.isfile(expected_message_file), True)
256 def test_add_status_message_number_of_lines(self):
257 self.assertEqual(True, True)
259 def test_add_verbose_message_file_is_created(self):
260 a = storage.TreeTextFileAccess(self.path)
263 s = storage.Swarm(torrent_filename="fedora.torrent",
267 # Add client session.
268 cs = storage.ClientSession(swarm_id=1, btclient="Tribler",
269 system_os="Linux", system_os_version="2.6.26",
270 system_ram=2048, system_cpu=3000, public_ip="141.85.224.201",
271 public_port="50500", ds_limit=300, us_limit=200)
272 a.add_client_session(cs)
274 # Add peer status message.
275 msg = storage.VerboseMessage(swarm_id=1, client_session_id=1,
276 transfer_direction="to", peer_ip="141.85.224.202",
277 peer_port="12345", message_type="CHOKE")
278 a.add_verbose_message(msg)
280 expected_swarm_subfolder = 1
281 expected_session_subfolder = 1
282 expected_swarm_path = os.path.join(self.path,
283 str(expected_swarm_subfolder))
284 expected_session_path = os.path.join(expected_swarm_path,
285 str(expected_session_subfolder))
286 expected_message_file = os.path.join(expected_session_path,
289 self.assertEqual(os.path.isfile(expected_message_file), True)
291 def test_add_verbose_message_number_of_lines(self):
292 self.assertEqual(True, True)
294 if __name__ == "__main__":