Revision 796b5152 test/ganeti.utils.log_unittest.py

b/test/ganeti.utils.log_unittest.py
26 26
import logging
27 27
import tempfile
28 28
import shutil
29
import threading
30
from cStringIO import StringIO
29 31

  
30 32
from ganeti import constants
31 33
from ganeti import errors
34
from ganeti import compat
32 35
from ganeti import utils
33 36

  
34 37
import testutils
......
192 195
    self.assertTrue(utils.ReadFile(logfile2).endswith("This is a test\n"))
193 196

  
194 197

  
198
class TestSetupToolLogging(unittest.TestCase):
199
  def test(self):
200
    error_name = logging.getLevelName(logging.ERROR)
201
    warn_name = logging.getLevelName(logging.WARNING)
202
    info_name = logging.getLevelName(logging.INFO)
203
    debug_name = logging.getLevelName(logging.DEBUG)
204

  
205
    for debug in [False, True]:
206
      for verbose in [False, True]:
207
        logger = logging.Logger("TestLogger")
208
        buf = StringIO()
209

  
210
        utils.SetupToolLogging(debug, verbose, _root_logger=logger, _stream=buf)
211

  
212
        logger.error("level=error")
213
        logger.warning("level=warning")
214
        logger.info("level=info")
215
        logger.debug("level=debug")
216

  
217
        lines = buf.getvalue().splitlines()
218

  
219
        self.assertTrue(compat.all(line.count(":") == 3 for line in lines))
220

  
221
        messages = [line.split(":", 3)[-1].strip() for line in lines]
222

  
223
        if debug:
224
          self.assertEqual(messages, [
225
            "%s level=error" % error_name,
226
            "%s level=warning" % warn_name,
227
            "%s level=info" % info_name,
228
            "%s level=debug" % debug_name,
229
            ])
230
        elif verbose:
231
          self.assertEqual(messages, [
232
            "%s level=error" % error_name,
233
            "%s level=warning" % warn_name,
234
            "%s level=info" % info_name,
235
            ])
236
        else:
237
          self.assertEqual(messages, [
238
            "level=error",
239
            "level=warning",
240
            ])
241

  
242
  def testThreadName(self):
243
    thread_name = threading.currentThread().getName()
244

  
245
    for enable_threadname in [False, True]:
246
      logger = logging.Logger("TestLogger")
247
      buf = StringIO()
248

  
249
      utils.SetupToolLogging(True, True, threadname=enable_threadname,
250
                             _root_logger=logger, _stream=buf)
251

  
252
      logger.debug("test134042376")
253

  
254
      lines = buf.getvalue().splitlines()
255
      self.assertEqual(len(lines), 1)
256

  
257
      if enable_threadname:
258
        self.assertTrue((" %s " % thread_name) in lines[0])
259
      else:
260
        self.assertTrue(thread_name not in lines[0])
261

  
262

  
195 263
if __name__ == "__main__":
196 264
  testutils.GanetiTestProgram()

Also available in: Unified diff