blob: d1d2834dbfe9ca17b56e960bf79d014e08a2f82a [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
from dashboard import quick_logger
from dashboard import testing_common
class QuickLoggerTest(testing_common.TestCase):
def testQuickLogger_SaveAndGetNewLogEntry(self):
template = '{message}{extra}'
formatter = quick_logger.Formatter(template, extra='!')
logger = quick_logger.QuickLogger('a_namespace', 'a_log_name', formatter)
logger.Log('Hello world')
logger.Save()
logs = quick_logger.Get('a_namespace', 'a_log_name')
self.assertEqual(len(logs), 1)
self.assertEqual(logs[0].message, 'Hello world!')
def testQuickLogger_LogSizeAndNumberAtSizeLimit(self):
logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
for i in xrange(quick_logger._MAX_NUM_RECORD):
logger.Log(str(i % 2) * quick_logger._MAX_MSG_SIZE)
logger.Save()
logs = quick_logger.Get('a_namespace', 'a_log_name')
self.assertEqual(len(logs), quick_logger._MAX_NUM_RECORD)
def testQuickLogger_MultipleLogs_UsesCorrectOrder(self):
logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
for i in xrange(quick_logger._MAX_NUM_RECORD + 10):
logger.Log(i)
logger.Save()
logs = quick_logger.Get('a_namespace', 'a_log_name')
self.assertEqual(len(logs), quick_logger._MAX_NUM_RECORD)
# First record is the last log added.
self.assertEqual(logs[0].message, str(quick_logger._MAX_NUM_RECORD + 9))
def testQuickLogger_LoggingWithId_UpdatesExistingLog(self):
logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
first_id = logger.Log('First message.')
logger.Log('Second message.')
logger.Log('Third message.')
logger.Save()
logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
logger.Log('Updated first message.', first_id)
logger.Save()
logs = quick_logger.Get('a_namespace', 'a_log_name')
self.assertEqual(3, len(logs))
self.assertEqual('Updated first message.', logs[0].message)
self.assertEqual('Third message.', logs[1].message)
self.assertEqual('Second message.', logs[2].message)
def testQuickLogger_MultipleLogs_RecordIsUnique(self):
first_logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
second_logger = quick_logger.QuickLogger('a_namespace', 'a_log_name')
first_id = first_logger.Log('First message.')
second_id = second_logger.Log('Second message.')
self.assertNotEqual(first_id, second_id)
if __name__ == '__main__':
unittest.main()