root_dir = LinuxCLI().cmd('pwd').strip() print 'Setting root dir to: ' + root_dir client_impl = None if client_impl_type == 'neutron': client_impl = create_neutron_client(**client_args) elif client_impl_type == 'midonet': client_impl = create_midonet_client(**client_args) else: raise ArgMismatchException('Invalid client API implementation:' + client_impl_type) print 'Setting up log manager' log_manager = LogManager(root_dir=log_dir) console_log = log_manager.add_stdout_logger(name='tsm-run-console', log_level=logging.DEBUG if debug is True else logging.INFO) log_manager.rollover_logs_fresh(file_filter='*.log') console_log.debug('Setting up PTM') ptm = PhysicalTopologyManager(root_dir=root_dir, log_manager=log_manager) ptm.configure_logging(debug=debug) console_log.debug('Setting up VTM') vtm = VirtualTopologyManager(physical_topology_manager=ptm, client_api_impl=client_impl, log_manager=log_manager) console_log.debug('Setting up TSM') tsm = TestSystemManager(ptm, vtm, log_manager=log_manager) tsm.configure_logging(debug=debug) scenario_filters = [TestScenario.get_class(s) for s in scenario_filter_list] \ if len(scenario_filter_list) != 0 else None test_cases = map(TestCase.get_class, tests)
def test_rollover(self): LinuxCLI().rm('./logs') LinuxCLI().rm('./logbak') lm = LogManager('./logs') lm.set_default_log_level(logging.DEBUG) LinuxCLI(priv=False).write_to_file('./logs/test.log', 'data') LinuxCLI(priv=False).write_to_file('./logs/test2.log', 'data2') # Run fresh rollover function before loggers are defined lm.rollover_logs_fresh(date_pattern='%Y', zip_file=False) try: current_year = str(datetime.datetime.now().year) self.assertFalse(LinuxCLI().exists('./logs/test.log')) self.assertFalse(LinuxCLI().exists('./logs/test2.log')) self.assertTrue(LinuxCLI().exists('./logs/log_bak')) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year)) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year)) self.assertNotEqual(0, os.path.getsize('./logs/log_bak/test.log.' + current_year)) self.assertNotEqual(0, os.path.getsize('./logs/log_bak/test2.log.' + current_year)) finally: LinuxCLI().rm('./logs/log_bak') l1 = lm.add_file_logger(name='main', file_name='test.log', file_overwrite=True) l2 = lm.add_file_logger(name='sub', file_name='test.log', file_overwrite=False) l3 = lm.add_file_logger(name='main2', file_name='test2.log', file_overwrite=True) self.assertIn(FileLocation('./logs/test.log'), lm.open_log_files) self.assertIn(FileLocation('./logs/test2.log'), lm.open_log_files) self.assertEqual(2, len(lm.open_log_files)) # Running rollover before log files have data should be a no-op, # So the empty files should remain lm.rollover_logs_by_date() try: self.assertTrue(LinuxCLI().exists('./logs/test.log')) self.assertTrue(LinuxCLI().exists('./logs/test2.log')) self.assertEqual(0, os.path.getsize('./logs/test.log')) self.assertEqual(0, os.path.getsize('./logs/test2.log')) self.assertFalse(LinuxCLI().exists('./logs/log_bak')) finally: LinuxCLI().rm('./logs/log_bak') l1.info('test1') l2.info('test2') l3.info('test3') # Now run a standard rollover with no params, default log dir should be created # and regular log files should be moved and zipped lm.rollover_logs_by_date() try: self.assertTrue(LinuxCLI().exists('./logs/test.log')) self.assertTrue(LinuxCLI().exists('./logs/test2.log')) self.assertEqual(0, os.path.getsize('./logs/test.log')) self.assertEqual(0, os.path.getsize('./logs/test2.log')) self.assertTrue(LinuxCLI().exists('./logs/log_bak')) finally: LinuxCLI().rm('./logs/log_bak') l1.info('test1') l2.info('test2') l3.info('test3') self.assertNotEqual(0, os.path.getsize('./logs/test.log')) self.assertNotEqual(0, os.path.getsize('./logs/test2.log')) # Same as no-params, just with a specified backup dir lm.rollover_logs_by_date(backup_dir='./logbak') try: self.assertTrue(LinuxCLI().exists('./logs/test.log')) self.assertTrue(LinuxCLI().exists('./logs/test2.log')) self.assertEqual(0, os.path.getsize('./logs/test.log')) self.assertEqual(0, os.path.getsize('./logs/test2.log')) self.assertTrue(LinuxCLI().exists('./logbak')) finally: LinuxCLI().rm('./logbak') l1.info('test1') l2.info('test2') l3.info('test3') # Now use a specific pattern, making it easy to test for # the files' existence new_file = lm.rollover_logs_by_date(date_pattern='%Y') try: current_year = str(datetime.datetime.now().year) self.assertTrue(LinuxCLI().exists('./logs/test.log')) self.assertTrue(LinuxCLI().exists('./logs/test2.log')) self.assertEqual(0, os.path.getsize('./logs/test.log')) self.assertEqual(0, os.path.getsize('./logs/test2.log')) self.assertTrue(LinuxCLI().exists('./logs/log_bak')) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year + '.gz')) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year + '.gz')) finally: LinuxCLI().rm('./logs/log_bak') l1.info('test1') l2.info('test2') l3.info('test3') new_file = lm.rollover_logs_by_date(date_pattern='%Y', zip_file=False) try: current_year = str(datetime.datetime.now().year) self.assertTrue(LinuxCLI().exists('./logs/test.log')) self.assertTrue(LinuxCLI().exists('./logs/test2.log')) self.assertEqual(0, os.path.getsize('./logs/test.log')) self.assertEqual(0, os.path.getsize('./logs/test2.log')) self.assertTrue(LinuxCLI().exists('./logs/log_bak')) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year)) self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year)) finally: LinuxCLI().rm('./logs')