mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
41d4153092
When remotefilelog moved from its own repo, the tests needed to be updated to adjust the PYTHONPATH to ensure the in-repo remotefilelog was loaded instead of the system one. This meant any local runs of remotefilelog tests would've been using the system remotefilelog unless the user had manually set the PYTHONPATH themselves.
124 lines
4.6 KiB
Perl
124 lines
4.6 KiB
Perl
$ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
|
|
$ export PYTHONPATH
|
|
|
|
$ . "$TESTDIR/library.sh"
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [remotefilelog]
|
|
> server=True
|
|
> EOF
|
|
$ echo x > x
|
|
$ echo y > y
|
|
$ echo z > z
|
|
$ hg commit -qAm xy
|
|
$ cd ..
|
|
|
|
$ cat > cacheprocess-logger.py <<EOF
|
|
> import sys, os, shutil
|
|
> f = open('$TESTTMP/cachelog.log', 'w')
|
|
> srccache = os.path.join('$TESTTMP', 'oldhgcache')
|
|
> def log(message):
|
|
> f.write(message)
|
|
> f.flush()
|
|
> destcache = sys.argv[-1]
|
|
> try:
|
|
> while True:
|
|
> cmd = sys.stdin.readline().strip()
|
|
> log('got command %r\n' % cmd)
|
|
> if cmd == 'exit':
|
|
> sys.exit(0)
|
|
> elif cmd == 'get':
|
|
> count = int(sys.stdin.readline())
|
|
> log('client wants %r blobs\n' % count)
|
|
> wants = []
|
|
> for _ in xrange(count):
|
|
> key = sys.stdin.readline()[:-1]
|
|
> wants.append(key)
|
|
> if '\0' in key:
|
|
> _, key = key.split('\0')
|
|
> srcpath = os.path.join(srccache, key)
|
|
> if os.path.exists(srcpath):
|
|
> dest = os.path.join(destcache, key)
|
|
> destdir = os.path.dirname(dest)
|
|
> if not os.path.exists(destdir):
|
|
> os.makedirs(destdir)
|
|
> shutil.copyfile(srcpath, dest)
|
|
> else:
|
|
> # report a cache miss
|
|
> sys.stdout.write(key + '\n')
|
|
> sys.stdout.write('0\n')
|
|
> for key in sorted(wants):
|
|
> log('requested %r\n' % key)
|
|
> sys.stdout.flush()
|
|
> elif cmd == 'set':
|
|
> assert False, 'todo writing'
|
|
> else:
|
|
> assert False, 'unknown command! %r' % cmd
|
|
> except Exception as e:
|
|
> log('Exception! %r\n' % e)
|
|
> raise
|
|
> EOF
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [remotefilelog]
|
|
> cacheprocess = python $TESTTMP/cacheprocess-logger.py
|
|
> EOF
|
|
|
|
Test cache keys and cache misses.
|
|
$ hgcloneshallow ssh://user@dummy/repo clone -q
|
|
3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob)
|
|
$ cat cachelog.log
|
|
got command 'get'
|
|
client wants 3 blobs
|
|
requested 'master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0'
|
|
requested 'master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a'
|
|
requested 'master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca'
|
|
got command 'set'
|
|
Exception! AssertionError('todo writing',)
|
|
|
|
Test cache hits.
|
|
$ mv hgcache oldhgcache
|
|
$ rm cachelog.log
|
|
$ hgcloneshallow ssh://user@dummy/repo clone-cachehit -q
|
|
3 files fetched over 1 fetches - (0 misses, 100.00% hit ratio) over *s (glob)
|
|
$ cat cachelog.log | grep -v exit
|
|
got command 'get'
|
|
client wants 3 blobs
|
|
requested 'master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0'
|
|
requested 'master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a'
|
|
requested 'master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca'
|
|
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [remotefilelog]
|
|
> cacheprocess.includepath = yes
|
|
> EOF
|
|
|
|
Test cache keys and cache misses with includepath.
|
|
$ rm -r hgcache oldhgcache
|
|
$ rm cachelog.log
|
|
$ hgcloneshallow ssh://user@dummy/repo clone-withpath -q
|
|
3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob)
|
|
$ cat cachelog.log
|
|
got command 'get'
|
|
client wants 3 blobs
|
|
requested 'x\x00master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0'
|
|
requested 'y\x00master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca'
|
|
requested 'z\x00master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a'
|
|
got command 'set'
|
|
Exception! AssertionError('todo writing',)
|
|
|
|
Test cache hits with includepath.
|
|
$ mv hgcache oldhgcache
|
|
$ rm cachelog.log
|
|
$ hgcloneshallow ssh://user@dummy/repo clone-withpath-cachehit -q
|
|
3 files fetched over 1 fetches - (0 misses, 100.00% hit ratio) over *s (glob)
|
|
$ cat cachelog.log | grep -v exit
|
|
got command 'get'
|
|
client wants 3 blobs
|
|
requested 'x\x00master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0'
|
|
requested 'y\x00master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca'
|
|
requested 'z\x00master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a'
|