view tests/test-propertycache.py.out @ 40051:cdf61ab1f54c

testing: add file storage integration for bad hashes and censoring In order to implement these tests, we need a backdoor to write data into storage backends while bypassing normal checks. We invent a callable to do that. As part of writing the tests, I found a bug with censorrevision() pretty quickly! After calling censorrevision(), attempting to access revision data for an affected node raises a cryptic error related to malformed compression. This appears to be due to the revlog not adjusting delta chains as part of censoring. I also found a bug with regards to hash verification and revision fulltext caching. Essentially, we cache the fulltext before hash verification. If we look up the fulltext after a failed hash verification, we don't get a hash verification exception. Furthermore, the behavior of revision(raw=True) can be inconsistent depending on the order of operations. I'll be fixing both these bugs in subsequent commits. Differential Revision: https://phab.mercurial-scm.org/D4865
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 03 Oct 2018 10:56:48 -0700
parents 9789670992d6
children
line wrap: on
line source


=== property cache ===

calllog: []
cached value (unfiltered): NOCACHE

= first access on unfiltered, should do a call
access: 0
calllog: [0]
cached value (unfiltered): 0

= second access on unfiltered, should not do call
access 0
calllog: [0]
cached value (unfiltered): 0

= first access on "visible" view, should do a call
cached value ("visible" view): NOCACHE
access: 7
calllog: [0, 7]
cached value (unfiltered): 0
cached value ("visible" view): 7

= second access on "visible view", should not do call
access: 7
calllog: [0, 7]
cached value (unfiltered): 0
cached value ("visible" view): 7

= no effect on other view
cached value ("immutable" view): NOCACHE
access: 9
calllog: [0, 7, 9]
cached value (unfiltered): 0
cached value ("visible" view): 7
cached value ("immutable" view): 9


=== unfiltered property cache ===

unficalllog: []
cached value (unfiltered):       NOCACHE
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE

= first access on unfiltered, should do a call
access (unfiltered): 100
unficalllog: [100]
cached value (unfiltered):       100

= second access on unfiltered, should not do call
access (unfiltered): 100
unficalllog: [100]
cached value (unfiltered):       100

= access on view should use the unfiltered cache
access (unfiltered):       100
access ("visible" view):   100
access ("immutable" view): 100
unficalllog: [100]
cached value (unfiltered):       100
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE

= even if we clear the unfiltered cache
cached value (unfiltered):       NOCACHE
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE
unficalllog: [100]
access ("visible" view):   100
unficalllog: [100, 100]
cached value (unfiltered):       100
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE
access ("immutable" view): 100
unficalllog: [100, 100]
cached value (unfiltered):       100
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE
access (unfiltered):       100
unficalllog: [100, 100]
cached value (unfiltered):       100
cached value ("visible" view):   NOCACHE
cached value ("immutable" view): NOCACHE