2020-01-20 18:33:28 +03:00
|
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
#
|
|
|
|
# This software may be used and distributed according to the terms of the
|
|
|
|
# GNU General Public License found in the LICENSE file in the root
|
|
|
|
# directory of this source tree.
|
|
|
|
|
2019-12-19 21:17:39 +03:00
|
|
|
$ . "${TEST_FIXTURES}/library.sh"
|
|
|
|
|
|
|
|
setup configuration
|
2020-04-23 11:22:28 +03:00
|
|
|
|
|
|
|
$ setup_common_config "$@"
|
|
|
|
|
|
|
|
$ cat >> "$HGRCPATH" <<EOF
|
|
|
|
> [ui]
|
|
|
|
> ssh="$DUMMYSSH"
|
|
|
|
> [extensions]
|
|
|
|
> amend=
|
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ hg init repo-hg
|
|
|
|
$ cd repo-hg || exit 1
|
|
|
|
$ setup_hg_server
|
|
|
|
$ drawdag <<EOF
|
|
|
|
> C
|
|
|
|
> |
|
|
|
|
> B
|
|
|
|
> |
|
|
|
|
> A
|
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ hg bookmark master_bookmark -r tip
|
|
|
|
$ cd ..
|
|
|
|
$ blobimport repo-hg/.hg repo --derived-data-type fsnodes
|
|
|
|
|
2020-01-16 17:11:09 +03:00
|
|
|
$ default_setup_blobimport "blob_files"
|
|
|
|
hg repo
|
|
|
|
o C [draft;rev=2;26805aba1e60]
|
|
|
|
|
|
|
|
|
o B [draft;rev=1;112478962961]
|
|
|
|
|
|
|
|
|
o A [draft;rev=0;426bada5c675]
|
|
|
|
$
|
|
|
|
blobimporting
|
2019-12-19 21:17:39 +03:00
|
|
|
|
2020-01-16 17:11:09 +03:00
|
|
|
Check counts
|
2019-12-19 21:17:39 +03:00
|
|
|
$ BLOBPREFIX="$TESTTMP/blobstore/blobs/blob-repo0000"
|
|
|
|
$ BLOBCOUNT=$(ls $BLOBPREFIX.* | wc -l)
|
|
|
|
$ echo "$BLOBCOUNT"
|
|
|
|
30
|
|
|
|
|
|
|
|
Do a walk of everything, it should all be there
|
2020-01-06 18:18:52 +03:00
|
|
|
$ mononoke_walker --storage-id=blobstore --readonly-storage scrub -q --bookmark master_bookmark -I deep -I marker 2>&1 | strip_glog
|
2019-12-19 21:17:39 +03:00
|
|
|
Walking roots * (glob)
|
2020-04-23 11:22:28 +03:00
|
|
|
Walking edge types [AliasContentMappingToFileContent, BonsaiChangesetToBonsaiFsnodeMapping, BonsaiChangesetToBonsaiHgMapping, BonsaiChangesetToBonsaiParent, BonsaiChangesetToBonsaiPhaseMapping, BonsaiChangesetToFileContent, BonsaiHgMappingToHgChangeset, BonsaiToRootFsnode, BookmarkToBonsaiChangeset, FileContentMetadataToGitSha1Alias, FileContentMetadataToSha1Alias, FileContentMetadataToSha256Alias, FileContentToFileContentMetadata, FsnodeToChildFsnode, HgBonsaiMappingToBonsaiChangeset, HgChangesetToHgManifest, HgChangesetToHgParent, HgFileEnvelopeToFileContent, HgFileNodeToHgCopyfromFileNode, HgFileNodeToHgParentFileNode, HgLinkNodeToHgBonsaiMapping, HgLinkNodeToHgChangeset, HgManifestToChildHgManifest, HgManifestToHgFileEnvelope, HgManifestToHgFileNode]
|
|
|
|
Walking node types [AliasContentMapping, BonsaiChangeset, BonsaiFsnodeMapping, BonsaiHgMapping, BonsaiPhaseMapping, Bookmark, FileContent, FileContentMetadata, Fsnode, HgBonsaiMapping, HgChangeset, HgFileEnvelope, HgFileNode, HgManifest]
|
|
|
|
Final count: (43, 43)
|
2020-04-22 16:44:31 +03:00
|
|
|
Bytes/s,* (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
Walked/s,* (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
check the metadata base case
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "select count(*) FROM filenodes where repo_id >= 0";
|
|
|
|
6
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "select count(*)FROM bonsai_hg_mapping where repo_id >= 0";
|
|
|
|
3
|
|
|
|
|
|
|
|
delete the hg blob forms
|
|
|
|
$ ls $BLOBPREFIX.* | grep -E '.(filenode_lookup|hgchangeset|hgfilenode|hgmanifest).' | xargs rm
|
|
|
|
$ BLOBCOUNT=$(ls $BLOBPREFIX.* | wc -l)
|
|
|
|
$ echo "$BLOBCOUNT"
|
|
|
|
18
|
|
|
|
|
|
|
|
delete the hg db forms
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "DELETE FROM filenodes where repo_id >= 0";
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "DELETE FROM bonsai_hg_mapping where repo_id >= 0";
|
|
|
|
|
|
|
|
Do a walk again, should succeed but not find the hg types
|
2020-01-06 18:18:52 +03:00
|
|
|
$ mononoke_walker --storage-id=blobstore --readonly-storage scrub -q --bookmark master_bookmark -I deep -I marker 2>&1 | strip_glog
|
2019-12-19 21:17:39 +03:00
|
|
|
Walking roots * (glob)
|
2020-04-23 11:22:28 +03:00
|
|
|
Walking edge types [AliasContentMappingToFileContent, BonsaiChangesetToBonsaiFsnodeMapping, BonsaiChangesetToBonsaiHgMapping, BonsaiChangesetToBonsaiParent, BonsaiChangesetToBonsaiPhaseMapping, BonsaiChangesetToFileContent, BonsaiHgMappingToHgChangeset, BonsaiToRootFsnode, BookmarkToBonsaiChangeset, FileContentMetadataToGitSha1Alias, FileContentMetadataToSha1Alias, FileContentMetadataToSha256Alias, FileContentToFileContentMetadata, FsnodeToChildFsnode, HgBonsaiMappingToBonsaiChangeset, HgChangesetToHgManifest, HgChangesetToHgParent, HgFileEnvelopeToFileContent, HgFileNodeToHgCopyfromFileNode, HgFileNodeToHgParentFileNode, HgLinkNodeToHgBonsaiMapping, HgLinkNodeToHgChangeset, HgManifestToChildHgManifest, HgManifestToHgFileEnvelope, HgManifestToHgFileNode]
|
|
|
|
Walking node types [AliasContentMapping, BonsaiChangeset, BonsaiFsnodeMapping, BonsaiHgMapping, BonsaiPhaseMapping, Bookmark, FileContent, FileContentMetadata, Fsnode, HgBonsaiMapping, HgChangeset, HgFileEnvelope, HgFileNode, HgManifest]
|
|
|
|
Final count: (28, 28)
|
2020-04-22 16:44:31 +03:00
|
|
|
Bytes/s,* (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
* HgBonsaiMapping:0,0,0 HgChangeset:0,0,0 HgFileEnvelope:0,0,0 HgFileNode:0,0,0 HgManifest:0,0,0 (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
Do a walk again, with --enable-derive, should succeed with the full count
|
2020-01-06 18:18:52 +03:00
|
|
|
$ mononoke_walker --storage-id=blobstore scrub --enable-derive -q --bookmark master_bookmark -I deep -I marker 2>&1 | strip_glog
|
2019-12-19 21:17:39 +03:00
|
|
|
Walking roots * (glob)
|
2020-04-23 11:22:28 +03:00
|
|
|
Walking edge types [AliasContentMappingToFileContent, BonsaiChangesetToBonsaiFsnodeMapping, BonsaiChangesetToBonsaiHgMapping, BonsaiChangesetToBonsaiParent, BonsaiChangesetToBonsaiPhaseMapping, BonsaiChangesetToFileContent, BonsaiHgMappingToHgChangeset, BonsaiToRootFsnode, BookmarkToBonsaiChangeset, FileContentMetadataToGitSha1Alias, FileContentMetadataToSha1Alias, FileContentMetadataToSha256Alias, FileContentToFileContentMetadata, FsnodeToChildFsnode, HgBonsaiMappingToBonsaiChangeset, HgChangesetToHgManifest, HgChangesetToHgParent, HgFileEnvelopeToFileContent, HgFileNodeToHgCopyfromFileNode, HgFileNodeToHgParentFileNode, HgLinkNodeToHgBonsaiMapping, HgLinkNodeToHgChangeset, HgManifestToChildHgManifest, HgManifestToHgFileEnvelope, HgManifestToHgFileNode]
|
|
|
|
Walking node types [AliasContentMapping, BonsaiChangeset, BonsaiFsnodeMapping, BonsaiHgMapping, BonsaiPhaseMapping, Bookmark, FileContent, FileContentMetadata, Fsnode, HgBonsaiMapping, HgChangeset, HgFileEnvelope, HgFileNode, HgManifest]
|
|
|
|
Final count: (46, 46)
|
2020-04-22 16:44:31 +03:00
|
|
|
Bytes/s,* (glob)
|
2020-04-21 15:21:07 +03:00
|
|
|
* HgBonsaiMapping:3,3,0 HgChangeset:3,* HgFileEnvelope:3,*,0 HgFileNode:3,*,3 HgManifest:3,3,6 (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
check the blobs were re-derived
|
|
|
|
$ BLOBPREFIX="$TESTTMP/blobstore/blobs/blob-repo0000"
|
|
|
|
$ BLOBCOUNT=$(ls $BLOBPREFIX.* | wc -l)
|
|
|
|
$ echo "$BLOBCOUNT"
|
2020-04-23 11:22:28 +03:00
|
|
|
36
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
check the sql was re-derived back to match base case
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "select count(*) FROM filenodes where repo_id >= 0";
|
|
|
|
6
|
|
|
|
$ sqlite3 "$TESTTMP/monsql/sqlite_dbs" "select count(*)FROM bonsai_hg_mapping where repo_id >= 0";
|
|
|
|
3
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
check the base case with all the alias types present in blobstore
|
2020-01-06 18:18:52 +03:00
|
|
|
$ mononoke_walker --storage-id=blobstore --readonly-storage scrub -q --bookmark master_bookmark -I deep -I marker 2>&1 | strip_glog
|
2019-12-19 21:17:39 +03:00
|
|
|
Walking roots * (glob)
|
2020-04-23 11:22:28 +03:00
|
|
|
Walking edge types [AliasContentMappingToFileContent, BonsaiChangesetToBonsaiFsnodeMapping, BonsaiChangesetToBonsaiHgMapping, BonsaiChangesetToBonsaiParent, BonsaiChangesetToBonsaiPhaseMapping, BonsaiChangesetToFileContent, BonsaiHgMappingToHgChangeset, BonsaiToRootFsnode, BookmarkToBonsaiChangeset, FileContentMetadataToGitSha1Alias, FileContentMetadataToSha1Alias, FileContentMetadataToSha256Alias, FileContentToFileContentMetadata, FsnodeToChildFsnode, HgBonsaiMappingToBonsaiChangeset, HgChangesetToHgManifest, HgChangesetToHgParent, HgFileEnvelopeToFileContent, HgFileNodeToHgCopyfromFileNode, HgFileNodeToHgParentFileNode, HgLinkNodeToHgBonsaiMapping, HgLinkNodeToHgChangeset, HgManifestToChildHgManifest, HgManifestToHgFileEnvelope, HgManifestToHgFileNode]
|
|
|
|
Walking node types [AliasContentMapping, BonsaiChangeset, BonsaiFsnodeMapping, BonsaiHgMapping, BonsaiPhaseMapping, Bookmark, FileContent, FileContentMetadata, Fsnode, HgBonsaiMapping, HgChangeset, HgFileEnvelope, HgFileNode, HgManifest]
|
|
|
|
Final count: (46, 46)
|
2020-04-22 16:44:31 +03:00
|
|
|
Bytes/s,* (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
* AliasContentMapping:9,9,0 * FileContent:3,*,0 FileContentMetadata:3,0,9 * (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
delete the derived file metadata
|
|
|
|
$ ls $BLOBPREFIX.* | grep -E '.(alias|content_metadata).' | xargs rm
|
|
|
|
$ BLOBCOUNT=$(ls $BLOBPREFIX.* | wc -l)
|
|
|
|
$ echo "$BLOBCOUNT"
|
2020-04-23 11:22:28 +03:00
|
|
|
24
|
2019-12-19 21:17:39 +03:00
|
|
|
|
|
|
|
do a walk again, should succeed but not find the alias or other data derived from file content metadata
|
2020-01-06 18:18:52 +03:00
|
|
|
$ mononoke_walker --storage-id=blobstore --readonly-storage scrub -q --bookmark master_bookmark -I deep -I marker 2>&1 | strip_glog
|
2019-12-19 21:17:39 +03:00
|
|
|
Walking roots * (glob)
|
2020-04-23 11:22:28 +03:00
|
|
|
Walking edge types [AliasContentMappingToFileContent, BonsaiChangesetToBonsaiFsnodeMapping, BonsaiChangesetToBonsaiHgMapping, BonsaiChangesetToBonsaiParent, BonsaiChangesetToBonsaiPhaseMapping, BonsaiChangesetToFileContent, BonsaiHgMappingToHgChangeset, BonsaiToRootFsnode, BookmarkToBonsaiChangeset, FileContentMetadataToGitSha1Alias, FileContentMetadataToSha1Alias, FileContentMetadataToSha256Alias, FileContentToFileContentMetadata, FsnodeToChildFsnode, HgBonsaiMappingToBonsaiChangeset, HgChangesetToHgManifest, HgChangesetToHgParent, HgFileEnvelopeToFileContent, HgFileNodeToHgCopyfromFileNode, HgFileNodeToHgParentFileNode, HgLinkNodeToHgBonsaiMapping, HgLinkNodeToHgChangeset, HgManifestToChildHgManifest, HgManifestToHgFileEnvelope, HgManifestToHgFileNode]
|
|
|
|
Walking node types [AliasContentMapping, BonsaiChangeset, BonsaiFsnodeMapping, BonsaiHgMapping, BonsaiPhaseMapping, Bookmark, FileContent, FileContentMetadata, Fsnode, HgBonsaiMapping, HgChangeset, HgFileEnvelope, HgFileNode, HgManifest]
|
|
|
|
Final count: (37, 37)
|
2020-04-22 16:44:31 +03:00
|
|
|
Bytes/s,* (glob)
|
2019-12-19 21:17:39 +03:00
|
|
|
* AliasContentMapping:0,0,0 * FileContent:3,*,0 FileContentMetadata:3,0,0 * (glob)
|