PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

maven avvia il server postgres

PostgreSQL non è un server incorporabile in memoria. Non può essere semplicemente caricato come libreria ed eseguito.

Avrai bisogno di un codice di controllo del cablaggio di prova per:

  • initdb una directory dati temporanea

  • Modifica postgresql.conf come richiesto aggiungendo righe o abilitando una include_dir e rilasciando i file al suo interno. Se hai solo bisogno di una configurazione banale potresti essere in grado di saltare questo passaggio; cose come la port può essere impostato tramite variabili di ambiente e molti altri possono essere impostati con -c segnala il comando di avvio del server.

  • generare un numero di porta casuale da utilizzare

  • Avvia il server - esegui postgres -D the_datadir una nuova istanza del server che utilizza Process di Java gestione. Puoi passare valori di configurazione personalizzati con -c e può anche impostare variabili d'ambiente per controllare il comportamento.

  • Connettiti tramite JDBC e CREATE DATABASE quindi esegui la configurazione di prova

  • Esegui i tuoi test

  • Arresta il server interrompendo il processo che hai avviato.

  • Elimina la directory dei dati

Ti consigliamo di eseguire la gestione del processo in una classe con la gestione appropriata della directory temporanea, la pulizia in caso di uscita non pulita (uccidere il server Pg ed eliminare la datadir in caso di eccezione), ecc.

Sarò sorpreso se non riesci a trovare il codice di cablaggio di test in scatola da prendere in prestito per questo. Mi chiedo se dovremmo aggiungerne alcuni a PgJDBC e raggrupparlo nel driver? Se trovi qualcosa di buono o scrivi qualcosa di buono, per favore inviami un ping commentando questa risposta e la prenderò in considerazione per l'inclusione come classe di utilità in PgJDBC.

Detto questo, è molto più comune eseguire invece i test in un database di test appena creato in un'istanza PostgreSQL esistente che è già in esecuzione sul tuo server. Devi semplicemente configurare la tua suite di test con un nome utente/password/host/porta/database PostgreSQL (o lasciarlo connettere a postgres database e CREATE e DROP la banca dati). Dopotutto, è sempre necessaria una configurazione:installare o compilare PostgreSQL, assicurarsi che i binari siano sul PATH , ecc.

Un'altra opzione consiste nell'utilizzare Amazon RDS:utilizza le API di AWS RDS per avviare una nuova istanza PostgreSQL e utilizzarla per i test. Questo probabilmente non è pratico a meno che i tuoi test non vengano eseguiti per molto tempo a causa del tempo di configurazione e del tempo di esecuzione minimo, ma è un'altra opzione, così come il servizio simile su Heroku.