New post

Find

Article
· Aug 29, 2024 4m read

TestCoverage: Python integrado e interfaz de usuario

Dos grandes cambios para la herramienta de código abierto TestCoverage: Compatibilidad con Python integrado y una nueva interfaz de usuario.

Python integrado

Anteriormente, TestCoverage solo podía rastrear la cobertura de pruebas unitarias para el código escrito en ObjectScript. Ignoraba el código escrito en otros lenguajes como Python en las estadísticas de cobertura.

 

A medida que se escribe cada vez más código de aplicaciones IRIS en Python Embebido, en lugar de solo ObjectScript, es crucial que TestCoverage pueda incluir los resultados de cobertura para el código en Python Embebido. Los clientes (a través de los issues en GitHub de TestCoverage) y otros en InterSystems han expresado interés en ver soporte para Python Embebido.

 

El usuario sigue instalando y ejecutando TestCoverage de la misma manera que antes, tal como se describe en el GitHub de TestCoverage. Los resultados de cobertura para el código en Python Embebido ahora se incluyen en las estadísticas de cobertura agregada, así como en el coloreado individual de líneas, tal como se muestra en el ejemplo anterior.

En el fondo, la cobertura de Python Embebido se rastrea utilizando el rastreador sys.settrace de Python, independientemente del %Monitor.System.LineByLine de ObjectScript, y luego los resultados se combinan y se muestran juntos. Esto puede causar discrepancias muy menores en cuanto a qué líneas se marcan como ejecutables (es decir, que se pueden ejecutar). Por ejemplo, en la imagen anterior, Python considera la declaración elif como ejecutable, pero ObjectScript no considera la declaración ElseIf como ejecutable. Al final, cualquier línea de código marcada en rojo no fue cubierta, y cualquier línea de código marcada en verde sí fue cubierta; esto solo afecta ligeramente qué líneas de código ignoramos, lo cual no causa ningún problema.

Nueva interfaz de usuario de TestCoverage

La interfaz de usuario anterior de TestCoverage era una antigua interfaz Zen que no mostraba muchas de las estadísticas útiles que TestCoverage rastrea. Además, TestCoverage solo podía ejecutarse desde la línea de comandos.

Para resolver estos problemas, se ha creado una nueva interfaz de usuario en Angular, basada en `isc.perf.ui`, la interfaz existente para interactuar con el Monitor Line-By-Line (`^%SYS.MONLBL`). La aplicación web viene con una API REST y una conexión WebSocket para recuperar datos del servidor IRIS. También corrige la autenticación de usuario anterior para `isc.perf.ui`, de modo que ahora utiliza el inicio/cierre de sesión estándar de IRIS. Esto también está disponible públicamente en Open Exchange, bajo el nombre `isc-perf-ui`. A continuación, se presentan algunas de las características y usos de la nueva interfaz de usuario.

Instalación

Hay algunos pasos adicionales para instalar `isc.perf.ui` si queréis utilizar las nuevas funciones de TestCoverage. Solo en Windows, es necesario habilitar el protocolo WebSocket en IIS. En cualquier sistema operativo, debéis otorgar a un usuario específico (normalmente `CSPSystem`) un permiso de recurso (usualmente `%DB_User`) en el portal de administración de IRIS. Estos pasos se describen en la página de GitHub de `isc-perf-ui`.

Página de Test Coverage

En la página Test Coverage, podéis seleccionar los parámetros con los que deseáis ejecutar TestCoverage en vuestras pruebas unitarias.

  

Las explicaciones de los parámetros incluyen descripciones de lo que controla cada uno de estos parámetros. También podéis hacer clic en un cuadro de entrada para ver un valor de ejemplo, y hay una validación de entrada para asegurar que vuestros datos estén en un formato válido.

Después de presionar submit, o enviar, se iniciará la llamada para ejecutar TestCoverage, y veréis el progreso en tiempo real de vuestras pruebas unitarias en el registro en la parte inferior de la página.

 

Después de que las pruebas hayan terminado de ejecutarse, el menú desplegable a la derecha debería abrirse con una lista de combinaciones de rutina y ruta de prueba, así como el porcentaje de cobertura general de vuestro código y el enlace a los resultados de las pruebas unitarias.

 

Haced clic en cualquiera para ser llevados a la página de resultados de cobertura para esa rutina bajo ese directorio de pruebas unitarias.

Aquí podéis ver qué líneas de código fueron cubiertas por vuestras pruebas unitarias según TestCoverage. También hay métricas adicionales como TotalTime, que rastrea la cantidad de tiempo que el código pasó en una determinada línea desde su inicio hasta su finalización.

 

Podéis ordenar aún más en orden ascendente o descendente haciendo clic en las flechas junto a los encabezados; esta es una forma útil de ver cuáles líneas de código tardan más tiempo.

 

Finalmente, el botón Show Methods, o Mostrar Métodos, abre una tabla con la complejidad ciclomática de cada uno de vuestros métodos, mostrando cuáles son los métodos más complejos y vulnerables a errores.

 

Cuando hayáis terminado, podéis hacer clic en el botón de retroceso para volver a la página de lanzamiento. El botón Borrar Resultados en rojo os permite borrar todas las ejecuciones de cobertura de pruebas.

Página de Cobertura Histórica

Después de hacer clic en un ID de ejecución pasado específico, podéis ver los resultados de cobertura a nivel de clase (cobertura de líneas, cobertura de métodos, tiempos) para todas las clases en esa ejecución. Estos datos son los mismos que los de la página de resultados principal de TestCoverage. Esta tabla también se puede ordenar por cada columna. 

 

Una vez más, ambas herramientas están disponibles en el InterSystems Open Exchange (isc-perf-ui y TestCoverage Tool) y en GitHub. ¡Buenas pruebas a todos!

  

Discussion (0)1
Log in or sign up to continue
Article
· Aug 28, 2024 2m read

第十章 创建和使用策略 - 在运行时添加证书

第十章 创建和使用策略 - 在运行时添加证书

在运行时添加证书

如果 Web 服务或客户端必须以编程方式选择并包含证书,请使用以下过程:

  1. 检索 %SYS.X509Credentials 的实例,如以编程方式检索凭据集中所述。

例如:

 set credset=##class(%SYS.X509Credentials).GetByAlias(alias,password)

Discussion (0)1
Log in or sign up to continue
Question
· Aug 28, 2024

COMPARE ROUTINES

IS IT POSSIBLE TO COMAPRE TWO ROUTINES ACCROSS INHOUSE NETWORK AND IF SO THEN WHAT IS THE PROPER SYNTAX TO USE?

SAMPLE:

K ^RICH D ##class(%Library.Routine).RoutineCompare("\\IP\C$\.......\$NAMESPACE","RTN","\\LOCALHOST\..........\$NAMESPACE","RTN","^RICH")

2 Comments
Discussion (2)1
Log in or sign up to continue
Question
· Aug 28, 2024

OPEN A TERMINAL WINDOW VIA HREF TAG IN HTML

? 4 U:

IS THERE A WAY TO OPEN THE TERMINAL WINDOW WITH INTERNAL IP AND NAMESPACE FROM HREF TAG IN AND HTML 

i KNOW I CAN CALL ON THE MANAGEMENT PORT VIA A HREF TAG:

<td><a href=""http://"_IP_":57773/csp/sys/exp/%25CSP.UI.Portal.GlobalList.zen?$NAMESPACE="_USER_"&$NAMESPACE="_USER_" id=""rr"" onclick='selectedRow()' target='_blank'>Portal</a></td>"

BUT WHATEVER I TRIED, JAVASCRIPT OR ANYTHING ELSE I CAN'T OPEN A TERMINAL WINDOW

<td><a href="??????????????????"">Terminal</a></td>

2 Comments
Discussion (2)2
Log in or sign up to continue
Question
· Aug 28, 2024

JOB $SYSTEM.obj

IS THERE A WAY TO JOB A $SYSTEM.OBJ FUNCTION AND FIND IF THE JOB IS RUNNING OR FINISHED TO ASYNCHRONOUSLY CONTINUE OR HALT THE PROCESS?

5 Comments
Discussion (5)2
Log in or sign up to continue