[svk-commit] r3018 - branches/mirror-boostrap/t/mirror

nobody at bestpractical.com nobody at bestpractical.com
Tue Jul 29 11:40:31 EDT 2008


Author: clsung
Date: Tue Jul 29 11:40:31 2008
New Revision: 3018

Added:
   branches/mirror-boostrap/t/mirror/sync-bootstrap-resume.t

Log:
- pretending a interrupted bootstrap, and try to resume it

Added: branches/mirror-boostrap/t/mirror/sync-bootstrap-resume.t
==============================================================================
--- (empty file)
+++ branches/mirror-boostrap/t/mirror/sync-bootstrap-resume.t	Tue Jul 29 11:40:31 2008
@@ -0,0 +1,90 @@
+#!/usr/bin/perl -w
+use strict;
+use Test::More;
+use SVK::Test;
+eval { require SVN::Mirror; 1 } or plan skip_all => 'require SVN::Mirror';
+plan tests => 7;
+
+my ($xd, $svk) = build_test('test', 'm2', );
+
+our $output;
+
+my $tree = create_basic_tree($xd, '/test/');
+my $depot = $xd->find_depot('test');
+
+my $uri = uri($depot->repospath);
+
+my $dump = File::Temp->new;
+dump_all($depot => $dump);
+close $dump;
+
+my $dump_Part = File::Temp->new;
+dump_N($depot => $dump_Part, 1 );
+close $dump_Part;
+
+is_output($svk, mirror => ['//m', $uri],
+          ["Mirror initialized.  Run svk sync //m to start mirroring."]);
+
+is_output($svk, mirror => ['--bootstrap='.$dump, '//m', $uri],
+	  ['Bootstrapping mirror from dump',
+	   'Mirror path \'//m\' synced from dumpfile.']);
+
+is_output($svk, mirror => ['/m2/m', $uri],
+          ["Mirror initialized.  Run svk sync /m2/m to start mirroring."]);
+
+is_output($svk, mirror => ['--bootstrap='.$dump_Part, '/m2/m', $uri],
+	  ['Bootstrapping mirror from dump',
+	   'Mirror path \'/m2/m\' synced from dumpfile.']);
+
+# compare normal mirror result and bootstrap mirror result
+my ($exp_mirror, $boot_mirror);
+open my $exp, '>', \$exp_mirror;
+open my $boot, '>', \$boot_mirror;
+dump_N($xd->find_depot('') => $boot, 1);
+dump_all($xd->find_depot('m2') => $exp);
+$exp_mirror =~ s/UUID: .*//;
+$boot_mirror =~ s/UUID: .*//;
+# remove first svn-date (initial mirro)
+# 2007-08-09T14:43:18.137165Z
+$exp_mirror =~ s/\d{4}-\d{2}-\d{2}T[\d:.]+Z//;
+$boot_mirror =~ s/\d{4}-\d{2}-\d{2}T[\d:.]+Z//;
+
+is($boot_mirror, $exp_mirror, 'UUID should be the same'); # do something with UUID, they should be identical
+
+close $exp;
+close $boot;
+# now try with mirror, sync in single bootstrap command
+
+is_output($svk, mirror => ['--bootstrap='.$dump, '/m2/m', $uri],
+	  ['Bootstrapping mirror from dump',
+	   'Skipping dumpstream up to revision 1',
+	   'Mirror path \'/m2/m\' synced from dumpfile.']);
+
+open $exp, '>', \$exp_mirror;
+open $boot, '>', \$boot_mirror;
+dump_all($xd->find_depot('') => $boot);
+dump_all($xd->find_depot('m2') => $exp);
+$exp_mirror =~ s/UUID: .*//;
+$boot_mirror =~ s/UUID: .*//;
+# remove first svn-date (initial mirro)
+# 2007-08-09T14:43:18.137165Z
+$exp_mirror =~ s/\d{4}-\d{2}-\d{2}T[\d:.]+Z//;
+$boot_mirror =~ s/\d{4}-\d{2}-\d{2}T[\d:.]+Z//;
+
+close $exp;
+close $boot;
+
+is($boot_mirror, $exp_mirror, 'UUID should be the same'); # do something with UUID, they should be identical
+
+sub dump_N {
+    my ($depot, $output, $N) = @_;
+    my $repos = $depot->repos;
+    my $rev = ($N >= $repos->fs->youngest_rev) ? $repos->fs->youngest_rev : $repos->fs->youngest_rev - $N;
+    SVN::Repos::dump_fs2($repos, $output, undef, 1, $rev , 0, 0, undef, undef);
+}
+
+sub dump_all {
+    my ($depot, $output) = @_;
+    dump_N ($depot, $output, $depot->repos->fs->youngest_rev);
+}
+


More information about the svk-commit mailing list