| #!/usr/bin/python2 |
| # |
| # Copyright 2014 Rackspace Australia |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| |
| |
| import fixtures |
| import logging |
| import os |
| import testtools |
| |
| from turbo_hipster.lib import utils |
| |
| |
| class TestExecuteToLog(testtools.TestCase): |
| def test_makes_dir(self): |
| tempdir = self.useFixture(fixtures.TempDir()).path |
| self.assertFalse(os.path.exists(os.path.join(tempdir, 'foo'))) |
| utils.execute_to_log('echo yay', |
| os.path.join(tempdir, 'foo', 'banana.log'), |
| watch_logs=[]) |
| self.assertTrue(os.path.exists(os.path.join(tempdir, 'foo'))) |
| |
| def test_logging_works(self): |
| # Setup python logging to do what we need |
| logging.basicConfig(format='%(asctime)s %(name)s %(message)s', |
| level=logging.DEBUG) |
| |
| tempdir = self.useFixture(fixtures.TempDir()).path |
| log_path = os.path.join(tempdir, 'banana.log') |
| |
| utils.execute_to_log('echo yay', log_path, watch_logs=[]) |
| self.assertTrue(os.path.exists(log_path)) |
| |
| with open(log_path) as f: |
| d = f.read() |
| print d |
| |
| self.assertNotEqual('', d) |
| self.assertEqual(3, len(d.split('\n'))) |
| self.assertNotEqual(-1, d.find('yay')) |
| self.assertNotEqual(-1, d.find('[script exit code = 0]')) |
| |
| def test_timeout(self): |
| # Setup python logging to do what we need |
| logging.basicConfig(format='%(asctime)s %(name)s %(message)s', |
| level=logging.DEBUG) |
| |
| tempdir = self.useFixture(fixtures.TempDir()).path |
| log_path = os.path.join(tempdir, 'banana.log') |
| |
| utils.execute_to_log('/bin/sleep 30', log_path, watch_logs=[], |
| timeout=0.1) |
| self.assertTrue(os.path.exists(log_path)) |
| |
| with open(log_path) as f: |
| d = f.read() |
| print d |
| |
| self.assertNotEqual('', d) |
| self.assertNotEqual(-1, d.find('[timeout]')) |
| self.assertNotEqual(-1, d.find('[script exit code = -9]')) |