IngressoNet é um modelo de sistema de venda de ingressos. O projeto está em desenvolvimento para a matéria Técnicas de Programação 1 do CIC/UnB. O sistema deve funcionar com uma arquitetura em camadas para vender ingressos para partidas locais, regionais, estaduais, nacionais e internacionais. OS usuários podem criar e administrar até 5 partidas simultaneamente e podem se descadastrar quando necessário, exceto enquanto administram alguma partida.
O sistema foi desenvolvido utilizando o framework Qt e depende de uma instalação do docker e docker-compose para execução. Veja as notas de deploy para instruções de como fazer o deploy do sistema para produção.
O código foi desenvolvido utilizando o framework Qt 5, para instalá-lo no linux, acesse o site oficial ou siga os passos abaixo(disponíveis em Install Qt 5 on Ubuntu) para instalar pelo terminal. É recomendada a instalação do Qt creator por meio do download do site oficial.
Baixe o instalador
wget http://download.qt.io/official_releases/qt/5.13/5.13.2/qt-opensource-linux-x64-5.13.2.run
Forneça permissão para execução, execute o instalador e siga os passos para concluir a instalação
chmod +x qt-opensource-linux-x64-5.13.2.run
./qt-opensource-linux-x64-5.13.2.run
Instale o compilador g++
sudo apt-get update
sudo apt-get install build-essential
Caso você utilize alguma distribuição de arch, o comando para instalação do g++ será o seguinte.
sudo pacman -Sy base-devel
Isto deve ser o suficiente para iniciar o QtCreator. Caso seja necessário, configure o compilador, instale as bibliotecas de OpenGL e associe arquivos .pro ao QtCreator. Para mais informações, acesse a documentação do Qt.
Para instalar o docker no ubuntu, atualize os pacotes e instale o pacote docker.io
sudo apt-get update
sudo apt-get install docker.io
Caso utilize uma distribuição de arch, utilize o comando abaixo
sudo pacman -Sy docker
Inicie o daemon
sudo systemctl start docker
Caso queira iniciar o docker sempre que o computador iniciar, ative o serviço na inicialização
sudo systemctl enable docker
Para testar a instalação, rode o seguinte comando:
docker --version
Obs: pode ser necessário utilizar sudo.
Para evitar utilizar sudo sempre, adicione seu usuário ao grupo do docker
Crie o grupo, caso não exista
sudo groupadd docker
Adicione o seu usuário ao grupo
sudo usermod -aG docker $USER
É necessário reiniciar o computador para reavaliar os grupos. Para ativar sem reiniciar(válido apenas na sessão atual do terminal), utilize o comando abaixo
newgrp docker
Para instalar o docker compose em uma distribuição arch, utilize o comando abaixo.
sudo pacman -Sy docker-compose
Caso utilize Ubuntu, siga os passos abaixo
Faça download do binário do docker compose na pasta /usr/local/bin
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Quando o download for concluído, altere as permissões do arquivo para executá-lo
sudo chmod +x /usr/local/bin/docker-compose
Teste a instalação utilizando o comando versão
docker-compose --version
Foram utilizadas as seguintes ferramentas para a elaboração da documentação do projeto:
- Diagramas UML: Astah UML 8.1.0/3ac74f
- Modelo do Banco de Dados: MySQL Workbench 8.0.17
- Documentação do código: Doxygen 1.8.16
Uma série de exemplos passo a passo que ensinam a configurar um ambiente de desenvolvimento irão aqui.
Diga o que será o passo
Dê o exemplo
E repita
Até acabar
Termine com um exemplo de um teste rápido do sistema
Para rodar os testes unitários, na barra inferior do QtCreator, abaixo dos logs, procure a opção "8 Test Results" e a selecione. Em seguida, clique no play verde para executar todos os testes.
Você deve ver em seguida o resultado da execução dos testes.
Caso deseje executar os testes unitários sem instalar o QtCreator, será necessário ter o Qt e o qmake instalados. Depois de instalá-los seguindo os passos na seção inicial desse README, siga os passos abaixo:
Primeiro, crie um diretório na raiz do projeto para a build e entre no diretório
mkdir build && cd build
Em seguida, rode a ferramenta de qmake para criar os makefiles
qmake ../test/test.pro
Depois do qmake terminar, rode make para compilar. No parâmetro j, ajuste o valor para o dobro de núcleos do seu processador.
make -j8 && make clean -j8
Em seguida, você pode acessar as pastas de cada teste e executar o teste como o seguinte exemplo para Cartao:
cd Cartao && ./testecartao
Pronto, você verá a saída dos testes no terminal.
Utilizamos o framework QTest do Qt para automatizar os testes unitários utilizando testes dirigidos por dados. Para criar testes, adicione os testes como slots na classe Testes<CLASSE>
em que deve ser substituído pela classe/funcionalidade a ser testada. O nome do arquivo que contém esta classe deverá ser idêntico ao dela, porém escrito com todas as letras minúsculas.
Essa classe deve estar em uma pasta com o nome dentro da pasta test do projeto. Para o nome da pasta deve ter a primeira letra maiúscula.
Além da classe de teste, devemos incluir um arquivo .pro com o seguinte conteúdo(Todas as ocorrências de são com letras minúsculas):
CONFIG += testcase
TARGET = teste<CLASSE>
QT = core testlib
SOURCES = \
teste<CLASSE>.cpp \
../../src/<arquivos-a-serem-testados>.cpp
INCLUDEPATH += ../../src
Em seguida, abra o arquivo test/test.pro e adicione a seguinte linha logo abaixo do último subdir:
<CLASSE> \
Para mais informações sobre como criar testes unitários dirigidos por dados, confira os tutoriais disponíveis em QTest, criando testes unitários e QTest, testes dirigidos por dados
Explicaremos o que é testado e porque
Dê um exemplo
Adicionaremos notas para deploy para produção conforme o trabalho for desenvolvido.
Nosso banco de dados será executado em uma imagem do Docker no servidor local. O arquivo docker-compose.yml, junto com o db/Dockerfile descrevem nosso container e contém todas as configurações necessárias. Caso queira alterar informações como usuário ou senha, edite a seção environment
do arquivo docker-compose.yml como descrito abaixo:
...
environment:
MYSQL_ROOT_PASSWORD: <sua-nova-senha-root>
MYSQL_DATABASE: <seu-banco-de-dados>
MYSQL_USER: <seu-novo-usuario>
MYSQL_PASSWORD: <sua-nova-senha>
volumes:
...
É possível alterar outras configurações como nome da imagem do container, local do Dockerfile, porta de conexão aberta para o banco e volume onde serão salvas as informações do banco.
- qmake - Disponibilizado pelo Qt
- make
- docker - Compila nosso Dockerfile
Para contribuir, siga os passos abaixo:
- Navegue até a aba de issues do github e verifique se já existe alguma entrada relativa à funcionalidade ou correção que você desenvolverá.
- Caso exista, adicione um comentário para avisar que você está trabalhando neste issue e, se possível, se adicione como responsável.
- Crie uma nova branch com um nome que remeta ao issue alvo utilizando o comando a seguir no diretório local do repositório
git checkout -b <nome>
- Após terminar o desenvolvimento da funcionalidade e dos testes unitários, crie um pull request e adicione na descrição dele um comentário sobre o que está sendo implementado e a seguinte frase: "Closes #n", onde n é o número do issue que você soluciona. Caso resolva mais de um issue, adicione um por linha com a mesma frase.
- Adicione ao menos dois membros do repositório que não trabalharam no pull request como revisores.
- Desenvolva inicialmente os testes unitários, caso alguma funcionalidade tenha sido implementada. Visamos 100% de cobertura de testes.
- Siga nosso estilo de código, como descrito aqui(O estilo utilizado é o estilo java).
Usamos SemVer para versionamento. Para versões disponíveis, veja as tags nesse repositório.
- Mateus Berardo - Autor - MatTerra
- Thiago Cardoso - Autor - ThiagoPais
- Bruno Murta - Autor - bruno-bmc Veja também a lista de contribuidores que participaram nesse projeto.
Esse projeto está licenciado sob uma licença do MIT - veja o arquivo LICENSE.md para detalhes
- Thanks to Billie Thompson aka PurpleBooth who created the template of this README