From d2700282ec4683710703c002552113aea6aee722 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Wed, 1 Jul 2015 15:14:19 +0200 Subject: [PATCH] s4-torture: add test for ClusterControl to clusapi testsuite. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Guenther Signed-off-by: Günther Deschner Reviewed-by: Jose A. Rivera --- source4/torture/rpc/witness.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/source4/torture/rpc/witness.c b/source4/torture/rpc/witness.c index f040e0b9ea4..150ba7680b0 100644 --- a/source4/torture/rpc/witness.c +++ b/source4/torture/rpc/witness.c @@ -587,7 +587,9 @@ static bool test_GetResourceState_int(struct torture_context *tctx, static bool toggle_cluster_resource_state(struct torture_context *tctx, struct dcerpc_pipe *p, - const char *resource_name) + const char *resource_name, + enum clusapi_ClusterResourceState *old_state, + enum clusapi_ClusterResourceState *new_state) { struct policy_handle hResource; enum clusapi_ClusterResourceState State; @@ -599,6 +601,10 @@ static bool toggle_cluster_resource_state(struct torture_context *tctx, test_GetResourceState_int(tctx, p, &hResource, &State), "failed to query resource state"); + if (old_state) { + *old_state = State; + } + switch (State) { case ClusterResourceOffline: if (!test_OnlineResource_int(tctx, p, &hResource)) { @@ -619,6 +625,14 @@ static bool toggle_cluster_resource_state(struct torture_context *tctx, break; } + torture_assert(tctx, + test_GetResourceState_int(tctx, p, &hResource, &State), + "failed to query resource state"); + + if (new_state) { + *new_state = State; + } + test_CloseResource_int(tctx, p, &hResource); return true; @@ -645,6 +659,7 @@ static bool test_witness_AsyncNotify(struct torture_context *tctx, struct witness_interfaceInfo interface = state->list->interfaces[i]; struct witness_Register reg; struct tevent_req *req; + enum clusapi_ClusterResourceState old_state, new_state; if (!check_valid_interface(tctx, &interface)) { continue; @@ -675,8 +690,9 @@ static bool test_witness_AsyncNotify(struct torture_context *tctx, torture_assert(tctx, req, "failed to create request"); torture_assert(tctx, - toggle_cluster_resource_state(tctx, state->clusapi.p, state->net_name), + toggle_cluster_resource_state(tctx, state->clusapi.p, state->net_name, &old_state, &new_state), "failed to toggle cluster resource state"); + torture_assert(tctx, old_state != new_state, "failed to change cluster resource state"); torture_assert(tctx, tevent_req_poll(req, tctx->ev), @@ -691,6 +707,11 @@ static bool test_witness_AsyncNotify(struct torture_context *tctx, "Failed to unregister"); ZERO_STRUCT(state->context_handle); + + torture_assert(tctx, + toggle_cluster_resource_state(tctx, state->clusapi.p, state->net_name, &old_state, &new_state), + "failed to toggle cluster resource state"); + torture_assert(tctx, old_state != new_state, "failed to change cluster resource state"); } return true; -- 2.34.1