JMeter – Plugin Statistical Aggregate Report

Página principal

http://rubenlaguna.com/wp/better-jmeter-graphs/

Visión General

Muestra de una manera diferente de presentar los datos de forma más clara y sencilla que los informes estándar por defecto del JMeter.

A grandes rasgos, el eje vertical de la izquierda indica el ratio de salida, el número de hilos por segundo durante la ejecución y el eje horizontal muestra el tiempo en el que se ha ejecutado la prueba. Por último, el eje vertical de la derecha muestra el tiempo de respuesta de todas las muestras.

Así, con este informe se puede ver la interacción entre el tiempo de la prueba, el número de hilos cargados por segundo y el tiempo de respuesta para cada uno de ellos.

http://rubenlaguna.com/wp/wp-content/uploads/2006/12/stataggvisualizer.zip

Instalación

Aunque se detalla en la propia página oficial incluye el proceso de instalación como guía rápida.

La instalación se ha efectuado en la versión Apache JMeter (2.11 r1554548) del JMeter.

Para instalar el añadido evidentemente es necesario disponer del fichero StatAggVisualizer.zip. 

Hay que descomprimir el archivo completo. Seguidamente hay que acceder al directorio de instalación del 2.2.

El archivo comprimido dispone de cuatro archivos en su interior: Tres de ellos vale directamente a la carpeta $JMETER_HOME/lib y los otros fichero hay que colocarlos directamente en el directorio $JMETER_HOME/lib/ext.

Cuando se descomprime el archivo ya se genera la estructura de archivos apropiada, como por si acaso, los archivos jcommon-1.0.5.jar, jdnc-0.6-all.jar i el fitxer jfreechart-1.0.2.jar hace falta colocarlos directamente a la carpeta $JMETER_HOME/lib y el jar StatAggVisualizer.jar es necesario también colocarlo en $JMETER_HOME/lib/ext.

Una vez instalado, es necesario arrancar el JMeter y podrá verse la opción de «Statistical Aggregate Report» en la opción de menú Añadir -> Receptor haciendo clic sobre el Grupo de Hilos con el botón derecho del ratón.

Error Adobe AcroExch. al insertar un PDF en un documento de Word

Se dispone de un documento PDF de unos 2 Mb i es desea incrustar en un documento de Word estándar (independiente de versión de Office).

Al intentar realizar la incrustación se abre una ventana de alerta con el siguiente mensaje de error:

«El programa usado para crear este objetivo es AcroExch. Dicho programa no está instalada en el equipo o no responde. Para editar este Objeto, Instale AcroExch o asegúrese de que todos los cuadros de diálogo de AcroExch están cerrados.»

Es un problema relacionado con una opción de seguridad del Adobe Acrobat Reader. El programa por defecto dispuesta de la opción Activar modo protegido al iniciar. Así para solucionar el problema lo que hay que hacer es seguir los siguientes pasos:

  1. Abrir la Adode PDF Reader (múltiples versiones)
  2. Acceder a la opción Editar
  3. Acceder a la opción Preferencias
  4. Dependiendo de la versión del Acrobat puede ser la opción de General (Adobe Acrobat X) o la opción Seguridad (mejorada) (Adobe Acrobat XI). En otras versiones el nombre de la opción es el mismo, hay que buscarlo para encontrar el lugar donde aparezca.
  5. Hay que desactivar la opción Activar modo protegido al iniciar.

Ahora si se realiza de nuevo la inserción del documento PDF dentro del documento de Word no se volverá a mostrar el error y finalizará la incrustación correctamente.

Cálculo del tamaño de una BBDD Oracle

  • Incluye el tamaño de los archivos de datos en la búsqueda

El tamaño total incluye tablas, campos, procedimientos almacenados y otros objetos de la base de datos.

Calcula el tamaño de la vista «dba_data_files»:

SELECT SUM(bytes)/1024/1024/1024 data_size FROM dba_data_files;

 

  • Calcula el tamaño de los archivos temporales

Estos conservan datos durante el proceso pero no es un almacenamiento permanente.

Calcula el tamaño del archivo temporal:

SELECT NVL(SUM(bytes),0)/1024/1024/1024 temp_size FROM dba_temp_files;

 

  • Obtener el tamaño del redo log

Esto almacena cualquier cambio en la base de datos antes de ser aplicado en los datos actuales de la base de datos.

Esto ofrece una manera de almacenar la base de datos en su estado orignal previo a una consulta diseñada para modificar cualquier información.

SELECT SUM(bytes)/1024/1024/1024 redo_size FROM sys.v_$log;

 

  • Tamaño del archivo de control usado por Oracle utilizando la vista V$CONTROLFILE

Esta vista se utiliza para obtener información del esquema de la base de datos i de los objetos contenidos en la misma.

Para obtener el tamaño del archivo de control hace falta ejecutar:

SELECT SUM(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size 
FROM v$controlfile;

 

  • Combinar las anteriores consultas para obtener el tamaño de la base de datos

Resultado obtenido el tamaño total de la base de datos en gigabytes:

SELECT d.data_size, t.temp_size, r.redo_size
FROM  ( SELECT NVL(bytes)/1024/1024/1024 data_size FROM dba_data_files) d,
( SELECT NVL(sum(bytes),0)/1024/1024/1024 temp_size FROM dba_temp_files ) t,
( SELECT SUM(bytes)/1024/1024/1024 redo_size FROM sys.v_$log ) r;

 

Errores comunes del servidor OC4J

Errores JMS

A través de la consola de comandos se muestra un error como el siguiente:

2013-11-13 15:49:56.330 ERROR J2EE OJR-00011 Excepción al iniciar el servidor JMS: Error parsing jms-server config at file:/C:/PRO_MAVEN/OC4J_10g_TRUNK/j2ee/home/config/jms.xml: /C:/PRO_MAVEN/OC4J_10g_TRUNK/j2ee/home/config/jms.xml, Fatal error at line 27 offset 12 in file:/C:/PRO_MAVEN/OC4J_10g_TRUNK/j2ee/home/config/jms.xml: .<Line 27, Column 12>: XML-20211: (Error Fatal) No está permitido '--' en comments.
Solución:
  • Parar el servidor de aplicaciones.
  • Acceder a la ruta – <PATH>/j2ee/home/persistence/- de la instalación del servidor OC4J.
  • Borrar el fichero jms.state.
  • Reiniciar el servidor.

 

Error ParserConfigurationException

A través de la consola de comandos se muestra un error como el siguiente:

ERROR [2013-12-03 15:18:55,759] [Digester] Digester.getParser:
javax.xml.parsers.ParserConfigurationException: XML document validation is not s
upported
at com.bluecast.xml.JAXPSAXParserFactory.newSAXParser(JAXPSAXParserFacto
ry.java:105)
at org.apache.commons.digester.Digester.getParser(Digester.java:686)
at org.apache.commons.digester.Digester.getXMLReader(Digester.java:902)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionSe
rvlet.java:1006)
Solución:

No se está utilizando una JDK compatible con el servidor. OC4J es compatible solamente con la JDK 1.4 y este es un error correspondiente al uso del servidor con una JDK superior.

Rutas de instalación del servidor OC4J

Las rutas de instalación por defecto del servidor OC4J son las siguientes:

  • En la ruta OC4J_10g_TRUNK/j2ee/home/applications/<nombre_aplicación>/APP-INFlib/, se pueden encontrar las librerías compartidas por todas las aplicaciones y que el servidor lo carga en su classpath.
  •  En la ruta OC4J_10g_TRUNK/j2ee/home/applications/<nombre_aplicación>/, ruta dónde se encuentra todas las aplicaciones desplegadas en el servidor.
  • En  la ruta OC4J_10g_TRUNK/j2ee/home/application-deployments/, se encuentra la CACHE de las aplicaciones (en generar se puede dejar vacía si quiere disponer más espacio libre).

Building a Project in Maven

mvn package   –  package is a phase ( ordered sequence of steps = phases ).

Default life cycle contains next building phases –> The Lifecycle Reference:

  • validate validate the project is correct and all necessary information is available

 

  • compile compile the source code of the project

 

  • test test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed

 

  • package take the compiled code and package it in its distributable format, such as a JAR.

 

  • integration-test – process and deploy the package if necessary into an environment where integration tests can be run

 

  • verify run any checks to verify the package is valid and meets quality criteria

 

  • install install the package into the local repository, for use as a dependency in other projects locally

 

  • deploy – done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

=========================================================================

Variables de Entorno para OC4J

Para realizar la instalación de un servidor de aplicaciones OC4J en un entorno Windows es necesario habilitar las siguientes variables de entorno para obtener una instalación correcta y estable.

La variables a definir son las siguientes:

J2EE_HOME
-Valor: <Directorio_Instalacion_OC4j>/OC4J_TRUNK/j2ee/home
-Descripción: Opcional. Acceso a los ficheros oc4j.jar y admin.jar. Estableciendo estas variables  podrán invocarse estos Jars des de cualquier directorio.
OC4J_JVM_ARGS
-Valor: -XX:PermSize=256m -XX:MaxPermSize=256m -Xms512m -Xmx768m

-Descripción:

Obligatoria. Pueden agregarse cualquier tipo de parámetros a la máquina virtual de Java al iniciar el servidor.  En el caso de ejemplo se aumenta la  memoria  reservada para el cargador de clases:

                 -XX:PermSize=256m -XX:MaxPermSize=256m
Y para la para la pila:
                 -Xms512m -Xmx768m
ORACLE_HOME
-Valor: <Directorio_Instalacion_OC4j>/OC4J_TRUNK 

Dentro del Path del sistema debe incluirse el siguiente valor:

                                  %ORACLE_HOME%bin;

permitiendo el arranque y parada del servidor des de la consola de comandos de Windows.

-Descripción:

Obligatoria. Apunta al directorio raíz de la instalación del OC4J.

Es obligatorio definir esta variable si se desea ejecutar un script ejecutable del servidor mediante el fichero OC4J.

Guía Rápida Maven

Descripciones de los términos más conocidos

  • ArtifactId: Identificador de un proyecto en Maven. Dentro del repositorio es la carpeta última contenedora de los ficheros de la librería
  • groupId: Grupo identificador asociado al proyecto. Un proyecto debe pertenecer obligatoriamente a un grupo
  • archetpe:create Comando para crear un proyecto Maven vacío
mvn archetype:generate 
    -DgroupId=com.mycompany.app 
    -DartifactId=my-app 
    -DarchetypeArtifactId=maven-archetype-quickstart 
    -DinteractiveMode=false
  • package: Permite generar un jar, war o web desplegada (opción exploded). Está formado por la versión del proyecto y por el indicador de la construcción.

Ejemplo:    1.0         –    SNAPSHOT
(versión)      (indicador de proceso de construcción)

NOTA: Sise utiliza la agrupación de los 2 se considera que es la VERSIÓN la que se debe indicar en la mayoria de referencias de Poms dependientes o jerarquizados.

 

Para obtener la versión de Maven instalada en el sistema en Windows se debe ejecutar el siguiente comando:

mvn -version

Aparecerá por pantalla la versión de Maven instalada en el sistema.

Dentro de Maven se crea un directorio siguiendo el esquema definido por el standard project structure de Maven. Se compone de los siguientes elementos:

my-app
|
|-- pom.xml
|
|-- src
     |-- main
     |   |-- java
     |       |-- com
     |           |-- mycompany
     |               |-- app
     |                   |-- App.java
     |-- test
         |-- java
             |-- com
                 |-- mycompany
                     |-- app
                         |-- AppTest.java

Dónde src/main/java contiene el código fuente del proyecto, src/test/java contiene el código fuente de test y el fichero pom.xml es el Project Object Model oPOM.

El POM es una representación XML de un proyecto Maven contenido en un archivo denominado pom.xml.  Este fichero puede contener información de la configuración del proyecto, de las personas involucradas y del rol rol que ejercen, del sistema de control de incidencias, la organización, licencias, URL dónde reside el proyecto, dependencias del proyecto y todas las piezas que dan sentido al código. En el mundo de Maven, un proyecto no necesita contener ningún tipo de código, simplemente un pom.xml.

Imágenes con atributos alt

En desarrollos donde se emplee el tag <img> para que aparezca correctamente el mensaje al pasar por encima el ratón, será necesario añadir también el atributo title.

En el siguiente enlace se puede comprobar cómo funciona correctamente:

 

En la documentación oficial del W3Schools no aparece el atributo title

Todo parece indicar que es una especificación del IE10. No he sido capaz de encontrar un enlace donde oficialmente reste documentada esta implementación específica.

Sin embargo se confirma que si se utilizan los dos atributos (alt y title) conjuntamente se muestra correctamente el tip allí donde se haya aplicado y al pasar el ratón por encima aparece el mensaje de texto correctamente.

Closing a Window in Internet Explorer (All Versions)

I found this unique solution that allows us to close a windows (the window not opened through Javascript) using the Javascript window.close() method in IE where IE throws a prompt like «The Webpage you are viewing is trying to close the window. Do you want to close this window?»

Due to the security enhancements in IE, we can not close a window unless it is opened by an script.

The way to solve this problem consists in letting the browser thinks that the page is opened using an script so we can close the window easily.

Below you can see the implementation of the code:

<script type=»text/javascript»>

          functioncloseWP() {
                   var Browser = navigator.appName;
                   var indexB = Browser.indexOf(‘Explorer’);
 
                   if (indexB > 0) {
                          var indexV = navigator.userAgent.indexOf(‘MSIE’) + 5;
                          var Version = navigator.userAgent.substring(indexV, indexV + 1);
                          if (Version >= 7) {
                                  window.open(», ‘_self’, »);
                                  window.close();
                         } else if (Version == 6) {
                                             window.opener = null;
                                             window.close();
                                  } else {
                                            window.opener = »;
                                            window.close();
                                 }
 
                   } else {
                     window.close();
                   }
           }

</script>

The original source of this code can be found in this link.