Skip to content
Snippets Groups Projects
test-make-reference.t 14.6 KiB
Newer Older
====================================
Test for the `make reference` script
====================================

Setup

  $ export PATH=$TESTDIR/../repo-scripts/:${PATH}

  $ mkdir some-dir
  $ hg init some-dir/my-source-repo --config format.usegeneraldelta=False
  $ hg -R some-dir/my-source-repo debugbuilddag  --new-file '.+5:brancha$.+11:branchb$.+30:branchc<brancha+2<branchb+2'

Define partial set

  $ cat << EOF >> p-config.yaml
  > partial-sets:
  >   same:
  >   missing-last-10:
  >     remove: "last(all(), 10)"
  > roles:
  >   pull:
  >     noop:
  >       same:
  >         source: "reference"
  >         target: "same"
  usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
                        source id partial_sets_file
  make-reference: error: too few arguments
  [2]
  $ make-reference some-dir/my-source-repo
  usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
                        source id partial_sets_file
  make-reference: error: too few arguments
  [2]
  usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
                        source id partial_sets_file
  make-reference: error: too few arguments
  [2]
  $ make-reference some-dir/my-source-repo my-reference p-config.yaml
  copy of old repository backed up at $TESTTMP/my-reference-tmp?????-reference/.hg/upgradebackup.* (glob)
  the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
  hg cloning repository from: some-dir/my-source-repo
  Running debugupgraderepo because of format mismatch:
  	generaldelta: False != True (repo/config)
  	sparserevlog: False != True (repo/config)
  result available at: my-reference-0c229866-reference.tar
  my-reference-0c229866-reference
  my-reference-0c229866-reference.tar
  my-reference-0c229866.benchrepo
  $ cat my-reference-*.benchrepo
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: true
    hg-version: * (glob)
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    repo-hash: 0c229866
    repo-prefix: my-reference-0c229866
    source: some-dir/my-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same
  $ rm -rf my-reference-*.benchrepo my-reference-*.tar my-reference-*-reference
  $ ls -1
  $ make-reference some-dir/my-source-repo my-reference p-config.yaml --existing-repo some-dir/my-source-repo
  copy of old repository backed up at $TESTTMP/my-reference-tmp?????-reference/.hg/upgradebackup.* (glob)
  the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
  using 'some-dir/my-source-repo' as source instead of cloning
  (make sure this was cloned with the right version)
  Running debugupgraderepo because of format mismatch:
  	generaldelta: False != True (repo/config)
  	sparserevlog: False != True (repo/config)
  result available at: my-reference-0c229866-reference.tar
  my-reference-0c229866-reference
  my-reference-0c229866-reference.tar
  my-reference-0c229866.benchrepo
  $ cat my-reference-*.benchrepo
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: true
    hg-version: * (glob)
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    repo-hash: 0c229866
    repo-prefix: my-reference-0c229866
    source: some-dir/my-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same
  $ tar tf my-reference-*-reference.tar | sort
  my-reference-0c229866-reference/
  my-reference-0c229866-reference/.hg/
  my-reference-0c229866-reference/.hg/00changelog.i
  my-reference-0c229866-reference/.hg/cache/
  my-reference-0c229866-reference/.hg/cache/branch2-served
  my-reference-0c229866-reference/.hg/cache/hgtagsfnodes1
  my-reference-0c229866-reference/.hg/cache/rbc-names-v1
  my-reference-0c229866-reference/.hg/cache/rbc-revs-v1
  my-reference-0c229866-reference/.hg/cache/tags2
  my-reference-0c229866-reference/.hg/cache/tags2-served
  my-reference-0c229866-reference/.hg/dirstate
  my-reference-0c229866-reference/.hg/localtags
  my-reference-0c229866-reference/.hg/requires
  my-reference-0c229866-reference/.hg/store/
  my-reference-0c229866-reference/.hg/store/00changelog.i
  my-reference-0c229866-reference/.hg/store/00manifest.i
  my-reference-0c229866-reference/.hg/store/data/
  my-reference-0c229866-reference/.hg/store/data/nf0.i
  my-reference-0c229866-reference/.hg/store/data/nf1.i
  my-reference-0c229866-reference/.hg/store/data/nf10.i
  my-reference-0c229866-reference/.hg/store/data/nf11.i
  my-reference-0c229866-reference/.hg/store/data/nf12.i
  my-reference-0c229866-reference/.hg/store/data/nf13.i
  my-reference-0c229866-reference/.hg/store/data/nf14.i
  my-reference-0c229866-reference/.hg/store/data/nf15.i
  my-reference-0c229866-reference/.hg/store/data/nf16.i
  my-reference-0c229866-reference/.hg/store/data/nf17.i
  my-reference-0c229866-reference/.hg/store/data/nf18.i
  my-reference-0c229866-reference/.hg/store/data/nf19.i
  my-reference-0c229866-reference/.hg/store/data/nf2.i
  my-reference-0c229866-reference/.hg/store/data/nf20.i
  my-reference-0c229866-reference/.hg/store/data/nf21.i
  my-reference-0c229866-reference/.hg/store/data/nf22.i
  my-reference-0c229866-reference/.hg/store/data/nf23.i
  my-reference-0c229866-reference/.hg/store/data/nf24.i
  my-reference-0c229866-reference/.hg/store/data/nf25.i
  my-reference-0c229866-reference/.hg/store/data/nf26.i
  my-reference-0c229866-reference/.hg/store/data/nf27.i
  my-reference-0c229866-reference/.hg/store/data/nf28.i
  my-reference-0c229866-reference/.hg/store/data/nf29.i
  my-reference-0c229866-reference/.hg/store/data/nf3.i
  my-reference-0c229866-reference/.hg/store/data/nf30.i
  my-reference-0c229866-reference/.hg/store/data/nf31.i
  my-reference-0c229866-reference/.hg/store/data/nf32.i
  my-reference-0c229866-reference/.hg/store/data/nf33.i
  my-reference-0c229866-reference/.hg/store/data/nf34.i
  my-reference-0c229866-reference/.hg/store/data/nf35.i
  my-reference-0c229866-reference/.hg/store/data/nf36.i
  my-reference-0c229866-reference/.hg/store/data/nf37.i
  my-reference-0c229866-reference/.hg/store/data/nf38.i
  my-reference-0c229866-reference/.hg/store/data/nf39.i
  my-reference-0c229866-reference/.hg/store/data/nf4.i
  my-reference-0c229866-reference/.hg/store/data/nf40.i
  my-reference-0c229866-reference/.hg/store/data/nf41.i
  my-reference-0c229866-reference/.hg/store/data/nf42.i
  my-reference-0c229866-reference/.hg/store/data/nf43.i
  my-reference-0c229866-reference/.hg/store/data/nf44.i
  my-reference-0c229866-reference/.hg/store/data/nf45.i
  my-reference-0c229866-reference/.hg/store/data/nf46.i
  my-reference-0c229866-reference/.hg/store/data/nf47.i
  my-reference-0c229866-reference/.hg/store/data/nf48.i
  my-reference-0c229866-reference/.hg/store/data/nf49.i
  my-reference-0c229866-reference/.hg/store/data/nf5.i
  my-reference-0c229866-reference/.hg/store/data/nf50.i
  my-reference-0c229866-reference/.hg/store/data/nf51.i
  my-reference-0c229866-reference/.hg/store/data/nf52.i
  my-reference-0c229866-reference/.hg/store/data/nf6.i
  my-reference-0c229866-reference/.hg/store/data/nf7.i
  my-reference-0c229866-reference/.hg/store/data/nf8.i
  my-reference-0c229866-reference/.hg/store/data/nf9.i
  my-reference-0c229866-reference/.hg/store/fncache
  my-reference-0c229866-reference/.hg/store/phaseroots
  my-reference-0c229866-reference/.hg/store/undo
  my-reference-0c229866-reference/.hg/store/undo.backupfiles
  my-reference-0c229866-reference/.hg/store/undo.phaseroots
  my-reference-0c229866-reference/.hg/undo.bookmarks
  my-reference-0c229866-reference/.hg/undo.branch
  my-reference-0c229866-reference/.hg/undo.desc
  my-reference-0c229866-reference/.hg/undo.dirstate
  my-reference-0c229866-reference/.hg/wcache/
  my-reference-0c229866-reference/.hg/wcache/manifestfulltextcache
  my-reference-0c229866.benchrepo

update the reference
--------------------

  $ EDITOR=cat update-reference-config my-reference-*-reference.tar
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: true
    hg-version: * (glob)
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    repo-hash: 0c229866
    repo-prefix: my-reference-0c229866
    source: some-dir/my-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same
  $ cat << EOF > editor.sh
  > #!/bin/bash
  > sed -i 's,some-dir/my-source-repo,some-dir/my-other-source-repo,' \$1
  > EOF
  $ chmod +x editor.sh
  $ EDITOR=$PWD/editor.sh update-reference-config my-reference-*-reference.tar
  $ tar xf ../my-reference-*-reference.tar --wildcards "my-reference-*.benchrepo"
  $ cat my-reference-*.benchrepo
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: true
    hg-version: * (glob)
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    repo-hash: 0c229866
    repo-prefix: my-reference-0c229866
    source: some-dir/my-other-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same
  $ cd ..

Call from scratch with explicit optimization
--------------------------------------------

  $ rm -rf my-reference-*.benchrepo my-reference-reference-*.tar my-reference-*-reference
  $ ls -1
  dst
  editor.sh
  my-reference-0c229866-reference.tar
  $ make-reference some-dir/my-source-repo my-reference p-config.yaml --optimize re-delta-parent re-delta-multibase
  copy of old repository backed up at $TESTTMP/my-reference-tmp?????-reference/.hg/upgradebackup.* (glob)
  the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
  hg cloning repository from: some-dir/my-source-repo
  Running `debugupgraderepo` with requested optimizations:
  	re-delta-parent, re-delta-multibase
  building a reference tarball
  result available at: my-reference-0c229866-reference.tar
  $ ls -1
  dst
  editor.sh
  my-reference-0c229866-reference
  my-reference-0c229866-reference.tar
  my-reference-0c229866.benchrepo
  $ cat my-reference-*.benchrepo
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
  reference-repo:
    enabled: true
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: true
    hg-version: * (glob)
    id: my-reference
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    number-revisions:
      all: 53
      visible: 53
    repo-hash: 0c229866
    repo-prefix: my-reference-0c229866
    source: some-dir/my-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same

Call from scratch with given hgrc file
--------------------------------------

  $ rm -rf my-reference-*.benchrepo my-reference-*.tar my-reference-reference
  my-reference-0c229866-reference
  some-dir

  $ cat << EOF > sparse-revlog-hgrc
  > [format]
  > sparse-revlog = false
  > EOF

  $ make-reference some-dir/my-source-repo my-reference p-config.yaml --hgrc non-existing-hgrc
  Given hgrc 'non-existing-hgrc' is not a file
  [1]

  $ make-reference some-dir/my-source-repo my-reference p-config.yaml --hgrc sparse-revlog-hgrc
  copy of old repository backed up at $TESTTMP/my-reference-tmp?????-reference/.hg/upgradebackup.* (glob)
  the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
  hg cloning repository from: some-dir/my-source-repo
  copying hgrc file from: sparse-revlog-hgrc
  Running debugupgraderepo because of format mismatch:
  	generaldelta: False != True (repo/config)
  building a reference tarball
  result available at: my-reference-8e2c7069-reference.tar
  my-reference-0c229866-reference
  my-reference-8e2c7069-reference
  my-reference-8e2c7069-reference.tar
  my-reference-8e2c7069.benchrepo
  $ cat my-reference-*.benchrepo
  partial-sets:
    missing-last-10:
      remove: last(all(), 10)
    same: null
  reference-repo:
    enabled: true
    format-info:
      compression: zlib
      compression-level: default
      dotencode: true
      fncache: true
      generaldelta: true
      plain-cl-delta: true
      sparserevlog: false
    hg-version: * (glob)
    id: my-reference
    number-heads:
      all: 3
      visible: 3
    number-named-branch:
      all: 1
      visible: 1
    number-revisions:
      all: 53
      visible: 53
    repo-hash: 8e2c7069
    repo-prefix: my-reference-8e2c7069
    source: some-dir/my-source-repo
  roles:
    pull:
      noop:
        same:
          source: reference
          target: same