pymessaging: Add irpc_remove_name
authorAndrew Bartlett <abartlet@samba.org>
Tue, 14 Mar 2017 00:39:00 +0000 (13:39 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 28 Mar 2017 07:23:11 +0000 (09:23 +0200)
This allows tests to be indirectly added for server_id_db_lookup()
and server_id_db_prune_name()

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12705

python/samba/tests/messaging.py
source4/lib/messaging/pymessaging.c

index 1c5dfe505b6abb318a191c24cb8232dbd665b4bc..3eeab529527fc9b84cfbdcfe9a9c3fd081da5f44 100644 (file)
@@ -22,6 +22,7 @@ import samba
 from samba.messaging import Messaging
 from samba.tests import TestCase
 from samba.dcerpc.server_id import server_id
+from samba.ndr import ndr_print
 
 class MessagingTests(TestCase):
 
@@ -52,6 +53,13 @@ class MessagingTests(TestCase):
     def test_add_name(self):
         x = self.get_context()
         x.irpc_add_name("samba.messaging test")
+        name_list = x.irpc_servers_byname("samba.messaging test")
+        self.assertEqual(len(name_list), 1)
+        self.assertEqual(ndr_print(x.server_id),
+                         ndr_print(name_list[0]))
+        x.irpc_remove_name("samba.messaging test")
+        self.assertEqual([],
+                         x.irpc_servers_byname("samba.messaging test"))
 
     def test_ping_speed(self):
         server_ctx = self.get_context((0, 1))
index 5c20c186fafa426db08574e01b705e0050b6f945..5b5408caddb435bf9502171a747c1db1df752621 100644 (file)
@@ -260,6 +260,20 @@ static PyObject *py_irpc_add_name(PyObject *self, PyObject *args, PyObject *kwar
        Py_RETURN_NONE;
 }
 
+static PyObject *py_irpc_remove_name(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+       imessaging_Object *iface = (imessaging_Object *)self;
+       char *server_name;
+
+       if (!PyArg_ParseTuple(args, "s", &server_name)) {
+               return NULL;
+       }
+
+       irpc_remove_name(iface->msg_ctx, server_name);
+
+       Py_RETURN_NONE;
+}
+
 static PyObject *py_irpc_servers_byname(PyObject *self, PyObject *args, PyObject *kwargs)
 {
        imessaging_Object *iface = (imessaging_Object *)self;
@@ -364,6 +378,10 @@ static PyMethodDef py_imessaging_methods[] = {
                "S.irpc_add_name(name) -> None\n"
                "Add this context to the list of server_id values that "
                "are registered for a particular name" },
+       { "irpc_remove_name", (PyCFunction)py_irpc_remove_name, METH_VARARGS,
+               "S.irpc_remove_name(name) -> None\n"
+               "Remove this context from the list of server_id values that "
+               "are registered for a particular name" },
        { "irpc_servers_byname", (PyCFunction)py_irpc_servers_byname, METH_VARARGS,
                "S.irpc_servers_byname(name) -> list\nGet list of server_id values that are registered for a particular name" },
        { "irpc_all_servers", (PyCFunction)py_irpc_all_servers, METH_NOARGS,