Skip to content
This repository has been archived by the owner on Oct 27, 2022. It is now read-only.

Commit

Permalink
Merge pull request #197 from fga-eps-mds/devel
Browse files Browse the repository at this point in the history
Versão 0.2.0
  • Loading branch information
joaorobson committed May 28, 2019
2 parents 5936031 + 1baf865 commit 3dbe0b8
Show file tree
Hide file tree
Showing 17 changed files with 932 additions and 331 deletions.
107 changes: 98 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,96 @@
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![pullreminders](https://pullreminders.com/badge.svg)](https://pullreminders.com?ref=badge)

## Subindo a aplicação
## Utilizando a aplicação

Execute o binário (checar [releases](https://github.com/fga-eps-mds/2019.1-unbrake/releases)) e acesse
a interface da aplicação em https://unbrake.ml ou algum servidor local.

Se o binário estiver em execução, será adicionado um ícone na área de notificações do seu sistema operacional, pelo qual
é possível interagir com a aplicação.

* **A aplicação não deve ser executada como root (administrador)!**

Problemas com a execução? Consulte o [troubleshooting](#troubleshooting)

### Variáveis de ambiente

Atualmente as seguintes variáveis de ambiente são relevantes para a aplicação:

* **SIMULATOR_PORT**: nome/caminho da porta serial em que a placa está conectada. Ex: `/dev/ttyACM0`, `COM1`.

### Logs

Todo o funcionamento da aplicação é registrado em arquivos de log. No Linux eles são atualmente gravados em `~/UnBrake/logs`,
já no Windows em `%APPDATA%/UnBrake/logs`

### Troubleshooting

#### Problemas com a parte local

Antes de analisar as seguintes opções cheque o log para ter mais informações.

<details>
<summary> Não tenho permissão nem de executar o binário </summary>
<br>

**Solução (Linux):** Provavelmente o binário está sem permissão de execução. Comando:
``` sh
chmod +x unbrake
```
</details>

<details>
<summary> Arquivo de log não aparece no lugar especificado </summary>
<br>

**Solução (Linux):** Executar sem sudo
</details>

<details>
<summary> Log informa que tentou abrir arquivo que não foi encontrado </summary>
<br>

**Solução (Linux):** Você especificou o arquivo certo que referencia a placa? Ex: `/dev/ttyACM0`
</details>

<details>
<summary> Minha placa não é reconhecida pelo meu Sistema Operacional </summary>
<br>

**Solução:** Consulte [aqui](https://www.arduino.cc/en/Guide/HomePage)
</details>

<details>
<summary> Log informa que não tenho permissões para abrir um arquivo </summary>
<br>

**Solução (Linux):**

* Verifique a qual grupo o arquivo que representa sua placa pertence

``` sh
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0 # Saída
```
Nesse exemplo o arquivo pertence ao grupo `dialout` _(No meu ambiente é `uucp` ao invés `dialout`)_

* Adicione seu usuário ao grupo encontrado

``` sh
# Trocar 'dialout' pelo grupo encontrado no comando anterior!
sudo usermod -a $USER -G dialout
```

* **Faça logout e login novamente no seu usuário para as alterações funionarem!!!** _(reiniciar também funciona)_

_**OBS:** Esses passos não precisam ser executados sempre, apenas uma vez_

Mais detalhes podem ser encontrados [aqui](https://www.arduino.cc/en/Guide/Linux)
</details>

## Desenvolvimento
### Subindo parte Web localmente

*Todos os comandos incluem o comando de build para envitar erros de iniciante
mas não é necessário em todas as execuções
Expand All @@ -24,7 +113,7 @@ ou os serviços podem ser executados individualmente:
sudo docker-compose up --build frontend
```

## Executando checagens de código
### Executando checagens de código

Desde que o serviço do frontend já tenha sido construído
(build executado pelo menos uma vez) no ambiente do usuário, algumas checagens
Expand All @@ -44,9 +133,9 @@ procedimento é abortado. Como isso é feito através de _git hooks_, é possív
evitar as checagens utilizando-se a flag `--no-verify` nos comandos do git,
**embora isso seja altamente desencorajado**.

### Frontend
#### Frontend

#### Scripts disponíveis (frontend)
##### Scripts disponíveis (frontend)

* **check_all:** Executa todos os outros scripts de checagem em sequência,
na checagem de testes é executado o com coverage sem html
Expand All @@ -61,7 +150,7 @@ evitar as checagens utilizando-se a flag `--no-verify` nos comandos do git,
* **fix**: Corrige automaticamente erros de formatação possíveis de serem
consertados pelo `eslint` e pelo `prettier`

#### Execução de um script (frontend)
##### Execução de um script (frontend)

Uma das possíveis formas de se executar os scripts no
frontend é executando o seguinte comando:
Expand All @@ -71,9 +160,9 @@ frontend é executando o seguinte comando:
$ sudo docker-compose run --rm frontend run [nome_do_script]
```

### API
#### API

#### Scripts disponíveis (API)
##### Scripts disponíveis (API)

* **check_all:** Todos os outros scripts de checagem são executados
em sequência, na checagem de testes é executado o com coverage sem html
Expand All @@ -89,7 +178,7 @@ $ sudo docker-compose run --rm frontend run [nome_do_script]
* **fix**: Corrige automaticamente erros de formatação possíveis de serem
consertados pelo `autopep8`

#### Execução de um script (API)
##### Execução de um script (API)

Uma das possíveis formas de se executar os scripts da API
é executando o seguinte comando:
Expand All @@ -99,7 +188,7 @@ Uma das possíveis formas de se executar os scripts da API
$ sudo docker-compose run --rm api [nome_do_script]
```

### CodeClimate CLI
#### CodeClimate CLI

O codeclimate irá checar algumas coisas já checadas localmente e outras
menos importantes, que só serão exigidas de serem consertadas antes do
Expand Down
7 changes: 5 additions & 2 deletions unbrake-api/user/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ class Meta:


class CreateUser(graphene.Mutation):
# pylint: disable = unused-argument, no-self-use
# pylint: disable = unused-argument, no-self-use, too-many-arguments

'''
Class to create a new user
'''
Expand All @@ -32,15 +33,17 @@ class Arguments:
Arguments required to create a new user
'''
username = graphene.String(required=True)
email = graphene.String(required=True)
password = graphene.String(required=True)
is_superuser = graphene.Boolean(required=True)

def mutate(self, info, username, password, is_superuser):
def mutate(self, info, username, email, password, is_superuser):
'''
Create the user with the given parameters end add to db
'''
user = get_user_model()(
username=username,
email=email,
is_superuser=is_superuser
)
user.set_password(password)
Expand Down
54 changes: 18 additions & 36 deletions unbrake-api/user/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

@pytest.mark.django_db
@pytest.mark.parametrize(
"username, password", (
pytest.param("usermane", "password", id='create_user_test_1'),
"username, email, password", (
pytest.param("usermane", "email", "password", id='create_user_test_1'),
)
)
def test_create_user(username, password):
def test_create_user(username, email, password):
'''
Test the create of a user
'''
Expand All @@ -22,6 +22,8 @@ def test_create_user(username, password):
username +
'", password: "' +
password +
'", email: "' +
email +
'", isSuperuser: false'
'){user{id, username}}}')
assert result.status_code == 200
Expand All @@ -31,38 +33,11 @@ def test_create_user(username, password):

@pytest.mark.django_db
@pytest.mark.parametrize(
"username, password", (
pytest.param("username", "password", id='create_user_test_1'),
"username, password, email", (
pytest.param("usermane", "password", "email", id='test_token_auth_1'),
)
)
def test_get_user(username, password):
'''
Test the create of a user
'''
client = Client()
result = client.post(
'/graphql?query=mutation{createUser(username: "' +
username +
'", password: "' +
password +
'", isSuperuser: false'
'){user{id, username}}}')
assert result.status_code == 200

user = client.get(
'/graphql?query=query{user(username: "'
+ username + '"){id, username}}')
assert user.status_code == 200
assert user.json()['data']['user']['username'] == username


@pytest.mark.django_db
@pytest.mark.parametrize(
"username, password", (
pytest.param("usermane", "password", id='test_token_auth_1'),
)
)
def test_token_auth(username, password):
def test_token_auth(username, password, email):
'''
Create a user, get the token and verify it
'''
Expand All @@ -72,6 +47,8 @@ def test_token_auth(username, password):
username +
'", password: "' +
password +
'", email: "' +
email +
'", isSuperuser: false'
'){user{id, username}}}')

Expand All @@ -98,14 +75,16 @@ def test_token_auth(username, password):

@pytest.mark.django_db
@pytest.mark.parametrize(
"username1, username2, password",
"username1, username2, password, email1, email2",
(pytest.param(
"usermane1",
"username2",
"password",
"email1",
"email2",
id='all_users_test_1'),
))
def test_get_all_users(username1, username2, password):
def test_get_all_users(username1, username2, email1, email2, password):
'''
Get all the users in db
'''
Expand All @@ -116,8 +95,9 @@ def test_get_all_users(username1, username2, password):
username1 +
'" , password: "' +
password +
'", email: "' +
email1 +
'", isSuperuser: false){user{id, username, isSuperuser}}}')
print(result1)

assert result1.status_code == 200

Expand All @@ -126,6 +106,8 @@ def test_get_all_users(username1, username2, password):
username2 +
'", password: "' +
password +
'", email: "' +
email2 +
'", isSuperuser: false'
'){user{id, username}}}')
assert result2.status_code == 200
Expand Down
51 changes: 51 additions & 0 deletions unbrake-frontend/src/Configuration/ConfigFunctions.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { API_URL_GRAPHQL } from "../utils/Constants";
import Request from "../utils/Request";

export const query =
"id, name, number, time, temperature, timeBetweenCycles, upperLimit, inferiorLimit, upperTime, inferiorTime, disableShutdown, enableOutput";

export async function submit(configuration, name, sendMessage) {
if (name === "" || name === undefined) {
sendMessage({
message: "Favor inserir o nome da configuração",
variante: "error",
condition: true
});
return;
}
const url = `${API_URL_GRAPHQL}?query=mutation{createConfig(name:"${name}",number:${
configuration.NOS
},timeBetweenCycles:${configuration.TBS},upperLimit:${
configuration.USL
},inferiorLimit:${configuration.LSL},upperTime:${
configuration.UWT
},inferiorTime:${configuration.LWT},disableShutdown:${
configuration.TMO
},enableOutput:${configuration.TAO},temperature:${configuration.TAS},time:${
configuration.TAT
}){config{number, timeBetweenCycles,upperLimit,inferiorLimit}}}`;
const method = "POST";
await Request(url, method);

window.location.reload();
}

export const createConfig = data => {
const configurationDefault = {
CONFIG_ENSAIO: {
LSL: data.inferiorLimit,
LWT: data.inferiorTime,
NOS: data.number,
TAO: data.enableOutput,
TAS: data.temperature,
TAT: data.time,
TBS: data.timeBetweenCycles,
TMO: data.disableShutdown,
USL: data.upperLimit,
UWT: data.upperTime
}
};
return configurationDefault;
};

export default createConfig;

0 comments on commit 3dbe0b8

Please sign in to comment.