comparison tests/test-remotefilelog-corrupt-cache.t @ 40495:3a333a582d7b

remotefilelog: import pruned-down remotefilelog extension from hg-experimental This is remotefilelog as of my recent patches for compatibility with current tip of hg, minus support for old versions of Mercurial and some FB-specific features like their treemanifest extension and fetching linkrev data from a patched phabricator. The file extutil.py moved from hgext3rd to remotefilelog. This is not yet ready to be landed, consider it a preview for now. Planned changes include: * replace lz4 with zstd * rename some capabilities, requirements and wireproto commands to mark them as experimental * consolidate bits of shallowutil with related functions (eg readfile) I'm certainly open to other (small) changes, but my rough mission is to land this largely as-is so we can use it as a model of the functionality we need going forward for lazy-fetching of file contents from a server. # no-check-commit because of a few foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D4782
author Augie Fackler <augie@google.com>
date Thu, 27 Sep 2018 13:03:19 -0400
parents
children 95a079ea1e19
comparison
equal deleted inserted replaced
40494:9aeb9e2d28a7 40495:3a333a582d7b
1 $ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
2 $ export PYTHONPATH
3
4 $ . "$TESTDIR/remotefilelog-library.sh"
5
6 $ hginit master
7 $ cd master
8 $ cat >> .hg/hgrc <<EOF
9 > [remotefilelog]
10 > server=True
11 > EOF
12 $ echo x > x
13 $ echo y > y
14 $ echo z > z
15 $ hg commit -qAm xy
16
17 $ cd ..
18
19 $ hgcloneshallow ssh://user@dummy/master shallow -q
20 3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob)
21 $ cd shallow
22
23 Verify corrupt cache handling repairs by default
24
25 $ hg up -q null
26 $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
27 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
28 $ hg up tip
29 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
30 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
31
32 Verify corrupt cache error message
33
34 $ hg up -q null
35 $ cat >> .hg/hgrc <<EOF
36 > [remotefilelog]
37 > validatecache=off
38 > EOF
39 $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
40 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
41 $ hg up tip 2>&1 | egrep "^RuntimeError"
42 RuntimeError: unexpected remotefilelog header: illegal format
43
44 Verify detection and remediation when remotefilelog.validatecachelog is set
45
46 $ cat >> .hg/hgrc <<EOF
47 > [remotefilelog]
48 > validatecachelog=$PWD/.hg/remotefilelog_cache.log
49 > validatecache=strict
50 > EOF
51 $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
52 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
53 $ hg up tip
54 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
55 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
56 $ cat .hg/remotefilelog_cache.log
57 corrupt $TESTTMP/hgcache/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 during contains
58
59 Verify handling of corrupt server cache
60
61 $ rm -f ../master/.hg/remotefilelogcache/y/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
62 $ touch ../master/.hg/remotefilelogcache/y/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
63 $ clearcache
64 $ hg prefetch -r .
65 3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob)
66 $ test -s ../master/.hg/remotefilelogcache/y/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
67 $ hg debugremotefilelog $CACHEDIR/master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
68 size: 2 bytes
69 path: $TESTTMP/hgcache/master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
70 key: 076f5e2225b3
71
72 node => p1 p2 linknode copyfrom
73 076f5e2225b3 => 000000000000 000000000000 f3d0bb0d1e48