sql >> Databasteknik >  >> RDS >> PostgreSQL

maven starta postgres server

PostgreSQL är inte en inbäddad server i minnet. Det kan inte bara laddas som ett bibliotek och köras.

Du behöver en kontrollkod för testselen för att:

  • initdb en tillfällig datakatalog

  • Redigera postgresql.conf som krävs genom att lägga till rader eller genom att aktivera en include_dir och släpper filer i den. Om du bara behöver en trivial konfiguration kanske du kan hoppa över detta steg; saker som port kan ställas in via miljövariabler, och många andra kan ställas in med -c flaggar till serverns startkommando.

  • generera ett slumpmässigt portnummer att använda

  • Starta servern - kör postgres -D the_datadir en ny serverinstans som använder Javas Process förvaltning. Du kan skicka anpassade konfigurationsvärden med -c och kan även ställa in miljövariabler för att kontrollera beteendet.

  • Anslut över JDBC och CREATE DATABASE kör sedan din testinställning

  • Kör dina tester

  • Stoppa servern genom att döda processen du startade.

  • Ta bort datakatalogen

Du kommer att vilja göra processhanteringen i en klass med lämplig temporär kataloghantering, rensning vid oren utgång (döda Pg-servern och ta bort datakatalogen vid undantag), etc.

Jag kommer att bli förvånad om du inte kan hitta kod för burktestsele att låna för detta. Jag undrar om vi ska lägga till några till PgJDBC och bunta ihop det i drivrutinen? Om du hittar något bra, eller skriver något bra, vänligen pinga mig genom att kommentera det här svaret så överväger jag att det ska ingå som en verktygsklass i PgJDBC.

Som sagt, det är mycket vanligare att istället köra dina tester i en nyskapad testdatabas i en befintlig PostgreSQL-instans som redan körs på din server. Du konfigurerar bara din testsvit med ett PostgreSQL-användarnamn/lösenord/värd/port/databas (eller låter den ansluta till postgres databas och CREATE och DROP databasen). När allt kommer omkring kommer det alltid att krävas en viss konfiguration:installera eller kompilera PostgreSQL, se till att binärfilerna finns på PATH osv.

Ett annat alternativ är att använda Amazon RDS:Använd AWS RDS API för att starta en ny PostgreSQL-instans och använda den för dina tester. Detta är förmodligen inte praktiskt om inte dina test körs under lång tid på grund av installationstiden och minsta körtid, men det är ett annat alternativ, liksom den liknande tjänsten på Heroku.



  1. Omordning av kolumndata i mysql

  2. De där jäkla stora föremålen

  3. Iterera genom kunder på en 12-månaders-rullande basis och kontrollera om en kund inte har beställt under de senaste 12 månaderna

  4. Ordna dubbletter och numrera posterna i en sekvens - MySQL