lunes, 19 de julio de 2010

Arwinss: Arwinss VS Win32Ros (I)

 

RobHalford_Fight_logo Hasta ahora la manera de comparar la mayor o menor compatibilidad de Arwinss respecto a Win32Ros consistía en instalar y ejecutar aplicaciones. O lo que es lo mismo, un estudio cualitativo de Arwinss.

El equipo del “Blog de ReactOS” ha realizado en primicia un completo estudio cuantitativo y comparativo entre Arwinss y Win32Ros. Los números no mienten:

6 horas de testeo y recopilación de información.

Casi 10.000.000 de tests.

 

¿Quién pasará mas tests: Arwinss o Win32Ros? ¿Quién será,por tanto, más compatible?

¿Descubrirá este estudio algún punto débil de Arwinss?

¿Encontraremos algún resultado inesperado?

Tras el salto podréis ver la primera parte de  este primer estudio comparativo entre Win32Ros y Arwinss, donde se demuestran las virtudes y los defectos de ambos subsistemas.

Un estudio realizado en primicia por el equipo de “El Blog de ReactOS” y que no podréis encontrar en ningún otro lugar.

La verdad de Arwinss al descubierto.

 

¿Que son los  Winetests ?

 

winehq_logo_glass Los Winetests son pequeños tests cuya misión es comprobar que la implementación de las APIs es correcta. Para ello compara el resultado devuelto por la API con el que devolvería Windows.Si ambos resultados coinciden,el test se considera pasado,de lo contrario, el test es fallido.

Los Winetests son creados por el proyecto WINE con el fin de testear las APIs desarrolladas por ellos; sin embargo su concepción es independiente del Sistema Operativo, y de hecho los Winetests son utilizados por ReactOS(Win32Ros) para evaluar su nivel de compatibilidad.

En la actualidad se testean sobre ReactOS más de 10 millones de Winetests ( las cuales están subdivididas en “Suites” ) por lo que estadísticamente los resultados de compatibilidad son bastante fiables.

De la misma manera que ReactOS(Win32Ros) y Wine comprueban su nivel de compatibilidad con estos Winetests, el equipo de “El Blog de ReactOS” ha decidido correr dichos Winetests sobre ReactOS (Arwinss) con el objetivo de comparar los resultados entre ambos subsistemas.

Esta es la primera vez que se corren estos tests sobre Arwinss.

 

 

Consideraciones Previas

 

Arwinss y Win32Ros pueden parecer muy diferentes, sin embargo comparten gran cantidad de código. Los resultados más interesantes se obtendrán en aquellas áreas donde Arwinss y Win32Ros aborden la codificación de sus APIs de manera radicalmente diferente.

Estas áreas ( o Suites de testeo ) son: User32, comctl32, gdi32

Y en menor medida: Kernel32

Aunque el estudio se ha realizado de todas las Suites ( y que publicaremos próximamente), aquí nos centraremos en estas 4, ya que son los elementos diferenciadores de compatibilidad.

 

Crashed Suites

 

warning Tanto Win32Ros como Arwinss sufren las denominados “Crashed Suites”. En cada Suite se testean decenas de Winetests(en algunas Suites incluso millones), si alguno de ellos consigue bloquear el Sistema Operativo  entonces la Suite se cuelga y es considerada como CRASHED.

Hasta que no se testean todos los Winetests de una Suite no podemos conocer cuantos han fallado o cuantos han sido correctos, por lo tanto si la Suite se cuelga antes de finalizar, no nos informará del numero de tests realizados y fallidos. Es una limitación del proceso de testeo. Por ello el resultado de testeo (de esa suite) se marca como “Crashed” sin indicar el número de tests fallidos.

Hay formas de evitar que una Suite se cuelgue y sea marcada como “CRASHED”, por ejemplo eliminando el Winetest que provoca el cuelgue de la Suite. De esta manera la Suite termina correctamente y nos indica cuantos Winetests han sido testeados y (de esos) cuantos han sido fallidos.

A ReactOS(Win32Ros) se le han añadido varios HACKS para evitar el cuelgue de varias de sus Suites. Esto nos permite llegar hasta el final y obtener información muy valiosa del resto de los winetests de la Suite.

Sin embargo, aún no se han añadido estos hacks al código de Arwinss. Esto provoca que varias Suites se cuelguen en Arwinss mientras que no lo hacen en Win32Ros. Por ello hemos sido benevolentes con Arwinss,ignorando las Suites que se cuelgan en Arwinss pero que funcionan en Win32Ros(debido, en parte, a estos Hacks).

Como comprobaréis,realizando el estudio nos hemos encontrado que Arwinss no se cuelga en ciertas Suites en las que sí se cuelga Win32Ros. Teniendo en cuenta que no se han añadido hacks a Arwinss, y que Win32Ros es un sistema estable(y no en desarrollo como lo es Arwinss) , hemos optado por no eliminar las Suites en las que Win32Ros se cuelga y en las que Arwinss no lo hace. Puede sonar bastante estricto, pero si Arwinss no se cuelga en una Suite (y sí lo hace Win32Ros) es debido a méritos propios y tiene que ser valorado.

 

 

Tests Dependientes

 

chain1 En los Winetests aparece el concepto de Test Dependientes. A veces fallar un test implica que varios cientos de tests no son ejecutados por tener una dependencia directa.Un ejemplo: Supongamos que Win32Ros es incapaz de crear una ventana, entonces es inútil (y peligroso) hacer tests de minimizado, maximizado o de trasladado de una ventana “inexistente”. Estos tests son dependientes del anterior (“crear ventana”) y por lo tanto no son ejecutados.

Esto explica porqué el número de tests ejecutados por una misma Suite en Win32Ros y Arwinss puede ser totalmente diferente.

 

 

Interpretación de las gráficas

 

Cada Suite está dividida en SubSuites. Por ejemplo: La Suite GDI32 está dividida en las Subsuites GDI32:FONT, GDI32:BITMAP (entre otras).

Cada Subsuite es testeada, y son representados 4 valores: El número de tests ejecutados en Arwinss (Azul oscuro) , el número de tests ejecutados en Win32Ros (Azul claro) , el número de tests fallados en Arwinss (Rojo oscuro), el número de tests fallados en Win32Ros (Rojo claro).

Con el fin de resaltar las diferencias entre Arwinss y Win32Ros, se ha creado una segunda gráfica, una gráfica relativa. Esta segunda gráfica muestra las diferencias de Arwinss respecto a Win32Ros en cada SubSuite. Ejemplo: Si en Arwinss se ejecutan 10000 tests y en WIn32Ros se ejecutan 9800, en la gráfica relativa se representará la diferencia (200). Si el valor es positivo(200) indica que en Arwinss se han ejecutado 200 tests más que en Win32Ros. Si el número fuese negativo indica que en Arwinss se han ejecutado menos tests que en Win32Ros. Cuantos más tests se ejecuten mucho mejor.

Además en esta gráfica también se comparan los Tests fallidos (también de manera relativa). Ejemplo: Si en Arwinss fallan 100 tests y en Win32Ros fallan 150 tests, en la gráfica se representará la diferencia(-50). Si el valor es negativo (-50) indica que Arwinss falla menos que Win32Ros.De hecho falla en 50 tests menos.

 

Hasta aquí la primera parte de este Estudio.

Mañana publicaremos los resultados… ;)

8 comentarios:

  1. Espero que aparte las "consideraciones previas", mañana pongais un apartado de "conclusiones", porque parece que va a tener miga interpretar las gráficas de resultados.

    Un saludo y buen trabajo!

    ResponderEliminar
  2. ¡Wow! Impresionante. Muchas gracias por vuestra dedicación en la realización de todas estas pruebas. En verdad no tienen precio. Supongo que algún "report" le habréis enviado a los desarrolladores después de todo este trabajo.

    Espero impaciente vuestros resultados.

    ResponderEliminar
  3. Buenas mcklaw..
    Hemos dividido en tres partes este estudio debido a la monstruosa cantidad de información que proporciona. Por ello hemos creado varias gráficas para cada SubSuite y ahora andamos liados interpretando lo que quieren "decirnos". Mañana publicaremos la segunda parte con las interpretaciones y contenido extra :)
    Gracias por seguirnos

    ResponderEliminar
  4. Muy buenas Angelus,
    Hace un par de días mandamos a Fireball el resultado de las pruebas en una hoja tipo excel. Algunos resultados son bastantes interesantes, pero no quiero desvelar sorpresas ;)
    Ahora estamos creando las gráficas comparativas y mañana tendréis la segunda parte disponible.
    Esperamos que os guste y que de manera cuantitativa podáis comparar ambos Subsistemas.
    Gracias por seguirnos...

    ResponderEliminar
  5. La(s) grafica(s) se mostrarán mañana.Aún estamos liados con ellas :)

    ResponderEliminar
  6. [...] publicamos la primera parte del estudio comparativo entre Arwinns y [...]

    ResponderEliminar
  7. [...] el 28/07/2010 a las 01:20 AM Etiquetas: API arwinss win32ros WINE Ayer publicamos la primera parte del estudio comparativo entre Arwinns y [...]

    ResponderEliminar