class TestBuddyCastDataHandler(unittest.TestCase): def setUp(self): db_path = TRIBLER_DB_PATH db = SQLiteCacheDB.getInstance() db.initDB(db_path, busytimeout=BUSYTIMEOUT) launchmany = FakeLaunchmany(db) overlay_bridge = FakeOverlayBridge() self.datahandler = DataHandler(launchmany,overlay_bridge) def tearDown(self): SQLiteCacheDB.getInstance().close() self.datahandler.peers = None del self.datahandler def loadData(self, npeers = 2500): self.datahandler.updateMyPreferences() self.datahandler.loadAllPeers(npeers) #self.datahandler.loadAllPrefs(npeers) def test_updateMyPreferences(self): self.datahandler.updateMyPreferences() assert self.datahandler.myprefs == [126, 400, 562, 1074, 1279, 1772, 1812, 2271, 2457, 2484, 3359, 3950] self.datahandler.updateMyPreferences(10) assert self.datahandler.myprefs == [126, 400, 562, 1074, 1279, 1772, 1812, 2271, 2457, 3359] assert len(self.datahandler.owners[3359]) == 21 assert len(self.datahandler.owners[2484]) == 0 assert len(self.datahandler.owners[400]) == 8 def test_updateAllPeers_Prefs(self): self.datahandler.loadAllPeers() for p in self.datahandler.peers: assert len(self.datahandler.peers[p][2]) == 0 assert len(self.datahandler.peers) == 3995 npeers = 2500 self.datahandler.peers = None self.datahandler.loadAllPeers(npeers) for p in self.datahandler.peers: assert len(self.datahandler.peers[p][2]) == 0 assert len(self.datahandler.peers) == npeers # Statistics: loadAllPeers takes 0.015 sec on test db # 0.5 sec on Johan's db # 0.03 second on loading 2500 peers from Johan's db def test_updateAllPrefs(self): self.loadData(2500) n = 0 for p in self.datahandler.peers: assert len(self.datahandler.peers[p]) == 3 n += len(self.datahandler.peers[p][2]) assert n == self.datahandler.nprefs self.datahandler.peers = None self.loadData(None) n = 0 for p in self.datahandler.peers: assert len(self.datahandler.peers[p]) == 3 n += len(self.datahandler.peers[p][2]) assert n == self.datahandler.nprefs # Statistics: 2500 peers preferences covers 91% of all preferences # self.datahandler.peers = None # for i in range(100, 4000, 100): # self.datahandler.loadAllPrefs(i) # print i, self.datahandler.nprefs, '%.2d%%'%(100*self.datahandler.nprefs/60634) """ Statistics of memory usage (KB) Full Test DB Full Johan's DB 2000 peers from Johan's DB Init: 11,520 12,912 12,912 LoadPeers: 12,656 23,324 12,532 LoadPrefs: 17,792 50,820 18,380 """ def test_updateAllSim(self): init_bak_tribler_sdb() self.loadData(2500) pid = 3582 oldsim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(oldsim-21.941432788)<1e-4, oldsim n_updates = self.datahandler.updateAllSim() # 0.296 second for Johan's db, 0. 188 second for test db assert n_updates == 2166 sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim-17.9844112279)<1e-4, sim def test_adddelMyPref(self): self.datahandler.overlay_bridge = FakeOverlayBridge() self.loadData() pid = 3582 self.datahandler.updateAllSim() oldsim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) tids = sample(range(4000),10) for tid in tids: infohash = self.datahandler.torrent_db.getInfohash(tid) self.datahandler.addMyPref(infohash) torrents = self.datahandler.pref_db._getTorrentOwnersID(tid) assert self.datahandler.owners[tid] == set(torrents), (self.datahandler.owners[tid], set(torrents)) assert tid in self.datahandler.myprefs sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim-oldsim)>1e-4, (sim, oldsim) self.datahandler.delMyPref(infohash) assert tid not in self.datahandler.owners.keys() assert tid not in self.datahandler.myprefs sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim-oldsim)<1e-4, (sim, oldsim) oldsim = sim def test_get_dns_from_peerdb(self): permid_str_id_1 = 'MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAAA6SYI4NHxwQ8P7P8QXgWAP+v8SaMVzF5+fSUHdAMrs6NvL5Epe1nCNSdlBHIjNjEiC5iiwSFZhRLsr' permid = str2bin(permid_str_id_1) self.loadData(2500) assert self.datahandler.get_dns_from_peerdb(permid) == ('68.108.115.221', 6881) def test_numbers(self): self.loadData(2500) npeers = self.datahandler.get_npeers() ntorrents = self.datahandler.get_ntorrents() nmyprefs = self.datahandler.get_nmyprefs() assert npeers == 2500 assert ntorrents == 4483 assert nmyprefs == 12
class TestBuddyCastDataHandler(unittest.TestCase): def setUp(self): # prepare database if sys.platform == 'win32': realhomevar = '${APPDATA}' else: realhomevar = '${HOME}' realhome = os.path.expandvars(realhomevar) testdbpath = os.path.join(realhome,'.Tribler', 'bsddb') self.homepath = mkdtemp() #print "\ntest: create tmp dir", self.homepath self.dbpath = os.path.join(self.homepath, 'bsddb') copy_tree(testdbpath, self.dbpath) self.install_path = '..' tribler_init(unicode(self.homepath),unicode(self.install_path)) self.data_handler = DataHandler(FakeRawServer(),db_dir=self.dbpath) # self.data_handler.max_num_peers = 100 # self.data_handler.postInit() def tearDown(self): #del self.data_handler #self.data_handler.close() remove_tree(self.homepath) def _test_getAllPeers(self): # testing to get a number of recently seen peers num_peers = 64 #TODO: remove dir problem, right test peers = self.data_handler.getAllPeers(num_peers) values = peers.values() values.sort() oldvls = 0 for v in values: vls = v[0] assert vls >= oldvls, (vls, oldvls) oldvls = vls assert len(peers) == num_peers, (len(peers), num_peers) def _test_updateMyPreferences(self): self.data_handler.updateMyPreferences() assert len(self.data_handler.mypreflist)>0, len(self.data_handler.mypreflist) def _test_updateAllPref(self): num_peers = 56 self.data_handler.getAllPeers(num_peers) self.data_handler.updateAllPref() #for p in self.data_handler.preferences: # print len(self.data_handler.preferences[p]), `p[30:40]` assert len(self.data_handler.preferences) == num_peers, (len(self.data_handler.preferences), num_peers) def test_updateAllI2ISim(self): self.data_handler.getAllPeers() self.data_handler.updateAllPref() from time import time t = time() torrents = self.data_handler.updateAllI2ISim(ret=True) print "used", time()-t print len(torrents), len(self.data_handler.peers) for t in torrents: print torrents[t] break #for p in self.data_handler.peers: # print self.data_handler.peers[p] def xxtest_profile(self): def foo(n = 10000): def bar(n): for i in range(n): math.pow(i,2) def baz(n): for i in range(n): math.sqrt(i) bar(n) baz(n) self.preload2(136, 30) print "profile starts" prof = hotshot.Profile("test.prof") prof.runcall(self.buddycast.buddycast_core.getBuddyCastData) prof.close() stats = hotshot.stats.load("test.prof") stats.strip_dirs() stats.sort_stats('cumulative', 'time', 'calls') stats.print_stats(100)
class TestBuddyCastDataHandler(unittest.TestCase): def setUp(self): db_path = TRIBLER_DB_PATH db = SQLiteCacheDB.getInstance() db.initDB(db_path, busytimeout=BUSYTIMEOUT) launchmany = FakeLaunchmany(db) overlay_bridge = FakeOverlayBridge() self.datahandler = DataHandler(launchmany, overlay_bridge) def tearDown(self): SQLiteCacheDB.getInstance().close() self.datahandler.peers = None del self.datahandler def loadData(self, npeers=2500): self.datahandler.updateMyPreferences() self.datahandler.loadAllPeers(npeers) #self.datahandler.loadAllPrefs(npeers) def test_updateMyPreferences(self): self.datahandler.updateMyPreferences() assert self.datahandler.myprefs == [ 126, 400, 562, 1074, 1279, 1772, 1812, 2271, 2457, 2484, 3359, 3950 ] self.datahandler.updateMyPreferences(10) assert self.datahandler.myprefs == [ 126, 400, 562, 1074, 1279, 1772, 1812, 2271, 2457, 3359 ] assert len(self.datahandler.owners[3359]) == 21 assert len(self.datahandler.owners[2484]) == 0 assert len(self.datahandler.owners[400]) == 8 def test_updateAllPeers_Prefs(self): self.datahandler.loadAllPeers() for p in self.datahandler.peers: assert len(self.datahandler.peers[p][2]) == 0 assert len(self.datahandler.peers) == 3995 npeers = 2500 self.datahandler.peers = None self.datahandler.loadAllPeers(npeers) for p in self.datahandler.peers: assert len(self.datahandler.peers[p][2]) == 0 assert len(self.datahandler.peers) == npeers # Statistics: loadAllPeers takes 0.015 sec on test db # 0.5 sec on Johan's db # 0.03 second on loading 2500 peers from Johan's db def test_updateAllPrefs(self): self.loadData(2500) n = 0 for p in self.datahandler.peers: assert len(self.datahandler.peers[p]) == 3 n += len(self.datahandler.peers[p][2]) assert n == self.datahandler.nprefs self.datahandler.peers = None self.loadData(None) n = 0 for p in self.datahandler.peers: assert len(self.datahandler.peers[p]) == 3 n += len(self.datahandler.peers[p][2]) assert n == self.datahandler.nprefs # Statistics: 2500 peers preferences covers 91% of all preferences # self.datahandler.peers = None # for i in range(100, 4000, 100): # self.datahandler.loadAllPrefs(i) # print i, self.datahandler.nprefs, '%.2d%%'%(100*self.datahandler.nprefs/60634) """ Statistics of memory usage (KB) Full Test DB Full Johan's DB 2000 peers from Johan's DB Init: 11,520 12,912 12,912 LoadPeers: 12,656 23,324 12,532 LoadPrefs: 17,792 50,820 18,380 """ def test_updateAllSim(self): init_bak_tribler_sdb() self.loadData(2500) pid = 3582 oldsim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(oldsim - 21.941432788) < 1e-4, oldsim n_updates = self.datahandler.updateAllSim( ) # 0.296 second for Johan's db, 0. 188 second for test db assert n_updates == 2166 sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim - 17.9844112279) < 1e-4, sim def test_adddelMyPref(self): self.datahandler.overlay_bridge = FakeOverlayBridge() self.loadData() pid = 3582 self.datahandler.updateAllSim() oldsim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) tids = sample(range(4000), 10) for tid in tids: infohash = self.datahandler.torrent_db.getInfohash(tid) self.datahandler.addMyPref(infohash) torrents = self.datahandler.pref_db._getTorrentOwnersID(tid) assert self.datahandler.owners[tid] == set(torrents), ( self.datahandler.owners[tid], set(torrents)) assert tid in self.datahandler.myprefs sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim - oldsim) > 1e-4, (sim, oldsim) self.datahandler.delMyPref(infohash) assert tid not in self.datahandler.owners.keys() assert tid not in self.datahandler.myprefs sim = self.datahandler.peer_db.getOne('similarity', peer_id=pid) assert abs(sim - oldsim) < 1e-4, (sim, oldsim) oldsim = sim def test_get_dns_from_peerdb(self): permid_str_id_1 = 'MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAAA6SYI4NHxwQ8P7P8QXgWAP+v8SaMVzF5+fSUHdAMrs6NvL5Epe1nCNSdlBHIjNjEiC5iiwSFZhRLsr' permid = str2bin(permid_str_id_1) self.loadData(2500) assert self.datahandler.get_dns_from_peerdb(permid) == ( '68.108.115.221', 6881) def test_numbers(self): self.loadData(2500) npeers = self.datahandler.get_npeers() ntorrents = self.datahandler.get_ntorrents() nmyprefs = self.datahandler.get_nmyprefs() assert npeers == 2500 assert ntorrents == 4483 assert nmyprefs == 12