Ticket #2: benchmark_test.py

File benchmark_test.py, 2.8 KB (added by lostclus, 3 years ago)

Benchmark test script

Line 
1import cProfile
2import os
3import sys
4import time
5import phpserialize
6
7sys.path.insert(0, '.')
8import linkexchange
9from linkexchange.clients.sape import SapeTestServer
10from linkexchange.clients.linkfeed import LinkFeedTestServer
11
12class 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
18class 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
37def 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
47def 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
66def 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
85if __name__ == '__main__':
86    print "Using LinkExchange library in: %s" % linkexchange.__file__
87    test_sape()
88    test_linkfeed()