The patch removes dependencies between CLM tests. CLM tests can be run more
times now.
Duplicated CLM tests are removed from clmtest.
---
src/clm/apitest/clmtest.c | 15 ++++
src/clm/apitest/tet_saClmClusterTrack.c | 130 +++++++++++++++++++-------------
2 files changed, 94 insertions(+), 51 deletions(-)
diff --git a/src/clm/apitest/clmtest.c b/src/clm/apitest/clmtest.c
index 3e8d95e..683bfe4 100644
--- a/src/clm/apitest/clmtest.c
+++ b/src/clm/apitest/clmtest.c
@@ -38,6 +38,13 @@ SaNameT node_name;
void clm_init(void)
{
FILE *fp;
+ // Command list to execute before tests start
+ char *command[] = {
+ // Unlock PL-3
+ "immadm -o 1 safNode=PL-3,safCluster=myClmCluster 2> /dev/null"
+ };
+ int command_list_size = 1;
+ int i;
fp = fopen("/etc/opensaf/node_name", "r");
if (fp == NULL) {
@@ -49,6 +56,14 @@ void clm_init(void)
if (cnt == 1)
node_name.length = strlen((char *)node_name.value);
fclose(fp);
+
+ // Execute commands
+ for(i=0; i<command_list_size; ++i) {
+ /* Return code is not important, and will be ignored.
+ * To avoid warn_unused_result warning on some compilers,
+ * system is executed within empty 'if' statement */
+ if(system(command[i])) {}
+ }
}
const SaVersionT refVersion = CLM_HIGHEST_SUPPORTED_VERSION;
diff --git a/src/clm/apitest/tet_saClmClusterTrack.c
b/src/clm/apitest/tet_saClmClusterTrack.c
index 00a52b4..82d7927 100644
--- a/src/clm/apitest/tet_saClmClusterTrack.c
+++ b/src/clm/apitest/tet_saClmClusterTrack.c
@@ -25,39 +25,58 @@ SaUint8T trackFlags;
SaClmNodeIdT nodeId;
SaInvocationT invocation;
SaInvocationT lock_inv;
+static const char *s_node_name = "safNode=PL-3,safCluster=myClmCluster";
-static void *admin_lock(void *dummy)
-{
- int rc;
+static int clm_node_lock(const char *nodeName, int ignoreOutput) {
char command[256];
- char name[] = "safNode=PL-3,safCluster=myClmCluster";
- sprintf(command, "immadm -o 2 %s", name);
- assert((rc = system(command)) != -1);
+ if (ignoreOutput) {
+ sprintf(command, "immadm -o 2 %s 2> /dev/null", nodeName);
+ } else {
+ sprintf(command, "immadm -o 2 %s", nodeName);
+ }
+ return system(command);
+}
+
+static int clm_node_unlock(const char *nodeName, int ignoreOutput) {
+ char command[256];
+
+ if (ignoreOutput) {
+ sprintf(command, "immadm -o 1 %s 2> /dev/null", nodeName);
+ } else {
+ sprintf(command, "immadm -o 1 %s", nodeName);
+ }
+ return system(command);
+}
+
+static int clm_node_shutdown(const char *nodeName, int ignoreOutput) {
+ char command[256];
+
+ if (ignoreOutput) {
+ sprintf(command, "immadm -o 3 %s 2> /dev/null", nodeName);
+ } else {
+ sprintf(command, "immadm -o 3 %s", nodeName);
+ }
+ return system(command);
+}
+
+static void *admin_lock(void *dummy)
+{
+ assert(clm_node_lock(s_node_name, 0) != -1);
/*test_validate(WEXITSTATUS(rc), 0);*/
return NULL;
}
static void *admin_unlock(void *dummy)
{
- int rc;
- char command[256];
- char name[] = "safNode=PL-3,safCluster=myClmCluster";
-
- sprintf(command, "immadm -o 1 %s", name);
- assert((rc = system(command)) != -1);
+ assert(clm_node_unlock(s_node_name, 0) != -1);
/*test_validate(WEXITSTATUS(rc), 0);*/
return NULL;
}
static void *admin_shutdown(void *dummy)
{
- int rc;
- char command[256];
- char name[] = "safNode=PL-3,safCluster=myClmCluster";
-
- sprintf(command, "immadm -o 3 %s", name);
- assert((rc = system(command)) != -1);
+ assert(clm_node_shutdown(s_node_name, 0) != -1);
/*test_validate(WEXITSTATUS(rc), 0);*/
return NULL;
}
@@ -68,9 +87,15 @@ static void saClmadmin_lock1(void)
char command[256];
char name[] = "safNode=PL-3,safCluster=myClmCluster";
+ // Lock node
+ clm_node_lock(name, 1);
+
sprintf(command, "immadm -o 2 %s", name);
assert((rc = system(command)) != -1);
test_validate(WEXITSTATUS(rc), 1);
+
+ // Reset CLM state
+ clm_node_unlock(name, 1);
}
static void saClmadmin_unlock1(void)
@@ -90,9 +115,15 @@ static void saClmadmin_shutdown1(void)
char command[256];
char name[] = "safNode=PL-3,safCluster=myClmCluster";
+ // Shutdown node
+ clm_node_shutdown(name, 1);
+
sprintf(command, "immadm -o 3 %s", name);
assert((rc = system(command)) != -1);
test_validate(WEXITSTATUS(rc), 1);
+
+ // Reset CLM state
+ clm_node_unlock(name, 1);
}
static void *plm_admin_trylock(void *dummy)
@@ -610,6 +641,9 @@ void saClmClusterTrack_21(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
+
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
}
void saClmClusterTrack_22(void)
@@ -618,6 +652,9 @@ void saClmClusterTrack_22(void)
int ret;
pthread_t thread1;
+ // Lock CLM
+ clm_node_lock(s_node_name, 1);
+
trackFlags = SA_TRACK_CHANGES_ONLY;
safassert(saClmInitialize_4(&clmHandle, &clmCallback4, &clmVersion_4),
@@ -678,11 +715,12 @@ void saClmClusterTrack_23(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
-}
-void saClmClusterTrack_24(void) { saClmClusterTrack_22(); }
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
+}
-void saClmClusterTrack_25(void)
+void saClmClusterTrack_24(void)
{
struct pollfd fds[1];
int ret;
@@ -729,11 +767,12 @@ void saClmClusterTrack_25(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
-}
-void saClmClusterTrack_26(void) { saClmClusterTrack_22(); }
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
+}
-void saClmClusterTrack_27(void)
+void saClmClusterTrack_25(void)
{
struct pollfd fds[1];
int ret;
@@ -781,11 +820,12 @@ void saClmClusterTrack_27(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
-}
-void saClmClusterTrack_29(void) { saClmClusterTrack_22(); }
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
+}
-void saClmClusterTrack_30(void)
+void saClmClusterTrack_27(void)
{
struct pollfd fds[1];
int ret;
@@ -833,9 +873,11 @@ void saClmClusterTrack_30(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
+
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
}
-void saClmClusterTrack_31(void) { saClmClusterTrack_22(); }
-void saClmClusterTrack_32(void)
+void saClmClusterTrack_28(void)
{
struct pollfd fds[1];
int ret;
@@ -883,12 +925,13 @@ void saClmClusterTrack_32(void)
safassert(saClmClusterTrackStop(clmHandle), SA_AIS_OK);
safassert(saClmFinalize(clmHandle), SA_AIS_OK);
test_validate(rc, SA_AIS_OK);
-}
-void saClmClusterTrack_34(void) { saClmClusterTrack_22(); }
+ // Reset CLM state
+ clm_node_unlock(s_node_name, 1);
+}
/*plm admin trylock*/
-void saClmClusterTrack_36(void)
+void saClmClusterTrack_31(void)
{
struct pollfd fds[1];
int ret;
@@ -1031,39 +1074,24 @@ __attribute__((constructor)) static void
saClmClusterTrack_constructor(void)
"saClmClusterTrack_4 with SA_TRACK_CHANGES track flags - admin
lock");
test_case_add(
7, saClmClusterTrack_24,
- "saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY track flags - admin
unlock");
- test_case_add(
- 7, saClmClusterTrack_25,
"saClmClusterTrack_4 with SA_TRACK_CHANGES and START STEP track
flags - admin lock");
test_case_add(
- 7, saClmClusterTrack_26,
- "saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY track flags - admin
unlock");
- test_case_add(
- 7, saClmClusterTrack_27,
+ 7, saClmClusterTrack_25,
"saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY and START STEP
track flags -admin lock");
test_case_add(7, saClmadmin_lock1,
"admin lock of the already lock node");
test_case_add(
- 7, saClmClusterTrack_29,
- "saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY track flags - admin
unlock");
- test_case_add(
- 7, saClmClusterTrack_30,
+ 7, saClmClusterTrack_27,
"saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY and START STEP
track flags - adminshutdown ");
test_case_add(
- 7, saClmClusterTrack_31,
- "saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY track flags - admin
unlock ");
- test_case_add(
- 7, saClmClusterTrack_32,
+ 7, saClmClusterTrack_28,
"saClmClusterTrack_4 with SA_TRACK_CHANGES track flags - admin
shutdown");
test_case_add(7, saClmadmin_shutdown1,
"admin shutdown of already shut node");
- test_case_add(
- 7, saClmClusterTrack_34,
- "saClmClusterTrack_4 with SA_TRACK_CHANGES_ONLY track flags - admin
unlock");
test_case_add(7, saClmadmin_unlock1, "unlock already unlocked node");
/* Uncomment these two test cases if PLM is enabled */
test_case_add(
- 7, saClmClusterTrack_36,
+ 7, saClmClusterTrack_31,
"saClmClusterTrack_4 with START STEP,VALIDATE STEP and changes -
PLM admin trylock");
test_case_add(7, saClmPlm_unlock, "PLM admin Unlock");
}
--
1.9.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel