s3-libsmb: Add a simple test for python bindings
authorVolker Lendecke <vl@samba.org>
Wed, 15 Aug 2012 12:08:45 +0000 (14:08 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 16 Aug 2012 20:49:06 +0000 (22:49 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Thu Aug 16 22:49:06 CEST 2012 on sn-devel-104

source4/scripting/python/samba/tests/libsmb_samba_internal.py [new file with mode: 0644]
source4/selftest/tests.py

diff --git a/source4/scripting/python/samba/tests/libsmb_samba_internal.py b/source4/scripting/python/samba/tests/libsmb_samba_internal.py
new file mode 100644 (file)
index 0000000..fe9f197
--- /dev/null
@@ -0,0 +1,78 @@
+# Unix SMB/CIFS implementation.
+# Copyright Volker Lendecke <vl@samba.org> 2012
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+"""Tests for samba.samba3.libsmb_samba_internal."""
+
+from samba.samba3 import libsmb_samba_internal
+from samba.dcerpc import security
+from samba.samba3 import param as s3param
+from samba import credentials
+import samba.tests
+import threading
+import sys
+import os
+
+class LibsmbTestCase(samba.tests.TestCase):
+
+    class OpenClose(threading.Thread):
+
+        def __init__(self, conn, filename, num_ops):
+            threading.Thread.__init__(self)
+            self.conn = conn
+            self.filename = filename
+            self.num_ops = num_ops
+            self.exc = False
+
+        def run(self):
+            c = self.conn
+            try:
+                for i in range(self.num_ops):
+                    f = c.create(self.filename, CreateDisposition=3,
+                                 DesiredAccess=security.SEC_STD_DELETE)
+                    c.delete_on_close(f, True)
+                    c.close(f)
+            except Exception:
+                self.exc = sys.exc_info()
+
+    def test_OpenClose(self):
+
+        lp = s3param.get_context()
+        lp.load(os.getenv("SMB_CONF_PATH"))
+
+        creds = credentials.Credentials()
+        creds.set_username(os.getenv("USERNAME"))
+        creds.set_password(os.getenv("PASSWORD"))
+
+        c = libsmb_samba_internal.Conn(os.getenv("SERVER_IP"), "tmp", creds)
+
+        mythreads = []
+
+        for i in range(3):
+            t = LibsmbTestCase.OpenClose(c, "test" + str(i), 10)
+            mythreads.append(t)
+
+        for t in mythreads:
+            t.start()
+
+        for t in mythreads:
+            t.join()
+            if t.exc:
+                raise t.exc[0](t.exc[1])
+
+if __name__ == "__main__":
+    import unittest
+    unittest.main()
index 12c84a3dbd9c16a7e4bd2dab25945c4b66667fa0..76ef681fec734db769a4bfda2795b4f03943aeb0 100755 (executable)
@@ -297,6 +297,8 @@ for f in sorted(os.listdir(os.path.join(samba4srcdir, "../pidl/tests"))):
 # DNS tests
 planpythontestsuite("dc", "samba.tests.dns")
 
+planpythontestsuite("s3dc", "samba.tests.libsmb_samba_internal");
+
 # Blackbox Tests:
 # tests that interact directly with the command-line tools rather than using
 # the API. These mainly test that the various command-line options of commands