sapling/eden/scm/tests/test-commitcloud-backup-status.t
Jun Wu 01e3ea0f8f tests: enable narrow-heads for test-[bc]*
Summary: Most of them need extra server-side bookmarks for deciding phases.

Reviewed By: DurhamG

Differential Revision: D22117739

fbshipit-source-id: 711bf96063913fd6148125a5628f0b0f4efbf489
2020-06-29 13:53:04 -07:00

304 lines
9.2 KiB
Perl

#chg-compatible
#require symlink
$ enable amend smartlog
$ setconfig infinitepushbackup.enablestatus=true
$ . "$TESTDIR/library.sh"
$ . "$TESTDIR/infinitepush/library.sh"
$ setupcommon
$ enable remotenames
$ hgfakedate() {
> fakedate="$1"
> shift
> hg --config extensions.fakedate="$TESTDIR/fakedate.py" --config fakedate.date="$fakedate" "$@"
> }
Setup server
$ hg init repo
$ cd repo
$ setupserver
$ cd ..
To avoid test flakiness with times, do all operations relative to 2016-01-07T12:00:00Z
$ now=1452168000
$ setconfig extensions.fakedate="$TESTDIR/fakedate.py" fakedate.date="$now 0"
Setup client
$ hg clone ssh://user@dummy/repo client -q
$ cd client
$ touch file1
$ hg add file1
$ commit_time=`expr $now - 15 \* 60`
$ hg commit -d "$commit_time 0" -m "Public changeset"
$ touch file2
$ hg add file2
$ commit_time=`expr $now - 15 \* 60`
$ hg commit -d "$commit_time 0" -m "Public changeset 2"
$ hg push --to master --create --force
pushing rev c46481f83c9b to destination ssh://user@dummy/repo bookmark master
searching for changes
exporting bookmark master
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 2 changesets with 2 changes to 2 files
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo a > file1
$ changeset_time=`expr $now - 13 \* 60`
$ hg commit -d "$commit_time 0" -m "Backed up changeset"
$ echo a1 > file1
$ changeset_time=`expr $now - 12 \* 60`
$ hg commit -d "$commit_time 0" -m "Backed up changeset 2"
$ hg cloud backup
backing up stack rooted at * (glob)
commitcloud: backed up 2 commits
remote: pushing 2 commits:
remote: * Backed up changeset (glob)
remote: * Backed up changeset 2 (glob)
Check hiding the backup head doesn't affect backed-up changesets
$ hg up -q 2
$ hg log -T '{rev} {desc}\n' -r 'backedup()'
2 Backed up changeset
3 Backed up changeset 2
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()'
$ hg hide 3
hiding commit * (glob)
1 changeset hidden
$ hg log -T '{rev} {desc}\n' -r 'backedup()' --traceback
2 Backed up changeset
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()'
$ hg unhide 3
$ hg up -q 3
Create some changesets that aren't backed up
$ echo b > file1
$ commit_time=`expr $now - 11 \* 60`
$ hg commit -d "$commit_time 0" -m "Not backed up changeset"
$ echo c > file1
$ commit_time=`expr $now - 9 \* 60`
$ hg commit -d "$commit_time 0" -m "Backup pending changeset"
Check backup status of commits
$ hg log -T '{rev} {desc}\n' -r 'backedup()'
2 Backed up changeset
3 Backed up changeset 2
$ hg log -T '{rev} {desc}\n' -r 'draft() - backedup()'
4 Not backed up changeset
5 Backup pending changeset
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()'
4 Not backed up changeset
5 Backup pending changeset
Check smartlog output
$ hg smartlog -T '{rev}: {desc}\n' --config infinitepushbackup.autobackup=no
o 1: Public changeset 2
|
| @ 5: Backup pending changeset
| |
| o 4: Not backed up changeset
| |
| o 3: Backed up changeset 2
| |
| o 2: Backed up changeset
|/
o 0: Public changeset
note: background backup is currently disabled so your commits are not being backed up.
note: changeset * is not backed up. (glob)
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)
Check smartlog summary can be suppressed
$ hg smartlog -T '{rev}: {desc}\n' --config infinitepushbackup.enablestatus=no
o 1: Public changeset 2
|
| @ 5: Backup pending changeset
| |
| o 4: Not backed up changeset
| |
| o 3: Backed up changeset 2
| |
| o 2: Backed up changeset
|/
o 0: Public changeset
Check smartlog summary with multiple unbacked up changesets
$ hg up 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b2 > file1
$ commit_time=`expr $now - 11 \* 60`
$ hg commit -d "$commit_time 0" -m "Not backed up changeset 2"
$ hg smartlog -T '{rev}: {desc}\n' --config infinitepushbackup.autobackup=yes
o 1: Public changeset 2
|
| @ 6: Not backed up changeset 2
| |
| | o 5: Backup pending changeset
| | |
| | o 4: Not backed up changeset
| | |
| | o 3: Backed up changeset 2
| |/
| o 2: Backed up changeset
|/
o 0: Public changeset
note: 2 changesets are not backed up.
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)
Check backup status with an unbacked up changeset that is disjoint from existing backups
$ hg up 1
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > file2
$ commit_time=`expr $now - 11 \* 60`
$ hg commit -d "$commit_time 0" -m "Not backed up changeset 3"
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()'
4 Not backed up changeset
5 Backup pending changeset
6 Not backed up changeset 2
7 Not backed up changeset 3
Test template keyword for when a backup is in progress
$ hg log -T '{if(backingup,"Yes","No")}\n' -r .
No
$ rm -f .hg/infinitepushbackup.lock
$ ln -s fakelock .hg/infinitepushbackup.lock
$ hg log -T '{if(backingup,"Yes","No")}\n' -r .
Yes
$ rm -f .hg/infinitepushbackup.lock
Test for infinitepushbackup disable
$ setconfig infinitepushbackup.autobackup=true
$ hg cloud enable
background backup is already enabled
$ hg cloud disable
commitcloud: background backup is now disabled until * (glob)
$ hg cloud disable
note: background backup was already disabled
commitcloud: background backup is now disabled until * (glob)
$ hg cloud disable --hours ggg
note: background backup was already disabled
abort: error: argument 'hours': invalid int value: 'ggg'
[255]
Test sl when infinitepushbackup is disabled but disabling has been expired / not expired
$ hg sl -T '{rev} {desc}\n'
@ 7 Not backed up changeset 3
|
o 1 Public changeset 2
|
| o 6 Not backed up changeset 2
| |
| | o 5 Backup pending changeset
| | |
| | o 4 Not backed up changeset
| | |
| | o 3 Backed up changeset 2
| |/
| o 2 Backed up changeset
|/
o 0 Public changeset
note: background backup is currently disabled until * (glob)
so your commits are not being backed up.
(run 'hg cloud enable' to turn automatic backups back on)
note: 3 changesets are not backed up.
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)
Advance time so that the disable has expired
$ hg sl --config fakedate.date="1452175000 0" -T '{rev} {desc}\n'
@ 7 Not backed up changeset 3
|
o 1 Public changeset 2
|
| o 6 Not backed up changeset 2
| |
| | o 5 Backup pending changeset
| | |
| | o 4 Not backed up changeset
| | |
| | o 3 Backed up changeset 2
| |/
| o 2 Backed up changeset
|/
o 0 Public changeset
note: 4 changesets are not backed up.
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)
Hide or obsolete some of the non-backed-up commits. The hidden commits that
have not been backed up should no longer show up as "not backed up", even if
'--hidden' is passed. The hidden commits that have been backed up may still
show as backed up if '--hidden' is passed.
$ echo c > file2
$ commit_time=`expr $now - 11 \* 60`
$ hg amend -d "$commit_time 0" -m "Not backed up changeset 3 (amended)"
$ hg hide -q 3
$ hg log -T '{rev} {desc}\n' -r 'backedup()'
2 Backed up changeset
$ hg log -T '{rev} {desc}\n' -r 'backedup()' --hidden
2 Backed up changeset
3 Backed up changeset 2
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()'
6 Not backed up changeset 2
8 Not backed up changeset 3 (amended)
$ hg log -T '{rev} {desc}\n' -r 'notbackedup()' --hidden
4 Not backed up changeset
5 Backup pending changeset
6 Not backed up changeset 2
7 Not backed up changeset 3
8 Not backed up changeset 3 (amended)
$ hg sl -T '{rev} {desc}\n'
@ 8 Not backed up changeset 3 (amended)
|
o 1 Public changeset 2
|
| o 6 Not backed up changeset 2
| |
| o 2 Backed up changeset
|/
o 0 Public changeset
note: background backup is currently disabled until Thu Jan 07 13:00:00 2016 +0000
so your commits are not being backed up.
(run 'hg cloud enable' to turn automatic backups back on)
note: 2 changesets are not backed up.
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)
(3, 4, 5 do not have successors. They show up as 'o' not 'x' with --hidden)
$ hg sl -T '{rev} {desc}\n' --hidden
@ 8 Not backed up changeset 3 (amended)
|
| x 7 Not backed up changeset 3
|/
o 1 Public changeset 2
|
| o 6 Not backed up changeset 2
| |
| | o 5 Backup pending changeset
| | |
| | o 4 Not backed up changeset
| | |
| | o 3 Backed up changeset 2
| |/
| o 2 Backed up changeset
|/
o 0 Public changeset
note: background backup is currently disabled until Thu Jan 07 13:00:00 2016 +0000
so your commits are not being backed up.
(run 'hg cloud enable' to turn automatic backups back on)
note: 4 changesets are not backed up.
(run 'hg cloud backup' to perform a backup)
(if this fails, please report to the Source Control Team)