PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

maven iniciar servidor postgres


O PostgreSQL não é um servidor incorporável na memória. Ele não pode simplesmente ser carregado como uma biblioteca e executado.

Você precisará de algum código de controle de chicote de teste para:

  • initdb um diretório de dados temporário

  • Editar postgresql.conf conforme necessário anexando linhas ou ativando um include_dir e soltando arquivos nele. Se você precisar apenas de uma configuração trivial, poderá pular esta etapa; coisas como a port pode ser definido por meio de variáveis ​​de ambiente, e muitos outros podem ser definidos com -c sinalizadores para o comando de inicialização do servidor.

  • gerar um número de porta aleatório para usar

  • Inicie o servidor - execute postgres -D the_datadir uma nova instância de servidor usando o Process do Java gestão. Você pode passar valores de configuração personalizados com -c e também pode definir variáveis ​​de ambiente para controlar o comportamento.

  • Conecte-se por JDBC e CREATE DATABASE em seguida, execute sua configuração de teste

  • Execute seus testes

  • Pare o servidor matando o processo que você iniciou.

  • Excluir o diretório de dados

Você desejará fazer o gerenciamento do processo em uma classe com manipulação apropriada de diretório temporário, limpeza na saída não limpa (matar o servidor Pg e excluir o datadir na exceção), etc.

Ficarei surpreso se você não conseguir encontrar o código de chicote de teste enlatado para emprestar para isso. Gostaria de saber se devemos adicionar alguns ao PgJDBC e empacotar no driver? Se você encontrar algo de bom, ou escrever algo de bom, por favor, envie um ping comentando esta resposta e eu a considerarei para inclusão como uma classe de utilitário no PgJDBC.

Dito isso, é muito mais comum executar seus testes em um banco de dados de teste recém-criado em uma instância existente do PostgreSQL que já é executada em seu servidor. Você acabou de configurar seu conjunto de testes com um nome de usuário/senha/host/porta/banco de dados do PostgreSQL (ou deixá-lo se conectar ao postgres banco de dados e CREATE e DROP o banco de dados). Afinal, alguma configuração sempre será necessária:instalar ou compilar o PostgreSQL, certificando-se de que os binários estejam no PATH , etc

Outra opção é usar o Amazon RDS:use as APIs do AWS RDS para iniciar uma nova instância do PostgreSQL e usá-la para seus testes. Isso provavelmente não é prático, a menos que seus testes sejam executados por um longo tempo devido ao tempo de configuração e ao tempo de execução mínimo, mas é outra opção, assim como o serviço semelhante no Heroku.