Tutoriales

Pruebe su sistema Linux con LTP

Anteriormente, presenté Fedora Test Day y demostré cómo ayudar a probar el último kernel de Linux. Usé un conjunto de pruebas automatizado con un conjunto limitado de pruebas para verificar la confiabilidad del kernel de Fedora. Las pruebas más profundas del sistema Linux requieren un conjunto más completo de pruebas para cubrir la amplitud de los diversos subsistemas de Linux.

Para esto puedes usar Proyecto de prueba de Linux (LTP)En las propias palabras del proyecto, la misión de LTP es «probar Linux, una llamada al sistema a la vez».

[ Test your sysadmin skills. Take a skills assessment today. ]

LTP es desarrollado y mantenido por varias organizaciones con el objetivo de proporcionar un conjunto de pruebas que pueda verificar la confiabilidad, solidez y estabilidad de Linux. Es un conjunto de pruebas automatizado de código abierto con varias herramientas.

Para este artículo, estoy usando un servidor físico que ejecuta Fedora 36:

$ cat /etc/fedora-release
Fedora release 36 (Thirty Six)

$ uname -a
Linux testhost.com 5.19.8-200.fc36.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Sep 8 19:02:21 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Para instalar y usar LTP, necesita herramientas estándar de Linux disponibles en su sistema, incluidas Git, gcc, Python y Make.también necesitas automake Instale el RPM en su sistema para compilar con éxito el conjunto de pruebas LTP:

$ rpm -qa | grep -i automake
automake-1.16.5-7.fc36.noarch

[ Keep your most commonly used commands handy with the Linux commands cheat sheet. ]

Instalar LTP

Para instalar LTP, clonar Repositorio LTP Git:

$ git clone 
$ cd ltp/

Después de la clonación, vaya al directorio de origen y ejecute varios make Comando para compilar el proyecto. Este paso puede tardar unos minutos porque el repositorio contiene varias herramientas escritas en C que son necesarias para que se ejecute el conjunto de pruebas automatizadas.

$ make autotools

$ ./configure

$ make

$ make install

una vez make El comando se ejecuta correctamente y el conjunto de pruebas se mueve al directorio /opt/ltpEste directorio contiene todos los binarios de prueba y un archivo llamado runltp Inicie el conjunto de pruebas de LTP.

$ ls /opt/ltp/
bin  IDcheck.sh  metadata  runltp  runtest  scenario_groups  share  testcases  testscripts  ver_linux  Version

Si desea ver qué pruebas se compilan, consulte /opt/ltp/testcases/bin/ Tabla de contenido.

Ejecute el conjunto de pruebas

Ahora que tiene LTP instalado, puede comenzar a ejecutar pruebas.Este runltp El script de shell actúa como punto de entrada para ejecutar el conjunto de pruebas:

$ ls -l /opt/ltp/runltp
-rwxr-xr-x. 1 root root 36557 Sep 16 18:54 /opt/ltp/runltp

$ file /opt/ltp/runltp
/opt/ltp/runltp: POSIX shell script, ASCII text executable

correr runltp La secuencia de comandos del shell contenedor muestra algunos registros en la pantalla y comienza a ejecutar el conjunto de prueba. Consulte el mensaje inicial para obtener una lista de las pruebas que ejecuta de forma predeterminada:

$ /opt/ltp/runltp
INFO: creating /opt/ltp/output directory
INFO: creating /opt/ltp/results directory
INFO: no command files were provided. Executing following runtest scenario files:
syscalls fs fs_perms_simple fsx dio io mm ipc irq sched math nptl pty containers fs_bind controllers filecaps cap_bounds fcntl-locktests connectors power_management_tests hugetlb commands hyperthreading can cpuhotplug net.ipv6_lib input cve crypto kernel_misc uevent watchqueue

verás por runltp script de shell en la salida. También menciona un conjunto de archivos de registro donde LTP escribirá registros de prueba (más sobre eso a continuación):

COMMAND:	/opt/ltp/bin/ltp-pan   -e -S   -a 65457 	-n 65457 -p -f /tmp/ltp-fDmoZVhRub/alltests -l /opt/ltp/results/LTP_RUN_ON-2022_09_16-19h_00m_26s.log  -C /opt/ltp/output/LTP_RUN_ON-2022_09_16-19h_00m_26s.failed -T /opt/ltp/output/LTP_RUN_ON-2022_09_16-19h_00m_26s.tconf
LOG File: /opt/ltp/results/LTP_RUN_ON-2022_09_16-19h_00m_26s.log
FAILED COMMAND File: /opt/ltp/output/LTP_RUN_ON-2022_09_16-19h_00m_26s.failed
TCONF COMMAND File: /opt/ltp/output/LTP_RUN_ON-2022_09_16-19h_00m_26s.tconf

[ Get a cheat sheet of Linux utilities and commands for managing servers and networks. ]

Este ltp-pan El ejecutable con las opciones apropiadas es uno de los siguientes comandos ltprun transferir.

$ file /opt/ltp/bin/ltp-pan
/opt/ltp/bin/ltp-pan: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b5c2f6e620a58776f2a3858953e1dc74a38bf1f9, for GNU/Linux 3.2.0, with debug_info, not stripped

A continuación, la salida muestra un registro de las pruebas que se están ejecutando, una a la vez.Esto es abort01 El registro de la prueba, con el comando que se está ejecutando, el archivo C de origen del que se derivó la prueba, un resumen de cómo se realizó la prueba y si pasó o falló:

Running tests.......
<<>>
tag=abort01 stime=1663335027
cmdline="abort01"
contacts=""
analysis=exit
<<>>
tst_test.c:1526: TINFO: Timeout per run is 0h 00m 30s
abort01.c:62: TPASS: abort() dumped core
abort01.c:65: TPASS: abort() raised SIGIOT

Summary:
passed   2
failed   0
broken   0
skipped  0
warnings 0

Vea qué pruebas LTP está ejecutando en segundo plano

Para ver qué pruebas se están ejecutando en segundo plano, tenga en cuenta el ID de proceso (PID) de su shell antes de ejecutar runltp guion:

$ echo $$
2321

luego ejecutar pstree Ordenar:

$ pstree -pa 2321
sshd,2321
  └─bash,2322
  	└─bash,2348
      	└─runltp,65457 /opt/ltp/runltp
          	└─ltp-pan,65625 -e -S -a 65457 -n 65457 -p -f /tmp/ltp-fDmoZVhRub/alltests -l...
              	└─fallocate06,80752
                  	└─fallocate06,80794

Este ejemplo muestra runltp. Tu puedes correr pstree orden interno watch -n1 Actualice constantemente la pantalla a medida que se realicen nuevas pruebas.

[ Get the Linux watch command cheat sheet. ]

Ver resultados de la prueba

LTP almacena los resultados de las pruebas en /opt/ltp/results/ Tabla de contenido. Los archivos de registro de prueba tienen el nombre de la fecha y la hora en que se ejecutó el conjunto de pruebas, y puede ver registros específicos incluso si ejecuta LTP varias veces.

Al ejecutar el conjunto de pruebas, puede utilizar tail -f Siga el progreso de LTP en el archivo de registro:

$ ls -ld /opt/ltp/results/
drwxr-xr-x. 1 root root 74 Sep 16 19:00 /opt/ltp/results/

$ tail -f /opt/ltp/results/LTP_RUN_ON-2022_09_17-17h-10m_26s.log
chroot01                                       	PASS   	0    
chroot02                                       	PASS   	0    
chroot03                                       	PASS   	0    
chroot04                                       	PASS   	0    
clock_adjtime01                                	PASS   	0    
clock_adjtime02                                	PASS   	0    
clock_getres01                                 	PASS   	0    
clock_nanosleep01                              	PASS   	0    
[...]

Una vez completada la ejecución de la prueba LTP, puede ver el resultado final en el mismo archivo de registro. Muestra el número total de pruebas ejecutadas, cuántas pruebas se omitieron, fallaron y más. Estos resultados son su punto de partida para comprender por qué falló la prueba y determinar por qué falló.

$ tail -f /opt/ltp/results/LTP_RUN_ON-2022_09_17-10h_55m_36s.log
perf_event_open03                              	CONF   	32   

-----------------------------------------------
Total Tests: 1379
Total Skipped Tests: 173
Total Failures: 3
Kernel Version: 5.19.8-200.fc36.x86_64
Machine Architecture: x86_64
Hostname: testhost.com

ejecutar una sola prueba

LTP tiene una variedad de pruebas que generalmente tardan mucho tiempo en completarse.Si está interesado en ejecutar solo una prueba, pase a testcases/bin directorio y busque la prueba que desea ejecutar.Por ejemplo, aquí se explica cómo encontrar y ejecutar fork() prueba:

$ pwd
/opt/ltp/testcases/bin

$ ls | grep -i ^fork | xargs
fork01 fork02 fork03 fork04 fork05 fork06 fork07 fork08 fork09 fork10 fork11 fork12 fork13 fork14 fork_exec_loop fork_freeze.sh

$ ./fork01
fork01  	1  TPASS  :  fork() returned 1117799
fork01  	2  TPASS  :  child pid and fork() return agree: 1117799

$ ./fork02
fork02  	0  TINFO  :  Inside parent
fork02  	0  TINFO  :  Inside child
fork02  	0  TINFO  :  exit status of wait 0
fork02  	1  TPASS  :  test 1 PASSED

ejecutar pruebas específicas que coincidan con el patrón

Para ejecutar pruebas que coincidan con un patrón específico, use -s Seguido del patrón de nombre de la prueba que le interesa. Por ejemplo, si desea ejecutar solo casos de prueba relacionados con la escritura:

$ /opt/ltp/runltp -s write

Aleatorizar el orden de prueba

Las pruebas LTP generalmente se ejecutan en orden alfabético.usar -R Indicadores para ejecutar pruebas en orden aleatorio. En este resultado de ejemplo, tenga en cuenta que las pruebas no están en ningún orden en particular:

$ /opt/ltp/runltp -R

$ tail -f LTP_RUN_ON-2022_09_17-20h_15m_43s.log
Test Start Time: Sat Sep 17 20:15:44 2022
-----------------------------------------
Testcase                                       	Result 	Exit Value
--------                                       	------ 	----------
execve02                                       	PASS   	0    
fs_bind_move10_sh                              	PASS   	0    
kill09                                         	PASS   	0    
dio04                                          	CONF   	32   
msync02                                        	PASS   	0    
read01                                         	PASS   	0    
^C

ejecutar prueba de red

Si solo desea ejecutar pruebas relacionadas con la red y omitir el resto, use -N bandera.

$ /opt/ltp/runltp -N

Se ejecuta bajo una carga de CPU de fondo adicional

El comportamiento del sistema bajo una carga pesada suele ser diferente de cuando está inactivo. Podría tener sentido simular la carga de trabajo antes de ejecutar las pruebas.En el siguiente ejemplo puedes ver que usé -c La opción es seguida por el recuento de CPU en mi sistema (12). LTP ejecuta múltiples cargas de CPU en el sistema, según -c opción y comience a ejecutar pruebas bajo esa carga de trabajo:

$ lscpu  | grep '^CPU(s)'
CPU(s): 12

$ /opt/ltp/runltp -c 12
(Gaurav Kamanth, CC BY-SA 4.0)

Ejecute varias instancias del conjunto de pruebas

Puede ejecutar varias instancias del mismo conjunto de pruebas LTP en paralelo -x Opciones:

$ /opt/ltp/runltp -x 5

Enviar registros a un archivo separado

LTP le permite utilizar -l bandera:

$ /opt/ltp/runltp -l /tmp/ltp.log

$ tail -f /tmp/ltp.log
tag=alarm02 stime=1663426546 dur=0 exit=exited stat=0 core=no cu=0 cs=0
tag=alarm03 stime=1663426546 dur=0 exit=exited stat=0 core=no cu=0 cs=1
tag=alarm05 stime=1663426546 dur=2 exit=exited stat=0 core=no cu=0 cs=0
tag=alarm06 stime=1663426548 dur=3 exit=exited stat=0 core=no cu=0 cs=0
tag=alarm07 stime=1663426551 dur=3 exit=exited stat=0 core=no cu=0 cs=0
tag=bind01 stime=1663426554 dur=0 exit=exited stat=0 core=no cu=0 cs=1
tag=bind02 stime=1663426554 dur=0 exit=exited stat=0 core=no cu=0 cs=0
tag=bind03 stime=1663426554 dur=0 exit=exited stat=0 core=no cu=1 cs=0
tag=bind04 stime=1663426554 dur=0 exit=exited stat=0 core=no cu=0 cs=0
tag=bind05 stime=1663426554 dur=0 exit=exited stat=0 core=no cu=0 cs=1
^C

Comprobar el papel de la prueba

Hasta ahora me he centrado en ejecutar las pruebas y verificar los registros para determinar si las pruebas pasaron o fallaron. Pero, ¿qué sucede cuando se necesita conocer los pasos dados por el caso de prueba?

Para hacer esto, debe abrir el código fuente C de la prueba que desea explorar más a fondo.Para hacer esto, muévase a testcases Clona el directorio en el repositorio de Git y abre el archivo fuente.Por ejemplo, esto es fork01.c Código de caso de prueba:

$ pwd
/root/ltp/testcases/kernel/syscalls/fork

$ cat fork01.c

Description of the test

 *	OS Test - Silicon Graphics, Inc.
 *	TEST IDENTIFIER    : fork01
 *	EXECUTED BY    : anyone
 *	TEST TITLE    : Basic test for fork(2)
 *	PARENT DOCUMENT    : frktds02
 *	TEST CASE TOTAL    : 2
[...]
 *	TEST CASES
 *    1.) fork returns without error
 *    2.) fork returns the pid of the child
[...]

Este Description of the test Los comentarios en el código fuente brindan detalles sobre lo que está haciendo el caso de prueba. Si bien es posible que dichas revisiones no se apliquen a todas las pruebas, son un buen punto de partida. El conocimiento básico de programas C y scripts de shell es suficiente para comprender la mayoría de los casos de prueba.

prueba linux

LTP es una excelente manera de explorar los aspectos internos de Linux y aprender a escribir programas para probar sistemas Linux. LTP es de código abierto y puede agregar nuevos casos de prueba o mejorar los existentes. Evite ejecutar el conjunto de pruebas en un sistema de producción, ya que puede encontrar algunas fallas que podrían afectar negativamente al sistema. Primero, recomiendo ejecutar este conjunto de pruebas en una VM de prueba para familiarizarse con las pruebas y lo que sucede en segundo plano.

LEER  Gestores de contraseñas, consejos de Joplin y Flatpak, Black Friday y más

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba