def check_kernel_messages(self, connection, max_end_time, fail_msg): """ Use the additional pexpect expressions to detect warnings and errors during the kernel boot. Ensure all test jobs using auto-login-action have a result set so that the duration is always available when the action completes successfully. """ if isinstance(connection, SShSession): self.logger.debug("Skipping kernel messages") return self.logger.info("Parsing kernel messages") self.logger.debug(connection.prompt_str) parsed = LinuxKernelMessages.parse_failures(connection, self, max_end_time=max_end_time, fail_msg=fail_msg) if len(parsed) and "success" in parsed[0]: self.results = {"success": parsed[0]["success"]} if len(parsed) > 1: # errors detected. self.logger.warning("Kernel warnings or errors detected.") self.results = {"extra": parsed} elif not parsed: self.results = { "success": "No kernel warnings or errors detected." } else: self.results = {"fail": parsed} self.logger.warning("Kernel warnings or errors detected.")
def test_kernel_4(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-4.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_init_prompts() self.assertIsNotNone(message_list) connection = FakeConnection(child, message_list) with self.assertRaises(JobError): results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time)
def test_kernel_4(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-4.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_init_prompts() self.assertIsNotNone(message_list) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertIn('Stack', results[0]['message'].decode('utf-8')) self.assertIn('Kernel panic', results[1]['message'].decode('utf-8'))
def test_kernel_4(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-4.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_init_prompts() self.assertIsNotNone(message_list) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures( connection, max_end_time=self.max_end_time) self.assertIn('Stack', results[0]['message'].decode('utf-8')) self.assertIn('Kernel panic', results[1]['message'].decode('utf-8'))
def test_kernel_2(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-2.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() self.assertIsNotNone(message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[0][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[1][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[2][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[3][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[4][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[5][1], message_list) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(list(results)), 14) message_list = LinuxKernelMessages.get_init_prompts() child = pexpect.spawn('cat', [logfile]) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(list(results)), 13)
def test_kernel_1(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-1.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(results), 1) self.assertEqual(results[0], {'message': 'kernel-messages', 'success': 'Freeing unused kernel memory'})
def test_kernel_txt(self): """ The same logfile passes kernel boot and fails to find init - so the panic needs to be caught by InitMessages """ logfile = os.path.join(os.path.dirname(__file__), 'kernel-panic.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() self.assertIsNotNone(message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[0][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[1][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[2][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[3][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[4][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[5][1], message_list) connection = FakeConnection(child, message_list) result = LinuxKernelMessages.parse_failures( connection, max_end_time=self.max_end_time) self.assertEqual(len(result), 2) self.assertIn('success', result[0]) self.assertIn('panic', result[1]) self.assertEqual(result[0]['success'], KERNEL_FREE_UNUSED_MSG) self.assertEqual(result[1]['panic'], KERNEL_PANIC_MSG) self.assertEqual(len(result), 2) self.assertIn('panic', result[1]) self.assertIn('message', result[1]) self.assertTrue('Attempted to kill init' in str(result[1]['message'])) self.assertTrue('(unwind_backtrace) from' in str(result[1]['message'])) message_list = LinuxKernelMessages.get_init_prompts() child = pexpect.spawn('cat', [logfile]) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures( connection, max_end_time=self.max_end_time) self.assertEqual(len(results), 1) self.assertIn('panic', result[1]) self.assertIn('message', result[1]) self.assertTrue('Attempted to kill init' in str(result[1]['message'])) self.assertTrue('(unwind_backtrace) from' in str(result[1]['message']))
def test_kernel_ramdisk_alert(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-3.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_init_prompts() self.assertIsNotNone(message_list) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(list(results)), 1) self.assertIn('message', results[0]) self.assertIn('alert', results[0]) self.assertNotIn('success', results[0]) self.assertNotIn('panic', results[0])
def test_kernel_ramdisk_alert(self): logfile = os.path.join(os.path.dirname(__file__), 'kernel-3.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_init_prompts() self.assertIsNotNone(message_list) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures( connection, max_end_time=self.max_end_time) self.assertEqual(len(list(results)), 1) self.assertIn('message', results[0]) self.assertIn('alert', results[0]) self.assertNotIn('success', results[0]) self.assertNotIn('panic', results[0])
def test_kernel_1(self): logfile = os.path.join(os.path.dirname(__file__), "kernel-1.txt") self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn("cat", [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures( connection, action=Action(), max_end_time=self.max_end_time, fail_msg="" ) self.assertEqual(len(results), 1) self.assertEqual( results[0], {"message": "kernel-messages", "success": "Freeing unused kernel memory"}, )
def test_kernel_txt(self): """ The same logfile passes kernel boot and fails to find init - so the panic needs to be caught by InitMessages """ logfile = os.path.join(os.path.dirname(__file__), 'kernel-panic.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() self.assertIsNotNone(message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[0][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[1][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[2][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[3][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[4][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[5][1], message_list) connection = FakeConnection(child, message_list) result = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(result), 2) self.assertIn('success', result[0]) self.assertIn('panic', result[1]) self.assertEqual(result[0]['success'], KERNEL_FREE_UNUSED_MSG) self.assertEqual(result[1]['panic'], KERNEL_PANIC_MSG) self.assertEqual(len(result), 2) self.assertIn('panic', result[1]) self.assertIn('message', result[1]) self.assertTrue('Attempted to kill init' in str(result[1]['message'])) self.assertTrue('(unwind_backtrace) from' in str(result[1]['message'])) message_list = LinuxKernelMessages.get_init_prompts() child = pexpect.spawn('cat', [logfile]) connection = FakeConnection(child, message_list) results = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time) self.assertEqual(len(results), 1) self.assertIn('panic', result[1]) self.assertIn('message', result[1]) self.assertTrue('Attempted to kill init' in str(result[1]['message'])) self.assertTrue('(unwind_backtrace) from' in str(result[1]['message']))
def check_kernel_messages(self, connection, max_end_time, fail_msg): """ Use the additional pexpect expressions to detect warnings and errors during the kernel boot. Ensure all test jobs using auto-login-action have a result set so that the duration is always available when the action completes successfully. """ if isinstance(connection, SShSession): self.logger.debug("Skipping kernel messages") return self.logger.info("Parsing kernel messages") self.logger.debug(connection.prompt_str) # Nexell extensions ''' nexell booting test needs enter commands for check connection prompts ''' self.logger.debug("[SEOJI] self.parameters: " + str(self.parameters)) params = self.parameters.get('nexell_ext') if 'command_param3' in params: nexell_cmd = [ params['command'], params['command_param3'], params['dir_name'], params['device_path'] ] self.logger.debug("[SEOJI] nexell_cmd: " + str(nexell_cmd)) command_output = self.run_command(nexell_cmd) parsed = LinuxKernelMessages.parse_failures(connection, self, max_end_time=max_end_time, fail_msg=fail_msg) if len(parsed) and 'success' in parsed[0]: self.results = {'success': parsed[0]['success']} if len(parsed) > 1: # errors detected. self.logger.warning("Kernel warnings or errors detected.") self.results = {'extra': parsed} elif not parsed: self.results = { 'success': "No kernel warnings or errors detected." } else: self.results = {'fail': parsed} self.logger.warning("Kernel warnings or errors detected.")
def test_kernel_txt(self): """ The same logfile passes kernel boot and fails to find init - so the panic needs to be caught by InitMessages """ logfile = os.path.join(os.path.dirname(__file__), 'kernel-panic.txt') self.assertTrue(os.path.exists(logfile)) child = pexpect.spawn('cat', [logfile]) message_list = LinuxKernelMessages.get_kernel_prompts() self.assertIsNotNone(message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[0][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[1][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[2][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[3][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[4][1], message_list) self.assertIn(LinuxKernelMessages.MESSAGE_CHOICES[5][1], message_list) connection = FakeConnection(child, message_list) with self.assertRaises(JobError): result = LinuxKernelMessages.parse_failures(connection, max_end_time=self.max_end_time)
def check_kernel_messages(self, connection, max_end_time): """ Use the additional pexpect expressions to detect warnings and errors during the kernel boot. Ensure all test jobs using auto-login-action have a result set so that the duration is always available when the action completes successfully. """ if isinstance(connection, SShSession): self.logger.debug("Skipping kernel messages") return self.logger.info("Parsing kernel messages") self.logger.debug(connection.prompt_str) parsed = LinuxKernelMessages.parse_failures(connection, self, max_end_time=max_end_time) if len(parsed) and 'success' in parsed[0]: self.results = {'success': parsed[0]['success']} if len(parsed) > 1: # errors detected. self.logger.warning("Kernel warnings or errors detected.") self.results = {'extra': parsed} elif not parsed: self.results = {'success': "No kernel warnings or errors detected."} else: self.results = {'fail': parsed} self.logger.warning("Kernel warnings or errors detected.")