terça-feira, 16 de junho de 2015

Backup diário de banco Postgres usando crontab

Recentemente precisei criar uma rotina no linux (ubuntu 14.04 LTS), usando o crontab, para fazer backup diário da base de dados de um sistema que desenvolvi em PHP utilizando banco de dados Postgresql 9.3.

Para fazer o backup decidi agendar 3 rotinas a serem executadas todo dia ao meio dia:

1 – Renomear o arquivo de backup existente;
2 – Criar um arquivo txt de backup;
3 – Apagar o arquivo de backup renomeado;

Então resolvi criar um arquivo .sh (bkp_postgres.sh) do linux que execute esses 3 comandos, o arquivo ficou como o exemplo abaixo:

#!/bin/bash
mv /var/www/html/sistema/bkp/backup.txt /var/www/html/sistema/bkp/backupold.txt
pg_dump nosso_banco_de_dados -i > /var/www/html/sistema/bkp/backup.txt
rm -rf /var/www/html/sistema/bkp/backupold.txt


Partindo do pressuposto que o banco está na mesma máquina que o sistema e, como por padrão, criamos o usuário postgres para gerenciar o banco deveremos acessar o crontab com o usuário postgres com os comandos abaixo:

$ sudo su postgres
$ crontab -e

Adicionei na ultima linha do crontab o comando abaixo que representa o agendamento:
0 12 * * * sh /var/www/html/sistema/bkp/bkp_postgres.sh



Por fim, para testar o arquivo .txt de backup gerado, no terminal, logado com o usuário postgres utilizar os comandos abaixo, para, respectivamente, entrar no gerenciador do Postgresql, apagar o banco do sistema, criar um novo banco do sistema com o mesmo nome, conectar ao banco, restaurar as tabelas e valores das mesmas e por fim sair do gerenciador.

$ psql
DROP DATABASE nosso_banco_de_dados;
CREATE DATABASE nosso_banco_de_dados;
\c nosso_banco_de_dados; ** se conecta a base de dados criada
\i /tmp/backupatividade.txt ; ** restaura as tabelas e valores com base no arquivo
\q ** sai do psql


quarta-feira, 10 de junho de 2015

Testes automatizados com a SELENIUM IDE

Como estou desenvolvendo uma nova aplicação php, utilizando a Adianti Framework, resolvi também começar a criar testes automatizados com a Selenium IDE.

Selenium é uma ferramenta para testes funcionais de aplicações web desenvolvida pelo pessoal da ThoughtWorks, tem tudo a ver com agilidade e garantia de qualidade da aplicação a ser desenvolvida, e ainda ajuda um monte o desenvolvedor na hora de fazer mudanças no código.

Esta ferramenta é um plugin do Firefox (mas pode ser instalada no Google Chrome) que para instalar ela é só acessar o link abaixo:

Após a instalação, o Firefox irá reiniciar e a extensão já estará ativa. Ela deverá ser localizada próximo a barra de endereços do navegador, caso não há encontre procure na opção Ferramentas (Tools).

Abrirá uma janela que inicialmente terá um só teste, mas pode ser adicionado mais testes e posteriormente salvo uma suíte de testes (conjunto de testes).
Uma boa pratica é pra cada nova funcionalidade gravar um teste novo na suíte de testes.

Tenho inicialmente duas dicas para quem está começando a usar a ferramenta, sempre mande rodar os testes na velocidade baixa, caso de algum problema de lentidão, a ferramenta pode retornar erro por ainda não ter carregado a pagina.


Outra dica é que alguns campos, como select ou calendar, dependendo da framework utilizada, o Selenium não vai conseguir selecionar o valor, o que pode ser contornado mandando a ferramenta inserir um valor já determinado usando o comando ‘type’, como podem ver nas imagens abaixo.