]> arthur.barton.de Git - bup.git/blob - lib/bup/t/tclient.py
Fix test by forcing order
[bup.git] / lib / bup / t / tclient.py
1 import sys, os, stat, time, random, subprocess
2 from bup import client, git
3 from wvtest import *
4
5 def randbytes(sz):
6     s = ''
7     for i in xrange(sz):
8         s += chr(random.randrange(0,256))
9     return s
10
11 s1 = randbytes(10000)
12 s2 = randbytes(10000)
13 s3 = randbytes(10000)
14     
15 @wvtest
16 def test_server_split_with_indexes():
17     os.environ['BUP_MAIN_EXE'] = '../../../bup'
18     os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
19     subprocess.call(['rm', '-rf', bupdir])
20     git.init_repo(bupdir)
21     lw = git.PackWriter()
22     c = client.Client(bupdir, create=True)
23     rw = c.new_packwriter()
24
25     lw.new_blob(s1)
26     lw.close()
27
28     rw.new_blob(s2)
29     rw.breakpoint()
30     rw.new_blob(s1)
31     
32
33 @wvtest
34 def test_multiple_suggestions():
35     os.environ['BUP_MAIN_EXE'] = '../../../bup'
36     os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
37     subprocess.call(['rm', '-rf', bupdir])
38     git.init_repo(bupdir)
39
40     lw = git.PackWriter()
41     lw.new_blob(s1)
42     lw.close()
43     lw = git.PackWriter()
44     lw.new_blob(s2)
45     lw.close()
46     WVPASSEQ(len(os.listdir(git.repo('objects/pack'))), 4)
47
48     c = client.Client(bupdir, create=True)
49     WVPASSEQ(len(os.listdir(c.cachedir)), 0)
50     rw = c.new_packwriter()
51     rw.new_blob(s1)
52     rw.new_blob(s2)
53     # This is a little hacky, but ensures that we test the code under test
54     while len(os.listdir(c.cachedir)) < 2 and not c.conn.has_input(): pass
55     rw.new_blob(s3)
56     WVPASSEQ(len(os.listdir(c.cachedir)), 2)
57     rw.close()
58     WVPASSEQ(len(os.listdir(c.cachedir)), 3)
59
60
61 @wvtest
62 def test_dumb_client_server():
63     os.environ['BUP_MAIN_EXE'] = '../../../bup'
64     os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
65     subprocess.call(['rm', '-rf', bupdir])
66     git.init_repo(bupdir)
67     open(git.repo('bup-dumb-server'), 'w').close()
68
69     lw = git.PackWriter()
70     lw.new_blob(s1)
71     lw.close()
72
73     c = client.Client(bupdir, create=True)
74     rw = c.new_packwriter()
75     WVPASSEQ(len(os.listdir(c.cachedir)), 1)
76     rw.new_blob(s1)
77     WVPASSEQ(len(os.listdir(c.cachedir)), 1)
78     rw.new_blob(s2)
79     rw.close()
80     WVPASSEQ(len(os.listdir(c.cachedir)), 2)
81
82
83 @wvtest
84 def test_midx_refreshing():
85     os.environ['BUP_MAIN_EXE'] = bupmain = '../../../bup'
86     os.environ['BUP_DIR'] = bupdir = 'buptest_tmidx.tmp'
87     subprocess.call(['rm', '-rf', bupdir])
88     git.init_repo(bupdir)
89     lw = git.PackWriter()
90     lw.new_blob(s1)
91     lw.breakpoint()
92     lw.new_blob(s2)
93     del lw
94     pi = git.PackIdxList(bupdir + '/objects/pack')
95     WVPASSEQ(len(pi.packs), 2)
96     pi.refresh()
97     WVPASSEQ(len(pi.packs), 2)
98     subprocess.call([bupmain, 'midx', '-f'])
99     pi.refresh()
100     WVPASSEQ(len(pi.packs), 1)
101     pi.refresh(skip_midx=True)
102     WVPASSEQ(len(pi.packs), 2)
103     pi.refresh(skip_midx=False)
104     WVPASSEQ(len(pi.packs), 1)
105
106 @wvtest
107 def test_remote_parsing():
108     tests = (
109         (':/bup', ('file', None, None, '/bup')),
110         ('file:///bup', ('file', None, None, '/bup')),
111         ('192.168.1.1:/bup', ('ssh', '192.168.1.1', None, '/bup')),
112         ('ssh://192.168.1.1:2222/bup', ('ssh', '192.168.1.1', '2222', '/bup')),
113         ('ssh://[ff:fe::1]:2222/bup', ('ssh', 'ff:fe::1', '2222', '/bup')),
114         ('bup://foo.com:1950', ('bup', 'foo.com', '1950', None)),
115         ('bup://foo.com:1950/bup', ('bup', 'foo.com', '1950', '/bup')),
116         ('bup://[ff:fe::1]/bup', ('bup', 'ff:fe::1', None, '/bup')),
117     )
118     for remote, values in tests:
119         WVPASSEQ(client.parse_remote(remote), values)
120     try:
121         client.parse_remote('http://asdf.com/bup')
122         WVFAIL()
123     except AssertionError:
124         WVPASS()