1 # Written by Boudewijn Schoon
2 # see LICENSE.txt for license information
8 from BaseLib.Core.BitTornado.BT1.MessageID import *
9 from BaseLib.Core.CacheDB.SqliteCacheDBHandler import CrawlerDBHandler
10 from BaseLib.Core.CacheDB.SqliteSeedingStatsCacheDB import *
12 from olconn import OLConnection
13 from test_crawler import TestCrawler
17 class TestSeedingStats(TestCrawler):
19 Testing Seeding-Stats statistics gathering using the Crawler framework
24 I want to start a Tribler client once and then connect to it
25 many times. So there must be only one test method to prevent
26 setUp() from creating a new client every time.
28 The code is constructed so unittest will show the name of the
29 (sub)test where the error occured in the traceback it prints.
31 self.subtest_invalid_query()
32 self.subtest_valid_query()
34 def subtest_invalid_query(self):
36 Send a CRAWLER_SEEDINGSTATS_QUERY message to the Tribler
37 instance. Execute an invalid SQL query.
39 print >>sys.stderr, "-"*80, "\ntest: subtest_invalid_query"
41 # make sure that the OLConnection IS in the crawler_db
42 crawler_db = CrawlerDBHandler.getInstance()
43 crawler_db.temporarilyAddCrawler(self.my_permid)
45 s = OLConnection(self.my_keypair, "localhost", self.hisport)
47 queries = ["FOO BAR", cPickle.dumps(["select * from category", ""])]
49 self.send_crawler_request(s, CRAWLER_SEEDINGSTATS_QUERY, 0, 0, query)
51 error, payload = self.receive_crawler_reply(s, CRAWLER_SEEDINGSTATS_QUERY, 0)
52 assert error != 0, error
54 print >>sys.stderr, "test_seeding_stats:", payload
58 def subtest_valid_query(self):
60 Send a CRAWLER_SEEDINGSTATS_QUERY message to the Tribler
61 instance. Execute a valid SQL query.
63 print >>sys.stderr, "-"*80, "\ntest: subtest_valid_query"
65 # make sure that the OLConnection IS in the crawler_db
66 crawler_db = CrawlerDBHandler.getInstance()
67 crawler_db.temporarilyAddCrawler(self.my_permid)
69 # test with valid data
70 seedingstats_db = SQLiteSeedingStatsCacheDB.getInstance()
71 seedingstats_db.insertMany("SeedingStats", [(50000, 'foobar', 'dummy_seed', 500, 0, 0), (80000, 'bar', 'dummy_seed', 800, 1, 0)])
73 s = OLConnection(self.my_keypair, "localhost", self.hisport, mylistenport=self.listen_port)
75 queries = [cPickle.dumps([("read", "SELECT * FROM SeedingStats"), ("read", "SELECT * FROM SeedingStats WHERE crawled = 0")])]
77 self.send_crawler_request(s, CRAWLER_SEEDINGSTATS_QUERY, 0, 0, query)
79 error, payload = self.receive_crawler_reply(s, CRAWLER_SEEDINGSTATS_QUERY, 0)
80 assert error == 0, (error, payload)
83 print >>sys.stderr, "test_seeding_stats:", cPickle.loads(payload)
87 if __name__ == "__main__":
89 suite = unittest.TestSuite()
90 suite.addTest(unittest.makeSuite(TestSeedingStats))
92 unittest.main(defaultTest="test_suite")