On Fri, 2011-02-25 at 10:52 -0800, Gregory Smith wrote:
> Prevent the scheduler from logging the large pickled stdout return
> value of drone_utility in the scheduler debug logs.  Adds a unittest.

Applied, thanks!

http://autotest.kernel.org/changeset/5277


> Signed-off-by: Gregory Smith <g...@google.com>
> 
> --- autotest/scheduler/drones.py      2010-10-29 15:37:05.000000000 -0700
> +++ autotest/scheduler/drones.py      2011-01-27 16:51:47.000000000 -0800
> @@ -122,6 +122,12 @@
>          self._autotest_install_dir = AUTOTEST_INSTALL_DIR
>  
> 
> +    @property
> +    def _drone_utility_path(self):
> +        return os.path.join(self._autotest_install_dir,
> +                            'scheduler', 'drone_utility.py')
> +
> +
>      def set_autotest_install_dir(self, path):
>          self._autotest_install_dir = path
>  
> @@ -133,11 +139,9 @@
>  
>      def _execute_calls_impl(self, calls):
>          logging.info("Running drone_utility on %s", self.hostname)
> -        drone_utility_path = os.path.join(self._autotest_install_dir,
> -                                          'scheduler', 'drone_utility.py')
> -        result = self._host.run('python %s' % drone_utility_path,
> -                                stdin=cPickle.dumps(calls), 
> connect_timeout=300)
> -
> +        result = self._host.run('python %s' % self._drone_utility_path,
> +                                stdin=cPickle.dumps(calls), stdout_tee=None,
> +                                connect_timeout=300)
>          try:
>              return cPickle.loads(result.stdout)
>          except Exception: # cPickle.loads can throw all kinds of exceptions
> ==== (added) 
> //depot/google_vendor_src_branch/autotest/scheduler/drones_unittest.py#1 ====
> --- /dev/null 2011-02-15 18:13:29.172335531 -0800
> +++ autotest/scheduler/drones_unittest.py     2011-01-27 16:51:47.000000000 
> -0800
> @@ -0,0 +1,54 @@
> +#!/usr/bin/python2.4
> +
> +"""Tests for autotest_lib.scheduler.drones."""
> +
> +import cPickle
> +
> +import common
> +from autotest_lib.client.common_lib import utils
> +from autotest_lib.client.common_lib.test_utils import mock, unittest
> +from autotest_lib.scheduler import drones
> +from autotest_lib.server.hosts import ssh_host
> +
> +
> +class RemoteDroneTest(unittest.TestCase):
> +    def setUp(self):
> +        self.god = mock.mock_god()
> +        self._mock_host = self.god.create_mock_class(ssh_host.SSHHost,
> +                                                     'mock SSHHost')
> +        self.god.stub_function(drones.drone_utility, 'create_host')
> +
> +
> +    def tearDown(self):
> +        self.god.unstub_all()
> +
> +
> +    def test_unreachable(self):
> +        drones.drone_utility.create_host.expect_call('fakehost').and_return(
> +                self._mock_host)
> +        self._mock_host.is_up.expect_call().and_return(False)
> +        self.assertRaises(drones.DroneUnreachable,
> +                          drones._RemoteDrone, 'fakehost')
> +
> +
> +    def test_execute_calls_impl(self):
> +        self.god.stub_with(drones._RemoteDrone, '_drone_utility_path',
> +                           'mock-drone-utility-path')
> +        drones.drone_utility.create_host.expect_call('fakehost').and_return(
> +                self._mock_host)
> +        self._mock_host.is_up.expect_call().and_return(True)
> +        mock_calls = ('foo',)
> +        mock_result = utils.CmdResult(stdout=cPickle.dumps('mock return'))
> +        self._mock_host.run.expect_call(
> +                'python mock-drone-utility-path',
> +                stdin=cPickle.dumps(mock_calls), stdout_tee=None,
> +                connect_timeout=mock.is_instance_comparator(int)).and_return(
> +                        mock_result)
> +
> +        drone = drones._RemoteDrone('fakehost')
> +        self.assertEqual('mock return', 
> drone._execute_calls_impl(mock_calls))
> +        self.god.check_playback()
> +
> +
> +if __name__ == '__main__':
> +    unittest.main()
> _______________________________________________
> Autotest mailing list
> Autotest@test.kernel.org
> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest


_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to