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 uninclude_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 leport
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 leProcess
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.