| 1 | import cProfile |
|---|
| 2 | import os |
|---|
| 3 | import sys |
|---|
| 4 | import time |
|---|
| 5 | import phpserialize |
|---|
| 6 | |
|---|
| 7 | sys.path.insert(0, '.') |
|---|
| 8 | import linkexchange |
|---|
| 9 | from linkexchange.clients.sape import SapeTestServer |
|---|
| 10 | from linkexchange.clients.linkfeed import LinkFeedTestServer |
|---|
| 11 | |
|---|
| 12 | class LargeSapeTestServer(SapeTestServer): |
|---|
| 13 | data = phpserialize.dumps(dict([ |
|---|
| 14 | ('/page/%d' % i, |
|---|
| 15 | ['<a href="url%d.%d">link%d.%d</a>' % (i, j, i, j) for j in range(4)]) |
|---|
| 16 | for i in range(500)])) |
|---|
| 17 | |
|---|
| 18 | class LargeLinkFeedTestServer(LinkFeedTestServer): |
|---|
| 19 | data = """<?xml version="1.0" encoding="UTF-8"?> |
|---|
| 20 | <data> |
|---|
| 21 | <config> |
|---|
| 22 | <item name="end"><![CDATA[<!--12345-->]]></item> |
|---|
| 23 | <item name="delimiter"><![CDATA[.]]></item> |
|---|
| 24 | <item name="after_text"><![CDATA[]]></item> |
|---|
| 25 | <item name="start"><![CDATA[<!--12345-->]]></item> |
|---|
| 26 | <item name="before_text"><![CDATA[]]></item> |
|---|
| 27 | </config> |
|---|
| 28 | <pages> |
|---|
| 29 | %s |
|---|
| 30 | </pages> |
|---|
| 31 | </data>""" % '\n'.join([ |
|---|
| 32 | '<page url="/page/%d"><level>2</level>%s</page>' % (i, ''.join([ |
|---|
| 33 | '<link><![CDATA[<a href="url%d.%d">link%d.%d</a>]]></link>' % ( |
|---|
| 34 | i, j, i, j) for j in range(4)])) |
|---|
| 35 | for i in range(500)]) |
|---|
| 36 | |
|---|
| 37 | def test_client(test_server, client_spec): |
|---|
| 38 | try: |
|---|
| 39 | os.unlink('test.db') |
|---|
| 40 | except OSError: |
|---|
| 41 | pass |
|---|
| 42 | pl = linkexchange.Platform(clients = [client_spec]) |
|---|
| 43 | for i in range(50): |
|---|
| 44 | pl.get_raw_links('http://example.com/page/%d' % i) |
|---|
| 45 | os.unlink('test.db') |
|---|
| 46 | |
|---|
| 47 | def test_sape(): |
|---|
| 48 | srv = LargeSapeTestServer() |
|---|
| 49 | client_spec = ['sape', [], dict( |
|---|
| 50 | user = 'user123456789', |
|---|
| 51 | server_list = [srv.url])] |
|---|
| 52 | try: |
|---|
| 53 | import linkexchange.db_drivers |
|---|
| 54 | except ImportError: |
|---|
| 55 | client_spec[2]['cache_driver'] = ('file', [], dict( |
|---|
| 56 | filename = lambda key: 'test.db')) |
|---|
| 57 | else: |
|---|
| 58 | client_spec[2]['db_driver'] = ('shelve', [], dict( |
|---|
| 59 | filename = lambda key: 'test.db')) |
|---|
| 60 | print "Running Sape test...", |
|---|
| 61 | sys.stdout.flush() |
|---|
| 62 | t = time.time() |
|---|
| 63 | test_client(srv, client_spec) |
|---|
| 64 | print "done in %f seconds" % (time.time() - t) |
|---|
| 65 | |
|---|
| 66 | def test_linkfeed(): |
|---|
| 67 | srv = LargeLinkFeedTestServer() |
|---|
| 68 | client_spec = ['linkfeed', [], dict( |
|---|
| 69 | user = 'user123456789', |
|---|
| 70 | server_list = [srv.url])] |
|---|
| 71 | try: |
|---|
| 72 | import linkexchange.db_drivers |
|---|
| 73 | except ImportError: |
|---|
| 74 | client_spec[2]['cache_driver'] = ('file', [], dict( |
|---|
| 75 | filename = lambda key: 'test.db')) |
|---|
| 76 | else: |
|---|
| 77 | client_spec[2]['db_driver'] = ('shelve', [], dict( |
|---|
| 78 | filename = lambda key: 'test.db')) |
|---|
| 79 | print "Running LinkFeed test...", |
|---|
| 80 | sys.stdout.flush() |
|---|
| 81 | t = time.time() |
|---|
| 82 | test_client(srv, client_spec) |
|---|
| 83 | print "done in %f seconds" % (time.time() - t) |
|---|
| 84 | |
|---|
| 85 | if __name__ == '__main__': |
|---|
| 86 | print "Using LinkExchange library in: %s" % linkexchange.__file__ |
|---|
| 87 | test_sape() |
|---|
| 88 | test_linkfeed() |
|---|