Mercurial > hg
annotate tests/test-dirstate-read-race.t @ 51925:3a90a6fd710d
dirstate: subclass the new dirstate Protocol class
Behold the chaos that ensues. We'll use the generated *.pyi files to apply type
annotations to the interface, and see how much agrees with the documentation.
Since the CamelCase name was used to try to work around pytype issues with zope
interfaces and is a new innovation this cycle (see c1d7ac70980b), drop the
CamelCase name. I think the Protocol classes *should* be CamelCase, but that
can be done later in one pass. For now, the CamelCase alias is extra noise in
the *.pyi files.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 26 Sep 2024 18:52:46 -0400 |
parents | e6532a7336d0 |
children | af54626bf358 |
rev | line source |
---|---|
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 ============================================================================== |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 Check potential race conditions between a dirstate's read and other operations |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 ============================================================================== |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
5 #testcases dirstate-v1 dirstate-v2-append dirstate-v2-rewrite |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
6 #testcases pre-all-read pre-some-read |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
7 |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 Some commands, like `hg status`, do not need to take the wlock but need to |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 access dirstate data. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
10 Other commands might update the dirstate data while this happens. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 This can create issues if repository data is read in the wrong order, or for |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 the dirstate-v2 format where the data is contained in multiple files. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 This test file is meant to test various cases where such parallel operations |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 happen and make sure the reading process behaves fine. We do so with a `hg |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 status` command since it is probably the most advanced of such read-only |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 command. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 It bears simililarity with `tests/test-dirstate-status-race.t ` but tests a |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 different type of race. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
23 Setup |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 ===== |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
26 $ cat >> $HGRCPATH << EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
27 > [storage] |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
28 > dirstate-v2.slow-path=allow |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
29 > EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
30 |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
31 #if no-dirstate-v1 |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
32 $ cat >> $HGRCPATH << EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
33 > [format] |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
34 > use-dirstate-v2=yes |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
35 > EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
36 #else |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
37 $ cat >> $HGRCPATH << EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
38 > [format] |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
39 > use-dirstate-v2=no |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
40 > EOF |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
41 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
42 |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
43 #if dirstate-v2-rewrite |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
44 $ d2args="--config devel.dirstate.v2.data_update_mode=force-new" |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
45 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
46 #if dirstate-v2-append |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
47 $ d2args="--config devel.dirstate.v2.data_update_mode=force-append" |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
48 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
49 |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
50 |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
51 #if dirstate-v1 |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
52 $ cfg="devel.sync.dirstate.pre-read-file" |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
53 #else |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
54 #if pre-all-read |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
55 $ cfg="devel.sync.dirstate.pre-read-file" |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
56 #else |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
57 $ cfg="devel.sync.dirstate.post-docket-read-file" |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
58 #endif |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
59 #endif |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
60 |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
61 $ directories="dir dir/nested dir2" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
62 $ first_files="dir/nested/a dir/b dir/c dir/d dir2/e f" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
63 $ second_files="g dir/nested/h dir/i dir/j dir2/k dir2/l dir/nested/m" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
64 $ extra_files="dir/n dir/o p q" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
65 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
66 $ hg init reference-repo |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
67 $ cd reference-repo |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
68 $ mkdir -p dir/nested dir2 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
69 $ touch -t 200001010000 $first_files $directories |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
70 $ hg commit -Aqm "recreate a bunch of files to facilitate dirstate-v2 append" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
71 $ touch -t 200001010010 $second_files $directories |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
72 $ hg commit -Aqm "more files to have two commit" |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
73 $ hg log -G -v |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
74 @ changeset: 1:9a86dcbfb938 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
75 | tag: tip |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
76 | user: test |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
77 | date: Thu Jan 01 00:00:00 1970 +0000 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
78 | files: dir/i dir/j dir/nested/h dir/nested/m dir2/k dir2/l g |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
79 | description: |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 | more files to have two commit |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
81 | |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 | |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
83 o changeset: 0:4f23db756b09 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 user: test |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 date: Thu Jan 01 00:00:00 1970 +0000 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
86 files: dir/b dir/c dir/d dir/nested/a dir2/e f |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
87 description: |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
88 recreate a bunch of files to facilitate dirstate-v2 append |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
89 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
90 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
91 $ hg manifest |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
92 dir/b |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
93 dir/c |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
94 dir/d |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
95 dir/i |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
96 dir/j |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
97 dir/nested/a |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
98 dir/nested/h |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
99 dir/nested/m |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
100 dir2/e |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
101 dir2/k |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
102 dir2/l |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
103 f |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
104 g |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
105 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
106 Add some unknown files and refresh the dirstate |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
107 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
108 $ touch -t 200001010020 $extra_files |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
109 $ hg add dir/o |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
110 $ hg remove dir/nested/m |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
111 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
112 $ hg st --config devel.dirstate.v2.data_update_mode=force-new |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
113 A dir/o |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
114 R dir/nested/m |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
115 ? dir/n |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
116 ? p |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
117 ? q |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
118 $ hg debugstate |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
119 n 644 0 2000-01-01 00:00:00 dir/b |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
120 n 644 0 2000-01-01 00:00:00 dir/c |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
121 n 644 0 2000-01-01 00:00:00 dir/d |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
122 n 644 0 2000-01-01 00:10:00 dir/i |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
123 n 644 0 2000-01-01 00:10:00 dir/j |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
124 n 644 0 2000-01-01 00:00:00 dir/nested/a |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
125 n 644 0 2000-01-01 00:10:00 dir/nested/h |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
126 r ?????????????????????????????????? dir/nested/m (glob) |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
127 a ?????????????????????????????????? dir/o (glob) |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
128 n 644 0 2000-01-01 00:00:00 dir2/e |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
129 n 644 0 2000-01-01 00:10:00 dir2/k |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
130 n 644 0 2000-01-01 00:10:00 dir2/l |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
131 n 644 0 2000-01-01 00:00:00 f |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
132 n 644 0 2000-01-01 00:10:00 g |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
133 $ hg debugstate > ../reference |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
134 $ cd .. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
135 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
136 Actual Testing |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
137 ============== |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
138 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
139 Race with a `hg add` |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
140 ------------------- |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
141 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
142 $ cp -a reference-repo race-with-add |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
143 $ cd race-with-add |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
144 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
145 spin a `hg status` with some caches to update |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
146 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
147 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \ |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
148 > --config rhg.on-unsupported=abort \ |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
149 > --config ${cfg}=$TESTTMP/status-race-lock \ |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
150 > & |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
151 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
152 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
153 Add a file |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
154 |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
155 $ hg $d2args add dir/n |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
156 $ touch $TESTTMP/status-race-lock |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
157 $ wait |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
158 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
159 The file should in a "added" state |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
160 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
161 $ hg status |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
162 A dir/n |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
163 A dir/o |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
164 R dir/nested/m |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
165 ? p |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
166 ? q |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
167 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
168 The status process should return a consistent result and not crash. |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
169 |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
170 #if dirstate-v1 |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
171 $ cat $TESTTMP/status-race-lock.out |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
172 A dir/n |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
173 A dir/o |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
174 R dir/nested/m |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
175 ? p |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
176 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
177 #else |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
178 #if rhg pre-some-read dirstate-v2-append |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
179 $ cat $TESTTMP/status-race-lock.out |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
180 A dir/o |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
181 R dir/nested/m |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
182 ? dir/n |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
183 ? p |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
184 ? q |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
185 #else |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
186 #if rust no-rhg dirstate-v2-append |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
187 $ cat $TESTTMP/status-race-lock.out |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
188 A dir/o |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
189 R dir/nested/m |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
190 ? dir/n |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
191 ? p |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
192 ? q |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
193 #else |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
194 $ cat $TESTTMP/status-race-lock.out |
50239
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
195 A dir/n |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
196 A dir/o |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
197 R dir/nested/m |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
198 ? p |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
199 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
200 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
201 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
202 #endif |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
203 $ cat $TESTTMP/status-race-lock.log |
50229
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
204 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
205 final cleanup |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
206 |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
207 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting |
7169ff59a2f8
dirstate: initial creation of a test file to check dirstate race read
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
208 $ cd .. |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
209 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
210 Race with a `hg commit` |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
211 ----------------------- |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
212 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
213 $ cp -a reference-repo race-with-commit |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
214 $ cd race-with-commit |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
215 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
216 spin a `hg status with some cache to update |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
217 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
218 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \ |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
219 > --config rhg.on-unsupported=abort \ |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
220 > --config ${cfg}=$TESTTMP/status-race-lock \ |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
221 > & |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
222 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
223 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
224 Add a do a commit |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
225 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
226 $ hg status |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
227 A dir/o |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
228 R dir/nested/m |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
229 ? dir/n |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
230 ? p |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
231 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
232 $ hg $d2args commit -m 'racing commit' |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
233 $ touch $TESTTMP/status-race-lock |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
234 $ wait |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
235 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
236 commit was created, and status is now clean |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
237 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
238 $ hg log -GT '{node|short} {desc}\n' |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
239 @ 02a67a77ee9b racing commit |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
240 | |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
241 o 9a86dcbfb938 more files to have two commit |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
242 | |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
243 o 4f23db756b09 recreate a bunch of files to facilitate dirstate-v2 append |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
244 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
245 $ hg status |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
246 ? dir/n |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
247 ? p |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
248 ? q |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
249 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
250 The status process should return a consistent result and not crash. |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
251 |
50324
e6532a7336d0
dirstate: try refreshing the changelog when parent are unknown
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50244
diff
changeset
|
252 #if no-rhg |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
253 $ cat $TESTTMP/status-race-lock.out |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
254 A dir/o |
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
255 R dir/nested/m |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
256 ? dir/n |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
257 ? p |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
258 ? q |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
259 $ cat $TESTTMP/status-race-lock.log |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
260 #else |
50324
e6532a7336d0
dirstate: try refreshing the changelog when parent are unknown
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50244
diff
changeset
|
261 #if pre-some-read dirstate-v2-append |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
262 $ cat $TESTTMP/status-race-lock.out |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
263 A dir/o |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
264 R dir/nested/m |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
265 ? dir/n |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
266 ? p |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
267 ? q |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
268 $ cat $TESTTMP/status-race-lock.log |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
269 #else |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
270 $ cat $TESTTMP/status-race-lock.out |
50238
c9066fc609ef
dirstate: deal with read-race for python code using rust object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50237
diff
changeset
|
271 ? dir/n |
c9066fc609ef
dirstate: deal with read-race for python code using rust object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50237
diff
changeset
|
272 ? p |
c9066fc609ef
dirstate: deal with read-race for python code using rust object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50237
diff
changeset
|
273 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
274 $ cat $TESTTMP/status-race-lock.log |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
275 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
276 #endif |
50230
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
277 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
278 final cleanup |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
279 |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
280 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting |
e5fea4f1b052
dirstate: check dirstate race condition around commit
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50229
diff
changeset
|
281 $ cd .. |
50231
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
282 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
283 Race with a `hg update` |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
284 ----------------------- |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
285 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
286 $ cp -a reference-repo race-with-update |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
287 $ cd race-with-update |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
288 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
289 spin a `hg status` with some caches to update |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
290 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
291 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \ |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
292 > --config rhg.on-unsupported=abort \ |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
293 > --config ${cfg}=$TESTTMP/status-race-lock \ |
50231
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
294 > & |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
295 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
296 do an update |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
297 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
298 $ hg status |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
299 A dir/o |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
300 R dir/nested/m |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
301 ? dir/n |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
302 ? p |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
303 ? q |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
304 $ hg log -GT '{node|short} {desc}\n' |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
305 @ 9a86dcbfb938 more files to have two commit |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
306 | |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
307 o 4f23db756b09 recreate a bunch of files to facilitate dirstate-v2 append |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
308 |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
309 $ hg $d2args update --merge ".~1" |
50231
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
310 0 files updated, 0 files merged, 6 files removed, 0 files unresolved |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
311 $ touch $TESTTMP/status-race-lock |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
312 $ wait |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
313 $ hg log -GT '{node|short} {desc}\n' |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
314 o 9a86dcbfb938 more files to have two commit |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
315 | |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
316 @ 4f23db756b09 recreate a bunch of files to facilitate dirstate-v2 append |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
317 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
318 $ hg status |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
319 A dir/o |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
320 ? dir/n |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
321 ? p |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
322 ? q |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
323 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
324 The status process should return a consistent result and not crash. |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
325 |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
326 #if rhg dirstate-v2-append pre-some-read |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
327 $ cat $TESTTMP/status-race-lock.out |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
328 A dir/o |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
329 R dir/nested/m |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
330 ! dir/i |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
331 ! dir/j |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
332 ! dir/nested/h |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
333 ! dir2/k |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
334 ! dir2/l |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
335 ! g |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
336 ? dir/n |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
337 ? p |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
338 ? q |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
339 #else |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
340 #if rust no-rhg dirstate-v2-append |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
341 $ cat $TESTTMP/status-race-lock.out |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
342 A dir/o |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
343 R dir/nested/m |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
344 ! dir/i |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
345 ! dir/j |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
346 ! dir/nested/h |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
347 ! dir2/k |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
348 ! dir2/l |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
349 ! g |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
350 ? dir/n |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
351 ? p |
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
352 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
353 #else |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
354 $ cat $TESTTMP/status-race-lock.out |
50237
a3b1ab5f5dee
dirstate: deal with read-race for pure python code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50235
diff
changeset
|
355 A dir/o |
a3b1ab5f5dee
dirstate: deal with read-race for pure python code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50235
diff
changeset
|
356 ? dir/n |
a3b1ab5f5dee
dirstate: deal with read-race for pure python code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50235
diff
changeset
|
357 ? p |
a3b1ab5f5dee
dirstate: deal with read-race for pure python code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50235
diff
changeset
|
358 ? q |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
359 #endif |
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
360 #endif |
50240
3ddff85fa2c8
dirstate: simplify the dirstate's read race testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50239
diff
changeset
|
361 $ cat $TESTTMP/status-race-lock.log |
50231
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
362 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
363 final cleanup |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
364 |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
365 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting |
0f483a2c29e7
dirstate: check dirstate race condition around update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50230
diff
changeset
|
366 $ cd .. |
50232
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
367 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
368 Race with a cache updating `hg status` |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
369 -------------------------------------- |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
370 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
371 It is interesting to race with "read-only" operation (that still update its cache) |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
372 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
373 $ cp -a reference-repo race-with-status |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
374 $ cd race-with-status |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
375 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
376 spin a `hg status` with some caches to update |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
377 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
378 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \ |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
379 > --config rhg.on-unsupported=abort \ |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
380 > --config ${cfg}=$TESTTMP/status-race-lock \ |
50232
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
381 > & |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
382 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
383 do an update |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
384 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
385 $ touch -t 200001020006 f |
50233
cf0d7cd6a6fa
dirstate: add v1-v2 variants to the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50232
diff
changeset
|
386 $ hg $d2args status |
50232
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
387 A dir/o |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
388 R dir/nested/m |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
389 ? dir/n |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
390 ? p |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
391 ? q |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
392 $ touch $TESTTMP/status-race-lock |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
393 $ wait |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
394 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
395 The status process should return a consistent result and not crash. |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
396 |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
397 $ cat $TESTTMP/status-race-lock.out |
50239
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
398 A dir/o |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
399 R dir/nested/m |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
400 ? dir/n |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
401 ? p |
491f3dd080eb
dirstate: deal with read-race for pure rust code path (rhg)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50238
diff
changeset
|
402 ? q |
50235
385977432227
dirstate: add append/new-file variants in the dirstate's read race tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50233
diff
changeset
|
403 $ cat $TESTTMP/status-race-lock.log |
50232
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
404 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
405 final cleanup |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
406 |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
407 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting |
5bf6b8015035
dirstate: check dirstate race condition around status
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50231
diff
changeset
|
408 $ cd .. |