¡No te olvides de las pruebas unitarias! Sobre todo si tu jefe es un tirano…

Un divertido video en el que un jefe de proyecto no precisamente razonable se toma bastante mal que su equipo ‘pase’ de las pruebas unitarias… Los subtitulos están en inglés, pero se entiende…

Estoy por subcontratarle solo para las broncas… jejejeje…

Por cierto para darle un toque de seriedad a post, os recomiendo que no os perdáis la charla de Ibon Landa en Second Nug sobre pruebas unitarias, he hablado con gente que la ha visto presencialmente en Santander y me han hablado muy bien. Y pensar que no inicializaba los punteros cuando llego a Panda a currar conmigo… ;P

¡Saludos!

Subcripciones a eventos de Team Foundation Server con facilidad

Una de las múltiples vías que tenemos para extender e integrar nuestro TFS con otras aplicaciones existentes en nuestra organización es poner un servicio web a escuchar los eventos que se producen en nuestro TFS. Podemos escuchar eventos relacionados con ‘work items’, el gestor de fuentes o el servicio de builds. Básicamente lo que tenemos que hacer es crear un servicio que exponga un método con la siguiente firma:

    [WebMethod]

    [SoapDocumentMethod("http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify", RequestNamespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]

    public void Notify(string eventXml, string tfsIdentityXml)

Luego registraremos la url en la que el servicio escucha las notificaciones de TFS utilzando el clásico BisSuscribe.exe o, para aquellos que le tengan más miedo a la línea de comandos, usando Team Fondation Event Subscription Tool.

Nada que no podáis leer en cientos de sitios… la película se complica cuando, una vez subscrito el servicio, tenemos que acceder a la información sobre el evento que se a producido, que recibimos en ¡un string que contiene xml!. Pues bien, la buena noticia es que los esquemas de los eventos son públicos (se pueden encontrar en el directorio Web ServicesServicesv1.0Transforms dentro del directorio de instalación de nuestro TFS (tìpicamente C:Program FilesMicrosoft Visual Studio 2008 Team Foundation Server). Así podemos usar XSD.exe para crear una clase a partir del esquema, esta clase nos permitirá deserializar un objeto a partir del string XML que recibimos en los parámetros eventXml y  tfsIdentityXml…

Vamos que es un proceso factible pero tedioso. Menos mal que Howard van Ronijen se ha molestado en crear una plantilla de proyecto que nos facilita la labor. Podéis descargarla desde su sitio en Codeplex.

TFS Notification Web Service Project Template

Una vez instalada esta plantilla en nuestro Visual Studio, podemos crear el esqueleto de un nuevo proyecto orientado a consumir los diferentes eventos que TFS expone y además ¡se a molestado en crear las clases para deserializar el XML de notificación de todos las posibles notificaciones! Así es facilísimo interpretar la información que TFS nos envia en la notificación del evento, tal y como podéis ver en el siguiente ejemplo:

    [WebMethod]

    [SoapDocumentMethod("http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify", RequestNamespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]

    public void Notify(string eventXml, string tfsIdentityXml)

    {

        BuildCompletionEvent buildCompletionEvent = this.CreateInstance<BuildCompletionEvent>(eventXml);

        TFSIdentity tfsIdentity = this.CreateInstance<TFSIdentity>(tfsIdentityXml);

    }

Por ejemplo para el evento generado cuando se completa una build contariamos con las siguientes clases para manejar la información recibida como string XML en los parámetros de evento:

TFS Event ClassDiagram 

Vamos, que no puede ser más simple consumir eventos de TFS. Lo que hagáis con ellos, queda a vuestra imaginación.

¡Un saludo!

Presentación: Almacenamiento de datos en la nube

El pasado día 16 de Abril participe en un evento para ISVs dentro del programa Metro de Microsoft. El programa Metro es un programa de apoyo a la adopción de nuevas tecnologías de Microsoft por parte de ISVs.

En este evento hablé sobre las posibilidades que la plataforma en la nube de Microsoft plantea a la hora de almacenar datos. Especial interés despertaron los recientes cambios en Sql Server Data Services y se plantearon bastantes preguntas sobre las diferentes opciones con las que contamos y cuando es mejor utilizar una u otra.

Azure Metro Training - Datos en la nube

Os dejo la presentación que utilicé durante el evento por si es de utilidad.

¡Un saludo!