mirror of
https://github.com/samba-team/samba.git
synced 2025-03-20 22:50:26 +03:00
torture: Add tests of rename behaviour to replica_sync.py
Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
6960f8e4c3
commit
2d38009852
@ -370,3 +370,107 @@ objectClass: organizationalUnit
|
||||
self._check_deleted(self.ldb_dc2, ou2)
|
||||
self._check_deleted(self.ldb_dc2, ou1_child)
|
||||
self._check_deleted(self.ldb_dc2, ou2_child)
|
||||
|
||||
def test_ReplRenames(self):
|
||||
"""Tests that objects created under a OU deleted eleswhere end up in lostAndFound"""
|
||||
self._disable_inbound_repl(self.dnsname_dc1)
|
||||
self._disable_inbound_repl(self.dnsname_dc2)
|
||||
|
||||
# Create two OUs on DC2
|
||||
ou1 = self._create_ou(self.ldb_dc2, "OU=Original parent")
|
||||
ou2 = self._create_ou(self.ldb_dc2, "OU=Original parent 2")
|
||||
|
||||
# replicate them from DC2 to DC1
|
||||
self._enable_inbound_repl(self.dnsname_dc1)
|
||||
self._net_drs_replicate(DC=self.dnsname_dc1, fromDC=self.dnsname_dc2, forced=True, full_sync=False)
|
||||
self._disable_inbound_repl(self.dnsname_dc1)
|
||||
|
||||
# Create children on DC1
|
||||
ou1_child = self._create_ou(self.ldb_dc1, "OU=Test Child,OU=Original parent")
|
||||
ou2_child = self._create_ou(self.ldb_dc1, "OU=Test Child 2,OU=Original parent")
|
||||
ou3_child = self._create_ou(self.ldb_dc1, "OU=Test Case Child,OU=Original parent")
|
||||
|
||||
# replicate them from DC1 to DC2
|
||||
self._enable_inbound_repl(self.dnsname_dc2)
|
||||
self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, forced=True, full_sync=False)
|
||||
self._disable_inbound_repl(self.dnsname_dc2)
|
||||
|
||||
self.ldb_dc1.rename("<GUID=%s>" % ou2_child, "OU=Test Child 3,OU=Original parent 2,%s" % self.domain_dn)
|
||||
self.ldb_dc1.rename("<GUID=%s>" % ou1_child, "OU=Test Child 2,OU=Original parent 2,%s" % self.domain_dn)
|
||||
self.ldb_dc1.rename("<GUID=%s>" % ou2_child, "OU=Test Child,OU=Original parent 2,%s" % self.domain_dn)
|
||||
self.ldb_dc1.rename("<GUID=%s>" % ou3_child, "OU=Test CASE Child,OU=Original parent,%s" % self.domain_dn)
|
||||
self.ldb_dc2.rename("<GUID=%s>" % ou2, "OU=Original parent 3,%s" % self.domain_dn)
|
||||
self.ldb_dc2.rename("<GUID=%s>" % ou1, "OU=Original parent 2,%s" % self.domain_dn)
|
||||
|
||||
# replicate them from DC1 to DC2
|
||||
self._enable_inbound_repl(self.dnsname_dc2)
|
||||
self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, forced=True, full_sync=False)
|
||||
self._disable_inbound_repl(self.dnsname_dc2)
|
||||
|
||||
# Check the sub-OUs are now under Original Parent 3 (original
|
||||
# parent 2 for Test CASE Child), and both have the right names
|
||||
|
||||
# Check that DC2 got the DC1 object, and the renames are all correct
|
||||
res1 = self.ldb_dc2.search(base="<GUID=%s>" % ou1_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
res2 = self.ldb_dc2.search(base="<GUID=%s>" % ou2_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
res3 = self.ldb_dc2.search(base="<GUID=%s>" % ou3_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
print res1[0].dn
|
||||
print res2[0].dn
|
||||
print res3[0].dn
|
||||
self.assertEqual('Test Child 2', res1[0]["name"][0])
|
||||
self.assertEqual('Test Child', res2[0]["name"][0])
|
||||
self.assertEqual('Test CASE Child', res3[0]["name"][0])
|
||||
self.assertEqual(str(res1[0].dn), "OU=Test Child 2,OU=Original parent 3,%s" % self.domain_dn)
|
||||
self.assertEqual(str(res2[0].dn), "OU=Test Child,OU=Original parent 3,%s" % self.domain_dn)
|
||||
self.assertEqual(str(res3[0].dn), "OU=Test CASE Child,OU=Original parent 2,%s" % self.domain_dn)
|
||||
|
||||
# replicate them from DC2 to DC1
|
||||
self._enable_inbound_repl(self.dnsname_dc1)
|
||||
self._net_drs_replicate(DC=self.dnsname_dc1, fromDC=self.dnsname_dc2, forced=True, full_sync=False)
|
||||
self._disable_inbound_repl(self.dnsname_dc1)
|
||||
|
||||
# Check that DC1 got the DC2 object, and the renames are all correct
|
||||
res1 = self.ldb_dc1.search(base="<GUID=%s>" % ou1_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
res2 = self.ldb_dc1.search(base="<GUID=%s>" % ou2_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
res3 = self.ldb_dc1.search(base="<GUID=%s>" % ou3_child,
|
||||
scope=SCOPE_BASE, attrs=["name"])
|
||||
print res1[0].dn
|
||||
print res2[0].dn
|
||||
print res3[0].dn
|
||||
self.assertEqual('Test Child 2', res1[0]["name"][0])
|
||||
self.assertEqual('Test Child', res2[0]["name"][0])
|
||||
self.assertEqual('Test CASE Child', res3[0]["name"][0])
|
||||
self.assertEqual(str(res1[0].dn), "OU=Test Child 2,OU=Original parent 3,%s" % self.domain_dn)
|
||||
self.assertEqual(str(res2[0].dn), "OU=Test Child,OU=Original parent 3,%s" % self.domain_dn)
|
||||
self.assertEqual(str(res3[0].dn), "OU=Test CASE Child,OU=Original parent 2,%s" % self.domain_dn)
|
||||
|
||||
# Delete all objects by GUID on DC1
|
||||
|
||||
self.ldb_dc1.delete('<GUID=%s>' % ou1_child)
|
||||
self.ldb_dc1.delete('<GUID=%s>' % ou2_child)
|
||||
self.ldb_dc1.delete('<GUID=%s>' % ou3_child)
|
||||
self.ldb_dc1.delete('<GUID=%s>' % ou1)
|
||||
self.ldb_dc1.delete('<GUID=%s>' % ou2)
|
||||
|
||||
self._enable_inbound_repl(self.dnsname_dc1)
|
||||
self._enable_inbound_repl(self.dnsname_dc2)
|
||||
self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, forced=True, full_sync=False)
|
||||
|
||||
|
||||
# Check all deleted on DC1
|
||||
self._check_deleted(self.ldb_dc1, ou1)
|
||||
self._check_deleted(self.ldb_dc1, ou2)
|
||||
self._check_deleted(self.ldb_dc1, ou1_child)
|
||||
self._check_deleted(self.ldb_dc1, ou2_child)
|
||||
self._check_deleted(self.ldb_dc1, ou3_child)
|
||||
# Check all deleted on DC2
|
||||
self._check_deleted(self.ldb_dc2, ou1)
|
||||
self._check_deleted(self.ldb_dc2, ou2)
|
||||
self._check_deleted(self.ldb_dc2, ou1_child)
|
||||
self._check_deleted(self.ldb_dc2, ou2_child)
|
||||
self._check_deleted(self.ldb_dc2, ou3_child)
|
||||
|
Loading…
x
Reference in New Issue
Block a user