Skip to content

Módulo de gestión y carga de incidencias desarrollado en Spring boot. Arquitectura del Software. Universidad de Oviedo

License

Notifications You must be signed in to change notification settings

Arquisoft/InciManager_e3b

Repository files navigation

InciManager_e3b

Build Status Codacy Badge codecov Gitter

Módulo de gestión y carga de incidencias (equipo de prácticas @Arquisoft/course1718_e3b2).

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. La práctica consiste en la implementación de un sistema informático de análisis de incidencias (Incidence System_e3b) cuya estructura ha sido dividida en los siguientes módulos:

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/InciManager_e3b.git

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

incimanager_captura0 Captura de pantalla de la página de login (ver más sobre el diseño web en esta wiki):

Requisitos para ejecutar el proyecto

Configuración del servicio InciManager

Configurar los párametros necesarios en el fichero: resources/application.properties

### Service port (default: 8091):
server.port = 8091

### Comma-separated list of brokers to which the Kafka binder will connect 
### (default: localhost:9092):
spring.cloud.stream.kafka.binder.brokers=localhost:9092

###  Comma-separated list of ZooKeeper nodes to which the Kafka binder can connect 
### (default: localhost:2181):
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181

### Kafka topic for incidences (default: incidences):
kafka.topic = incidences

### Data source configuration:
spring.datasource.url = jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=changeit
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.driverClassName=org.postgresql.Driver

Inicio del servicio Apache Kafka

Si no se dispone de una instancia de Apache Kafka en ejecución, es posible descargar una versión ya compilada para Java desde su página oficial y lanzar el servicio manualmente (la distribución binaria de Apache Kafka requiere a su vez iniciar su propia instancia de Apache Zookeeper).

Inicio de Apache Kafka en MS-Windows

Ejecutar el fichero: 'doc/examples/incimanager-kafka-server-start.bat'

REM Start Apache Zookeeper server:
start "ZooKeeper" /D ".\bin\windows\" "zookeeper-server-start.bat" "..\..\config\zookeeper.properties"
REM Wait 10 seconds:
timeout 10
REM Start Apache Kafka server:
start "Kafka" /D ".\bin\windows\" "kafka-server-start.bat" "..\..\config\server.properties"

Inicio de Apache Kafka en GNU/LiNUX

Ejecutar el fichero: 'doc/examples/incimanager-kafka-server-start.sh'

# Start Apache Zookeeper server:
nohup bash -c "bin/zookeeper-server-start.sh config/zookeeper.properties &"
# Wait 10 seconds:
sleep 10
# Start Apache Kafka server:
nohup bash -c "bin/kafka-server-start.sh config/server.properties &"

Inicio del servicio InciManager

Situarse en el directorio de instalación y ejecutar:

mvn spring-boot:run

Una vez iniciado el servicio ya es posible acceder a través del navegador en la dirección: http://localhost:8091

Como probar el proyecto

Ejecución de las pruebas unitarias

Para ejecutar toda la bateria de pruebas:

mvn test

Para ejecutar una única prueba:

mvn -Dtest=InciManagerApplicationTests#testAgentModel test

Datos usuarios de prueba

Name Password Location Email Ident Kind
Paco González 123456 paco@gmail.com paco Person
Pepe Fernandez 123456 pepe@gmail.com pepe Person
Sensor_123 2018 123456 43.361368, -5.853591 admin@sensores.com sensor_123 Sensor
Ministerio medioambiente 123456 43.359486, -5.846986 ambiente@ministerio.com medioambiente Entity
Space X sensor model A 123456 33.921209, -118.327940 musk@spacex.com spacex Sensor

Ejemplo de incidencia en formato JSON

Disponible en el fichero: 'doc/examples/example-incidence.json'

{
  "username": "paco@gmail.com",
  "password": "123456",
  "kind": "Person", 
  "incidenceName": "Incidencia de prueba",
  "description": "Descripción de la incidencia de prueba",
  "location": "43.3582617,-5.8531647",
  "labels": [ "prueba", "sensor" ],
  "others": [ "file:///image.png", "file:///video.mkv"],
  "fields": { "temperatura": "21", "humedad": "75" },
  "status": "ABIERTA",
  "comments": [ "Primer comentario", "Segundo Comentario" ],
  "expiration": "2018-03-25T00:00:00+01:00",
  "cacheable": "true"
}

Ejemplo de envio de incidencia utilizando el servicio REST

curl -i -X POST -H "Content-type: application/json;charset=UTF-8" http://localhost:8091/addIncidence -d @example-incidence.json

Como consultar las incidencias enviadas a través de Apache Kafka

La incidencias enviadas mediante Kafka pueden ser consultadas utilizando la consola del consumidor por defecto que viene incluido en la instalación de Apache Kafka:

REM Start Apache Kafka Consumer:
start "Kafka Consumer" /D ".\bin\windows\" "kafka-console-consumer.bat" "--bootstrap-server" "localhost:9092" "--topic" "incidences" "--from-beginning"

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

Reconocimientos

Licencia del proyecto

El contenido completo de este proyecto esta licenciado bajo los terminos de la licencia: Unlicense. Los detalles completos de la licencia pueden consultarse en el fichero: LICENSE.