samba_dnsupdate timeouts (was Re: [PATCH] python indent bugfix in dns_hub.py)

Stefan Metzmacher metze at samba.org
Thu Feb 7 09:37:25 UTC 2019


Hi Tim,

> I just wanted to say I think dns_hub has been a good addition to the
> selftest framework. Anything that allows us to test DNS more
> realistically is a good thing, and is worth a few teething problems.

Exactly we should make more use of it and remove the need for the
RESOLV_WRAPPER_HOSTS file.

> It at least highlighted the real problem, which was that we were
> starting to hit the CI runner limits, and that could've dragged on for
> months with CI failing intermittently for no obvious reason. For the
> record, the CI limit seems to be around 8 DCs, although obviously this
> varies somewhat depending on the process model overhead. Tearing down
> testenvs once we're done with them seems like a good idea in the long run.

BTW: there's at least one additional problem I noticed while cleaning up
my patchset to wait for the dns_update_cache file to be filled.

On an RODC samba_dnsupdate calls DsrUpdateReadOnlyServerDnsRecords via
IRPC to the local winbindd, which calls
DsrUpdateReadOnlyServerDnsRecords via netlogon to the RWDC.
The netlogon server calls dnsupdate_RODC via IRPC to the dnsupdate
task on the RWDC, which calls samba_dnsupdate with a temporary config
on behalf of the RODC.

Currently samba_dnsupdate (on the RODC) constantly recreates its irpc
handle (and the messaging context and the dgram socket). This causes
problems when winbindd tries to send back the result to samba_dnsupdate,
as winbindd's messaging context caches connected dgram sockets per
target pid for 1 second. As the target (samba_dnsupdate) constantly
recreates its socket, winbindd very likely hits ECONNREFUSED when
the socket is recreated multiple times within 1 second.
As a result samba_dnsupdate hits a 10 second irpc timeout, so the
whole samba_dnsupdate hits the 20 second timeout on the RODC.

The solution to this is to cache the irpc handle in samba_dnsupdate.

> I'll raise a bug and backport the autobuild change to 4.10.

I'm currently testing the attached additional patches here:
https://gitlab.com/samba-team/devel/samba/pipelines/46503335
and
https://gitlab.com/samba-team/devel/samba/pipelines/46503395

Thanks!
metze

> On 5/02/19 8:54 PM, Jeremy Allison wrote:
>> On Tue, Feb 05, 2019 at 08:44:08AM +0100, Volker Lendecke wrote:
>>> On Tue, Feb 05, 2019 at 09:21:58AM +0200, Isaac Boukris via samba-technical wrote:
>>>> Hi,
>>>>
>>>> On Tue, Feb 5, 2019 at 6:28 AM Tim Beale <timbeale at catalyst.net.nz> wrote:
>>>>> Yeah, it looks like changing the process model was enough to push the CI
>>>>> runners over the edge fairly reliably.
>>>> FYI, I just tried to rebase merge request !200 on master and
>>>> build_samba_ad_dc_2 failed on a somewhat different dns error:
>>>> https://gitlab.com/samba-team/devel/samba/-/jobs/156308654
>>> I'll work on a patchset to restore the pre-async-dns/dns_hub behaviour
>>> and remove the dns_hub again. We need to find a different way to
>>> approach async DNS and properly test it. The current approach has
>>> proven to be the wrong way.
>> Please don't do that. It appears to be a python / resource limit
>> issue on the gitlab-CI runners. Removing dns_hub isn't going
>> to make *any* difference here, we're going to run into this
>> again and again until we find a way to break up the tests or
>> get more resources on gitlab.
>>
>> Revert frenzy is never a good move. Don't do it please, it's
>> a waste of time.

-------------- next part --------------
From 185f91bd88a4cf07561858ffa387d17caaaaa953 Mon Sep 17 00:00:00 2001
From: Tim Beale <timbeale at catalyst.net.nz>
Date: Mon, 4 Feb 2019 09:28:07 +1300
Subject: [PATCH 1/9] selftest: Make dns_hub socket timeout match
 DNS_REQUEST_TIMEOUT

I was hitting the recv_packet = s.recv(2048, 0) exception because
the socket timeout was reached. We've seen it before, but it seemed more
common after changing the default process-model to prefork. This patch
makes the socket timeout used by the python code consistent with the C
code.

Signed-off-by: Tim Beale <timbeale at catalyst.net.nz>
---
 selftest/target/dns_hub.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/selftest/target/dns_hub.py b/selftest/target/dns_hub.py
index d2d1f39e752a..e0fe68e985f6 100755
--- a/selftest/target/dns_hub.py
+++ b/selftest/target/dns_hub.py
@@ -34,6 +34,8 @@ else:
     import socketserver
     sserver = socketserver
 
+DNS_REQUEST_TIMEOUT = 10
+
 
 class DnsHandler(sserver.BaseRequestHandler):
     def dns_transaction_udp(self, packet, host):
@@ -42,7 +44,7 @@ class DnsHandler(sserver.BaseRequestHandler):
         try:
             send_packet = ndr.ndr_pack(packet)
             s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
-            s.settimeout(5)
+            s.settimeout(DNS_REQUEST_TIMEOUT)
             s.connect((host, 53))
             s.sendall(send_packet, 0)
             recv_packet = s.recv(2048, 0)
-- 
2.17.1


From 7966ad88a8940e7cb2eff4c74d48a97557a62f7a Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Wed, 23 Jan 2019 09:34:40 +0100
Subject: [PATCH 2/9] selftest: improve debugging in dns_hub.py

We only print debug messages when the response is delayed by more than 2
seconds.

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 selftest/target/dns_hub.py | 43 +++++++++++++++++++++++++++++++-------
 1 file changed, 36 insertions(+), 7 deletions(-)

diff --git a/selftest/target/dns_hub.py b/selftest/target/dns_hub.py
index e0fe68e985f6..2cfc8d076aa8 100755
--- a/selftest/target/dns_hub.py
+++ b/selftest/target/dns_hub.py
@@ -24,6 +24,7 @@ import threading
 import sys
 import select
 import socket
+import time
 from samba.dcerpc import dns
 import samba.ndr as ndr
 
@@ -38,6 +39,16 @@ DNS_REQUEST_TIMEOUT = 10
 
 
 class DnsHandler(sserver.BaseRequestHandler):
+    dns_qtype_strings = dict((v, k) for k, v in vars(dns).items() if k.startswith('DNS_QTYPE_'))
+    def dns_qtype_string(self, qtype):
+        "Return a readable qtype code"
+        return self.dns_qtype_strings[qtype]
+
+    dns_rcode_strings = dict((v, k) for k, v in vars(dns).items() if k.startswith('DNS_RCODE_'))
+    def dns_rcode_string(self, rcode):
+        "Return a readable error code"
+        return self.dns_rcode_strings[rcode]
+
     def dns_transaction_udp(self, packet, host):
         "send a DNS query and read the reply"
         s = None
@@ -65,6 +76,13 @@ class DnsHandler(sserver.BaseRequestHandler):
             return 'ignore'
         if lname.endswith('dsfsdfs'):
             return 'fail'
+        if lname.endswith("torture1", 0, len(lname)-2):
+            # CATCH TORTURE100, TORTURE101, ...
+            return 'torture'
+        if lname.endswith('_none_.example.com'):
+            return 'torture'
+        if lname.endswith('torturedom.samba.example.com'):
+            return 'torture'
         if lname.endswith('adnonssdom.samba.example.com'):
             return '127.0.0.17'
         if lname.endswith('adnontlmdom.samba.example.com'):
@@ -92,6 +110,7 @@ class DnsHandler(sserver.BaseRequestHandler):
         return None
 
     def handle(self):
+        start = time.monotonic()
         data, sock = self.request
         query = ndr.ndr_unpack(dns.name_packet, data)
         name = query.questions[0].name
@@ -102,13 +121,13 @@ class DnsHandler(sserver.BaseRequestHandler):
             return
         elif forwarder is 'fail':
             pass
-        elif forwarder is not None:
-            response = self.dns_transaction_udp(query, forwarder)
-        else:
+        elif forwarder in ['torture', None]:
             response = query
             response.operation |= dns.DNS_FLAG_REPLY
             response.operation |= dns.DNS_FLAG_RECURSION_AVAIL
             response.operation |= dns.DNS_RCODE_NXDOMAIN
+        else:
+            response = self.dns_transaction_udp(query, forwarder)
 
         if response is None:
             response = query
@@ -118,14 +137,24 @@ class DnsHandler(sserver.BaseRequestHandler):
 
         send_packet = ndr.ndr_pack(response)
 
-        print("dns_hub: sending %s to address %s for name %s\n" %
-            (forwarder, self.client_address, name))
+        end = time.monotonic()
+        tdiff = end - start
+        errcode = response.operation & dns.DNS_RCODE
+        if tdiff > (DNS_REQUEST_TIMEOUT/5):
+            debug = True
+        else:
+            debug = False
+        if debug:
+            print("dns_hub: forwarder[%s] client[%s] name[%s][%s] %s response.operation[0x%x] tdiff[%s]\n" %
+                (forwarder, self.client_address, name,
+                 self.dns_qtype_string(query.questions[0].question_type),
+                 self.dns_rcode_string(errcode), response.operation, tdiff))
 
         try:
             sock.sendto(send_packet, self.client_address)
         except socket.error as err:
-            print("Error sending %s to address %s for name %s: %s\n" %
-                (forwarder, self.client_address, name, err))
+            print("dns_hub: Error sending response to client[%s] for name[%s] tdiff[%s]: %s\n" %
+                (self.client_address, name, tdiff, err))
 
 
 class server_thread(threading.Thread):
-- 
2.17.1


From 4d17ee030b3ca4aa0ae90c565dc57a40b060ce25 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 31 Jan 2019 08:49:53 +0100
Subject: [PATCH 3/9] s4:setup: register ${NTDSGUID}._msdcs.${DNSFOREST} first
 in dns_update_list

After the A and AAAA records for the ${HOSTNAME} this is the most
important name.

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 source4/setup/dns_update_list | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source4/setup/dns_update_list b/source4/setup/dns_update_list
index 8173d01b0867..a14327a7b165 100644
--- a/source4/setup/dns_update_list
+++ b/source4/setup/dns_update_list
@@ -2,6 +2,7 @@
 # dynamic DNS update. It is processed by the samba_dnsupdate script
 A                      ${HOSTNAME}                                           $IP
 AAAA                   ${HOSTNAME}                                           $IP
+${IF_DC}CNAME          ${NTDSGUID}._msdcs.${DNSFOREST}                       ${HOSTNAME}
 ${IF_RWDNS_DOMAIN}NS   ${DNSDOMAIN}                                          ${HOSTNAME}
 ${IF_RWDNS_FOREST}NS   ${DNSFOREST}                                          ${HOSTNAME}
 ${IF_RWDNS_FOREST}NS   _msdcs.${DNSFOREST}                                   ${HOSTNAME}
@@ -22,7 +23,6 @@ ${IF_RWDC}SRV          _kerberos._tcp.dc._msdcs.${DNSDOMAIN}                 ${H
 ${IF_RWDC}SRV          _kpasswd._tcp.${DNSDOMAIN}                            ${HOSTNAME} 464
 ${IF_RWDC}SRV          _kpasswd._udp.${DNSDOMAIN}                            ${HOSTNAME} 464
 # RW and RO domain controller
-${IF_DC}CNAME          ${NTDSGUID}._msdcs.${DNSFOREST}                       ${HOSTNAME}
 ${IF_DC}SRV            _ldap._tcp.${SITE}._sites.${DNSDOMAIN}                ${HOSTNAME} 389
 ${IF_DC}SRV            _ldap._tcp.${SITE}._sites.dc._msdcs.${DNSDOMAIN}      ${HOSTNAME} 389
 ${IF_DC}SRV            _kerberos._tcp.${SITE}._sites.${DNSDOMAIN}            ${HOSTNAME} 88
-- 
2.17.1


From e054c0a768f8f54e8816f37838e884349a6e3485 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 7 Feb 2019 10:07:18 +0100
Subject: [PATCH 4/9] winbindd_irpc: remove unused
 winbind_DsrUpdateReadOnlyServerDnsRecords from wb_irpc_forward_state

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 source3/winbindd/winbindd_irpc.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/source3/winbindd/winbindd_irpc.c b/source3/winbindd/winbindd_irpc.c
index 8cbb0b930861..fda29c7e7022 100644
--- a/source3/winbindd/winbindd_irpc.c
+++ b/source3/winbindd/winbindd_irpc.c
@@ -34,8 +34,6 @@
 
 struct wb_irpc_forward_state {
 	struct irpc_message *msg;
-	struct winbind_DsrUpdateReadOnlyServerDnsRecords *req;
-
 	const char *opname;
 	struct dcesrv_call_state *dce_call;
 };
-- 
2.17.1


From c395cad3f4d452e189e446bce72f804e3e759d8c Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 7 Feb 2019 09:40:19 +0100
Subject: [PATCH 5/9] samba_dnsupdate: make it clear that opts.use_file is
 active and we're not using nsupdate

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 source4/scripting/bin/samba_dnsupdate | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate
index 74f10427b4e6..90d403464dc0 100755
--- a/source4/scripting/bin/samba_dnsupdate
+++ b/source4/scripting/bin/samba_dnsupdate
@@ -443,10 +443,10 @@ def call_nsupdate(d, op="add"):
 
     assert(op in ["add", "delete"])
 
-    if opts.verbose:
-        print("Calling nsupdate for %s (%s)" % (d, op))
-
     if opts.use_file is not None:
+        if opts.verbose:
+            print("Use File instead of nsupdate for %s (%s)" % (d, op))
+
         try:
             rfile = open(opts.use_file, 'r+')
         except IOError:
@@ -471,6 +471,9 @@ def call_nsupdate(d, op="add"):
         fcntl.lockf(rfile, fcntl.LOCK_UN)
         return
 
+    if opts.verbose:
+        print("Calling nsupdate for %s (%s)" % (d, op))
+
     normalised_name = d.name.rstrip('.') + '.'
 
     (tmp_fd, tmpfile) = tempfile.mkstemp()
-- 
2.17.1


From bcd902b4c9d0c8bc3513c0d7ff24b8232ed6a311 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 7 Feb 2019 09:42:36 +0100
Subject: [PATCH 6/9] samba_dnsupdate: make rodc_dns_update() more robust
 against timing problems

Without this we have an interesting race!

The messaging_dgm code caches connected datagram sockets based on the
destination pid for 1 second.

The fact that samba_dnsupdate constantly recreates its messaging
context (and the underlying datagram socket) means that we the winbindd
messaging context may get a stale connection. As a result sending any
message from winbindd back to samba_dnsupdate will result in
ECONNREFUSED.

That means the IRPC response from winbindd never reaches
samba_dnsupdate, which will then hit a timeout.

In turn samba_dnsupdate on the RODC times out.

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 source4/scripting/bin/samba_dnsupdate | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate
index 90d403464dc0..3fb540b202c2 100755
--- a/source4/scripting/bin/samba_dnsupdate
+++ b/source4/scripting/bin/samba_dnsupdate
@@ -633,6 +633,14 @@ def call_samba_tool(d, op="add", zone=None):
             print("Failed 'samba-tool dns' based update: %s : %s" % (str(d), estr))
         raise
 
+irpc_wb = None
+def cached_irpc_wb(lp):
+    global irpc_wb
+    if irpc_wb is not None:
+        return irpc_wb
+    irpc_wb = winbind.winbind("irpc:winbind_server", lp)
+    return irpc_wb
+
 def rodc_dns_update(d, t, op):
     '''a single DNS update via the RODC netlogon call'''
     global sub_vars
@@ -652,7 +660,7 @@ def rodc_dns_update(d, t, op):
         netlogon.NlDnsGenericGcAtSite  : netlogon.NlDnsDomainNameAlias
         }
 
-    w = winbind.winbind("irpc:winbind_server", lp)
+    w = cached_irpc_wb(lp)
     dns_names = netlogon.NL_DNS_NAME_INFO_ARRAY()
     dns_names.count = 1
     name = netlogon.NL_DNS_NAME_INFO()
@@ -680,6 +688,9 @@ def rodc_dns_update(d, t, op):
         print("Error setting DNS entry of type %u: %s: %s" % (t, d, reason))
         error_count = error_count + 1
 
+    if opts.verbose:
+        print("Called netlogon RODC update for %s" % d)
+
     if error_count != 0 and opts.fail_immediately:
         sys.exit(1)
 
-- 
2.17.1


From 7f686fae76c307d0bc1fbfa8c30e934b9ab63e6e Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Wed, 30 Jan 2019 13:44:04 +0100
Subject: [PATCH 7/9] selftest:Samba4: report when samba is started and ready

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 selftest/target/Samba4.pm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index 33c66848c562..a419e4772ef1 100755
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -217,9 +217,9 @@ sub wait_for_start($$)
 		$count++;
 	} while ($ret != 0 && $count < 20);
 	if ($count == 20) {
-		warn("nbt not reachable after 20 retries\n");
 		teardown_env($self, $testenv_vars);
-		return 0;
+		warn("nbt not reachable after 20 retries\n");
+		return -1;
 	}
 
 	# Ensure we have the first RID Set before we start tests.  This makes the tests more reliable.
@@ -254,10 +254,11 @@ sub wait_for_start($$)
 		while (system("$cmd >/dev/null") != 0) {
 			$count++;
 			if ($count > $max_wait) {
+				teardown_env($self, $testenv_vars);
 				warn("Timed out ($max_wait sec) waiting for working LDAP and a RID Set to be allocated by $testenv_vars->{NETBIOSNAME} PID $testenv_vars->{SAMBA_PID}");
-				$ret = -1;
-				last;
+				return -1;
 			}
+			print "Waiting for working LDAP...\n";
 			sleep(1);
 		}
 	}
@@ -278,14 +279,16 @@ sub wait_for_start($$)
 		$count++;
 	} while ($ret != 0 && $count < 20);
 	if ($count == 20) {
-		warn("winbind not reachable after 20 retries\n");
 		teardown_env($self, $testenv_vars);
-		return 0;
+		warn("winbind not reachable after 20 retries\n");
+		return -1;
 	}
 
 	print $self->getlog_env($testenv_vars);
 
-	return $ret
+	print "READY ($testenv_vars->{SAMBA_PID})\n";
+
+	return 0
 }
 
 sub write_ldb_file($$$)
-- 
2.17.1


From bd80cd4168f6fc9739f11b549001b5383a0d1a7c Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Tue, 29 Jan 2019 13:57:04 +0100
Subject: [PATCH 8/9] selftest:Samba4: wait for DNS names being registered

We can't reliable start tests without registered dns names.

Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
 selftest/target/Samba4.pm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index a419e4772ef1..029594e95104 100755
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -284,6 +284,35 @@ sub wait_for_start($$)
 		return -1;
 	}
 
+	# Ensure we registered all our names
+	if ($testenv_vars->{SERVER_ROLE} eq "domain controller") {
+		my $max_wait = 60;
+		print "Waiting for dns_update_cache to be created.\n";
+		$count = 0;
+		while (not -e "$testenv_vars->{PRIVATEDIR}/dns_update_cache") {
+			$count++;
+			if ($count > $max_wait) {
+				teardown_env($self, $testenv_vars);
+				warn("Timed out ($max_wait sec) waiting for dns_update_cache PID $testenv_vars->{SAMBA_PID}");
+				return -1;
+			}
+			print "Waiting for dns_update_cache to be created...\n";
+			sleep(1);
+		}
+		print "Waiting for dns_update_cache to be filled.\n";
+		$count = 0;
+		while ((-s "$testenv_vars->{PRIVATEDIR}/dns_update_cache") == 0) {
+			$count++;
+			if ($count > $max_wait) {
+				teardown_env($self, $testenv_vars);
+				warn("Timed out ($max_wait sec) waiting for dns_update_cache PID $testenv_vars->{SAMBA_PID}");
+				return -1;
+			}
+			print "Waiting for dns_update_cache to be filled...\n";
+			sleep(1);
+		}
+	}
+
 	print $self->getlog_env($testenv_vars);
 
 	print "READY ($testenv_vars->{SAMBA_PID})\n";
-- 
2.17.1


From 9f808d4e1e5dca36544b02ce360a98eb44532ee7 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
Date: Wed, 23 Jan 2019 09:43:33 +0100
Subject: [PATCH 9/9] CI: split out "samba-ad-dc-ntvfs[-py2]" test targets

Many AD tests currently use the "samba" target. Split out a new target
"samba-ad-dc-ntvfs" and have all tests that use the "ad_dc_ntvfs" env
use the new target. This should greatly speed up the runtime for the "samba"
target and avoid swapping.

Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
---
 .gitlab-ci-private.yml | 12 ++++++++++++
 script/autobuild.py    | 26 +++++++++++++++++++++-----
 2 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci-private.yml b/.gitlab-ci-private.yml
index ea22eaa044f7..ac996ec46801 100644
--- a/.gitlab-ci-private.yml
+++ b/.gitlab-ci-private.yml
@@ -39,6 +39,18 @@ build_samba_ad_dc_py2:
     # this one takes about 1 hours to finish
     - script/autobuild.py samba-ad-dc-py2     --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase
 
+build_samba_ad_dc_ntvfs:
+  <<: *private_template
+  script:
+    # this one takes about 2 hours to finish
+    - script/autobuild.py samba-ad-dc-ntvfs --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase
+
+build_samba_ad_dc_ntvfs_py2:
+  <<: *private_template
+  script:
+    # this one takes about 2 hours to finish
+    - script/autobuild.py samba-ad-dc-ntvfs-py2  --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase
+
 build_nt4:
   <<: *private_template
   script:
diff --git a/script/autobuild.py b/script/autobuild.py
index 00f0d2202a3d..38b28cee8e26 100755
--- a/script/autobuild.py
+++ b/script/autobuild.py
@@ -49,6 +49,8 @@ builddirs = {
     "samba-none-env": ".",
     "samba-ad-dc": ".",
     "samba-ad-dc-py2": ".",
+    "samba-ad-dc-ntvfs": ".",
+    "samba-ad-dc-ntvfs-py2": ".",
     "samba-ad-dc-2": ".",
     "samba-ad-dc-2-py2": ".",
     "samba-ad-dc-backup": ".",
@@ -93,7 +95,7 @@ tasks = {
                ("check-clean-tree", "../script/clean-source-tree.sh", "text/plain"),
                ("clean", "make clean", "text/plain")],
 
-    # We have 'test' before 'install' because, 'test' should work without 'install (runs ad_dc_ntvfs and all the other envs)'
+    # We have 'test' before 'install' because, 'test' should work without 'install (runs all the other envs)'
     "samba": [("configure", "./configure.developer --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
                 ("make", "make -j", "text/plain"),
                 ("test", "make test FAIL_IMMEDIATELY=1 "
@@ -102,6 +104,7 @@ tasks = {
                  "--exclude-env=nt4_dc "
                  "--exclude-env=nt4_member "
                  "--exclude-env=ad_dc "
+                 "--exclude-env=ad_dc_ntvfs "
                  "--exclude-env=ad_dc_no_nss "
                  "--exclude-env=fl2003dc "
                  "--exclude-env=fl2008r2dc "
@@ -109,6 +112,7 @@ tasks = {
                  "--exclude-env=ad_member_idmap_rid "
                  "--exclude-env=ad_member_idmap_ad "
                  "--exclude-env=chgdcpass "
+                 "--exclude-env=vampire_dc "
                  "--exclude-env=vampire_2000_dc "
                  "--exclude-env=fl2000dc "
                  "--exclude-env=fileserver "
@@ -117,13 +121,14 @@ tasks = {
                  "--exclude-env=renamedc "
                  "--exclude-env=offlinebackupdc "
                  "--exclude-env=labdc "
+                 "--exclude-env=rodc "
+                 "--exclude-env=promoted_dc "
                  "'",
                  "text/plain"),
                 ("install", "make install", "text/plain"),
                 ("check-clean-tree", "script/clean-source-tree.sh", "text/plain"),
                 ("clean", "make clean", "text/plain")],
 
-    # We split out this so the isolated nt4_dc tests do not wait for ad_dc or ad_dc_ntvfs tests (which are long)
     "samba-nt4": [("random-sleep", "script/random-sleep.sh 60 600", "text/plain"),
                     ("configure", "./configure.developer --without-ads --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
                     ("make", "make -j", "text/plain"),
@@ -134,7 +139,6 @@ tasks = {
                     ("check-clean-tree", "script/clean-source-tree.sh", "text/plain"),
                     ("clean", "make clean", "text/plain")],
 
-    # We split out this so the isolated ad_dc tests do not wait for ad_dc_ntvfs tests (which are long)
     "samba-fileserver": [("random-sleep", "script/random-sleep.sh 60 600", "text/plain"),
                            ("configure", "./configure.developer --without-ad-dc --without-ldap --without-ads --without-json --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
                            ("make", "make -j", "text/plain"),
@@ -143,7 +147,6 @@ tasks = {
                             "--include-env=fileserver'", "text/plain"),
                            ("check-clean-tree", "script/clean-source-tree.sh", "text/plain")],
 
-    # We split out this so the isolated ad_dc tests do not wait for ad_dc_ntvfs tests (which are long)
     "samba-ad-dc": [("random-sleep", "script/random-sleep.sh 60 600", "text/plain"),
                       ("configure", "./configure.developer --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
                       ("make", "make -j", "text/plain"),
@@ -157,7 +160,20 @@ tasks = {
                        "--include-env=ad_member_idmap_ad'", "text/plain"),
                       ("check-clean-tree", "script/clean-source-tree.sh", "text/plain")],
 
-    # We split out this so the isolated ad_dc tests do not wait for ad_dc_ntvfs tests (which are long)
+    # We split out the ad_dc_ntvfs tests (which are long) so other test do not wait
+    "samba-ad-dc-ntvfs": [("random-sleep", "script/random-sleep.sh 60 600", "text/plain"),
+                      ("configure", "./configure.developer --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
+                      ("make", "make -j", "text/plain"),
+                      ("test", "make test FAIL_IMMEDIATELY=1 "
+                       "TESTS='${PY3_ONLY}"
+                       "--include-env=ad_dc_ntvfs "
+                       "--include-env=rodc "
+                       "--include-env=vampire_dc "
+                       "--include-env=promoted_dc "
+                       "'",
+                       "text/plain"),
+                      ("check-clean-tree", "script/clean-source-tree.sh", "text/plain")],
+
     "samba-ad-dc-2": [("random-sleep", "script/random-sleep.sh 60 600", "text/plain"),
                         ("configure", "./configure.developer --with-selftest-prefix=./bin/ab" + samba_configure_params, "text/plain"),
                         ("make", "make -j", "text/plain"),
-- 
2.17.1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20190207/d545c5c1/signature.sig>


More information about the samba-technical mailing list