Mercurial > hg
view tests/test-remotefilelog-cacheprocess.t @ 46325:e5e6282fa66a
hghave: split apart testing for the curses module and `tic` executable
ef771d329961 skipped the check for the `tic` executable, because the curses
module alone on Windows is enough to pass the `test-*-curses.t` tests. However,
`test-status-color.t` uses this same check and explicitly invoked the
executable, which fails on Windows. From the cursory searching I did, curses on
unix requires `tic`, which I assume is why they were tied together in the first
place. So this continues to require both to get past the curses guards on non
Windows platforms.
Differential Revision: https://phab.mercurial-scm.org/D9814
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 17 Jan 2021 22:25:15 -0500 |
parents | 0826d684a1b5 |
children | 1d075b857c90 |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-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 os > import shutil > import sys > if sys.version_info[0] > 2: > xrange = range > 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': > raise Exception('todo writing') > else: > raise Exception('unknown command! %r' % cmd) > except Exception as e: > log('Exception! %s\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! 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! 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'