From: Andrew Bartlett Date: Thu, 1 Dec 2022 22:42:55 +0000 (+1300) Subject: s4-selftest/drs Allow some DRS tests to operate against an IP X-Git-Tag: tevent-0.14.1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a150a2dcb1fc7fc7f606838de17ad4d3e6072bda;p=thirdparty%2Fsamba.git s4-selftest/drs Allow some DRS tests to operate against an IP This is not comprehensive, but makes some manual test runs easier by avoiding the need for DNS names to resolve. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10635 Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher --- diff --git a/source4/torture/drs/python/drs_base.py b/source4/torture/drs/python/drs_base.py index d87918456f1..f072c8eb80c 100644 --- a/source4/torture/drs/python/drs_base.py +++ b/source4/torture/drs/python/drs_base.py @@ -492,8 +492,11 @@ class DrsBaseTestCase(SambaToolCmdTest): return req10 - def _ds_bind(self, server_name, creds=None): - binding_str = "ncacn_ip_tcp:%s[seal]" % server_name + def _ds_bind(self, server_name, creds=None, ip=None): + if ip is None: + binding_str = f"ncacn_ip_tcp:{server_name}[seal]" + else: + binding_str = f"ncacn_ip_tcp:{ip}[seal,target_hostname={server_name}]" if creds is None: creds = self.get_credentials() diff --git a/source4/torture/drs/python/getnc_exop.py b/source4/torture/drs/python/getnc_exop.py index 8582eb17c66..2d58790785f 100644 --- a/source4/torture/drs/python/getnc_exop.py +++ b/source4/torture/drs/python/getnc_exop.py @@ -85,7 +85,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase): self.ldb_dc1.add({ "dn": self.ou, "objectclass": "organizationalUnit"}) - (self.drs, self.drs_handle) = self._ds_bind(self.dnsname_dc1) + (self.drs, self.drs_handle) = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) (self.default_hwm, self.default_utdv) = self._get_highest_hwm_utdv(self.ldb_dc1) def tearDown(self): @@ -251,7 +251,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase): nc_guid=misc.GUID("c2d2f745-1610-4e93-964b-d4ba73eb32f8"), exop=drsuapi.DRSUAPI_EXOP_NONE) - (drs, drs_handle) = self._ds_bind(fsmo_owner["dns_name"]) + (drs, drs_handle) = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: (level, ctr) = drs.DsGetNCChanges(drs_handle, 8, req8) except WERRORError as e1: @@ -269,7 +269,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase): nc_guid=misc.GUID("c2d2f745-1610-4e93-964b-d4ba73eb32f8"), exop=drsuapi.DRSUAPI_EXOP_REPL_OBJ) - (drs, drs_handle) = self._ds_bind(fsmo_owner["dns_name"]) + (drs, drs_handle) = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: (level, ctr) = drs.DsGetNCChanges(drs_handle, 8, req8) except WERRORError as e1: @@ -702,7 +702,7 @@ class DrsReplicaPrefixMapTestCase(drs_base.DrsBaseTestCase): dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) req8 = self._exop_req8(dest_dsa=None, invocation_id=dc_guid_1, @@ -721,7 +721,7 @@ class DrsReplicaPrefixMapTestCase(drs_base.DrsBaseTestCase): partial_attribute_set = self.get_partial_attribute_set([99999]) dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: pfm = self._samdb_fetch_pfm_and_schi() @@ -754,7 +754,7 @@ class DrsReplicaPrefixMapTestCase(drs_base.DrsBaseTestCase): partial_attribute_set = self.get_partial_attribute_set([drsuapi.DRSUAPI_ATTID_unicodePwd]) dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: pfm = self._samdb_fetch_pfm_and_schi() @@ -828,7 +828,7 @@ class DrsReplicaPrefixMapTestCase(drs_base.DrsBaseTestCase): partial_attribute_set = self.get_partial_attribute_set([drsuapi.DRSUAPI_ATTID_name]) dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: pfm = self._samdb_fetch_pfm_and_schi() @@ -901,7 +901,7 @@ class DrsReplicaPrefixMapTestCase(drs_base.DrsBaseTestCase): partial_attribute_set_ex = self.get_partial_attribute_set([drsuapi.DRSUAPI_ATTID_unicodePwd]) dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) try: pfm = self._samdb_fetch_pfm_and_schi() @@ -1117,7 +1117,7 @@ class DrsReplicaSyncSortTestCase(drs_base.DrsBaseTestCase): dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) req8 = self._exop_req8(dest_dsa=None, invocation_id=dc_guid_1, @@ -1177,7 +1177,7 @@ class DrsReplicaSyncSortTestCase(drs_base.DrsBaseTestCase): dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) # Make sure the max objects count is high enough req8 = self._exop_req8(dest_dsa=None, diff --git a/source4/torture/drs/python/repl_move.py b/source4/torture/drs/python/repl_move.py index c994facf21c..6da60ccca6c 100644 --- a/source4/torture/drs/python/repl_move.py +++ b/source4/torture/drs/python/repl_move.py @@ -80,13 +80,6 @@ from samba.dcerpc.drsuapi import ( class DrsMoveObjectTestCase(drs_base.DrsBaseTestCase): - def _ds_bind(self, server_name): - binding_str = "ncacn_ip_tcp:%s[print,seal]" % server_name - - drs = drsuapi(binding_str, self.get_loadparm(), self.get_credentials()) - (drs_handle, supported_extensions) = drs_DsBind(drs) - return (drs, drs_handle) - def setUp(self): super(DrsMoveObjectTestCase, self).setUp() # disable automatic replication temporary @@ -121,8 +114,8 @@ class DrsMoveObjectTestCase(drs_base.DrsBaseTestCase): self.dc1_guid = self.ldb_dc1.get_invocation_id() self.dc2_guid = self.ldb_dc2.get_invocation_id() - self.drs_dc1 = self._ds_bind(self.dnsname_dc1) - self.drs_dc2 = self._ds_bind(self.dnsname_dc2) + self.drs_dc1 = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) + self.drs_dc2 = self._ds_bind(self.dnsname_dc2, ip=self.url_dc2) def tearDown(self): try: diff --git a/source4/torture/drs/python/repl_schema.py b/source4/torture/drs/python/repl_schema.py index b46a87af51e..44317ac8819 100644 --- a/source4/torture/drs/python/repl_schema.py +++ b/source4/torture/drs/python/repl_schema.py @@ -52,13 +52,6 @@ class DrsReplSchemaTestCase(drs_base.DrsBaseTestCase): # current Class or Attribute object id obj_id = 0 - def _ds_bind(self, server_name): - binding_str = "ncacn_ip_tcp:%s[seal]" % server_name - - drs = drsuapi.drsuapi(binding_str, self.get_loadparm(), self.get_credentials()) - (drs_handle, supported_extensions) = drs_DsBind(drs) - return (drs, drs_handle) - def _exop_req8(self, dest_dsa, invocation_id, nc_dn_str, exop, replica_flags=0, max_objects=0): req8 = drsuapi.DsGetNCChangesRequest8() @@ -281,7 +274,7 @@ class DrsReplSchemaTestCase(drs_base.DrsBaseTestCase): dc_guid_1 = self.ldb_dc1.get_invocation_id() - drs, drs_handle = self._ds_bind(self.dnsname_dc1) + drs, drs_handle = self._ds_bind(self.dnsname_dc1, ip=self.url_dc1) req8 = self._exop_req8(dest_dsa=None, invocation_id=dc_guid_1,