[Openais] [PATCH 3/4] CTS: make record events blocking
Angus Salkeld
asalkeld at redhat.com
Thu Apr 15 01:53:42 PDT 2010
else on a slow node we miss the event
Signed-off-by: Angus Salkeld <asalkeld at redhat.com>
---
cts/agents/cpg_test_agent.c | 59 ++++++++++++++++++++++++------------------
cts/corosync.py | 10 +++---
cts/corotests.py | 6 ++++
3 files changed, 45 insertions(+), 30 deletions(-)
diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c
index 1f5babc..139b74b 100644
--- a/cts/agents/cpg_test_agent.c
+++ b/cts/agents/cpg_test_agent.c
@@ -185,26 +185,29 @@ static void config_change_callback (
/* group_name,ip,pid,join|leave */
- if (record_config_events_g == 0) {
- return;
- }
for (i = 0; i < left_list_entries; i++) {
- syslog (LOG_DEBUG, "%s() inserting leave event into list", __func__);
-
- log_pt = malloc (sizeof(log_entry_t));
- list_init (&log_pt->list);
- snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,left",
- groupName->value, left_list[i].nodeid,left_list[i].pid);
- list_add_tail(&log_pt->list, &config_chg_log_head);
+ syslog (LOG_INFO, "%s(%d) %d:%s left", __func__, record_config_events_g,
+ left_list[i].nodeid, groupName->value);
+
+ if (record_config_events_g > 0) {
+ log_pt = malloc (sizeof(log_entry_t));
+ list_init (&log_pt->list);
+ snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,left",
+ groupName->value, left_list[i].nodeid,left_list[i].pid);
+ list_add_tail(&log_pt->list, &config_chg_log_head);
+ }
}
for (i = 0; i < joined_list_entries; i++) {
- syslog (LOG_DEBUG, "%s() inserting join event into list", __func__);
-
- log_pt = malloc (sizeof(log_entry_t));
- list_init (&log_pt->list);
- snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,join",
- groupName->value, joined_list[i].nodeid,joined_list[i].pid);
- list_add_tail (&log_pt->list, &config_chg_log_head);
+ syslog (LOG_INFO, "%s(%d) %d:%s joined", __func__, record_config_events_g,
+ left_list[i].nodeid, groupName->value);
+
+ if (record_config_events_g > 0) {
+ log_pt = malloc (sizeof(log_entry_t));
+ list_init (&log_pt->list);
+ snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,join",
+ groupName->value, joined_list[i].nodeid,joined_list[i].pid);
+ list_add_tail (&log_pt->list, &config_chg_log_head);
+ }
}
}
@@ -219,10 +222,15 @@ static void record_messages (void)
syslog (LOG_DEBUG,"%s() record:%d", __func__, record_messages_g);
}
-static void record_config_events (void)
+static void record_config_events (int sock)
{
+ char response[100];
+
record_config_events_g = 1;
- syslog (LOG_DEBUG,"%s() record:%d", __func__, record_config_events_g);
+ syslog (LOG_INFO, "%s() record:%d", __func__, record_config_events_g);
+
+ snprintf (response, 100, "%s", OK_STR);
+ send (sock, response, strlen (response), 0);
}
static void read_config_event (int sock)
@@ -233,12 +241,12 @@ static void read_config_event (int sock)
if (list != &config_chg_log_head) {
entry = list_entry (list, log_entry_t, list);
- send (sock, entry->log, strlen (entry->log) + 1, 0);
+ send (sock, entry->log, strlen (entry->log), 0);
list_del (&entry->list);
free (entry);
} else {
syslog (LOG_DEBUG,"%s() no events in list", __func__);
- send (sock, empty, strlen (empty) + 1, 0);
+ send (sock, empty, strlen (empty), 0);
}
}
@@ -463,7 +471,7 @@ static void context_test (int sock)
else {
snprintf (response, 100, "%s", OK_STR);
}
- send (sock, response, strlen (response) + 1, 0);
+ send (sock, response, strlen (response), 0);
}
static void msg_blaster_zcb (int sock, char* num_to_send_str)
@@ -531,6 +539,7 @@ static void do_command (int sock, char* func, char*args[], int num_args)
"Could not join process group, error %d\n", result);
exit (1);
}
+ syslog (LOG_INFO, "called cpg_join()!");
} else if (strcmp ("cpg_leave",func) == 0) {
@@ -568,7 +577,7 @@ static void do_command (int sock, char* func, char*args[], int num_args)
cpg_local_get (cpg_handle, &local_nodeid);
snprintf (response, 100, "%u",local_nodeid);
- send (sock, response, strlen (response) + 1, 0);
+ send (sock, response, strlen (response), 0);
} else if (strcmp ("cpg_finalize", func) == 0) {
cpg_finalize (cpg_handle);
@@ -576,7 +585,7 @@ static void do_command (int sock, char* func, char*args[], int num_args)
cpg_fd = -1;
} else if (strcmp ("record_config_events", func) == 0) {
- record_config_events ();
+ record_config_events (sock);
} else if (strcmp ("record_messages", func) == 0) {
record_messages ();
} else if (strcmp ("read_config_event", func) == 0) {
@@ -591,7 +600,7 @@ static void do_command (int sock, char* func, char*args[], int num_args)
context_test (sock);
} else if (strcmp ("are_you_ok_dude", func) == 0) {
snprintf (response, 100, "%s", OK_STR);
- send (sock, response, strlen (response) + 1, 0);
+ send (sock, response, strlen (response), 0);
} else {
syslog (LOG_ERR,"%s RPC:%s not supported!", __func__, func);
}
diff --git a/cts/corosync.py b/cts/corosync.py
index 3ba1450..bb818d6 100644
--- a/cts/corosync.py
+++ b/cts/corosync.py
@@ -423,11 +423,10 @@ class TestAgent(object):
def stop(self):
'''Tear down (undo) the given ScenarioComponent'''
- if self.status():
- self.env.debug('test agent: stopping %s on node %s' % (self.binary, self.node))
- self.sock.close ()
- self.rsh(self.node, "killall " + self.binary + " 2>/dev/null")
- self.started = False
+ self.env.debug('test agent: stopping %s on node %s' % (self.binary, self.node))
+ self.sock.close ()
+ self.rsh(self.node, "killall " + self.binary + " 2>/dev/null")
+ self.started = False
def send (self, args):
if not self.started:
@@ -547,6 +546,7 @@ class CpgTestAgent(TestAgent):
self.send (["record_config_events", "truncate"])
else:
self.send (["record_config_events", "append"])
+ return self.read ()
def read_config_event(self):
self.send (["read_config_event"])
diff --git a/cts/corotests.py b/cts/corotests.py
index c1680e5..a91e0bd 100644
--- a/cts/corotests.py
+++ b/cts/corotests.py
@@ -304,6 +304,12 @@ class CpgCfgChgOnNodeIsolate(CpgConfigChangeBase):
def __init__(self, cm):
CpgConfigChangeBase.__init__(self,cm)
self.name="CpgCfgChgOnNodeIsolate"
+
+ def config_valid(self, config):
+ if config.has_key('totem/rrp_mode'):
+ return False
+ else:
+ return True
def failure_action(self):
self.CM.log("isolating node " + self.wobbly)
--
1.6.6.1
More information about the Openais
mailing list