good for merge On Thu, 2010-04-15 at 18:53 +1000, Angus Salkeld wrote: > Signed-off-by: Angus Salkeld <[email protected]> > --- > cts/agents/confdb_test_agent.c | 3 ++ > cts/agents/cpg_test_agent.c | 6 ++- > cts/agents/votequorum_test_agent.c | 8 ++-- > cts/corosync.py | 66 ++++++++++++++++++++--------------- > 4 files changed, 49 insertions(+), 34 deletions(-) > > diff --git a/cts/agents/confdb_test_agent.c b/cts/agents/confdb_test_agent.c > index 10b742e..f90b1d0 100644 > --- a/cts/agents/confdb_test_agent.c > +++ b/cts/agents/confdb_test_agent.c > @@ -583,6 +583,9 @@ static void do_command (int sock, char* func, > char*args[], int num_args) > object_find_test (sock); > } else if (strcmp ("notification_test", func) == 0) { > notification_test (sock); > + } else if (strcmp ("are_you_ok_dude", func) == 0) { > + snprintf (response, 100, "%s", OK_STR); > + send (sock, response, strlen (response) + 1, 0); > } else { > syslog (LOG_ERR,"%s RPC:%s not supported!", __func__, func); > snprintf (response, 100, "%s", NOT_SUPPORTED_STR); > diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c > index 8c018b5..d7645c2 100644 > --- a/cts/agents/cpg_test_agent.c > +++ b/cts/agents/cpg_test_agent.c > @@ -487,6 +487,7 @@ static int cpg_dispatch_wrapper_fn (hdb_handle_t handle, > static void do_command (int sock, char* func, char*args[], int num_args) > { > int result; > + char response[100]; > struct cpg_name group_name; > > if (parse_debug) > @@ -547,7 +548,6 @@ static void do_command (int sock, char* func, > char*args[], int num_args) > > } else if (strcmp ("cpg_local_get", func) == 0) { > unsigned int local_nodeid; > - char response[100]; > > cpg_local_get (cpg_handle, &local_nodeid); > snprintf (response, 100, "%u",local_nodeid); > @@ -582,7 +582,9 @@ static void do_command (int sock, char* func, > char*args[], int num_args) > } else if (strcmp ("msg_blaster",func) == 0) { > > msg_blaster (sock, args[0]); > - > + } else if (strcmp ("are_you_ok_dude", func) == 0) { > + snprintf (response, 100, "%s", OK_STR); > + send (sock, response, strlen (response) + 1, 0); > } else { > syslog (LOG_ERR,"%s RPC:%s not supported!", __func__, func); > } > diff --git a/cts/agents/votequorum_test_agent.c > b/cts/agents/votequorum_test_agent.c > index 52512dc..23b90d3 100644 > --- a/cts/agents/votequorum_test_agent.c > +++ b/cts/agents/votequorum_test_agent.c > @@ -163,17 +163,14 @@ static void lib_init (int sock) > int ret; > char response[100]; > > + snprintf (response, 100, "%s", OK_STR); > ret = q_lib_init (); > > if (ret != CS_OK) { > snprintf (response, 100, "%s", FAIL_STR); > syslog (LOG_ERR, "q_lib_init FAILED: %d\n", ret); > - goto send_response; > } > > - snprintf (response, 100, "%s", OK_STR); > - > -send_response: > send (sock, response, strlen (response), 0); > } > > @@ -285,6 +282,9 @@ static void do_command (int sock, char* func, > char*args[], int num_args) > getquorate (sock); > } else if (strcmp ("init", func) == 0) { > lib_init (sock); > + } else if (strcmp ("are_you_ok_dude", func) == 0) { > + snprintf (response, 100, "%s", OK_STR); > + send (sock, response, strlen (response) + 1, 0); > } else { > syslog (LOG_ERR,"%s RPC:%s not supported!", __func__, func); > snprintf (response, 100, "%s", NOT_SUPPORTED_STR); > diff --git a/cts/corosync.py b/cts/corosync.py > index 6fa7d6a..b18cf6a 100644 > --- a/cts/corosync.py > +++ b/cts/corosync.py > @@ -220,8 +220,15 @@ class corosync_flatiron(ClusterManager): > self.confdb_agent[node].restart() > if self.sam_agent.has_key(node): > self.sam_agent[node].restart() > - if self.votequorum_agent.has_key(node): > - self.votequorum_agent[node].restart() > + > + # votequorum agent started as needed. > + if self.applied_config.has_key('quorum/provider'): > + if self.votequorum_agent.has_key(node): > + self.votequorum_agent[node].restart() > + else: > + self.votequorum_agent[node] = VoteQuorumTestAgent(node, > self.Env) > + self.votequorum_agent[node].start() > + > return ret > > def StopaCM(self, node): > @@ -339,8 +346,10 @@ class TestAgentComponent(ScenarioComponent): > self.CM.confdb_agent[node].start() > self.CM.sam_agent[node] = SamTestAgent(node, CM.Env) > self.CM.sam_agent[node].start() > - self.CM.votequorum_agent[node] = VoteQuorumTestAgent(node, > CM.Env) > - self.CM.votequorum_agent[node].start() > + # votequorum agent started as needed. > + if CM.applied_config.has_key('quorum/provider'): > + self.CM.votequorum_agent[node] = VoteQuorumTestAgent(node, > CM.Env) > + self.CM.votequorum_agent[node].start() > return 1 > > def TearDown(self, CM): > @@ -350,7 +359,8 @@ class TestAgentComponent(ScenarioComponent): > self.CM.cpg_agent[node].stop() > self.CM.confdb_agent[node].stop() > self.CM.sam_agent[node].stop() > - self.CM.votequorum_agent[node].stop() > + if self.CM.votequorum_agent.has_key(node): > + self.CM.votequorum_agent[node].stop() > > ################################################################### > class TestAgent(object): > @@ -374,7 +384,7 @@ class TestAgent(object): > > def clean_start(self): > if self.used or not self.status(): > - self.env.debug('test agent: clean_start (' + self.node + ')') > + self.env.debug('test agent: cleaning %s on node %s' % > (self.binary, self.node)) > self.stop() > self.start() > > @@ -383,15 +393,17 @@ class TestAgent(object): > return False > > try: > - self.send (["cpg_local_get"]) > - self.nodeid = self.read () > + self.send (["are_you_ok_dude"]) > + self.read () > + self.started = True > return True > except RuntimeError, msg: > + self.started = False > return False > > def start(self): > '''Set up the given ScenarioComponent''' > - self.env.debug('test agent: start (' + self.node + ')') > + self.env.debug('test agent: starting %s on node %s' % (self.binary, > self.node)) > self.sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) > ip = socket.gethostbyname(self.node) > self.rsh(self.node, self.binary, blocking=0) > @@ -404,17 +416,18 @@ class TestAgent(object): > is_connected = True > except socket.error, msg: > if retries > 5: > - self.env.debug("Retried " + str(retries) + " times. > Error: " + str(msg)) > + self.env.log("Retried " + str(retries) + " times. Error: > " + str(msg)) > time.sleep(1) > self.started = True > self.used = False > > def stop(self): > '''Tear down (undo) the given ScenarioComponent''' > - self.env.debug('test agent: stop (' + self.node + ')') > - self.sock.close () > - self.rsh(self.node, "killall " + self.binary + " 2>/dev/null") > - self.started = False > + 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 > > def send (self, args): > if not self.started: > @@ -508,13 +521,15 @@ class CpgTestAgent(TestAgent): > self.nodeid = None > > def start(self): > - TestAgent.start(self) > - self.send(["cpg_initialize"]) > - self.used = False > + if not self.started: > + TestAgent.start(self) > + self.cpg_initialize() > + self.used = False > > def stop(self): > try: > - self.send(["cpg_finalize"]) > + if self.started: > + self.cpg_finalize() > except RuntimeError, msg: > # if cpg_agent is down, we are not going to stress > print msg > @@ -560,9 +575,6 @@ class ConfdbTestAgent(TestAgent): > self.nodeid = None > self.send_recv = True > > - def cpg_local_get(self): > - return 1 > - > ################################################################### > class SamTestAgent(TestAgent): > > @@ -572,9 +584,6 @@ class SamTestAgent(TestAgent): > self.nodeid = None > self.send_recv = True > > - def cpg_local_get(self): > - return 1 > - > ################################################################### > class VoteQuorumTestAgent(TestAgent): > > @@ -583,9 +592,10 @@ class VoteQuorumTestAgent(TestAgent): > self.initialized = False > self.nodeid = None > self.send_recv = True > - self.send (['init']) > - > - def cpg_local_get(self): > - return 1 > > + def start(self): > + if not self.started: > + TestAgent.start(self) > + self.init() > + self.used = False >
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
