Blame tests/unittests/test_handler/test_handler_debug.py

Packit Service a04d08
# Copyright (C) 2014 Yahoo! Inc.
Packit Service a04d08
#
Packit Service a04d08
# This file is part of cloud-init. See LICENSE file for license information.
Packit Service a04d08
Packit Service a04d08
from cloudinit.config import cc_debug
Packit Service a04d08
Packit Service a04d08
from cloudinit import cloud
Packit Service a04d08
from cloudinit import distros
Packit Service a04d08
from cloudinit import helpers
Packit Service a04d08
from cloudinit import util
Packit Service a04d08
Packit Service a04d08
from cloudinit.sources import DataSourceNone
Packit Service a04d08
Packit Service a04d08
from cloudinit.tests.helpers import (FilesystemMockingTestCase, mock)
Packit Service a04d08
Packit Service a04d08
import logging
Packit Service a04d08
import shutil
Packit Service a04d08
import tempfile
Packit Service a04d08
Packit Service a04d08
LOG = logging.getLogger(__name__)
Packit Service a04d08
Packit Service a04d08
Packit Service a04d08
@mock.patch('cloudinit.distros.debian.read_system_locale')
Packit Service a04d08
class TestDebug(FilesystemMockingTestCase):
Packit Service a04d08
    def setUp(self):
Packit Service a04d08
        super(TestDebug, self).setUp()
Packit Service a04d08
        self.new_root = tempfile.mkdtemp()
Packit Service a04d08
        self.addCleanup(shutil.rmtree, self.new_root)
Packit Service a04d08
Packit Service a04d08
    def _get_cloud(self, distro, metadata=None):
Packit Service a04d08
        self.patchUtils(self.new_root)
Packit Service a04d08
        paths = helpers.Paths({})
Packit Service a04d08
        cls = distros.fetch(distro)
Packit Service a04d08
        d = cls(distro, {}, paths)
Packit Service a04d08
        ds = DataSourceNone.DataSourceNone({}, d, paths)
Packit Service a04d08
        if metadata:
Packit Service a04d08
            ds.metadata.update(metadata)
Packit Service a04d08
        return cloud.Cloud(ds, paths, {}, d, None)
Packit Service a04d08
Packit Service a04d08
    def test_debug_write(self, m_locale):
Packit Service a04d08
        m_locale.return_value = 'en_US.UTF-8'
Packit Service a04d08
        cfg = {
Packit Service a04d08
            'abc': '123',
Packit Service a04d08
            'c': u'\u20a0',
Packit Service a04d08
            'debug': {
Packit Service a04d08
                'verbose': True,
Packit Service a04d08
                # Does not actually write here due to mocking...
Packit Service a04d08
                'output': '/var/log/cloud-init-debug.log',
Packit Service a04d08
            },
Packit Service a04d08
        }
Packit Service a04d08
        cc = self._get_cloud('ubuntu')
Packit Service a04d08
        cc_debug.handle('cc_debug', cfg, cc, LOG, [])
Packit Service a04d08
        contents = util.load_file('/var/log/cloud-init-debug.log')
Packit Service a04d08
        # Some basic sanity tests...
Packit Service a04d08
        self.assertNotEqual(0, len(contents))
Packit Service a04d08
        for k in cfg.keys():
Packit Service a04d08
            self.assertIn(k, contents)
Packit Service a04d08
Packit Service a04d08
    def test_debug_no_write(self, m_locale):
Packit Service a04d08
        m_locale.return_value = 'en_US.UTF-8'
Packit Service a04d08
        cfg = {
Packit Service a04d08
            'abc': '123',
Packit Service a04d08
            'debug': {
Packit Service a04d08
                'verbose': False,
Packit Service a04d08
                # Does not actually write here due to mocking...
Packit Service a04d08
                'output': '/var/log/cloud-init-debug.log',
Packit Service a04d08
            },
Packit Service a04d08
        }
Packit Service a04d08
        cc = self._get_cloud('ubuntu')
Packit Service a04d08
        cc_debug.handle('cc_debug', cfg, cc, LOG, [])
Packit Service a04d08
        self.assertRaises(IOError,
Packit Service a04d08
                          util.load_file, '/var/log/cloud-init-debug.log')
Packit Service a04d08
Packit Service a04d08
# vi: ts=4 expandtab