Cleaning up and using the base code for the host.
In the profiler code, the hostid should be a hostname.
Added some client barrier tests and unittests.

Signed-off-by: Jean-Marc Eurin <[email protected]>

--- autotest/client/common_lib/base_barrier.py  2010-04-13 18:12:07.000000000 
-0700
+++ autotest/client/common_lib/base_barrier.py  2010-11-12 13:53:52.000000000 
-0800
@@ -5,6 +5,16 @@
 # Default barrier TCP port.
 DEFAULT_PORT = 11922
 
+def get_host_from_id(hostid):
+    # Remove any trailing local identifier following a #.
+    # This allows multiple members per host which is particularly
+    # helpful in testing.
+    if not hostid.startswith('#'):
+        return hostid.split('#')[0]
+    else:
+        raise error.BarrierError(
+            "Invalid Host id: Host Address should be specified")
+
 
 class listen_server(object):
     """
@@ -155,17 +165,6 @@
         self._waiting = {}  # Maps from hostname -> (client, addr) tuples.
 
 
-    def _get_host_from_id(self, hostid):
-        # Remove any trailing local identifier following a #.
-        # This allows multiple members per host which is particularly
-        # helpful in testing.
-        if not hostid.startswith('#'):
-            return hostid.split('#')[0]
-        else:
-            raise error.BarrierError(
-                    "Invalid Host id: Host Address should be specified")
-
-
     def _update_timeout(self, timeout):
         if timeout is not None and self._start_time is not None:
             self._timeout_secs = (time() - self._start_time) + timeout
@@ -393,14 +392,14 @@
                 remote.settimeout(30)
                 if is_master:
                     # Connect to all slaves.
-                    host = self._get_host_from_id(self._members[self._seen])
+                    host = get_host_from_id(self._members[self._seen])
                     logging.info("calling slave: %s", host)
                     connection = (remote, (host, self._port))
                     remote.connect(connection[1])
                     self._master_welcome(connection)
                 else:
                     # Just connect to the master.
-                    host = self._get_host_from_id(self._masterid)
+                    host = get_host_from_id(self._masterid)
                     logging.info("calling master")
                     connection = (remote, (host, self._port))
                     remote.connect(connection[1])
--- autotest/client/common_lib/base_barrier_unittest.py 2010-04-13 
18:12:07.000000000 -0700
+++ autotest/client/common_lib/base_barrier_unittest.py 2010-11-12 
13:53:52.000000000 -0800
@@ -47,15 +47,14 @@
 
 
     def test_get_host_from_id(self):
-        b = barrier.barrier('127.0.0.1#', 'testgethost', 100)
-
-        hostname = b._get_host_from_id('my_host')
+        hostname = base_barrier.get_host_from_id('my_host')
         self.assertEqual(hostname, 'my_host')
 
-        hostname = b._get_host_from_id('my_host#')
+        hostname = base_barrier.get_host_from_id('my_host#')
         self.assertEqual(hostname, 'my_host')
 
-        self.assertRaises(error.BarrierError, b._get_host_from_id, '#my_host')
+        self.assertRaises(error.BarrierError,
+                          base_barrier.get_host_from_id, '#my_host')
 
 
     def test_update_timeout(self):
--- autotest/server/standalone_profiler.py      2010-04-07 10:28:28.000000000 
-0700
+++ autotest/server/standalone_profiler.py      2010-11-12 13:53:52.000000000 
-0800
@@ -9,6 +9,7 @@
 
 __author__ = '[email protected] (Colby Ranger)'
 
+import platform
 import common
 from autotest_lib.client.common_lib import barrier
 
@@ -16,7 +17,7 @@
 _RUNTEST_PATTERN = ("job.run_test('profiler_sync', timeout_sync=%r,\n"
                     "             timeout_start=%r, timeout_stop=%r,\n"
                     "             hostid='%s', masterid='%s', all_ids=%r)")
-_PROF_MASTER = "PROF_MASTER"
+_PROF_MASTER = platform.node()
 _PORT = 11920
 
 
--- autotest/server/tests/barriertest_2client/control.srv       2010-11-04 
23:08:59.000000000 -0700
+++ autotest/server/tests/barriertest_2client/control.srv       2010-11-12 
13:53:52.000000000 -0800
@@ -22,13 +22,39 @@
 host_at_objs = [autotest.Autotest(host) for host in host_objs]
 
 client_control_template = """
-import logging, platform, traceback
+import logging, platform, socket, traceback
 try:
     client_hostnames = %r
-    logging.info('creating barrier')
+    master_hostname = client_hostnames[0]
+    client_hostname = client_hostnames[1]
+
+    logging.info('Testing hostname only barrier')
     barrier = job.barrier(platform.node(), 'barriertest_2client', 120)
     logging.info('rendezvous-ing')
-    barrier.rendezvous(client_hostnames[0], *client_hostnames[1:])
+    barrier.rendezvous(master_hostname, client_hostname)
+    logging.info('done.')
+
+    logging.info('Testing local identifier barrier')
+    barrier = job.barrier(platform.node() + '#id0', 'barriertest_2client', 120)
+    logging.info('rendezvous-ing')
+    barrier.rendezvous(master_hostname + '#id0',
+                       client_hostname + '#id0')
+    logging.info('done.')
+
+    logging.info('Testing IP@ barrier')
+    barrier = job.barrier(socket.gethostbyname(platform.node()),
+                          'barriertest_2client', 120)
+    logging.info('rendezvous-ing')
+    barrier.rendezvous(socket.gethostbyname(master_hostname),
+                       socket.gethostbyname(client_hostname))
+    logging.info('done.')
+
+    logging.info('Testing IP@ barrier with ids')
+    barrier = job.barrier(socket.gethostbyname(platform.node()) + '#42',
+                          'barriertest_2client', 120)
+    logging.info('rendezvous-ing')
+    barrier.rendezvous(socket.gethostbyname(master_hostname) + '#42',
+                       socket.gethostbyname(client_hostname) + '#42')
     logging.info('done.')
 except:
     traceback.print_exc()
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to