[SCM] Samba Shared Repository - branch master updated

David Mulder dmulder at samba.org
Mon Feb 22 15:51:01 UTC 2021


The branch, master has been updated
       via  e49a0b444ab ldb: remove some 'if PY3's in tests
       via  bc7224fbc79 pytest/segfault: fix the rpc.echo test
       via  f154fe8d954 pytest/segfaults: drop a useless line
       via  9e19b148f6c selftest: preforkrestartdc doesn't need gdb-backtraces
       via  80faba100db pytest:segfault: avoid gdb_backtrace on knownfail
       via  5b7c2c3b1ab selftest/gdb_backtrace: add an off switch
      from  718f7b1a84f printing: use correct error out in get_correct_cversion() when openat_pathref_fsp() fails

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e49a0b444ab5dfd5dc4a82fae2e5939cc9cfe5a4
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 15:50:53 2021 +1300

    ldb: remove some 'if PY3's in tests
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>
    
    Autobuild-User(master): David Mulder <dmulder at samba.org>
    Autobuild-Date(master): Mon Feb 22 15:50:55 UTC 2021 on sn-devel-184

commit bc7224fbc7902e68b104fb5938c8348a11647be5
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 17:35:59 2021 +1300

    pytest/segfault: fix the rpc.echo test
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>

commit f154fe8d95451e77da56d86c4b5895f2f942b936
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 17:35:32 2021 +1300

    pytest/segfaults: drop a useless line
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>

commit 9e19b148f6c9d0800b08fe221c7f88a5d3ecf52d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 22:19:31 2021 +1300

    selftest: preforkrestartdc doesn't need gdb-backtraces
    
    There are tests in this environment that kill processes with SEGV
    signals, which causes a backtrace that is entirely spurious from a
    debugging point of view.
    
    We can turn that off, saving processor time and moments of developer
    confusion.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>

commit 80faba100dbf12d706a63e1a27758aefefae7793
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 22:16:33 2021 +1300

    pytest:segfault: avoid gdb_backtrace on knownfail
    
    We know that test_net_replicate_init__3() segfaults. It is a knownfail
    and we don't need to see the gdb backtrace every time.
    
    This saves nearly two minutes on `make test TESTS=segfault`.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>

commit 5b7c2c3b1abbad5ae6550b99496e251061585c90
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Feb 11 17:39:18 2021 +1300

    selftest/gdb_backtrace: add an off switch
    
    Sometime you know a test is going to crash and produce a LOT of
    backtrace, and you already know what it will look like. For those
    times you can set
    
    PLEASE_NO_GDB_BACKTRACE=1
    
    and there will be no backtrace, which can save quite a bit of time and
    thousands of lines of log file. (In particular, backtraces of Python
    programs can take over a minute to complete).
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: David Mulder <dmulder at suse.com>

-----------------------------------------------------------------------

Summary of changes:
 lib/ldb/tests/python/api.py    | 60 ++++++++++++------------------------------
 lib/ldb/tests/python/index.py  |  1 -
 python/samba/tests/segfault.py | 14 ++++++++--
 selftest/gdb_backtrace         |  6 +++++
 selftest/target/Samba4.pm      |  5 ++++
 5 files changed, 40 insertions(+), 46 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/ldb/tests/python/api.py b/lib/ldb/tests/python/api.py
index 1d3d765e607..5198f3fbbb5 100755
--- a/lib/ldb/tests/python/api.py
+++ b/lib/ldb/tests/python/api.py
@@ -10,7 +10,6 @@ import time
 import ldb
 import shutil
 
-PY3 = sys.version_info > (3, 0)
 
 TDB_PREFIX = "tdb://"
 MDB_PREFIX = "mdb://"
@@ -150,12 +149,9 @@ class SimpleLdb(LdbBaseTest):
         except UnicodeDecodeError as e:
                 raise
         except TypeError as te:
-            if PY3:
-               p3errors = ["argument 2 must be str, not bytes",
-                           "Can't convert 'bytes' object to str implicitly"]
-               self.assertIn(str(te), p3errors)
-            else:
-               raise
+           p3errors = ["argument 2 must be str, not bytes",
+                       "Can't convert 'bytes' object to str implicitly"]
+           self.assertIn(str(te), p3errors)
 
     def test_search_attrs(self):
         l = ldb.Ldb(self.url(), flags=self.flags())
@@ -3031,24 +3027,14 @@ class LdbMsgTests(TestCase):
     def test_repr(self):
         self.msg.dn = ldb.Dn(ldb.Ldb(), "dc=foo29")
         self.msg["dc"] = b"foo"
-        if PY3:
-            self.assertIn(repr(self.msg), [
-                "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement([b'foo'])})",
-                "Message({'dc': MessageElement([b'foo']), 'dn': Dn('dc=foo29')})",
-            ])
-            self.assertIn(repr(self.msg.text), [
-                "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement([b'foo'])}).text",
-                "Message({'dc': MessageElement([b'foo']), 'dn': Dn('dc=foo29')}).text",
-            ])
-        else:
-            self.assertIn(repr(self.msg), [
-                "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement(['foo'])})",
-                "Message({'dc': MessageElement(['foo']), 'dn': Dn('dc=foo29')})",
-            ])
-            self.assertIn(repr(self.msg.text), [
-                "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement(['foo'])}).text",
-                "Message({'dc': MessageElement(['foo']), 'dn': Dn('dc=foo29')}).text",
-            ])
+        self.assertIn(repr(self.msg), [
+            "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement([b'foo'])})",
+            "Message({'dc': MessageElement([b'foo']), 'dn': Dn('dc=foo29')})",
+        ])
+        self.assertIn(repr(self.msg.text), [
+            "Message({'dn': Dn('dc=foo29'), 'dc': MessageElement([b'foo'])}).text",
+            "Message({'dc': MessageElement([b'foo']), 'dn': Dn('dc=foo29')}).text",
+        ])
 
     def test_len(self):
         self.assertEqual(0, len(self.msg))
@@ -3288,20 +3274,12 @@ class MessageElementTests(TestCase):
 
     def test_repr(self):
         x = ldb.MessageElement([b"foo"])
-        if PY3:
-            self.assertEqual("MessageElement([b'foo'])", repr(x))
-            self.assertEqual("MessageElement([b'foo']).text", repr(x.text))
-        else:
-            self.assertEqual("MessageElement(['foo'])", repr(x))
-            self.assertEqual("MessageElement(['foo']).text", repr(x.text))
+        self.assertEqual("MessageElement([b'foo'])", repr(x))
+        self.assertEqual("MessageElement([b'foo']).text", repr(x.text))
         x = ldb.MessageElement([b"foo", b"bla"])
         self.assertEqual(2, len(x))
-        if PY3:
-            self.assertEqual("MessageElement([b'foo',b'bla'])", repr(x))
-            self.assertEqual("MessageElement([b'foo',b'bla']).text", repr(x.text))
-        else:
-            self.assertEqual("MessageElement(['foo','bla'])", repr(x))
-            self.assertEqual("MessageElement(['foo','bla']).text", repr(x.text))
+        self.assertEqual("MessageElement([b'foo',b'bla'])", repr(x))
+        self.assertEqual("MessageElement([b'foo',b'bla']).text", repr(x.text))
 
     def test_get_item(self):
         x = ldb.MessageElement([b"foo", b"bar"])
@@ -3332,12 +3310,8 @@ class MessageElementTests(TestCase):
 
     def test_extended(self):
         el = ldb.MessageElement([b"456"], ldb.FLAG_MOD_ADD, "bla")
-        if PY3:
-            self.assertEqual("MessageElement([b'456'])", repr(el))
-            self.assertEqual("MessageElement([b'456']).text", repr(el.text))
-        else:
-            self.assertEqual("MessageElement(['456'])", repr(el))
-            self.assertEqual("MessageElement(['456']).text", repr(el.text))
+        self.assertEqual("MessageElement([b'456'])", repr(el))
+        self.assertEqual("MessageElement([b'456']).text", repr(el.text))
 
     def test_bad_text(self):
         el = ldb.MessageElement(b'\xba\xdd')
diff --git a/lib/ldb/tests/python/index.py b/lib/ldb/tests/python/index.py
index f957087f01c..c1da76d67e2 100755
--- a/lib/ldb/tests/python/index.py
+++ b/lib/ldb/tests/python/index.py
@@ -30,7 +30,6 @@ import sys
 import ldb
 import shutil
 
-PY3 = sys.version_info > (3, 0)
 
 TDB_PREFIX = "tdb://"
 MDB_PREFIX = "mdb://"
diff --git a/python/samba/tests/segfault.py b/python/samba/tests/segfault.py
index 07e2d46d56a..c6e17ed6ead 100644
--- a/python/samba/tests/segfault.py
+++ b/python/samba/tests/segfault.py
@@ -49,7 +49,6 @@ def segfault_detector(f):
             os._exit(0)
 
         pid2, status = os.waitpid(pid, 0)
-        signal = status & 255
         if os.WIFSIGNALED(status):
             signal = os.WTERMSIG(status)
             raise AssertionError("Failed with signal %d" % signal)
@@ -57,6 +56,16 @@ def segfault_detector(f):
     return wrapper
 
 
+def no_gdb_backtrace(f):
+    from os import environ
+    def w(*args, **kwargs):
+        environ['PLEASE_NO_GDB_BACKTRACE'] = '1'
+        f(*args, **kwargs)
+        del environ['PLEASE_NO_GDB_BACKTRACE']
+
+    return w
+
+
 class SegfaultTests(samba.tests.TestCase):
     def get_lp_et_al(self):
         server = os.environ["SERVER"]
@@ -78,6 +87,7 @@ class SegfaultTests(samba.tests.TestCase):
         net = Net(creds, lp, server=server)
         net.replicate_init(42, lp, None, misc.GUID())
 
+    @no_gdb_backtrace
     @segfault_detector
     def test_net_replicate_init__3(self):
         # third argument is also unchecked
@@ -155,7 +165,7 @@ class SegfaultTests(samba.tests.TestCase):
 
     @segfault_detector
     def test_rpcecho(self):
-        from dcerpc import echo
+        from samba.dcerpc import echo
         echo.rpcecho("")
 
     @segfault_detector
diff --git a/selftest/gdb_backtrace b/selftest/gdb_backtrace
index 4fe5f57353a..307a4d1e122 100755
--- a/selftest/gdb_backtrace
+++ b/selftest/gdb_backtrace
@@ -9,6 +9,12 @@ if [ -n "$VALGRIND" -o -n "$SMBD_VALGRIND" ]; then
 	exit 1
 fi
 
+if [ "x$PLEASE_NO_GDB_BACKTRACE" != "x" ]; then
+	echo "${BASENAME}: Not running debugger because PLEASE_NO_GDB_BACKTRACE is set"
+        exit 0
+fi
+
+
 # we want everything on stderr, so the program is not disturbed
 exec 1>&2
 
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index 1ae9fb9d996..dff9d042be9 100755
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -2743,6 +2743,11 @@ sub setup_preforkrestartdc
 		return undef;
 	}
 
+        # We treat processes in this environment cruelly, sometimes
+        # sending them SIGSEGV signals. We don't need gdb_backtrace
+        # dissecting these fake crashes in precise detail.
+        $env->{PLEASE_NO_GDB_BACKTRACE} = '1';
+
 	$env->{NSS_WRAPPER_MODULE_SO_PATH} = undef;
 	$env->{NSS_WRAPPER_MODULE_FN_PREFIX} = undef;
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list