1 import sys, os, stat, time, random, subprocess, glob
2 from bup import client, git
8 s += chr(random.randrange(0,256))
18 def test_server_split_with_indexes():
19 os.environ['BUP_MAIN_EXE'] = '../../../bup'
20 os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
21 subprocess.call(['rm', '-rf', bupdir])
24 c = client.Client(bupdir, create=True)
25 rw = c.new_packwriter()
36 def test_multiple_suggestions():
37 os.environ['BUP_MAIN_EXE'] = '../../../bup'
38 os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
39 subprocess.call(['rm', '-rf', bupdir])
48 WVPASSEQ(len(glob.glob(git.repo('objects/pack'+IDX_PAT))), 2)
50 c = client.Client(bupdir, create=True)
51 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 0)
52 rw = c.new_packwriter()
55 # This is a little hacky, but ensures that we test the code under test
56 while len(glob.glob(c.cachedir+IDX_PAT)) < 2 and not c.conn.has_input(): pass
58 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 2)
60 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 3)
64 def test_dumb_client_server():
65 os.environ['BUP_MAIN_EXE'] = '../../../bup'
66 os.environ['BUP_DIR'] = bupdir = 'buptest_tclient.tmp'
67 subprocess.call(['rm', '-rf', bupdir])
69 open(git.repo('bup-dumb-server'), 'w').close()
75 c = client.Client(bupdir, create=True)
76 rw = c.new_packwriter()
77 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 1)
79 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 1)
82 WVPASSEQ(len(glob.glob(c.cachedir+IDX_PAT)), 2)
86 def test_midx_refreshing():
87 os.environ['BUP_MAIN_EXE'] = bupmain = '../../../bup'
88 os.environ['BUP_DIR'] = bupdir = 'buptest_tmidx.tmp'
89 subprocess.call(['rm', '-rf', bupdir])
96 pi = git.PackIdxList(bupdir + '/objects/pack')
97 WVPASSEQ(len(pi.packs), 2)
99 WVPASSEQ(len(pi.packs), 2)
100 subprocess.call([bupmain, 'midx', '-f'])
102 WVPASSEQ(len(pi.packs), 1)
103 pi.refresh(skip_midx=True)
104 WVPASSEQ(len(pi.packs), 2)
105 pi.refresh(skip_midx=False)
106 WVPASSEQ(len(pi.packs), 1)
109 def test_remote_parsing():
111 (':/bup', ('file', None, None, '/bup')),
112 ('file:///bup', ('file', None, None, '/bup')),
113 ('192.168.1.1:/bup', ('ssh', '192.168.1.1', None, '/bup')),
114 ('ssh://192.168.1.1:2222/bup', ('ssh', '192.168.1.1', '2222', '/bup')),
115 ('ssh://[ff:fe::1]:2222/bup', ('ssh', 'ff:fe::1', '2222', '/bup')),
116 ('bup://foo.com:1950', ('bup', 'foo.com', '1950', None)),
117 ('bup://foo.com:1950/bup', ('bup', 'foo.com', '1950', '/bup')),
118 ('bup://[ff:fe::1]/bup', ('bup', 'ff:fe::1', None, '/bup')),
120 for remote, values in tests:
121 WVPASSEQ(client.parse_remote(remote), values)
123 client.parse_remote('http://asdf.com/bup')
125 except AssertionError: