else on a slow node we miss the event

Signed-off-by: Angus Salkeld <[email protected]>
---
 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


_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to