This repository contains a front end developed in Angular 5 and a back end developed in Spring. Each project has its own README so if you want more information, read them:
- Front end: Developed by using the latest version of Angular 5 and Angular CLI (managed by NPM), the GUI contains a complete functionality to create and delete projects, manage projects (by adding or deleting the executions which are displayed on them) and to compare the logs of each execution. You can access to the readme by clicking here.
- Back end: Developed by using the latest version of Spring 3 as a Spring Boot project, this project contains a complete API REST to post, get and delete projects, executions and logs. It is really important for the new users to follow the guidelines exposed in this document.
- Elasticsearch: The dockerized instance of Elasticsearch that I've used in the develop process is accessible for you if you want to download it.
- Docker: The whole app is dockerized and if you want to try and run it the only thing that you need is the content of the
docker-compose.yml
file. If you want to run the whole project, follow these steps:- Open the
docker
directory and the file which is inside of it and which name isdocker-compose.yml
. - Copy or download it and save it in your Desktop (for example).
- Open your cmd (don't care about if you use Windows, Linux or other OS) and navigate inside the directory where you saved the file.
- Run
docker-compose up
. - Wait few seconds. Once all the services has started, you can:
- Access to the GUI at
http://localhost:4200
. - Access to the API REST at
http://localhost:8443
. - Access to the Elasticsearch instance at
http://localhost:9200
. - Access to the Kibana instance at
http://localhost:5601
(useful if you want to make any analysis of the data that you ingest through the application).
- Access to the GUI at
- Open the
The other way to start this tool is to download the whole project and to run each element separately:
- In the case of the Angular project:
- Open a cmd and access to the
testloganalyzer-gui
directory. - Run
ng serve
ornpm start
. - TestLogAnalyzer GUI will be avaible at
http://localhost:4200
.
- Open a cmd and access to the
- Download a instance of Elasticsearch compatible with the client that I have made (2.4.6) and run it.
- In the case of the Spring project:
- Open a cmd and access to the
testloganalyzer\target
dorectory. - Run
java -jar -Dspring.profiles.active=dev testloganalyzer-5.0.0.jar
. - TestLogAnalyzer API REST will be avaible at
http://localhost:8443
.
- Open a cmd and access to the
And that's it! The project is running.
Once the project is running, you can create, delete and compare executions, logs and projects. If you access inside the project creation page or adding a new execution page, you have to know that both the .txt files and the .xml files must be updated at once, because you can't modify the execution later. If you use the upload by url way, you only can upload a single .txt and .xml file. The files are uploaded in order of selection (so the best practise is to upload the files in order of creation, that is, the newer before than the older).
TestLogAnalyzer allows you to inject your executions from the CI environments that you are using with cURL requests. The request format is:
curl -F test1.txt -F test2.txt ... -F testN.txt -F surefire1.xml -F surefire2.xml ... -F surefireN.xml http://localhost:8443/api/projects/{project}
TestLogAnalyzer works with the following format %d{yyyy-MM-dd hh:mm:ss.SSS} %5-level --- [%t] &logger{36} : %m%n
. In the table below, you can see, in case that you don't know, what each component means:
Component | What does it mean? |
---|---|
%d | Timestamp following the format yyyy-MM-dd HH:mm:ss.SSS. |
%-5level | Level of logging event. |
[%t] | Thread identifier between square brackets. |
%logger{36} | Name of the logger at the origin of the logging event (name class and package). |
%m%n | Log message. |
- https://ag-grid.com/javascript-grid-properties - Grid properties.
- https://qbox.io/blog/parsing-logs-using-logstash - Parsing logs using Logstash.
- https://elastic.co/guide/index.html - Getting started guide, API, Pagination and Kibana requests (filtering, ranges, POST and GET requests).
- http://jupyter.org/ - Getting started guide, kernels and design.
- https://developer.mozilla.org/es/ - Date type in TypeScript language and CORS disable for Elasticsearch requests, HTMLElement API, RegExp.
- https://typescriptlang.org/docs/home.html - Looking for TS simple and complex types.
- http://getbootstrap.com/css/ - Bootstrap CSS and components guidelines.
- https://teradata.github.io/covalent - Teradata Covalent library.
- https://github.com/elastest/elastest-torm/tree/master/elastest-torm-gui/src/app/elastest-log-manager - Example of Covalent usage.
- https://github.com/Teradata/covalent-quickstart - Teradata Covalent quickstart.
- https://material.angular.io/ - Angular 2 Material Design guidelines.
- http://codingpedia.org/ - Logging with SLF4J and Logback.
- https://dzone.com/ - JUnit, Logback, Maven with Spring.
- https://logback.qos.ch - Logback manual and format guidelines.
- https://docs.spring.io/ - Spring Boot features (logging), Spring Data.
- https://www.mkyong.com/ - Sping Boot, Spring Data and Elasticsearch.
- http://books.sonatype.com - Maven CMD options.
- https://beginnersbook.com/ - String to Date, Date to String Java 8 documentation.
- http://codemirror.net/ - Requirements.
- http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - An O(ND) Difference Algorithm and Its Variations (1986).
- https://github.com/GerHobbelt/google-diff-match-patch - Google Diff Match Patch: Universal Algorithm.
- https://code.google.com/archive/p/google-diff-match-patch/ - Google Diff Match Patch by Neil Fraser.
- https://scotch.io/ - Dockerize Angular 4 app.
- https://docs.docker.com/ - Dockerizing apps, update tags and images to Docker Hub, Docker Compose.
- https://dpopescu.me/ - Dockerfile content in Angular 4 app.
- https://github.com/taskrabbit/elasticsearch-dump - ElasticDump (moving and saving indices).
- https://khanhicetea.com/ - Backup, add and restore Elasticsearch with Docker.
- https://elk-docker.readthedocs.io/ - Dockerized ELK Stack.
- https://jaxenter.com/ - Sharing Docker volumes across the Internet.
- https://martinfowler.com/ - Refactoring with loops and collection pipelines.
- https://forum.freecodecamp.org/ - NPM behind a proxy server.
- https://www.quora.com/ - Reducing code complexity.
- https://www.jhipster.tech/ - Configuring a corporate proxy.
- https://auth0.com/blog/whats-new-in-angular5/ - Angular 5 updated.
- https://docs.travis-ci.com/ - Pull requests and security restrictiosn.
- http://blog.ninja-squad.com/ - Migrating Http module from Angular 4 to Angular 5.
- https://codecraft.tv/ - HTTP with Observables in Angular 5.
- https://angular.io/ - Angular 4 and 5 API.
- https://github.com/bill-long/angular-rich-text-diff - Google Diff-Match-Patch.
- https://www.w3schools.com/angular/ - AngularJS modules.
- http://www.damirscorner.com/ - Angular await and async requests.
- https://medium.com/@alecwazzy - Angular Promises for async requests.
- https://docs.oracle.com/javase/8/docs/api/ - Java REGEX
- https://github.com/compodoc/compodoc - Compodoc
Element | TestLogAnalyzer needs it because... | Official site |
---|---|---|
Angular 5 | App development framework | https://angular.io/ |
Angular Material | Material Design components for Angular | https://material.angular.io/ |
Angular-CLI | Command line interface for Angular | https://cli.angular.io/ |
NgBootstrap | Bootstrap components for Angular | https://ng-bootstrap.github.io |
CircleCI | Continuous Integration and Delivery | https://circleci.com/ |
CODEBEAT | Automated code review for the browser | https://codebeat.co |
CodeMirror | Text editor for the browser | https://codemirror.net/ |
Code Climate | Code quality test | https://codeclimate.com/ |
Compodoc | Missing documentation tool for Angular app | https://compodoc.github.io/website/ |
Docker | Project packaging and virtualization | https://www.docker.com/ |
Docker Compose | Tool for running multi-container Docker apps | https://docs.docker.com/compose/ |
Elasticsearch | Search, indexing and analytics data engine | https://www.elastic.co/products/elasticsearch |
Github | Software development platform | https://github.com/ |
Java | Programming language (ES client and log generator) | https://www.java.com |
Kibana | ES Data visualization and ES Stack navigation | https://www.elastic.co/products/kibana |
Maven | Software project management and comprehension tool | https://maven.apache.org/ |
Node.js | JavaScript run-time Environment | https://nodejs.org/es/ |
NPM | Package manager for JavaScript | https://www.npmjs.com/ |
Postman | API Development Environment | https://www.getpostman.com/ |
Spring | Application development Framework | https://spring.io/ |
Spring Tool Suite | Eclipse-based development environment | https://spring.io/tools |
Teradata Covalent | Teradata UI Platform for Angular | https://teradata.github.io/covalent/ |
Travis CI | Code testing and deploying tool | https://travis-ci.org/ |
TypeScript | Programming language (Angular app) | https://www.typescriptlang.org/ |
Webstorm | JavaScript IDE | https://www.jetbrains.com/webstorm/ |