PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

maven startet Postgres-Server

PostgreSQL ist kein In-Memory-Embeddable-Server. Es kann nicht einfach als Bibliothek geladen und ausgeführt werden.

Sie benötigen einen Steuercode für die Testumgebung, um:

  • initdb ein temporäres Datenverzeichnis

  • Bearbeiten Sie postgresql.conf nach Bedarf durch Anhängen von Zeilen oder durch Aktivieren eines include_dir und darin Dateien ablegen. Wenn Sie nur eine triviale Konfiguration benötigen, können Sie diesen Schritt möglicherweise überspringen. Dinge wie der port können über Umgebungsvariablen gesetzt werden, und viele andere können mit -c gesetzt werden Flags zum Server-Startbefehl.

  • Generieren Sie eine zufällige Portnummer, die verwendet werden soll

  • Starten Sie den Server – führen Sie postgres -D the_datadir aus eine neue Serverinstanz mit dem Process von Java Management. Sie können benutzerdefinierte Konfigurationswerte mit -c übergeben und kann auch Umgebungsvariablen setzen, um das Verhalten zu steuern.

  • Verbinden Sie sich über JDBC und CREATE DATABASE Führen Sie dann Ihr Test-Setup aus

  • Führen Sie Ihre Tests durch

  • Stoppen Sie den Server, indem Sie den von Ihnen gestarteten Prozess beenden.

  • Löschen Sie das Datenverzeichnis

Sie sollten die Prozessverwaltung in einer Klasse mit geeigneter Behandlung von temporären Verzeichnissen, Aufräumen bei unsauberem Beenden (beenden Sie den Pg-Server und löschen Sie das Datadir bei Ausnahme) usw.

Ich werde überrascht sein, wenn Sie keinen vorgefertigten Test-Harness-Code finden, den Sie dafür ausleihen können. Ich frage mich, ob wir etwas zu PgJDBC hinzufügen und es im Treiber bündeln sollten? Wenn Sie etwas Gutes finden oder etwas Gutes schreiben, pingen Sie mich bitte an, indem Sie diese Antwort kommentieren, und ich werde sie für die Aufnahme als Utility-Klasse in PgJDBC in Betracht ziehen.

Allerdings ist es viel üblicher, Ihre Tests stattdessen in einer neu erstellten Testdatenbank in einer vorhandenen PostgreSQL-Instanz auszuführen, die bereits auf Ihrem Server ausgeführt wird. Sie konfigurieren einfach Ihre Testsuite mit PostgreSQL-Benutzername/Passwort/Host/Port/Datenbank (oder lassen sie eine Verbindung zum postgres herstellen Datenbank und CREATE und DROP die Datenbank). Schließlich ist immer eine gewisse Konfiguration erforderlich:PostgreSQL installieren oder kompilieren und sicherstellen, dass sich die Binärdateien im PATH befinden usw.

Eine weitere Option ist die Verwendung von Amazon RDS:Verwenden Sie die AWS RDS-APIs, um eine neue PostgreSQL-Instance zu starten und für Ihre Tests zu verwenden. Dies ist wahrscheinlich nicht praktikabel, es sei denn, Ihre Tests laufen aufgrund der Einrichtungszeit und der minimalen Laufzeit lange, aber es ist eine andere Option, ebenso wie der ähnliche Dienst bei Heroku.