/Inci_e3b_modules

Experimental repository using gitmodules

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Inci_e3b_submodules

Test commit Daniel

Estado de la integración continua de los proyectos:

Módulo Demo
Loader e3b » Build Status Codacy Badge codecov GitHub issues
Agents e3b » Build Status Codacy Badge codecov Gitter GitHub issues Abrir »
InciManager_e3b » Build Status Codacy Badge codecov Gitter GitHub issues Abrir »
InciDashBoard_e3b » Build Status Codacy Badge codecov Gitter GitHub issues Abrir »

Sistema informático de gestión de incidencias. Equipo de prácticas @Arquisoft/course1718_e3b.

Este proyecto ha sido desarrollado como práctica de la asignatura Arquitectura del Software perteneciente al tercer curso del Grado en Ingeniería Informática del Software impartido en la Escuela de Ingenieria Informática (EII) de la Universidad de Oviedo durante el curso 2017/2018.

Tabla de Contenidos

Como instalar el proyecto

Requisitos de instalación

  • Máquina virtual de Java: OpenJDK (versión: >= 1.6).
  • Sistema de control de versiones: GIT (versión: >= 2.16).
  • Herramienta de construcción de proyectos: Apache Maven (versión: >= 3.5).

Obtención del código fuente

Descarga la última versión del codigo fuente desde el repositorio oficial del proyecto:

git clone https://github.com/Arquisoft/Inci_e3b_modules.git --recurse-submodules

Los 4 repositorios incluidos como submódulos, hacen referencia a un commit del repositorio original. Para actualizar la referencia de cada módulo a la última versión, hay que ejectuar desde el directorio raiz del repositorio la siguiente orden:

git submodule foreach git pull origin master

También se puede ejecutar el archivo update_modules.bat, que contiene la orden anterior.

Instalación de las dependencias

Situarse en el directorio de descarga del código fuente y ejecutar:

mvn clean install

Reinstalación de las dependencias

En caso de ser necesario es posible purgar el repositorio local con las dependencias del proyecto ejecutando:

mvn dependency:purge-local-repository clean install -U

Como ejecutar el proyecto

Requisitos para ejecutar el proyecto

Despliegue automático mediante contenedores Docker

Si se dispone de una instancia de Docker ya instalada, es posible desplegar automáticamente todos los servicios necesarios utilizando la herramienta de orquestación de contenedores Docker-Compose. Para ello, basta con situarse en el directorio raiz del proyecto (donde se encuentra el fichero docker-compose.yml) y ejecutar en la consola:

docker-compose up

De forma opcional, es posible combinar al despliegue anterior diversos contenedores auxiliares destinados a gestionar y supervisar el funcionamiento de dichos servicios:

docker-compose -f docker-compose.yml -f docker-compose.management.yml up

Una vez desplegado, cada contenedor es accesible a través del puerto correspondiente del servidor Docker donde se ejecutan dichos contenedores (en el caso de tratarse de la misma máquina, puede sustituirse por la combinación: localhost:puerto):

CONTENEDOR DIRECCIÓN FICHERO
postgres postgres:5432 docker-compose.yml
zookeeper zookeeper:2181 docker-compose.yml
kafka kafka:9092 docker-compose.yml
pgadmin4 pgadmin4:5433 docker-compose.management.yml
kafka-manager kafka-manager:9000 docker-compose.management.yml

IMPORTANTE: En el caso de utilizar Docker Compose con Docker Toolbox/Machine en MS-Windows, es necesario establecer primero la variable de entorno COMPOSE_CONVERT_WINDOWS_PATHS=1 antes de poder ejecutar con exito docker-compose (breaking changes 1.9.0 (2016-11-16)).

Para detener la ejecución de todos los servicios de forma interactiva es suficiente con la combinación de teclas Ctrl+C o en su defecto, ejecutando la orden:

docker-compose down

Para eliminar en MS-Windows todos los objetos creados en Docker y reiniciar el despliegue desde cero puede ejecutarse la siguiente secuencia de ordenes (disponibles en el fichero por lotes: 'bin/docker-remove-objects.bat') :

@echo off
REM Stop all containers: 
docker ps
FOR /f "tokens=*" %%i IN ('docker ps -aq') DO docker container stop %%i 
REM Remove all container:
docker container ls
FOR /f "tokens=*" %%i IN ('docker ps -aq') DO docker container rm %%i 
REM Remove all volumes:
docker volume ls
FOR /f "tokens=*" %%i IN ('docker volume ls -q') DO docker volume rm %%i 
REM Remove all networks:
docker network ls
FOR /f "tokens=*" %%i IN ('docker network ls -q') DO docker network rm %%i 
REM Remove all images:
docker image ls
FOR /f "tokens=*" %%i IN ('docker images --format "{{.ID}}"') DO docker rmi %%i
pause

Despliegue manual

Para arrancar todos los servicios (incluida la base de datos) hay que ejecutar el fichero batch execute_modules.bat.

Este fichero batch lleva a cabo las siguientes acciones:

  1. Elimina los ficheros temporales de kafka (topics, logs etc...) para evitar colisiones y logs corruptos durante la ejecución
  2. Ejecuta una instancia la base de datos HSQLDB
  3. Inicia Apache Zookeeper y Apache Kafka
  4. Finalmente ejecuta los módulos de Agentes, InciManager e InciDashboard, para así poder testear la funcionalidad completa.

Capturas de pantalla

Algunas imagenes de la página de login de los módulos Agents, InciManager e InciDashboard (se puede ver más información la wiki: Interfaz de usuario - capturas de pantalla:

  • Agents: Interfaz Agents
  • InciManager: incimanager_captura0
  • InciDashboard: incidashboard_captura0

Como probar el proyecto

Ejecución de las pruebas de aceptación de usuario (User Acceptance Tests)

Para ejecutar exclusivamente el conjunto de pruebas de aceptación dentro de la fase verify de Maven (e independientemente del resto de pruebas de integración), puede hacerse ejecutando:

mvn -Dit.test=AcceptanceTests verify 

Si además se quiere limitar la ejecución a una caracteristica (feature) concreta del conjunto de caracteristicas disponibles en el directorio src/test/resources/features/:

mvn -Dit.test=AcceptanceTests \
    -Dcucumber.options="src/test/resources/features/autenticacion.feature"\
    verify

Opcionalmente tambien es posible limitar la ejecución al conjunto de escenarios etiquetados por una o varias etiquetas:

mvn -Dit.test=AcceptanceTests -Dcucumber.options="--tags @qa_ready,@login" verify

Concluida la ejecución de las pruebas es posible consultar el resultado de las mismas en el fichero de salida: ${project.build.directory}/cucumber/index.html

Como contribuir al proyecto

La información completa sobre como contribuir al proyecto: código de conducta, flujo de trabajo, etc, puede consultarse en el fichero CONTRIBUTING.md.

Creditos del proyecto

Contribuidores

Contribuidor Usuario GitHUB Grupo prácticas
Diego Álvarez Guinarte <uo251682(AT)uniovi.es> @Diego_Sh @Arquisoft/course1718_e3b1
Manuel Junco Diez <uo252010(AT)uniovi.es> @UO252010 @Arquisoft/course1718_e3b1
Pablo Gonzalez Martinez <uo245699(AT)uniovi.es> @pablosky5 @Arquisoft/course1718_e3b1
Ivan Suarez Castiñeiras <uo244730(AT)uniovi.es> @UO244730 @Arquisoft/course1718_e3b1
Miguel Martínez Serrano <uo237030(AT)uniovi.es> @miguelms95 @Arquisoft/course1718_e3b2
José Antonio Marín Álvarez <uo212006(AT)uniovi.es> @TonyMarin @Arquisoft/course1718_e3b2
Daniel Martínez Valerinao <uo252438(AT)uniovi.es> @Gemeto @Arquisoft/course1718_e3b2
Kilian Pérez González <uo21504(AT)uniovi.es> @kilianpg @Arquisoft/course1718_e3b2
Andrés Ángel González Granda <uo68216(AT)uniovi.es> @AndresAngelGG @Arquisoft/course1718_e3b2

Reconocimientos

Licencia del proyecto

El contenido completo de este proyecto esta licenciado bajo los terminos de la licencia: GNU General Public License v3.0. Los detalles completos de la licencia pueden consultarse en el fichero: LICENSE.