selftest: Change backup testenvs to use non-default site
authorTim Beale <timbeale@catalyst.net.nz>
Tue, 18 Sep 2018 04:30:15 +0000 (16:30 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 26 Sep 2018 05:49:17 +0000 (07:49 +0200)
Previously (i.e. up until the last patch) the backup/restore commands
only worked if the Default-First-Site-Name site was present. If this
site didn't exist, then the various restore testenvs would fail to
start. This is now fixed, but this patch changes the backupfrom testenv
so that it uses a non-default site. This will detect the problem if it
is ever re-introduced.

To do this we need to change provision_ad_dc() so the
extra_provision_options can be specified as an argument. (Note that Perl
treats undef the same as an empty array).

By default, the restore will add the new DC into the
Default-First-Site-Name site. This means the backupfromdc and restored
testenvs will now have different sites, so we need to update the ldapcmp
filters to exclude site-specific attributes.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13621

Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
selftest/target/Samba4.pm
testprogs/blackbox/ldapcmp_restoredc.sh

index 68038fb518339312331e8f23fb9505dec49ef7b1..dc25e1371f2f0645501abf82f25cb206905e8bba 100755 (executable)
@@ -1861,7 +1861,8 @@ sub read_config_h($)
 
 sub provision_ad_dc($$$$$$)
 {
-       my ($self, $prefix, $hostname, $domain, $realm, $smbconf_args) = @_;
+       my ($self, $prefix, $hostname, $domain, $realm, $smbconf_args,
+               $extra_provision_options) = @_;
 
        my $prefix_abs = abs_path($prefix);
 
@@ -1972,7 +1973,6 @@ sub provision_ad_dc($$$$$$)
        copy = print1
 ";
 
-       my $extra_provision_options = undef;
        push (@{$extra_provision_options}, "--backend-store=mdb");
        print "PROVISIONING AD DC...\n";
        my $ret = $self->provision($prefix,
@@ -2538,7 +2538,7 @@ sub setup_ad_dc
        }
 
        my $env = $self->provision_ad_dc($path, "addc", "ADDOMAIN",
-                                        "addom.samba.example.com", "");
+                                        "addom.samba.example.com", "", undef);
        unless ($env) {
                return undef;
        }
@@ -2565,7 +2565,7 @@ sub setup_ad_dc_no_nss
        }
 
        my $env = $self->provision_ad_dc($path, "addc_no_nss", "ADNONSSDOMAIN",
-                                        "adnonssdom.samba.example.com", "");
+                                        "adnonssdom.samba.example.com", "", undef);
        unless ($env) {
                return undef;
        }
@@ -2596,7 +2596,7 @@ sub setup_ad_dc_no_ntlm
 
        my $env = $self->provision_ad_dc($path, "addc_no_ntlm", "ADNONTLMDOMAIN",
                                         "adnontlmdom.samba.example.com",
-                                        "ntlm auth = disabled");
+                                        "ntlm auth = disabled", undef);
        unless ($env) {
                return undef;
        }
@@ -2627,8 +2627,11 @@ sub setup_backupfromdc
               return "UNKNOWN";
        }
 
+       my $provision_args = ["--site=Backup-Site"];
+
        my $env = $self->provision_ad_dc($path, "backupfromdc", "BACKUPDOMAIN",
-                                        "backupdom.samba.example.com", "");
+                                        "backupdom.samba.example.com", "",
+                                        $provision_args);
        unless ($env) {
                return undef;
        }
index 51951ba8ce2fefe03478512318380d4f791f69de..d7a51aebbf2c32a84def7b0e6957bbf9f7d9e619 100755 (executable)
@@ -55,6 +55,9 @@ ldapcmp_with_orig() {
     # these are just differences between provisioning a domain and joining a DC
     IGNORE_ATTRS="$IGNORE_ATTRS,localPolicyFlags,operatingSystem,displayName"
 
+    # the restored DC may use a different side compared to the original DC
+    IGNORE_ATTRS="$IGNORE_ATTRS,serverReferenceBL,msDS-IsDomainFor"
+
     LDAPCMP_CMD="$PYTHON $BINDIR/samba-tool ldapcmp"
     $LDAPCMP_CMD $DB1_PATH $DB2_PATH --two --filter=$IGNORE_ATTRS $BASE_DN_OPTS
 }