mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
1840e96597
create_smb1_fail_skipfile.txt provides both + instructions + patch to perform the pre-requisite steps to be able to modify the environment and parse test output Signed-off-by: Noel Power <noel.power@suse.com> Reviewed-by: Ralph Boehme <slow@samba.org>
191 lines
6.0 KiB
Plaintext
191 lines
6.0 KiB
Plaintext
From a85b0a942ef07b6188255b2fee2fc379e9310409 Mon Sep 17 00:00:00 2001
|
|
From: Noel Power <noel.power@suse.com>
|
|
Date: Fri, 27 Sep 2019 15:24:25 +0100
|
|
Subject: [PATCH] selftest: Generate a list of skip entries for SMB1
|
|
|
|
The following changes prepare the test system so we can generate
|
|
the list of tests that fail when SMB1 can no longer be negotiated
|
|
|
|
1.
|
|
Change the values of 'min protocol' set for the various test
|
|
environments to be SMB2_02.
|
|
|
|
Servers will only offer protocols starting with the min specified in the
|
|
conf files, we don't need to change the client value here yet (until SMB1 is
|
|
truely gone)
|
|
|
|
2.
|
|
The following environments will still negotiate SMB1
|
|
ad_dc_ntvfs, rpc_proxy & s4member
|
|
|
|
3.
|
|
Make test wont stop on first error
|
|
|
|
Once this patch is applied either
|
|
a. Commit to gitlab or
|
|
b. Run a private autobuild
|
|
|
|
For the failing test jobs gather the stdout logs and run the parser
|
|
|
|
source4/scripting/devel/test_errors_regrex.py logfile
|
|
|
|
over the output. This script will generate lines suitable for a
|
|
skipfile.
|
|
|
|
It is a good idea as a final step to say create a file e.g.
|
|
|
|
selftest/skip_smb1_fails
|
|
|
|
and then exclude those tests, running CI with patch similar to wscript
|
|
below will verify that the list of tests is complete.
|
|
|
|
--- a/selftest/wscript
|
|
+++ b/selftest/wscript
|
|
@@ -179,6 +179,9 @@ def cmd_testonly(opt):
|
|
else:
|
|
env.FILTER_OPTIONS = '${FILTER_XFAIL}'
|
|
|
|
+ # Maybe this should be optional
|
|
+ env.OPTIONS += ' --exclude=${srcdir}/selftest/skip_smb1_fails'
|
|
+
|
|
---
|
|
script/autobuild.py | 2 +-
|
|
selftest/target/Samba3.pm | 4 +--
|
|
selftest/target/Samba4.pm | 14 ++++++--
|
|
source4/scripting/devel/test_errors_regrex.py | 49 +++++++++++++++++++++++++++
|
|
4 files changed, 63 insertions(+), 6 deletions(-)
|
|
create mode 100755 source4/scripting/devel/test_errors_regrex.py
|
|
|
|
diff --git a/script/autobuild.py b/script/autobuild.py
|
|
index 85167cfa993..5bf087f652c 100755
|
|
--- a/script/autobuild.py
|
|
+++ b/script/autobuild.py
|
|
@@ -184,7 +184,7 @@ def format_option(name, value=None):
|
|
|
|
def make_test(
|
|
cmd='make test',
|
|
- FAIL_IMMEDIATELY=1,
|
|
+ FAIL_IMMEDIATELY=0,
|
|
TESTS='',
|
|
include_envs=None,
|
|
exclude_envs=None):
|
|
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
|
|
index 41d439ea91a..ca14f86e0a4 100755
|
|
--- a/selftest/target/Samba3.pm
|
|
+++ b/selftest/target/Samba3.pm
|
|
@@ -1708,8 +1708,8 @@ sub provision($$$$$$$$$)
|
|
panic action = cd $self->{srcdir} && $self->{srcdir}/selftest/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
|
|
smbd:suicide mode = yes
|
|
|
|
- client min protocol = CORE
|
|
- server min protocol = LANMAN1
|
|
+ client min protocol = SMB2_02
|
|
+ server min protocol = SMB2_02
|
|
|
|
workgroup = $domain
|
|
|
|
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
|
|
index 1310e2ff09f..dd7fc807703 100755
|
|
--- a/selftest/target/Samba4.pm
|
|
+++ b/selftest/target/Samba4.pm
|
|
@@ -713,8 +713,8 @@ sub provision_raw_step1($$)
|
|
log level = $ctx->{server_loglevel}
|
|
lanman auth = Yes
|
|
ntlm auth = Yes
|
|
- client min protocol = CORE
|
|
- server min protocol = LANMAN1
|
|
+ client min protocol = SMB2_02
|
|
+ server min protocol = SMB2_02
|
|
mangled names = yes
|
|
dns update command = $ctx->{samba_dnsupdate}
|
|
spn update command = $ctx->{python} $ENV{SRCDIR_ABS}/source4/scripting/bin/samba_spnupdate -s $ctx->{smb_conf}
|
|
@@ -1188,6 +1188,9 @@ rpc_server:winreg = embedded
|
|
rpc_server:spoolss = embedded
|
|
rpc_daemon:spoolssd = embedded
|
|
rpc_server:tcpip = no
|
|
+ # override the new SMB2 only default
|
|
+ client min protocol = CORE
|
|
+ server min protocol = LANMAN1
|
|
";
|
|
if ($more_conf) {
|
|
$extra_smb_conf = $extra_smb_conf . $more_conf . "\n";
|
|
@@ -1238,7 +1241,9 @@ sub provision_rpc_proxy($$$)
|
|
dcerpc endpoint servers = epmapper, remote
|
|
dcerpc_remote:interfaces = rpcecho
|
|
dcerpc_remote:allow_anonymous_fallback = yes
|
|
-
|
|
+ # override the new SMB2 only default
|
|
+ client min protocol = CORE
|
|
+ server min protocol = LANMAN1
|
|
[cifs_to_dc]
|
|
path = /tmp/_ignore_cifs_to_dc_/_none_
|
|
read only = no
|
|
@@ -1470,6 +1475,9 @@ sub provision_ad_dc_ntvfs($$$)
|
|
dsdb password event notification = true
|
|
dsdb group change notification = true
|
|
server schannel = auto
|
|
+ # override the new SMB2 only default
|
|
+ client min protocol = CORE
|
|
+ server min protocol = LANMAN1
|
|
";
|
|
push (@{$extra_provision_options}, "--use-ntvfs");
|
|
my $ret = $self->provision($prefix,
|
|
diff --git a/source4/scripting/devel/test_errors_regrex.py b/source4/scripting/devel/test_errors_regrex.py
|
|
new file mode 100755
|
|
index 00000000000..eedfdbb6c35
|
|
--- /dev/null
|
|
+++ b/source4/scripting/devel/test_errors_regrex.py
|
|
@@ -0,0 +1,49 @@
|
|
+#!/usr/bin/env python3
|
|
+#
|
|
+# Simple script to parse make test stdout results
|
|
+# to find the tests that are in error, the scrip
|
|
+# then creates a line for each error suitable for
|
|
+# putting into a skip file.
|
|
+# This scripts intended use is in SMB1 to SMB2 test
|
|
+# porting where it can be used to parse for failing
|
|
+# scripts in the case where the test envs are set
|
|
+# to not negotiate SMB1
|
|
+#
|
|
+import sys
|
|
+import re
|
|
+import os
|
|
+
|
|
+def parse_errors(infile):
|
|
+ all_tests = []
|
|
+ error_tests = []
|
|
+ # get all test lines
|
|
+ last_err = ""
|
|
+ for line in infile:
|
|
+ line = line.rstrip(os.linesep)
|
|
+ if re.match("^\[.* at .*\]", line):
|
|
+ test_info = line.split(',')
|
|
+ if len(test_info) > 1:
|
|
+ err = test_info[1].split()[0]
|
|
+ if err != last_err:
|
|
+ error_tests.append(all_tests[-1])
|
|
+ last_err = err
|
|
+ all_tests.append(line.split(']',1)[1].lstrip())
|
|
+ return error_tests
|
|
+
|
|
+def main():
|
|
+ if len(sys.argv) < 2:
|
|
+ print ("no args passed")
|
|
+ sys.exit(1)
|
|
+ print ("processing %s" % sys.argv[1])
|
|
+ inputf = sys.argv[1]
|
|
+ f = open(inputf, "r")
|
|
+ failing_tests = parse_errors(f)
|
|
+ f.close()
|
|
+ for t in failing_tests:
|
|
+ # adust t fo regex
|
|
+ t = t.replace('(', '\\(').replace(')', '\\)')
|
|
+ t = t.replace('[', '\\[').replace(']', '\\]')
|
|
+ t = "^" + t
|
|
+ print("%s" % t)
|
|
+if __name__ == '__main__':
|
|
+ main()
|
|
--
|
|
2.16.4
|
|
|