summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2015-03-06 13:50:45 +0100
committerGünther Deschner <gd@samba.org>2015-03-13 23:58:08 +0100
commit744f264860c84bd2fa4e65c584356c500998fe81 (patch)
tree5236121adb8b33ebe1325418a914960c27a20179 /source4
parent91d60853e9619df5ec438ae197d33cfabb03807b (diff)
downloadsamba-744f264860c84bd2fa4e65c584356c500998fe81.tar.gz
s4-torture: add tests for clusapi_OpenGroup and clusapi_CloseGroup.
Guenther Signed-off-by: Günther Deschner <gd@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/torture/rpc/clusapi.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/source4/torture/rpc/clusapi.c b/source4/torture/rpc/clusapi.c
index b5c6706ecf8..666967adfb8 100644
--- a/source4/torture/rpc/clusapi.c
+++ b/source4/torture/rpc/clusapi.c
@@ -966,6 +966,80 @@ static bool test_EvictNode(struct torture_context *tctx,
return ret;
}
+static bool test_OpenGroup_int(struct torture_context *tctx,
+ struct dcerpc_pipe *p,
+ struct policy_handle *hGroup)
+{
+ struct dcerpc_binding_handle *b = p->binding_handle;
+ struct clusapi_OpenGroup r;
+ const char *lpszGroupName = "Cluster Group";
+ WERROR Status;
+ WERROR rpc_status;
+
+ r.in.lpszGroupName = lpszGroupName;
+ r.out.rpc_status = &rpc_status;
+ r.out.Status = &Status;
+ r.out.hGroup= hGroup;
+
+ torture_assert_ntstatus_ok(tctx,
+ dcerpc_clusapi_OpenGroup_r(b, tctx, &r),
+ "OpenGroup failed");
+ torture_assert_werr_ok(tctx,
+ *r.out.Status,
+ "OpenGroup failed");
+
+ return true;
+}
+
+static bool test_CloseGroup_int(struct torture_context *tctx,
+ struct dcerpc_pipe *p,
+ struct policy_handle *Group)
+{
+ struct dcerpc_binding_handle *b = p->binding_handle;
+ struct clusapi_CloseGroup r;
+
+ r.in.Group = Group;
+ r.out.Group = Group;
+
+ torture_assert_ntstatus_ok(tctx,
+ dcerpc_clusapi_CloseGroup_r(b, tctx, &r),
+ "CloseGroup failed");
+ torture_assert_werr_ok(tctx,
+ r.out.result,
+ "CloseGroup failed");
+ torture_assert(tctx,
+ ndr_policy_handle_empty(Group),
+ "policy_handle non empty after CloseGroup");
+
+ return true;
+}
+
+static bool test_OpenGroup(struct torture_context *tctx,
+ struct dcerpc_pipe *p)
+{
+ struct policy_handle hGroup;
+
+ if (!test_OpenGroup_int(tctx, p, &hGroup)) {
+ return false;
+ }
+
+ test_CloseGroup_int(tctx, p, &hGroup);
+
+ return true;
+}
+
+static bool test_CloseGroup(struct torture_context *tctx,
+ struct dcerpc_pipe *p)
+{
+ struct policy_handle hGroup;
+
+ if (!test_OpenGroup_int(tctx, p, &hGroup)) {
+ return false;
+ }
+
+ return test_CloseGroup_int(tctx, p, &hGroup);
+}
+
struct torture_suite *torture_rpc_clusapi(TALLOC_CTX *mem_ctx)
{
struct torture_rpc_tcase *tcase;
@@ -1039,5 +1113,14 @@ struct torture_suite *torture_rpc_clusapi(TALLOC_CTX *mem_ctx)
test_EvictNode);
test->dangerous = true;
+ tcase = torture_suite_add_rpc_iface_tcase(suite, "group",
+ &ndr_table_clusapi);
+
+ torture_rpc_tcase_add_test(tcase, "OpenGroup",
+ test_OpenGroup);
+ torture_rpc_tcase_add_test(tcase, "CloseGroup",
+ test_CloseGroup);
+
+
return suite;
}