Code Monkey home page Code Monkey logo

project-li3's Introduction

Automatic testing Valgrind

Projeto LI3

Este projeto resultou no desenvolvimento de um programa para leitura e interpretação de três ficheiros de entrada: users.csv, drivers.csv e rides.csv.

A aplicação foi dividida em módulos que realizam as seguintes tarefas:

  • Parsing de dados
  • Interpretação de comandos
  • Armazenamento de informações em catálogos:
    • Usuários
    • Motoristas
    • Viagens
    • Estatísticas

Cada catálogo é responsável por armazenar informações relevantes dos ficheiros de entrada, enquanto o módulo de estatísticas permite relacionar os principais modelos e fornecer acesso rápido a dados e resultados.

Arquitetura do projeto

Diagrama

Relatórios

Requerimentos

  • glib2 para manipulação das coleções de dados;
Instalação
apt install gcc make libglib2.0-dev libgtk2.0-dev gdb valgrind -y

Utilização

cd trabalho-pratico/
make

Modo Batch:

./programa-principal <dir_with_csvs> <input_file_path> 

Modo Interativo:

./programa-principal
Exemplo de utilização
Enter dataset path: dataset
Number of drivers parsed: 10000
Number of users parsed:  100000
Number of rides parsed: 1000000
$ 1 SaCruz110
Santiago Cruz;M;31;3.200;5;50.340
$ 3 2    
Anita-PetPinto38;Anita-Petra Pinto;240
REsteves70;Raquel Esteves;234
$ 4 Braga
10.062
$ (Ctrl + D) 
Exit with success

Testagem

programa-testes:

make programa-testes
./programa-testes <dir_with_csvs> <dir_with_input_and_outputs>
Exemplo de output
Teste de desempenho - Parsing dos dados
Number of drivers parsed: 10000
Number of users parsed:  100000
Number of rides parsed: 1000000
Parsing data time: 4.11s

Teste de desempenho - Avaliação de queries
Query 1 | 0.00000075s | "1 SaCruz110"
Query 2 | 0.00000800s | "2 50"
Query 3 | 0.00000600s | "3 50"
Query 4 | 0.00000025s | "4 Braga"
Query 5 | 0.01275250s | "5 01/01/2021 01/02/2021"
Query 6 | 0.02461975s | "6 Porto 01/01/2021 01/02/2021"
Query 7 | 0.00000700s | "7 50 Lisboa"
Query 8 | 0.00283650s | "8 M 12"
Query 9 | 0.01340325s | "9 01/01/2021 01/02/2021"

Teste funcional - Validação de queries
command1_output.txt:	Pass ✔
command2_output.txt:	Pass ✔
command3_output.txt:	Pass ✔
command4_output.txt:	Pass ✔
command5_output.txt:	Pass ✔
command6_output.txt:	Pass ✔
command7_output.txt:	Pass ✔
command8_output.txt:	Pass ✔
command9_output.txt:	Pass ✔
command10_output.txt:	Pass ✔
command11_output.txt:	Pass ✔
command12_output.txt:	Pass ✔
command13_output.txt:	Pass ✔
command14_output.txt:	Pass ✔
command15_output.txt:	Pass ✔
command16_output.txt:	Pass ✔
command17_output.txt:	Pass ✔
command18_output.txt:	Pass ✔
command19_output.txt:	Pass ✔

malloc_stats
Arena 0:
system bytes     =  550182912
in use bytes     =  550137440
Total (incl. mmap):
system bytes     = 1071362048
in use bytes     = 1071316576
max mmap regions =         30
max mmap bytes   =  588943360

malloc_stats after freeing memory
Arena 0:
system bytes     =  550182912
in use bytes     =  259894208
Total (incl. mmap):
system bytes     = 1021255680
in use bytes     =  730966976
max mmap regions =         30
max mmap bytes   =  588943360

Debug

make debug
gdb ./programa-principal
valgrind ./programa-principal <dir_with_csvs> <input_file_path>

Time

command time -v ./programa-principal <dir_with_csvs> <input_file_path>

Memusage

memusage ./programa-principal <dir_with_csvs> <input_file_path>

project-li3's People

Contributors

migueltc13 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.