PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Maven démarre le serveur postgres

PostgreSQL n'est pas un serveur intégrable en mémoire. Il ne peut pas simplement être chargé en tant que bibliothèque et exécuté.

Vous aurez besoin d'un code de contrôle de harnais de test pour :

  • initdb un répertoire de données temporaire

  • Modifier postgresql.conf selon les besoins en ajoutant des lignes ou en activant un include_dir et y déposer des fichiers. Si vous n'avez besoin que d'une configuration triviale, vous pourrez peut-être ignorer cette étape ; des choses comme le port peut être défini via des variables d'environnement, et beaucoup d'autres peuvent être définis avec -c flags à la commande de démarrage du serveur.

  • générer un numéro de port aléatoire à utiliser

  • Lancez le serveur - exécutez postgres -D the_datadir une nouvelle instance de serveur utilisant le Process de Java la gestion. Vous pouvez transmettre des valeurs de configuration personnalisées avec -c et peut également définir des variables d'environnement pour contrôler le comportement.

  • Connectez-vous via JDBC et CREATE DATABASE puis exécutez votre configuration de test

  • Exécutez vos tests

  • Arrêtez le serveur en tuant le processus que vous avez lancé.

  • Supprimer le répertoire de données

Vous souhaiterez effectuer la gestion des processus dans une classe avec une gestion appropriée des répertoires temporaires, un nettoyage en cas de sortie impure (tuez le serveur Pg et supprimez le répertoire de données en cas d'exception), etc.

Je serais surpris si vous ne trouvez pas de code de harnais de test en conserve à emprunter pour cela. Je me demande si nous devrions en ajouter à PgJDBC et le regrouper dans le pilote ? Si vous trouvez quelque chose de bien ou si vous écrivez quelque chose de bien, envoyez-moi un ping en commentant cette réponse et je l'envisagerai pour inclusion en tant que classe utilitaire dans PgJDBC.

Cela dit, il est beaucoup plus courant d'exécuter vos tests dans une base de données de test nouvellement créée dans une instance PostgreSQL existante qui s'exécute déjà sur votre serveur. Vous venez de configurer votre suite de tests avec un nom d'utilisateur/mot de passe/hôte/port/base de données PostgreSQL (ou laissez-la se connecter au postgres base de données et CREATE et DROP la base de données). Après tout, une certaine configuration sera toujours nécessaire :installer ou compiler PostgreSQL, s'assurer que les binaires sont sur le PATH , etc.

Une autre option consiste à utiliser Amazon RDS :utilisez les API AWS RDS pour lancer une nouvelle instance PostgreSQL et l'utiliser pour vos tests. Ce n'est probablement pas pratique à moins que vos tests ne durent longtemps en raison du temps de configuration et de la durée d'exécution minimale, mais c'est une autre option, tout comme le service similaire chez Heroku.